当前位置:首页>Linux>Linux 防火墙实战:UFW 从入门到精通,一键配置企业级安全策略

Linux 防火墙实战:UFW 从入门到精通,一键配置企业级安全策略

  • 2026-09-07 20:01:50
Linux 防火墙实战:UFW 从入门到精通,一键配置企业级安全策略

Linux 防火墙实战:UFW 从入门到精通,一键配置企业级安全策略

引言:服务器被黑 3 次后,我学会了防火墙

上周,朋友老张找我说:"我的服务器又被黑了,这已经是第 3 次了。"

我问他:"你有没有配置防火墙?"

他说:"防火墙?那不是大厂才用的吗?我这种小服务器用不上。"

这是一个巨大的误区。

我帮他查了一下服务器日志:

• SSH 暴力破解:每天 50000+ 次

• 端口扫描:每天 1000+ 次

• SQL 注入尝试:每天 50+ 次

• 恶意 IP:来自俄罗斯、越南、巴西

他的服务器就像裸奔,完全暴露在互联网上。

后来,我帮他配置了 UFW 防火墙,并配合 fail2ban 自动封禁。

结果:

• 恶意访问减少 99%

• SSH 暴力破解减少 99.9%

• 服务器负载降低 30%

• 睡觉安心了

今天这篇文章,就是教你如何用 UFW 防火墙保护你的服务器,从入门到精通,一键配置企业级安全策略。


一、什么是防火墙?为什么你需要它?

1.1 防火墙是什么?

防火墙:网络安全的第一道防线,控制进出服务器的流量。

比喻:

• 服务器 = 你的房子

• 防火墙 = 大门和门锁

• 端口 = 窗户(开放端口 = 开窗户)

• 规则 = 访客名单(允许谁进入)

1.2 为什么需要防火墙?

没有防火墙的风险:

• 端口暴露:所有端口对外开放,黑客随意扫描

• 暴力破解:SSH、FTP、数据库被疯狂破解

• DDoS 攻击:大量流量打垮服务器

• 数据泄露:敏感端口被访问

有防火墙的好处:

• ✅ 只开放必要的端口(如 80、443、22)

• ✅ 限制访问来源(IP 白名单)

• ✅ 自动封禁恶意 IP

• ✅ 记录访问日志(审计)

• ✅ 降低被攻击风险


二、UFW 是什么?为什么选择它?

2.1 UFW 介绍

UFW(Uncomplicated Firewall):简单易用的防火墙配置工具

特点:

• ✅ 简单:命令直观,5 分钟上手

• ✅ 强大:基于 iptables,功能完整

• ✅ 默认安全:拒绝所有入站,允许所有出站

• ✅ Ubuntu 默认:Ubuntu/Debian 系统自带

为什么选择 UFW?

| 工具 | 复杂度 | 适用场景 |

|------|--------|----------|

| UFW | 低 | 90% 的情况 |

| iptables | 高 | 复杂规则、高性能 |

| firewalld | 中 | CentOS/RHEL |

| nftables | 高 | 最新、最强大 |

结论:对于 90% 的用户,UFW 是最佳选择。


三、安装和基本配置

3.1 安装 UFW

Ubuntu/Debian:

sudo apt update sudo apt install ufw -y

检查状态:

sudo ufw status

输出:

Status: inactive

3.2 基本配置

设置默认策略:

# 拒绝所有入站流量 sudo ufw default deny incoming  # 允许所有出站流量 sudo ufw default allow outgoing  # 拒绝转发流量 sudo ufw default deny routed

启用 UFW:

sudo ufw enable

输出:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup

查看状态:

sudo ufw status verbose

四、常用服务配置:SSH、HTTP、HTTPS

4.1 允许 SSH

开放 SSH 端口(22):

sudo ufw allow ssh

或者指定端口:

sudo ufw allow 22/tcp

限制 SSH 访问(只允许特定 IP):

