如何配置 UFW 防火墙:从入门到实战
(注:文档内容由 AI 生成)
引言
在 Linux 系统中,防火墙是保护服务器安全的重要组成部分。UFW(Uncomplicated Firewall)作为一款简单易用的防火墙管理工具,为用户提供了直观的命令行界面,使得即使是初学者也能轻松配置和管理防火墙规则。本文将从基础概念开始,详细介绍如何使用 UFW 配置防火墙,包括基础规则设置、Docker 网络放行、配置备份等实用技巧。
什么是 UFW
UFW(Uncomplicated Firewall)是 Linux 系统中的一款轻量级防火墙管理工具,它基于 iptables(或 nftables)构建,旨在简化防火墙规则的配置过程。UFW 提供了简洁的命令行接口,让用户能够轻松地管理网络流量,控制进出站连接。
UFW 的核心特点
安装 UFW
UFW 在大多数 Debian/Ubuntu 系统中默认预装,但在其他发行版中可能需要手动安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
sudo apt install ufw
sudo yum install ufw
sudo dnf install ufw
sudo pacman -S ufw
|
基础配置
1. 启用和禁用 UFW
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
sudo ufw enable
sudo ufw disable
sudo ufw status
sudo ufw status numbered
|
2. 设置默认策略
默认策略决定了未明确匹配任何规则的流量的处理方式:
1 2 3 4 5 6 7
|
sudo ufw default deny incoming
sudo ufw default allow outgoing
|
3. 基本规则配置
放行特定端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 1000:2000/tcp
|
拒绝特定端口
1 2 3
|
sudo ufw deny 3306/tcp
|
基于 IP 地址的规则
1 2 3 4 5 6 7 8 9 10 11
|
sudo ufw allow from 192.168.1.100
sudo ufw allow from 192.168.1.100 to any port 22/tcp
sudo ufw deny from 10.0.0.5
|
删除规则
1 2 3 4 5 6 7
|
sudo ufw delete 3
sudo ufw delete allow 80/tcp
|
高级配置
1. 配置 Docker 网络
当系统中运行 Docker 容器时,需要特别配置 UFW 以允许 Docker 网络通信。Docker 会创建多个网络子网,通常在172.16.0.0/12和192.168.0.0/16范围内。
查看 Docker 网络
1 2 3 4 5 6 7
| # 查看所有Docker网络
docker network ls
# 查看Docker网络详细信息(包括子网)
docker network inspect $(docker network ls -q) --format '{{range .IPAM.Config}}{{.Subnet}} {{end}}' | tr ' ' 'n' | sort -u
|
批量放行 Docker 网络
1 2 3 4 5 6 7
|
sudo ufw allow in from 172.16.0.0/12
sudo ufw allow in from 192.168.0.0/16
|
2. IPv6 支持
UFW 默认禁用 IPv6,需要手动开启:
1 2 3 4 5 6 7 8 9 10 11
|
sudo nano /etc/default/ufw
IPV6=yes
sudo ufw disable && sudo ufw enable
|
3. 端口转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
sudo sysctl -w net.ipv4.ip_forward=1
sudo nano /etc/sysctl.conf
sudo sysctl -p
sudo ufw allow 8080/tcp
sudo ufw route allow proto tcp from any to 192.168.1.200 port 80
|
4. 日志功能
1 2 3 4 5 6 7 8 9 10 11
|
sudo ufw logging on
sudo ufw logging full
sudo tail -f /var/log/ufw.log
|
配置备份和恢复
备份 UFW 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
mkdir -p ~/ufw_backups
sudo cp /etc/ufw/after.rules* ~/ufw_backups/
sudo cp /etc/ufw/after6.rules* ~/ufw_backups/
sudo cp /etc/ufw/before.rules* ~/ufw_backups/
sudo cp /etc/ufw/before6.rules* ~/ufw_backups/
sudo cp /etc/ufw/ufw.conf ~/ufw_backups/
sudo cp /etc/ufw/sysctl.conf ~/ufw_backups/
sudo cp -r /etc/ufw/applications.d ~/ufw_backups/
|
恢复 UFW 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
sudo cp ~/ufw_backups/after.rules* /etc/ufw/
sudo cp ~/ufw_backups/after6.rules* /etc/ufw/
sudo cp ~/ufw_backups/before.rules* /etc/ufw/
sudo cp ~/ufw_backups/before6.rules* /etc/ufw/
sudo cp ~/ufw_backups/ufw.conf /etc/ufw/
sudo cp ~/ufw_backups/sysctl.conf /etc/ufw/
sudo cp -r ~/ufw_backups/applications.d /etc/ufw/
sudo ufw disable && sudo ufw enable
|
常见问题解决
1. 规则文件不存在的问题
1 2 3 4 5 6 7 8 9
|
sudo ufw enable
sudo ufw allow 22/tcp
|
2. Docker 与 UFW 的兼容性问题
1 2 3 4 5
|
sudo systemctl restart docker
|
3. SSH 连接中断问题
1 2 3 4 5
|
sudo ufw allow 22/tcp
sudo ufw enable
|
实战案例:Web 服务器安全配置
以下是一个典型的 Web 服务器 UFW 配置示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow in from 172.16.0.0/12
sudo ufw allow in from 192.168.0.0/16
sudo ufw enable
sudo ufw status numbered
|
配置完成后,UFW 状态应如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Status: active
&
&
[ 1] 22/tcp ALLOW IN Anywhere &
[ 2] 80/tcp ALLOW IN Anywhere &
[ 3] 443/tcp ALLOW IN Anywhere &
[ 4] Anywhere ALLOW IN 172.16.0.0/12 &
[ 5] Anywhere ALLOW IN 192.168.0.0/16 &
[ 6] 22/tcp (v6) ALLOW IN Anywhere (v6) &
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6) &
[ 8] 443/tcp (v6) ALLOW IN Anywhere (v6)
|
总结
UFW 是一款功能强大且易于使用的防火墙管理工具,通过本文的介绍,您应该已经掌握了从基础配置到高级应用的全部要点。正确配置 UFW 防火墙对于保护 Linux 服务器安全至关重要,建议:
始终保持 UFW 启用状态
采用最小权限原则,只开放必要的端口
定期备份 UFW 配置
结合其他安全措施(如 fail2ban、SSH 密钥认证等)
定期检查和更新防火墙规则
通过合理配置 UFW,您可以有效保护服务器免受网络攻击,为您的应用和数据提供可靠的安全保障。
本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/938ecac6.html
版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!