Linux中如何通过iptables实现端口访问控制
最近在做应用开发及部署测试过程中,经常需要做一些访问控制,之前主要通过firewalld实现访问控制,具体方法请参考之前的文章,但这种方式只适用于宿主机部署应用的情况,。因此最近对linux的iptables访问控制做了一些研究,Iptables是配置 Netfilter 过滤功能的用户空间工具。 netfilter 才是防火墙真正的安全框架(framework),netfilter 位于内核空间。iptables 其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。Iptable 根据规则所定义的方法来处理数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。具体记录如下,供大家参考。
一、测试环境
Linux版本为Redhat 7.9,具备root权限。
二、端口访问控制示例对于docker部署应用的访问控制,只能采用iptables访问过滤来实现访问控制,因为docker默认会绕过firewalld防火墙
# 完整示例
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 设置默认策略为拒绝所有流量
iptables -P INPUT DROP
# 允许本地回环接口的流量
iptables -A INPUT -i lo -j ACCEPT
# 允许特定 IP 地址访问 8080 端口的应用
iptables -A INPUT -p tcp --dport 8080 -s 10.26.101.121 -j ACCEPT
iptables -D INPUT -p tcp --dport 11434 -s 10.36.101.191 -j ACCEPT
# 拒绝其他 IP 地址的访问
iptables -A INPUT -p tcp --dport 8080 -j DROP
三、查看规则
# 查看规则
iptables -L -n
iptables -L -n -v #显示详细信息#查看所有规则,并列出规则编号
iptables -n --line-numbers -L
四、保存规则
# 保存规则
iptables-save
五、删除规则
# 删除规则
iptables -D INPUT 6
# 参数说明如下:
-D:删除规则。
-INPUT:指定链名。
-2:规则编号。
六、规则立刻生效
# 重启iptables服务
service iptables restart
#重启防火墙
systemctl restart iptables.service