# 只允许公司 IP sudo ufw allow from 192.168.1.100 to any port 22  # 只允许特定网段 sudo ufw allow from 192.168.1.0/24 to any port 22

4.2 允许 HTTP/HTTPS

开放 Web 服务:

sudo ufw allow 'Nginx Full'

或者单独开放:

sudo ufw allow 80/tcp   # HTTP sudo ufw allow 443/tcp  # HTTPS

4.3 查看当前规则

sudo ufw status numbered

输出:

Status: active       To                         Action      From      --                         ------      ---- [ 1] 22/tcp                     ALLOW IN    192.168.1.0/24 [ 2] 80/tcp                     ALLOW IN    Anywhere [ 3] 443/tcp                    ALLOW IN    Anywhere

五、高级配置:IP 白名单、黑名单、限流

5.1 IP 白名单

只允许特定 IP 访问:

# 允许公司 IP sudo ufw allow from 1.2.3.4  # 允许多个 IP sudo ufw allow from 5.6.7.8 sudo ufw allow from 9.10.11.12

允许 IP 段:

sudo ufw allow from 192.168.0.0/16

5.2 IP 黑名单

拒绝特定 IP:

sudo ufw deny from 1.2.3.4

拒绝 IP 段:

sudo ufw deny from 5.6.7.0/24

5.3 删除规则

查看规则编号:

sudo ufw status numbered

删除规则(假设编号是 3):

sudo ufw delete 3

5.4 端口转发

转发端口(高级):

编辑 /etc/ufw/before.rules:

sudo vim /etc/ufw/before.rules

添加:

*nat :PREROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 COMMIT

重启 UFW:

sudo ufw reload

六、集成 fail2ban:自动封禁恶意 IP

6.1 fail2ban 是什么?

fail2ban:监控日志,自动封禁恶意 IP

功能:

• 监控 SSH、Nginx、Apache 日志

• 检测暴力破解、恶意扫描

• 自动封禁 IP(使用 iptables/ufw)

• 定时解封

6.2 安装 fail2ban

sudo apt install fail2ban -y

6.3 配置 SSH 保护

创建本地配置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo vim /etc/fail2ban/jail.local

添加:

[DEFAULT] bantime = 3600        # 封禁 1 小时 findtime = 600         # 10 分钟内 maxretry = 5           # 失败 5 次  [sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 3

6.4 启动 fail2ban

sudo systemctl enable fail2ban sudo systemctl start fail2ban

查看状态:

sudo fail2ban-client status sshd

输出:

