四表五链

  1. Filter表
    Filter是iptables的默认表,它有以下三种内建链(chains)
    INPUT --> 处理来自外部的数据
    OUTPUT --> 处理向外发送的数据
  2. FORWARD链 --> 将数据转发到本机的其他网卡设备上
  3. NAT表
  4. PREROUTING链:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址,通常用于DNAT
  5. POSTROUTING链:处理即将离开本机的数据包。他会转换数据包中的源IP地址,通常用于SNAT
  6. OUTPUT链:处理本机产生的数据包
  7. Mangle表
    用于指定如何处理数据包。他能改变TCP头部中的Qos位。Mangle具有5个内建链:
    -PREROUTING
    -OUTPUT
    -FORWARD
    -INPUT
    -POSTROUTING
  8. Raw表
    用于处理异常,具有2个内建链:
    PREROUTING
    OUTPUT
  9. iptables选项
    -t<表>:指定要操纵的表;
    -A:向规则链中添加条目;
    -D:从规则链中删除条目;
    -i:向规则链中插入条目;
    -R:替换规则链中的条目;
    -L:显示规则链中已有的条目;
    -F:清除规则链中已有的条目;
    -Z:清空规则链中的数据包计算器和字节计数器;
    -N:创建新的用户自定义规则链;
    -P:定义规则链中的默认目标;
    -h:显示帮助信息;
    -p:指定要匹配的数据包协议类型;
    -s:指定要匹配的数据包源ip地址;
    -j<目标>:指定要跳转的目标;
    -i<网络接口>:指定数据包进入本机的网络接口;
    -o<网络接口>:指定数据包要离开本机所使用的网络接口。

    iptables -I:默认插入到第一行,原有规则后移。
    iptables -A :默认追加到最后一行。

白名单模式

  1. 默认所有IP都不可以访问设备
  2. 将白名单的IP允许访问
    所有IP不可访问: iptables -A INPUT -j DROP

具体操作:

iptables -I INPUT -s 192.168.3.0/24 -j ACCEPT    #这里IP地址为允许访问的IP地址段,这样可以避免ssh连接不上
iptables -A INPUT  -j DROP                       #禁止所有IP访问
iptables -t filter -nL INPUT --line-numbers      #查看INPUT表规则
iptables -D INPUT 数字                           #删除指定数字的规则,这个数字是上一条命令查看规则的数字

黑名单模式:

(1)默认所有IP是都可以访问设备
(2)将黑名单的ip禁止访问
默认INPUT访问允许
具体操作:

iptables -P INPUT ACCEPT 
iptables -I INPUT -s 124.115.0.199 -j DROP        #封单个IP的命令
iptables -I INPUT -s 124.115.0.0/16 -j DROP       #封IP段的命令
iptables -I INPUT -s 194.42.0.0/8 -j DROP         #封整个段的命令
iptables -I INPUT -s 61.37.80.0/24 -j DROP        #封几个段的命令
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP     #只封80端口
iptables -t filter -nL INPUT --line-numbers       #查看INPUT表规则

其他相关操作:

  1. iptables -A INPUT -p tcp --dport 22 -j ACCEPT 允许包从22端口进入
  2. iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 允许从22端口进入的包返回
  3. iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 域名解析端口,一般不开
  4. iptables -A INPUT -p udp --sport 53 -j ACCEPT 域名解析端口,一般不开
  5. iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 允许本机访问本机
  6. iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  7. iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT 允许所有IP访问80端口
  8. iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
  9. iptables-save > /etc/sysconfig/iptables 保存配置
  10. iptables -L 显示iptables列表

列出 INPUT链 所有的规则:iptables -L INPUT --line-numbers
删除某条规则,其中5代表序号(序号可用上面的命令查看):iptables -D INPUT 5
开放指定的端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
禁止指定的端口:iptables -A INPUT -p tcp --dport 80 -j DROP
拒绝所有的端口:iptables -A INPUT -j DROP