Chain

  1. PREROUTING (路由前)
  2. INPUT (数据包流入口)
  3. FORWARD (转发)
  4. OUTPUT (数据包出口)
  5. POSTROUTING (路由后)

查看路由表

1
2
3
iptables -L -n -v
iptables -L -n --line-number
iptables -t nat -vnL

设置默认策略
iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的

清空规则链

1
2
3
iptables -t nat -F 清空nat表的所有链
iptables -t nat -F PREROUTING
iptables -F

新建一个链
iptables -N NEWCHAINNAME

-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上

–dport 22 指定目的端口
–sport 22 指定源端口
-p tcp 指定协议
-j ACTION DROP/REJECT/ACCEPT/DNAT(目的地址转换)/SNAT(源地址转换)/MASQUERADE/REDIRECT

只允许192.168.6.1访问本机ssh服务
iptables -t filter -A INPUT -s 192.168.6.1 -p tcp --dport 22 -j ACCEPT

除了192.168.6.1地址拒绝所有其他访问22端口
iptables -A INPUT ! -s 192.168.6.1 -p tcp --dport 22 -j DROP

删除第4条(delete)
iptables -D INPUT 4

删除FORWARD
iptables -D FORWARD 1

比如进来的只允许状态为NEW和ESTABLISHED的进来,出去只允许ESTABLISHED的状态出去,这就可以将比较常见的反弹式木马有很好的控制机制。

nat功能
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE

nat之后,将访问192.168.10.18 80端口定向到nat后的172.16.100.2
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2

将访问80端口转发到本地端口
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port <sslstrip listenPort>

DNAT 端口映射
iptables -t nat -A PREROUTING -d 公网IP -p TCP --dport 80 -j DNAT --to-destination 10.31.2.1
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -j DNAT --to 192.168.6.1

删除nat PREROUTING
iptables -t nat -D PREROUTING <num>

在INPUT第三条后面插入(insert)
iptables -I INPUT 3 -p tcp --dport 21 -j ACCEPT

修改
iptables -R INPUT 3 -j DROP

默认规则
iptables -A INPUT -j ACCEPT

保存

1
2
iptables-save
/etc/sysconfig/iptables

恢复
iptables-restore

每30s 5个连接(rcheck是接收到第1个数据包时开始计时,10s内仅限3次连接,后续的包丢弃)

1
2
iptables -R INPUT 2 -p icmp -m recent --update --seconds 10 --hitcount 3 --name PINGTEST --rsource -j DROP
-A INPUT -p icmp -m recent --set --name PINGTEST --rsource -j ACCEPT

控制单个IP的最大并发连接数 < 10
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT

控制单个IP在一定的时间内允许新建立的连接数 15/m

1
2
-A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -j DROP

过滤ip
iptables -I INPUT -s 121.69.131.144 -j DROP

CentOS

1
2
3
4
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #开启8080端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
/etc/init.d/iptables status