安装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
禁止其他未允许的规则访问
只允许指定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持久化
安装 iptables-persistent