安装iptables

1# centos
2yum install iptables
3# debian/ubunte
4apt-get install iptables

查看已添加的规则

1iptables -L -n -v
2iptables -L --line-numbers
3# 查看nat规则
4iptables -t nat -vnL
5
6# 注释
7v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
8x:在 v 的基础上,禁止自动单位换算(K、M)
9n:只显示IP地址和端口号,不将ip解析为域名

清空iptables规则

 1iptables -F
 2iptables -X
 3iptables -Z
 4
 5# 删除nat规则 
 6iptables -t nat -F
 7
 8# 序号显示
 9iptables -L -n --line-numbers
10# 删除相关序号
11iptables -D INPUT 3
12# 保存规则
13iptables save

开放本机防火墙常用端口

 1# 允许所有本机向外的访问
 2iptables -A OUTPUT -j ACCEPT
 3
 4# 允许本机访问
 5iptables -l INPUT -i lo -j ACCEPT
 6
 7# 开放789端口
 8iptables -I INPUT -p tcp --dport 789 -j ACCEPT
 9
10# 开放80,443端口
11iptables -t filter -l INPUT -p tcp -m multiport --dports 80,443 -j REJECT
12
13# 开放20-22端口
14iptables -t filter -I INPUT -p tcp --dport 20:21 -j ACCEPT

允许对所有的地址开放本机的基于ICMP协议的数据包访问

1iptables -t filter -I INPUT -p icmp -j ACCEPT

其他未被允许的端口则禁止访问

1iptables -t filter -A INPUT -j REJECT

防止SYN洪水攻击

1iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT

允许/屏蔽PING

1# 允许ping
2iptables -A  INPUT -p icmp --icmp-type echo-request -j ACCEPT
3iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
4
5# 禁止ping
6iptables -A  INPUT -p icmp --icmp-type  8 -s 0/0 -j DROP

屏蔽IP或IP段

1# 屏蔽IP
2iptables -I INPUT -s 123.45.6.7 -j DROP
3
4# 屏蔽IP段
5iptables -l INPUT -s 123.0.0.0/8 -j DROP

禁止其他未允许的规则访问

1iptables -A INPUT -j REJECT
2iptables -A FORWARD -j REJECT

只允许指定ip地址访问指定端口

1iptables -A  INPUT -s xxx.xxx.xxx.xxx -p tcp --dport  22 -j ACCEPT
2iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --sport  22 -j ACCEPT

上面这两条,请注意 --dport 为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 --sport 同理,-s 是指定源地址,-d 是指定目标地址。

转发NAT规则

1# 允许数据转发
2iptables -A FORWARD -j ACCEPT
3
4# 添加IP TCP转发
5iptables -t nat -A PREROUTING -p tcp -m tcp --dport 1122 -j DNAT --to-destination 10.10.10.11:22
6
7# 添加IP UDP转发
8iptables -t nat -A PREROUTING -p udp -m tcp --dport 1122 -j DNAT --to-destination 10.10.10.11:22

删除NAT规则

1# 列出nat规则
2iptables -t nat -vnL PREROUTING --line-number
3
4# 删除相对应序号2的规则
5iptables -t nat -D PREOUTING 2

iptables持久化

1# 保存规则
2iptables save
3
4# 重启服务
5iptables restart

安装 iptables-persistent

1apt install iptables-persistent
2
3# 规则生效
4netfilter-persistent save
5netfilter-persistent reload