Status for the jail: sshd |- Filter |  |- Currently failed: 0 |  |- Total failed:     23 |  `- File list:       /var/log/auth.log `- Actions    |- Currently banned: 1    |- Total banned:     5    `- Banned IP list:   192.168.1.100

6.5 手动解封 IP

sudo fail2ban-client set sshd unbanip 192.168.1.100

七、实战案例:保护 Web 服务器

7.1 场景

你有一台 Web 服务器:

• 公网 IP:1.2.3.4

• 服务:Nginx (80/443)

• SSH:端口 22

• 数据库:MySQL(只允许本地访问)

7.2 完整配置脚本

创建脚本setup_firewall.sh:

#!/bin/bash  echo "配置 UFW 防火墙..."  # 设置默认策略 sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw default deny routed  # 允许 SSH(限制 IP) sudo ufw allow from 192.168.1.0/24 to any port 22  # 允许 HTTP/HTTPS sudo ufw allow 80/tcp sudo ufw allow 443/tcp  # 拒绝恶意 IP sudo ufw deny from 5.6.7.8  # 启用 UFW sudo ufw enable  echo "UFW 配置完成!"

执行:

chmod +x setup_firewall.sh ./setup_firewall.sh

7.3 验证配置

查看状态:

sudo ufw status verbose

测试 SSH(从其他 IP):

ssh user@1.2.3.4

测试 Web:

curl http://1.2.3.4 curl https://1.2.3.4

八、高级技巧:限流、日志、监控

8.1 限制连接数

UFW 不直接支持,使用 iptables:

sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP

保存规则:

sudo apt install iptables-persistent sudo netfilter-persistent save

8.2 配置日志

启用日志:

sudo ufw logging on

查看日志:

sudo tail -f /var/log/ufw.log

8.3 实时监控

安装 iftop(网络监控):

sudo apt install iftop -y

运行:

sudo iftop -i eth0

九、企业级配置:多层防护

9.1 第一层:云服务商防火墙

阿里云/腾讯云安全组:

• 只允许必要端口

• 限制访问来源

• 配置 DDoS 防护

9.2 第二层:UFW 防火墙

服务器级别:

• 限制端口访问

• IP 白名单/黑名单

• 应用层规则

9.3 第三层:应用层防护

Nginx/Apache 配置:

• 限制请求频率

• 屏蔽恶意 User-Agent

• 防止 SQL 注入

9.4 第四层:fail2ban

自动封禁:

• 暴力破解检测

• 自动封禁 IP

• 定时解封


十、常见问题和解决方案

10.1 被锁在服务器外

问题:配置防火墙后,自己无法登录

解决:

1. 通过云服务商控制台:使用 VNC/Console 登录

2. 禁用 UFW:

sudo ufw disable

1. 重置规则:

sudo ufw reset

10.2 端口仍然无法访问

检查清单:

1. UFW 规则:

sudo ufw status

1. 服务是否运行:

sudo systemctl status nginx

1. 云服务商安全组:检查端口是否开放

1. 本地防火墙:检查本地网络

10.3 规则不生效

重新加载:

sudo ufw reload

重启 UFW:

sudo systemctl restart ufw

十一、安全最佳实践

11.1 最小权限原则

只开放必要的端口:

# ❌ 不推荐:开放所有端口 sudo ufw allow from any  # ✅ 推荐:只开放 80/443 sudo ufw allow 80/tcp sudo ufw allow 443/tcp

11.2 定期审查规则

每周检查:

sudo ufw status numbered

删除过时规则:

sudo ufw delete [number]

11.3 监控日志

定期查看:

sudo tail -100 /var/log/ufw.log

分析恶意 IP:

sudo grep "UFW BLOCK" /var/log/ufw.log | awk '{print $NF}' | sort | uniq -c | sort -nr

11.4 备份配置

备份当前规则:

sudo ufw status > ~/ufw-backup-$(date +%Y%m%d).txt

恢复规则:

sudo ufw restore < ~/ufw-backup-20260401.txt

十二、性能测试:防火墙会影响性能吗?

12.1 性能影响

UFW 的性能开销:

• CPU 占用:< 1%

• 内存占用:< 10MB

• 网络延迟:< 1ms

结论:对性能的影响微乎其微。

12.2 压力测试

使用 iperf 测试:

# 服务器端 iperf3 -s  # 客户端 iperf3 -c server_ip -t 60

对比(有防火墙 vs 无防火墙):

• 吞吐量:几乎相同

• 延迟:增加 < 1ms

• CPU:增加 < 1%


十三、总结:防火墙是安全的第一步

配置防火墙的价值:

• ✅ 减少 99% 的恶意访问

• ✅ 防止暴力破解

• ✅ 降低被攻击风险

• ✅ 满足合规要求

记住:

防火墙不是万能的,但没有防火墙是万万不能的。

最安全的配置 = 防火墙 + fail2ban + 定期更新 + 安全意识

最重要的是:开始行动。


【下期预告】

下一篇文章,我会详细拆解"Docker 容器化实战:一键部署 10 个服务,省下 3 台服务器钱",教你如何:

• 编写 Dockerfile

• 配置 Docker Compose

• 部署常见服务(MySQL、Redis、Nginx)

• 数据持久化

• 网络配置

如果觉得这篇文章有帮助,记得点赞、收藏、转发~

【互动话题】

你的服务器配置防火墙了吗?在评论区分享你的经验或问题,我会逐一回复~

最新文章

随机文章