iptables设置防火墙规则

迈不过友情╰ 2022-12-22 11:27 487阅读 0赞

1、查看当前iptables规则
iptables -L —line-numbers
指令:
-A Append
-I Insert
-D Delete
iptables -D chain firewall-rule / iptables -D chain rulenum
注意:删完一条其它编号会变
-R Replace

参数:
-p 协议
-s 源地址
-d 目的地址
-sport 源端口
-dport 目的端口
-i 入站接口
-o 出站接口
-j 跳转:指定当某个数据包满足该规则的时候的就跳转到的下一个处理规则,而不再顺序执行后面的规则判断
可能的值有:ACCEPT, DROP, QUEUE, RETURN, 分别表示接受、丢弃、进入队列、返回(跳出,通常是从某个chain中跳回到调用该chain的上层chain)

注意:用命令是临时设置,重启会恢复。保存使用service iptables save,防火墙的规则保存在 /etc/sysconfig/iptables

2、清空已存在的规则
iptables -F

3、设置默认链规则
iptables命令默认规则是ACCEPT,设置INPUT,OUTPUT,FORWARD这些链的默认规则为DROP,命令如下:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
注意: 如果你为OUTOUT和INPUT这两条链设置默认规则为DROP,当你设置规则时就需要考虑设置两条,一条控制进入的,一条控制出去的。

4、阻断一个IP地址
BLOCK_THIS_IP=”x.x.x.x”
iptables -A INPUT -s “$BLOCK_THIS_IP” -j DROP

加上条件在eth0端口
iptables -A INPUT -i eth0 -s “$BLOCK_THIS_IP” -j DROP

再加上条件基于TCP的连接
iptables -A INPUT -i eth0 -p tcp -s “$BLOCK_THIS_IP” -j DROP

5.1、允许接入的SSH连接

iptables -A INPUT -i eth0 -p tcp —dport 22 -m state —state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp —sport 22 -m state —state ESTABLISHED -j ACCEPT

5.2、 允许本地主机SSH服务的出站连接
iptables -A OUTPUT -o eth0 -p tcp —dport 22 -m state —state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp —sport 22 -m state —state ESTABLISHED -j ACCEPT

Note:
iptables的state模块的4种封包链接状态 => ESTABLISHED, NEW, RELATED, INVALID

NEW
当你在使用UDP、TCP、ICMP等协议时,发出的第一个包的状态就是“NEW”

ESTABLISHED
当你在使用TCP、UDP、ICMP等协议时:假设你的主机发出的第一个包成功穿越防火墙,那么接下来你的主机发出和接收到的包的状态都是“ESTABLISHED”。

RELATED
当你执行Linux下执行traceroute(Windows下对应的命令为tracert)命令时,这个traceroute会发出一个封包,该封包的TTL(生存时间,Time To Live)为1,当这个包遇到路由器的时候它的TTL会减少1,这时TTL = 0,然后这个包会被丢弃,丢弃这个包的路由器会返回一个ICMP Type 11的封包给你,并告诉你那个发出的数据包气数已尽。而这个ICMP Type 11的链接状态就是“RELATED”。

INVALID
状态为INVALID的包就是状态不明的包,也就是不属于前面3中状态的包,这类包一般会被视为恶意包而被丢弃。

6、使用多端口扩展减少配置条目
以下的示例是允许外部连接对于本机SSH,HTTP,HTTPS三种服务的访问
iptables -A INPUT -i eth0 -p tcp -m multiport —dports 22,80,443 -m state —state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport —sports 22,80,443 -m state —state ESTABLISHED -j ACCEPT

7、允许内部网络连接外部网络
假设防火墙服务器有两块网卡,一块eth0连接内网,一块eth1连接外网,使用下面的规则就可以放行内网向外网发起的连接请求(方向:内网—>外网):
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

8、端口转发
将422端口的包转发到22端口:
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 —dport 422 -j DNAT —to 192.168.102.37:22

并需要明确地放行对422端口的入站连接:
iptables -A INPUT -i eth0 -p tcp —dport 422 -m state —state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp —sport 422 -m state —state ESTABLISHED -j ACCEPT

9、DoS攻击防范(需要利用扩展模块limit)
iptables -A INPUT -p tcp —dport 80 -m limit —limit 25/minute —limit-burst 100 -j ACCEPT
说明:
--litmit 25/minute 指示每分钟限制最大连接数为25
--litmit-burst 100 指示当总连接数超过100时,启动 litmit/minute 限制

参考资料:

Linux下iptables 禁止端口和开放端口 https://www.cnblogs.com/lcword/p/13093656.html
Linux iptables常用命令 https://www.cnblogs.com/ilinuxer/p/6364064.html
IPTables https://wiki.centos.org/HowTos/Network/IPTables
iptables的state模块的4种封包链接状态 https://www.cnblogs.com/simpman/archive/2013/01/14/2859250.html
25个常用的iptables命令 https://blog.csdn.net/sinat\_32033507/article/details/52688004

发表评论

表情:
评论列表 (有 0 条评论,487人围观)

还没有评论,来说两句吧...

相关阅读