iptables-----可以将规则组成一个列表,实现绝对详细的访问控制功能。


一、iptables基础

Iptables中的规则表:规则表的先后顺序:raw→mangle→nat→filte

1.png


规则链的先后顺序:

入站顺序:PREROUTING→INPUT

出站顺序:OUTPUT→POSTROUTING

转发顺序:PREROUTING→FORWARD→POSTROUTING


1.jpg


iptables语法
iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配后的动作]
           小写           大写        大写                   小写          大写

表名包括:

  • raw:高级功能,如:网址过滤。

  • mangle:数据包修改(QOS),用于实现服务质量。

  • net:地址转换,用于网关路由器。

  • filter:包过滤,用于防火墙规则。



规则链名包括:

  • INPUT链:处理输入数据包。

  • OUTPUT链:处理输出数据包。

  • PORWARD链:处理转发数据包。

  • PREROUTING链:用于目标地址转换(DNAT)。

  • POSTOUTING链:用于源地址转换(SNAT)。


动作包括:

  • accept:接收数据包。

  • DROP:丢弃数据包。

  • REDIRECT:重定向、映射、透明代理。

  • SNAT:源地址转换。

  • DNAT:目标地址转换。

  • MASQUERADE:IP伪装(NAT),用于ADSL。

  • LOG:日志记录。


例:

查看已添加的iptables规则

iptables -nL  -v


清除已有iptables规则


iptables -F
iptables -X
iptables -Z


开放指定的端口


iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT          #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT         #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #允许FTP服务的20端口
iptables -A INPUT -j reject         #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT     #禁止其他未允许的规则访问


屏蔽IP

iptables -I INPUT -s 192.168.122.122 -j DROP     #屏蔽单个IP的命令
iptables -I INPUT -s 192.168.122.0/24 -j DROP    #封IP段即从192.168.122.1到192.168.122.254