开放端口前的准备
-
确认需要开放的端口号
- HTTP服务:80/TCP
- HTTPS服务:443/TCP
- SSH服务:22/TCP
- 自定义服务:如3000/TCP
-
检查端口是否已被监听
运行命令查看当前监听端口的服务:sudo ss -tuln | grep LISTEN # 或使用传统命令 sudo netstat -tuln | grep LISTEN
若目标端口未出现在列表中,需先配置应用程序监听该端口(如修改Nginx/Apache配置)。
通过防火墙开放端口
Linux系统常用两种防火墙工具,根据发行版选择对应方案:
方案1:使用 firewalld
(推荐用于CentOS/RHEL/Fedora)
-
查看防火墙状态
sudo firewall-cmd --state
若返回
running
表示防火墙已启用。 -
永久开放端口
# 开放TCP端口(示例:开放80和443) sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent # 开放UDP端口(示例:开放53/UDP) sudo firewall-cmd --zone=public --add-port=53/udp --permanent
-
重新加载配置生效
sudo firewall-cmd --reload
-
验证已开放端口
sudo firewall-cmd --zone=public --list-ports
方案2:使用 iptables
(适用于Debian/Ubuntu或旧版系统)
-
临时开放端口(重启失效)
# 允许TCP端口(示例:22) sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许UDP端口(示例:1194) sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPT
-
永久保存规则
安装持久化工具并保存:sudo apt install iptables-persistent # Debian/Ubuntu sudo netfilter-persistent save # 保存规则
-
检查生效规则
sudo iptables -L INPUT -v --line-numbers
验证端口是否开放成功
-
从外部网络测试
使用另一台设备执行:telnet 你的服务器IP 端口号 # 示例:telnet 192.168.1.100 80
若返回
Connected
表示成功。 -
服务器本地测试
nc -zv 127.0.0.1 端口号 # 示例:nc -zv 127.0.0.1 22
-
在线工具检测
访问 YouGetSignal 或 PortChecker,输入服务器公网IP和端口号扫描。
安全注意事项
-
最小化开放原则
仅开放必要端口,关闭未使用的服务(如默认的SSH端口22可改为非标准端口)。 -
限制访问来源
- 在防火墙中指定IP白名单:
# firewalld示例:仅允许192.168.1.0/24访问3306 sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
- iptables示例:
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT
- 在防火墙中指定IP白名单:
-
启用Fail2ban防护
安装Fail2ban自动屏蔽暴力破解行为:sudo apt install fail2ban # Debian/Ubuntu sudo yum install fail2ban # CentOS/RHEL
-
定期更新系统
保持系统和防火墙工具更新:sudo apt update && sudo apt upgrade # Debian/Ubuntu sudo yum update # CentOS/RHEL
常见问题解决
-
端口开放后仍无法访问?
- 检查服务是否正常运行(如
systemctl status nginx
)。 - 确认云服务商安全组规则(阿里云/酷盾需额外配置控制台安全组)。
- 排查本地网络限制(如企业防火墙)。
- 检查服务是否正常运行(如
-
误操作锁定SSH连接?
- 通过云控制台使用VNC登录恢复。
- 预先配置
cron
任务定时重置防火墙:@hourly iptables -P INPUT ACCEPT && iptables -F
开放Linux服务器端口需同步操作防火墙规则(firewalld
或iptables
)和应用程序配置,始终遵循安全最佳实践:最小化开放、限制IP源、启用防护工具,操作前备份防火墙配置(如 cp /etc/firewalld/zones/public.xml ~/backup/
),避免因规则错误导致服务中断。
引用说明:本文操作基于Linux官方文档及常见运维实践,参考来源包括:
- Firewalld官方文档
- Iptables指南
- Linux Man Pages(
man firewalld
,man iptables
)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6909.html