在Linux系统中,端口屏蔽是网络安全的核心实践之一,通过控制特定端口的访问权限,可有效防止未授权访问、恶意扫描和攻击,以下详细介绍两种主流工具的操作方法(基于CentOS/Ubuntu等主流发行版),请根据实际环境选择。
使用 iptables 屏蔽端口
iptables 是 Linux 内核集成的防火墙工具,适合所有主流发行版。
屏蔽指定端口(以 22/TCP 为例)
# 屏蔽出站流量(OUTPUT链) sudo iptables -A OUTPUT -p tcp --dport 22 -j DROP
-A INPUT
:追加到INPUT链(入站规则)-p tcp
:指定TCP协议--dport 22
:目标端口22-j DROP
:丢弃数据包(无响应)
允许特定IP访问端口(白名单)
# 仅允许 192.168.1.100 访问22端口 sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j DROP # 其他IP禁止访问
保存规则(重启后生效)
# Ubuntu/Debian sudo iptables-save > /etc/iptables/rules.v4 # CentOS/RHEL sudo service iptables save
使用 firewalld 屏蔽端口(推荐用于 CentOS/RHEL 7+)
firewalld 提供动态管理支持,更易用。
永久屏蔽端口
# 屏蔽TCP 3306端口(MySQL默认端口) sudo firewall-cmd --permanent --remove-port=3306/tcp # 屏蔽UDP 53端口(DNS) sudo firewall-cmd --permanent --remove-port=53/udp
允许特定服务(如HTTP/HTTPS)
sudo firewall-cmd --permanent --add-service=http # 放行80端口 sudo firewall-cmd --permanent --add-service=https # 放行443端口
生效配置
sudo firewall-cmd --reload # 重载配置 sudo firewall-cmd --list-ports # 查看已屏蔽端口
其他工具补充
- UFW (Ubuntu 简化工具):
sudo ufw deny 22/tcp # 屏蔽22端口 sudo ufw allow from 192.168.1.0/24 to any port 80 # 允许子网访问80端口
- nftables (iptables 替代品):
适用于新内核(≥Linux 3.13),语法更简洁。
关键注意事项
- 避免锁定自己
- 操作前确保允许当前SSH连接的IP(或保留一个活动会话)。
- 测试规则后保存,防止重启失效。
- 规则优先级
iptables 规则从上到下匹配,白名单应放在DROP规则之前。 - 备份配置
sudo iptables-save > ~/iptables_backup.txt # iptables备份 sudo firewall-cmd --runtime-to-permanent # firewalld临时转永久
- 端口状态验证
使用netstat -tuln
或ss -tuln
检查端口监听状态,
用telnet [IP] [端口]
或nmap -p [端口] [IP]
测试连通性。
端口屏蔽是Linux安全的基础防线:
- iptables 适合精细控制,兼容性强。
- firewalld 适合动态管理,操作简便。
- 生产环境中,建议结合 fail2ban(自动屏蔽恶意IP)和 SELinux(强制访问控制)提升安全性,定期审计规则,确保最小权限原则。
引用说明
- iptables 官方文档:https://netfilter.org/documentation/
- firewalld 配置指南:https://firewalld.org/documentation/
- Linux 内核网络栈:https://www.kernel.org/doc/html/latest/networking/ 基于 Linux 5.4+ 内核及常见发行版实践验证,适用于主流云服务器环境。*
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4415.html