Iptables防火墙,iptables


1 位置

使用vim /usr/sysconfig/iptables

2 启动、关闭、保存

  • service iptables stop
  • service iptables start
  • service iptables restart
  • service iptables save

3 结构

iptables –> tables –> chains –>rules

3.1 iptables的表与链

iptables具有Filter,NAT,Mangle,Raw四种内建表

3.1.1 Filter表

filter表示iptables的默认表,它具有三种内建链:

  • input chain   - 处理来之外部的数据
  • output chain - 处理向外发送的数据
  • forward chain- 将数据转发到本机的其它网卡上

3.1.2 NAT表

NAT有三种内建的链:

  • prerouting   - 处理刚到达本机并在路由转发前的数据包,它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
  • postrouting - 处理即将离开本机数据包,它会转换数据包中的源目标IP地址(source ip address),通常SNAT(source NAT)
  • output        - 处理本机产生的数据包

3.1.3 Mangle表

Mangle表用于指定如何处理数据包,它能改变TCP头中的Qos位,Mangle表具有5个内建链

  • prerouting
  • output
  • forward
  • input
  • postrouting

3.1.4 Raw表

raw表用户处理异常,它具有2个内建链

  • prerouting chain
  • output chain

3.2 Iptables规则(Rules)

  • rules包括一个条件和一个目标(target)
  • 如果满足条件就执行目标target中规则或者特定值
  • 如果不满足条件,就判断下一条Rules

3.2.1 目标值

  • accept - 允许防火墙接收数据包
  • drop    - 防火墙丢弃数据包
  • queue  - 防火墙将数据包移交到用户空间
  • return  - 防火墙停止执行当前链中的后续rules规则,并返回到调用链(the calling chain)

4 命令

#iptables -t filter -L   查看filter表

#iptables -t nat  -L    查看nat表

#iptables -t mangel -L 查看mangel表

#iptables -t raw  -L 查看Raw表

例如 以下例子表明在filter表的input链, forward链, output链中存在规则:

# iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

字段说明

num:编号

target:目标

prot:协议

source:数据包的源IP地址

destination:数据包的目标地址

4.1 清空所有的规则 

#iptables –flush

4.2 追加命令

iptables -A命令追加新规则,其中-A表示append,一般而言最后一条规则用于丢弃(drop)所有数据包,并且使用-A参数添加新规则,那么就是无用的。

4.2.1 语法

iptables –A chain firewall-rule

  • -A chain 指定要追加的规则的链
  • firewall-rule 具体规则的参数
4.2.2 基本参数

用于描述数据包的协议,源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。

  • 协议 –p (protocol)
    如tcp,udp,icmp等,可以使用all来指定所有协议
    不指定-p参数,默认值是all,
    可以使用协议名(tcp,udp),或者协议值(6代表tcp),映射关系可以查看/etc/protocols
  • 源地址 –s (source)
    指定数据包的源地址,参数可以使用IP地址、网络地址、主机名,不指定-s参数,就是代表所有地址。
    例如:-s 192.168.1.101 具体的IP地址
    例如:-s 192.168.1.10/24 指定网络地址
  • 目的地址 –d  (destination)
    指定目的地址,参数和-s相同
  • 执行目标 –j (jump to target)
    -j代表了当与规则(Rule)匹配时如何处理数据包,可能的值是accept、drop、queue、return,还可以指定其他链(chain)作为目标
  • 输入接口 –i (input interface)
    指定了要处理来自哪个接口的数据包,这些数据包进入input、forward、prepoute链,不指定将处理进入所有接口的数据包
    例如:-i eth0 指定了要处理eth0进入的数据
    可以取反  !-i eth0,指eth0以外。
    可以匹配  -i eth+ 指以eth开头的
  • 输出接口 –o (out interface)
    数据包有那个接口输出,类似于 –i
  • 源端口 –sport
    例如 –sport 22
    例如 –sport 22:100指定端口范围
  • 目的端口 –dport
    类似于-sport
  • TCP标志
  • ICMP类型

5 实例分析

例如:接收目标端口为22的数据包

iptables –A INPUT –i etho –p tcp –dprot 22 –j ACCEPT

例如:拒绝所有其他数据包

iptables –A INPUT –j DROP

6 修改默认策略

上例仅对接收的数据包进行过滤,而对于要发出的数据包却没有任何限制。

使用iptables –L

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

相关内容