美文网首页
网络协议-7-iptables

网络协议-7-iptables

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-10-02 09:14 被阅读0次

简介

  • netfilter/iptables组成Linux平台下的包过滤防火墙
  • iptables和netfilter的关系
    • iptables只是Linux防火墙的管理工具而已,真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构

数据包传输过程

iptables-001.jpg
  • 数据包进入网卡,先进入PREROUTING链
  • 内核根据数据包目的IP进行路由
  • 若数据包目的是本机,那么进入INPUT链
  • 若数据包目的不是本机,则进入FORWARD,然后经POSTROUTING出去
  • 本机发出数据先进入OUTPUT链,然后经POSTROUTING链出去

表和链

iptables-002.jpg
  • iptables内置了4个表
    • filter表
      • 过滤数据包
      • 内核模块:iptable_filter
      • INPUT,FORWARD,OUTPUT
    • nat表
      • 网络地址转换(IP,端口)
      • 内核模块:iptable_nat
      • PREROUTING,OUTPUT,POSTROUTING
    • mangle表
      • 修改数据包服务类型,TTL,可以配置路由实现QOS
      • 内核模块:iptable_mangle
      • PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    • raw表
      • 决定数据包是否被状态跟踪机制处理
      • 内核模块:iptable_raw
      • PREROUTING,OUTPUT
    • 优先级
      • raw > mangle > nat > filter
  • 规则链
    • 符合规则,处理;不符合,传递下去;全不符合,默认策略处理
    • 入站数据流向
      • PREROUTING规则链处理(是否修改数据包地址等)
      • 路由选择(判断数据包该发往何处)
      • 如果数据包目标主机是防火墙本机(比如Internet用户访问防火墙主机中的Web服务器),那么内核将其传给INPUT链进行处理(决定是否允许通过等)
      • 过了INPUT以后交给系统上层应用(比如Apache服务器)
    • 转发数据流向
      • PREROUTING规则链处理
      • 路由选择
      • 如果数据包目标地址是外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截)
      • POSTROUTING规则链(是否修改数据包地址等)
    • 出站数据流向
      • OUTPUT规则链处理
      • 路由选择
      • POSTROUTING规则链(是否修改数据包的地址等)

iptables配置

iptables-003.jpg iptables-004.jpg
-A # 链末尾添加(append)一条规则
-D # 删除(delete)链中某一规则,可按规则序号或内容
-I # 链中插入(insert)一条规则,默认在第一行
-R # 修改、替换(replace)链中某一规则,可按规则序号或内容
-L # 列出(list)链中所有的规则
-E # 重命名用户自定义链,不改变链本身
-F # 清空(flush)
-N # 新建一条用户自定义链(new-chain)
-X # 删除表中用户自定义链(delete-chain)
-P # 设置链的默认策略(policy)
-Z # 清零所有表的所有链的字节和数据包计数器
-n # 使用数字形式(numeric)显示输出结果
-v # 查看表详细信息(verbose)
-V # 查看版本(version)
-h # 获取帮助(help)
  • 防火墙处理数据包方式
    • ACCEPT:允许通过
    • DROP:直接丢弃,不给任何回应
    • REJECT:拒绝通过,必要时会给数据发送端一个响应
    • LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
  • 语法格式
    • iptables [-t 表名] command [链名] [条件匹配] [-j 目标动作或跳转]

规则保存与恢复

  • iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载
# 指定文件
iptables-save > /etc/sysconfig/iptables
# 默认文件
service iptables save
  • 计算机启动时,rc.d下的脚本将用命令iptables-restore调用该文件,从而恢复规则

例子

# 删除INPUT链第1条规则
iptables -D INPUT 1
# 拒绝所有ICMP协议数据
iptables -I INPUT -p icmp -j REJECT
# 允许转发除ICMP协议外的所有数据
iptables -A FORWARD -p ! icmp -j ACCEPT
# 拒绝192.168.1.11数据,放行192.168.0.0/24网段数据
iptables -A FORWARD -s 192.168.1.11 -j REJECT 
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
# 丢弃从eth1进入的私网数据
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP 
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP 
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
# 仅允许202.13.0.0/16网段通过22端口访问
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -j DROP
# 开放20-1024端口
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
# 允许转发来自192.168.0.0/24网段的DNS解析请求
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT 
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
# 禁外ping本机,允许本机ping外
iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP 
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 
iptables -I INPUT -p icmp --icmp-type Destination-Unreachable -j ACCEPT
# 禁止转发来自00:0c:29:27:55:3F的数据
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
# 开放20,21,25,110,1250:1280端口
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
# 禁止转发来自192.168.1.20-192.168.1.99数据
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
# 禁止转发新建连接的非sync信号
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
# 只允许已存在连接或与连接相关的数据
# RELATED:FTP是个例子
iptables -A INPUT -p tcp -m state --state NEW -j DROP 
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放20,21,80,20450:20480
# 开放其他端口的应答数据包
iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT 
iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT 
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 
iptables -P INPUT DROP

相关文章

  • 网络协议-7-iptables

    简介 netfilter/iptables组成Linux平台下的包过滤防火墙 iptables和netfilter...

  • 名词解析

    网络层:IP协议 : 网络协议ICMP协议: Internet互联网控制报文协议 ->IP协议的附属协议 IP...

  • Http网络协议包

    1.网络协议包: 2.常见网络协议: 3.Http网络协议包: 4.Http请求协议包与Http响应协议包介绍: ...

  • 网络传输-Socket

    目录 网络基础 Socket 一、网络基础 网络协议 网络协议是互联网进行数据交换的标准,通过实现网络协议达到与互...

  • 基本原理

    什么是协议? 网络协议:规定网络双端如何通信。

  • 网络协议

    网络协议 网络七层协议 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 TCP/IP五层模型的协议 应...

  • 网络协议

    网络协议 网络的五层划分是什么? 应用层,常见协议:HTTP、FTP 传输层,常见协议:TCP.UDP 网络层,常...

  • 网络协议

    1:OSI 模型七层协议, 另也可以五层协议即 一用层,表现层与会话层 统称为 应用层。 2:信息格式 很明显通过...

  • 网络协议

    最早的 TCP 协议文档是 RFC793。 TCP 提供一种面向连接的、可靠的字节流服务。 面向连接容易理解,那么...

  • 网络协议

    TCP/IP协议 互联网协议(英语:Internet Protocol Suite,缩写IPS)[1]是一个网络通...

网友评论

      本文标题:网络协议-7-iptables

      本文链接:https://www.haomeiwen.com/subject/sgblpctx.html