Web服务器最担心端口暴露过多、防火墙规则混乱,最核心配置原则是对外开放80(HTTP)和443(HTTPS)端口,其余端口一律关闭或限制访问。
端口是网络通信的逻辑入口,不同的服务通过不同的端口对外提供能力。端口本身并不等于风险,真正的风险在于“哪些端口对谁开放、在什么条件下开放”。
80端口用于HTTP服务,443端口用于HTTPS服务,这是网站访问的两个核心端口。除此之外,SSH远程管理端口(22)、数据库端口(3306)、Redis端口等都不应直接暴露在公网。很多安全事件的根源,正是管理后台端口直接暴露在公网,给了攻击者可乘之机。
只开放80和443端口的核心价值在于遵循“最小权限”原则——仅开放业务必需的端口,其余端口一律关闭,从源头减少攻击面。
三种主流Linux防火墙配置方式
根据您的操作系统不同,可以选择以下三种工具之一进行配置。
1. UFW(Ubuntu/Debian系统,推荐新手)
UFW是Ubuntu和Debian系统的默认防火墙管理工具,语法简洁、上手快。
第一步:安装与启用
sudo apt update
sudo apt install ufw
关键提醒:在启用UFW之前,务必先放行SSH端口(22),否则您可能会被锁在服务器之外。
sudo ufw allow ssh # 放行SSH
sudo ufw allow http # 放行HTTP(80端口)
sudo ufw allow https # 放行HTTPS(443端口)
第二步:配置默认策略并启用
sudo ufw default deny incoming # 拒绝所有入站连接
sudo ufw default allow outgoing # 允许所有出站连接
sudo ufw enable # 启用防火墙
第三步:验证规则
sudo ufw status verbose
2. Firewalld(CentOS/RHEL系统)
Firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态调整规则。
第一步:启动firewalld服务
sudo systemctl start firewalld
sudo systemctl enable firewalld
第二步:开放80和443端口
推荐按“服务”名称添加规则,更简洁直观:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
如果您还想开放SSH远程管理端口:
sudo firewall-cmd --permanent --add-service=ssh
第三步:重载配置并验证
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
3. Iptables(通用底层工具)
Iptables是所有Linux系统通用的底层防火墙工具,灵活性最高但操作相对复杂。
第一步:设置默认策略
iptables -P INPUT DROP # 默认拒绝所有入站连接
iptables -P FORWARD DROP # 默认拒绝转发
iptables -P OUTPUT ACCEPT # 允许所有出站连接
第二步:添加允许规则
# 允许本地回环接口(必需)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接(避免中断现有会话)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放HTTP和HTTPS端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
第三步:保存规则(防止重启后丢失)
# CentOS/RHEL系统
service iptables save
# Ubuntu/Debian系统
sudo apt install iptables-persistent
sudo netfilter-persistent save
三、云服务器安全组配置(重要补充)
如果您使用的是云服务器,还需要在云控制台中配置安全组。安全组和系统防火墙是叠加关系,两者都放通端口才能正常访问。SSH管理端口(22)的授权对象应限制为运维人员的固定公网IP,切勿开放给0.0.0.0/0,否则极易遭受暴力破解攻击。
配置后的验证方法
完成配置后,建议通过以下方法验证:
验证端口开放状态:
# 查看当前防火墙规则
sudo ufw status verbose # UFW系统
sudo firewall-cmd --list-all # Firewalld系统
sudo iptables -L -n -v # Iptables系统
外部端口扫描测试:
使用在线端口扫描工具或`nmap`命令,从外部扫描服务器IP的80和443端口是否可达,其他端口是否已被屏蔽。
常见错误与避坑指南
错误一:忘记放行SSH端口导致被锁。 这是新手最常犯的错误。在启用防火墙之前,务必先放行SSH端口。
错误二:SSH端口开放给全网段。 生产环境中,22端口应限制为特定IP或IP段访问,避免成为暴力破解的攻击入口。
错误三:规则顺序混乱。 Iptables规则按从上到下的顺序匹配,应先写明确的允许规则,再设置统一的拒绝策略。
错误四:配置后忘记保存规则。 Iptables规则在重启后不会自动保存,必须手动保存才能持久化。
错误五:忽略安全组配置。 云服务器需同时配置系统防火墙和安全组,两者缺一不可。
配置防火墙仅开放80和443端口,是Web服务器安全加固中最基础也最关键的一步。它遵循“最小权限”原则,只开放业务必需的端口,其余一律拒绝,从源头大幅减少攻击面。
无论您使用UFW、Firewalld还是Iptables,核心思路都是一致的:放行HTTP/HTTPS → 设置默认拒绝 → 保存规则 → 验证生效。在云环境中,别忘了同时配置安全组,实现“系统防火墙 + 云安全组”的双重防护。做好这一步,您的Web服务器安全防护已经迈出了最重要的一步。
相关内容
