在互联网上公开运行的服务器,第一道防线往往就是防火墙。它决定了哪些网络流量可以进出你的系统。对于刚接触Linux服务器的用户来说,传统的iptables规则集可能显得复杂难懂。幸运的是,Ubuntu和Debian系统提供了一个名为UFW的工具,它的全称是“Uncomplicated Firewall”,顾名思义,就是让防火墙配置变得简单直接。它本质上是一个对iptables的前端封装,通过人性化的命令简化了规则管理。
UFW在很多Ubuntu版本中已经默认安装。如果你的系统没有,安装过程非常迅速。首先更新软件包列表,然后安装ufw软件包。这个操作需要管理员权限,所以会用到sudo。
sudo apt update
sudo apt install ufw
安装完成后,建议先不要急于启用。第一步是设置默认策略,这决定了如何处理那些没有特定规则匹配的流量。一个合理的基础策略是:默认拒绝所有传入连接,但允许所有传出连接。这样,服务器可以自由访问外部网络,而外部未经允许的连接则会被阻挡在门外。
sudo ufw default deny incoming
sudo ufw default allow outgoing
接下来,你需要根据服务器运行的服务,逐一开放必要的端口。最常见的情况是开放SSH端口(通常是22)。如果你正在通过SSH远程管理服务器,必须在启用防火墙前完成这一步,否则可能会立即断开连接并被锁在服务器外面。使用UFW允许SSH连接的命令很直观。
sudo ufw allow ssh
UFW内置了一些常用服务的定义,比如“ssh”对应端口22,“http”对应端口80,“https”对应端口443。你也可以直接使用端口号来指定规则,这在服务使用非标准端口时很必要。例如,如果你将SSH服务改到了2222端口,应该这样设置:
sudo ufw allow 2222/tcp
对于运行网站的服务器,你需要开放HTTP和HTTPS端口。
sudo ufw allow http
sudo ufw allow https
如果你运行的是其他服务,比如MySQL数据库(默认端口3306)或自定义的API服务(例如在端口3000上),同样需要为其添加规则。规则可以指定协议(TCP或UDP),这对于像DNS这样的UDP服务很重要。
sudo ufw allow 3306/tcp
sudo ufw allow 3000/tcp
sudo ufw allow 53/udp
除了允许特定端口的连接,UFW还允许基于IP地址设置更精细的规则。例如,你可以只允许某个特定IP地址(比如你的办公室或家用网络IP)连接到SSH端口,这比向全世界开放要安全得多。
sudo ufw allow from 203.0.113.10 to any port 22
相应地,你也可以拒绝来自特定IP地址的所有流量,这在遇到恶意扫描或攻击时很有用。
sudo ufw deny from 192.168.1.100
在添加了一系列规则后,你可以随时查看当前的规则列表。使用status命令会显示所有已配置的规则。加上`numbered`参数会为每条规则显示编号,这在后续需要删除某条特定规则时会很方便。
sudo ufw status numbered
如果你发现某条规则添加错了,或者不再需要,可以将其删除。删除规则有两种方式。一种是使用创建规则时的原始命令,只是把`allow`或`deny`换成`delete`。例如,删除允许HTTP的规则:
sudo ufw delete allow http
另一种更通用的方法是利用规则编号。先运行`sudo ufw status numbered`查看编号,然后使用`delete`命令跟上编号。
sudo ufw delete 3
在所有必要规则都配置妥当,并且反复确认SSH连接已被允许之后,就可以正式启用UFW防火墙了。启用命令会激活所有规则,并让防火墙随系统启动而自动加载。
sudo ufw enable
启用后,防火墙立即生效。你应该再次检查状态,并测试关键服务(如SSH和Web)是否仍能正常访问。如果测试通过,说明配置正确。
UFW还提供了一些高级特性。例如,`limit`规则可以帮助缓解破解攻击。它对某个端口的连接尝试进行速率限制,在一段时间内超过次数的连接会被暂时拒绝。这对保护SSH端口特别有用。
sudo ufw limit ssh
日志记录对于监控和排查问题很重要。你可以开启UFW的日志功能,记录被防火墙处理的连接尝试。日志通常保存在`/var/log/ufw.log`中。
sudo ufw logging on
如果你需要临时关闭防火墙进行某些测试(请注意安全风险),可以使用disable命令。这会使所有规则失效,但不会删除它们。
sudo ufw disable
如果想要彻底重新开始,可以使用reset命令。这会禁用UFW,并删除所有用户定义的规则。系统将回到安装UFW之初的状态。
sudo ufw reset
在管理防火墙时,一个重要的原则是“最小权限”。即只开放业务绝对必需的端口,其他一律关闭。对于生产服务器,建议在本地虚拟机或测试环境中先演练一遍完整的规则配置过程,确保没有遗漏也不会误操作。特别是通过远程SSH连接时,一个错误的规则就可能导致无法挽回的管理权限丢失。
UFW的成功之处在于它在强大和易用之间找到了平衡。它没有隐藏iptables的复杂性,而是提供了一套清晰的语法来管理它。你既可以用简单的命令满足日常需求,也可以在需要时深入底层去理解它生成的iptables规则。对于绝大多数Ubuntu和Debian服务器的使用场景,UFW提供的功能已经足够。花一点时间熟悉它的命令,为你的服务器配置好这道网络大门,是系统安全中一项投入小但收效显著的基础工作。
CN
EN