服务器如何配置防火墙规则开放/关闭端口?
配置服务器防火墙规则(开放/关闭端口)是服务器安全管理的基础操作,不同操作系统和防火墙工具的配置方式有所不同。以下是主流系统的详细操作指南:
一、Linux系统(iptables/firewalld/UFW)
1. iptables(传统方式)
# 查看当前规则 sudo iptables -L -n# 开放端口(如80/TCP) sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT# 关闭端口(如3306/TCP) sudo iptables -A INPUT -p tcp --dport 3306 -j DROP# 保存规则(CentOS/RHEL) sudo service iptables save # 或(Ubuntu/Debian) sudo iptables-save > /etc/iptables.rules
2. firewalld(CentOS/RHEL 7+)
# 开放端口 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload# 关闭端口 sudo firewall-cmd --zone=public --remove-port=3306/tcp --permanent sudo firewall-cmd --reload# 查看已开放端口 sudo firewall-cmd --list-ports
3. UFW(Ubuntu/Debian简化工具)
# 启用UFW sudo ufw enable# 开放端口 sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP# 关闭端口 sudo ufw deny 3306/tcp # MySQL# 查看规则 sudo ufw status numbered
二、Windows系统
1. 通过防火墙图形界面
-
打开 控制面板 > Windows Defender 防火墙 > 高级设置
-
选择 入站规则 > 新建规则
-
选择 端口 > TCP/UDP,输入端口号(如80)
-
选择 允许/阻止连接,设置作用域(公用/私有/域)
-
命名规则并保存
2. 通过PowerShell命令
powershell
# 开放端口(如80/TCP) New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow# 关闭端口(如3389/TCP) Remove-NetFirewallRule -DisplayName "Remote Desktop"
三、云服务器(安全组配置)
1. 莱卡云/腾讯云/AWS
-
登录云控制台,进入 安全组管理
-
添加规则:
-
协议类型:TCP/UDP/ICMP
-
端口范围:单个(80)或范围(8000-9000)
-
授权对象:0.0.0.0/0(开放公网)或指定IP
-
-
绑定到目标服务器实例
2. 快速命令示例(AWS CLI)
aws ec2 authorize-security-group-ingress \--group-id sg-xxxxxx \--protocol tcp \--port 22 \--cidr 203.0.113.0/24
四、关键注意事项
-
最小权限原则
-
仅开放必要端口(如Web服务:80/443,SSH:22)。
-
避免开放高危端口(如135-139、445、3389)。
-
-
端口伪装(安全增强)
# 修改SSH默认端口(Linux) sudo sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config sudo systemctl restart sshd
-
日志监控
# 查看防火墙拦截记录(Linux) sudo grep DROP /var/log/syslog
-
多工具冲突
-
避免同时启用
iptables
和firewalld
,可能导致规则混乱。
-
五、常用端口对照表
端口 | 服务 | 风险等级 | 建议操作 |
---|---|---|---|
22 | SSH | 高 | 改端口+IP白名单 |
80 | HTTP | 中 | 开放 |
443 | HTTPS | 低 | 必须开放 |
3306 | MySQL | 高 | 限制内网访问 |
3389 | RDP | 极高 | 仅VPN访问 |
通过以上步骤,您可以灵活控制服务器端口的开放与关闭。建议首次配置后使用工具(如telnet
或nmap
)测试端口状态:
nmap -p 80,443 your-server-ip