安装iptables
1 2 3 4
| yum install iptables
apt-get install iptables
|
查看已添加的规则
1 2 3 4 5 6 7 8 9
| iptables -L -n -v iptables -L
iptables -t nat -vnL
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) n:只显示IP地址和端口号,不将ip解析为域名
|
清空iptables规则
1 2 3 4 5 6 7 8 9 10 11 12 13
| iptables -F iptables -X iptables -Z
# 删除nat规则 iptables -t nat -F
# 序号显示 iptables -L -n --line-numbers # 删除相关序号 iptables -D INPUT 3 # 保存规则 iptables save
|
开放本机防火墙常用端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 允许所有本机向外的访问 iptables -A OUTPUT -j ACCEPT
# 允许本机访问 iptables -l INPUT -i lo -j ACCEPT
# 开放789端口 iptables -I INPUT -p tcp --dport 789 -j ACCEPT
# 开放80,443端口 iptables -t filter -l INPUT -p tcp -m multiport --dports 80,443 -j REJECT
# 开放20-22端口 iptables -t filter -I INPUT -p tcp --dport 20:21 -j ACCEPT
|
允许对所有的地址开放本机的基于ICMP协议的数据包访问
1
| iptables -t filter -I INPUT -p icmp -j ACCEPT
|
其他未被允许的端口则禁止访问
1
| iptables -t filter -A INPUT -j REJECT
|
防止SYN洪水攻击
1
| iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
|
允许/屏蔽PING
1 2 3 4 5 6
| # 允许ping iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
# 禁止ping iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
|
屏蔽IP或IP段
1 2 3 4 5
| iptables -I INPUT -s 123.45.6.7 -j DROP
iptables -l INPUT -s 123.0.0.0/8 -j DROP
|
禁止其他未允许的规则访问
1 2
| iptables -A INPUT -j REJECT iptables -A FORWARD -j REJECT
|
只允许指定ip地址访问指定端口
1 2
| iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --sport 22 -j ACCEPT
|
上面这两条,请注意 --dport
为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 --sport
同理,-s
是指定源地址,-d
是指定目标地址。
转发NAT规则
1 2 3 4 5 6 7 8
| iptables -A FORWARD -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 1122 -j DNAT --to-destination 10.10.10.11:22
iptables -t nat -A PREROUTING -p udp -m tcp --dport 1122 -j DNAT --to-destination 10.10.10.11:22
|
删除NAT规则
1 2 3 4 5
| iptables -t nat -vnL PREROUTING --line-number
iptables -t nat -D PREOUTING 2
|
iptables持久化
1 2 3 4 5
| # 保存规则 iptables save
# 重启服务 iptables restart
|
安装 iptables-persistent
1 2 3 4 5
| apt install iptables-persistent
# 规则生效 netfilter-persistent save netfilter-persistent reload
|