firewalld
时执行firewall-cmd --zone=public --add-port=端口号/tcp --permanent
并--reload
;或使用iptables
添加规则后保存,需确保服务监听该端口。开放端口前的准备工作
-
确认当前防火墙状态
# 查看 firewalld 状态(CentOS/RHEL) sudo systemctl status firewalld # 查看 ufw 状态(Ubuntu/Debian) sudo ufw status # 通用检查(iptables) sudo iptables -L -n -v
- 如果防火墙未启用,需先激活:
sudo systemctl start firewalld # CentOS sudo ufw enable # Ubuntu
- 如果防火墙未启用,需先激活:
-
确认服务需要开放的端口
- Web 服务:80(HTTP)、443(HTTPS)
- SSH:22
- 数据库:3306(MySQL)、5432(PostgreSQL)
根据不同防火墙工具开放端口
方法 1:使用 firewalld(CentOS/RHEL/Fedora)
# 开放单个端口(如 8080) sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放端口范围(如 5000-6000) sudo firewall-cmd --zone=public --add-port=5000-6000/tcp --permanent # 重新加载防火墙使配置生效 sudo firewall-cmd --reload # 验证已开放的端口 sudo firewall-cmd --list-ports
方法 2:使用 ufw(Ubuntu/Debian)
# 开放端口(如 3306) sudo ufw allow 3306/tcp # 开放特定来源 IP 的端口(仅允许 192.168.1.100 访问 22 端口) sudo ufw allow from 192.168.1.100 to any port 22 # 启用配置 sudo ufw reload # 查看规则 sudo ufw status numbered
方法 3:使用 iptables(通用但需手动持久化)
# 开放端口(如 80) sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 保存规则(不同系统保存方式不同) # Ubuntu: sudo netfilter-persistent save # CentOS: sudo service iptables save # 临时开放端口(重启失效) sudo iptables -I INPUT -p tcp --dport 9000 -j ACCEPT
开放端口后的验证方法
-
本地检查端口监听状态
sudo ss -tuln | grep :80 # 查看 80 端口是否处于 LISTEN 状态
-
远程测试端口连通性
# 使用 telnet telnet 服务器IP 端口号 # 使用 nc (netcat) nc -zv 服务器IP 端口号
-
在线工具检测
访问 Port Checker 输入端口号测试外部可达性。
常见问题与解决方案
问题现象 | 原因 | 解决方法 |
---|---|---|
端口开放但无法访问 | 服务未启动/监听 IP 错误 | systemctl restart 服务名 |
防火墙规则丢失 | 未持久化 | 使用 --permanent (firewalld)或保存 iptables 规则 |
云服务器端口不通 | 云平台安全组未放行 | 在阿里云/ AWS 控制台配置安全组 |
仅需内网访问 | 误开放到公网 | 限制来源 IP:sudo ufw allow from 192.168.1.0/24 |
安全注意事项
- 最小化开放原则
只开放必要端口,- 避免开放
0.0.0:22
,建议限制 SSH 访问 IP。
- 避免开放
- 启用高级防护
# 使用 fail2ban 防暴力破解 sudo apt install fail2ban # Ubuntu sudo yum install fail2ban # CentOS
- 定期审计端口
sudo netstat -tunlp # 检查所有监听端口 sudo lsof -i :端口号 # 查看占用端口的进程
进阶配置示例
场景:为 Nginx 开放 80/443 并限制访问频率
# 1. 开放端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 2. 启用速率限制(每秒允许 20 个新连接) sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/second -j ACCEPT
引用说明 参考 Linux 官方文档(firewalld、ufw)及服务器安全最佳实践,操作需 root 权限,生产环境建议先在测试服务器验证。
通过以上步骤,您可以安全高效地管理 Linux 端口配置,如果遇到复杂网络环境(如 Docker/NAT),需同步检查路由规则和容器映射。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/10423.html