1.安装防火墙
sudo apt update
sudo apt install ufw
2.配置必要端口
sudo ufw allow 80 # 开放 HTTP
sudo ufw allow 443 # 开放 HTTPS
sudo ufw allow 22 # 开放 SSH
3.启用 UFW
启用 ufw
防火墙(此操作会启动防火墙):
执行这一步操作前,一定要先执行第二步,尤其是配置放行ssh连接的端口,不然会把所有端口都关掉。导致服务器无法连接。
sudo ufw enable
其他必要端口: 根据业务需求开放其他端口。例如,数据库服务:
- MySQL:
3306
- PostgreSQL:
5432
允许特定 IP 访问: 如果需要限制某个端口只允许特定 IP 访问,可以用:
sudo ufw allow from <IP地址> to any port <端口号>
4.检查当前防火墙状态
sudo ufw status verbose
5.重新加载规则(如有修改)
sudo ufw reload
6.停用或调整 UFW(如果需要)
sudo ufw disable
7.如果你想基于协议管理规则,例如只开放 TCP:
sudo ufw allow 22/tcp
8.关闭所有不必要端口(谨慎使用)
sudo ufw default deny incoming # 默认拒绝所有传入流量
sudo ufw default allow outgoing # 默认允许所有传出流量
关闭指定端口:
先查看当前所有开放的端口和规则,确认需要关闭的端口。
sudo ufw status numbered
- 这会显示所有已配置的规则,并为每条规则分配一个编号(
#
)。 - 输出示例:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW Anywhere
[ 2] 80 ALLOW Anywhere
[ 3] 443 ALLOW Anywhere
使用以下命令禁用特定端口:
sudo ufw delete allow <端口号>
比如:
sudo ufw delete allow 80
如果指定了协议(如 TCP 或 UDP),请用以下命令:
sudo ufw delete allow <端口号>/<协议>
如果规则较多,可以按编号删除规则:
sudo ufw delete <规则编号>
删除后,检查规则是否正确更新:
sudo ufw status verbose
注意事项
- 确保端口未被使用: 在关闭某个端口前,确认对应的服务(如 Web 服务、数据库)已停止或切换到其他端口。
sudo netstat -tuln | grep <端口号>
如果端口仍被占用,应停止相关服务。
2. 测试关键服务: 删除端口规则后,测试其他服务(如 SSH)是否正常工作,避免意外断开连接。
3. 重新加载 UFW(可选): 如果规则修改后需要强制应用,可以重新加载 UFW:
sudo ufw reload