Ubuntu防火墙默认未开启,需通过安装并启用UFW(Uncomplicated Firewall)服务来激活,关闭则直接禁用该服务即可,这是保障服务器安全最基础且高效的手段。
在Linux服务器运维领域,防火墙是抵御恶意攻击的第一道防线,对于Ubuntu用户而言,虽然系统底层集成了Netfilter/iptables内核模块,但直接操作这些底层工具对新手极不友好,业界共识认为,使用UFW作为前端管理工具是最佳实践,它简化了复杂的规则配置,让非内核专家也能轻松构建安全屏障。
Ubuntu防火墙开启与关闭的核心逻辑
理解防火墙的状态切换,首先要明确UFW在Ubuntu系统中的角色,它不是一个独立的软件包,而是一个配置管理接口,当你“开启”防火墙时,实际上是让UFW将预设的规则加载到内核网络栈中;当你“关闭”时,则是清除这些规则并停止守护进程。
检查当前防火墙状态
在执行任何操作前,确认当前状态至关重要,许多用户误以为安装了Ubuntu就自带了活跃防火墙,实则不然。
- 打开终端,输入以下命令查看状态:
sudo ufw status - 如果返回“Status: inactive”,说明防火墙处于关闭状态,所有端口默认允许通行,存在安全隐患。
- 如果返回“Status: active”,并列出具体规则,说明防火墙已生效。
开启Ubuntu防火墙的详细步骤
开启防火墙并非一键完成,需要遵循“允许必要服务,拒绝其他所有”的原则,盲目开启可能导致SSH连接中断,使服务器变砖。
第一步:配置默认策略
在添加具体规则前,先设定默认行为,建议将入站(Inbound)默认策略设为拒绝,出站(Outbound)默认策略设为允许。
sudo ufw default deny incomingsudo ufw default allow outgoing
这一设置意味着,除非明确放行,否则所有进入服务器的流量将被丢弃,这是业内专家指出的一种防御性配置习惯,能显著降低被扫描和攻击的风险。

第二步:放行关键端口
这是最容易出错环节,如果你通过SSH远程管理服务器,必须优先放行SSH端口(默认22),否则一旦开启防火墙,你将立即失去连接权限。
sudo ufw allow ssh
或者指定端口:sudo ufw allow 22/tcp
若运行Web服务,还需放行HTTP(80)和HTTPS(443):sudo ufw allow 80/tcpsudo ufw allow 443/tcp
第三步:激活防火墙
完成规则配置后,执行激活命令:sudo ufw enable
系统会提示“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”,输入“y”并回车,防火墙正式生效。
关闭Ubuntu防火墙的操作路径
在特定场景下,如排查网络故障或在内网隔离环境中,可能需要暂时关闭防火墙。
sudo ufw disable
执行后,防火墙将停止工作,所有入站连接默认允许,注意,此操作不会删除已配置的规则,下次开启时规则依然存在,若需彻底重置,可执行:sudo ufw reset
Ubuntu防火墙开启后常见配置场景
单纯开启防火墙只是起点,如何根据业务需求精细化控制流量,才是运维的核心,以下列举几种高频场景及解决方案。
允许特定IP访问
有时,你只希望特定管理IP能访问服务器,而非全网开放,限制仅允许IP地址192.168.1.100通过SSH连接。
sudo ufw allow from 192.168.1.100 to any port 22
这种细粒度控制在企业级安全合规中极为常见,能有效防止暴力破解攻击。
禁止特定IP访问
若发现某个IP正在发起恶意扫描,可立即将其拉黑。
sudo ufw deny from 10.0.0.5
此规则将阻止该IP的所有入站连接,若需永久拒绝,可结合Fail2ban等工具自动执行。

删除已添加的规则
随着业务变更,旧规则可能不再适用,删除规则前,需先查看规则编号。
sudo ufw status numbered
假设SSH规则编号为2,删除命令如下:sudo ufw delete 2
这种基于编号的管理方式,比直接匹配规则内容更直观,避免了因规则描述复杂而导致的误删。
Ubuntu防火墙与其他安全工具的对比
在Linux生态中,除了UFW,还有Firewalld和iptables,选择何种工具,取决于系统版本和使用习惯。
UFW vs Firewalld
Firewalld是RHEL/CentOS系列的默认防火墙工具,基于zone概念,动态更新能力强,而UFW设计简洁,适合Debian/Ubuntu系列。
| 特性 | UFW | Firewalld |
|---|---|---|
| 适用系统 | Ubuntu, Debian | CentOS, RHEL, Fedora |
| 配置复杂度 | 低,命令直观 | 中,需理解zone概念 |
| 动态更新 | 支持 | 强支持,无需重启服务 |
| 学习曲线 | 平缓 | 较陡峭 |
对于Ubuntu用户,UFW是原生推荐方案,尽管Firewalld功能更强大,但在Ubuntu上安装和配置反而增加不必要的复杂性,多数情况下,UFW足以满足90%以上的个人服务器和企业小型集群需求。
UFW vs iptables
iptables是底层内核模块,功能最强大,但命令冗长且易出错,UFW本质上是对iptables的封装。

使用iptables放行SSH需要输入:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
而UFW只需:sudo ufw allow ssh
对于非内核专家,UFW能减少80%以上的配置错误率,在需要极高性能或复杂NAT转换的高级场景中,直接操作iptables仍是不可替代的选择。
Ubuntu防火墙开启后的维护与监控
防火墙开启后,并非一劳永逸,定期审查规则日志,能及时发现异常流量。
查看防火墙日志
UFW默认记录被拒绝的连接,查看日志可帮助识别扫描行为。
sudo tail -f /var/log/ufw.log
若发现大量来自同一IP的拒绝记录,可考虑将其加入黑名单。
自动备份规则
为防止系统重装或误操作导致规则丢失,建议定期备份。
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.bak
在重大变更前,手动执行此命令,能节省大量恢复时间。
Ubuntu防火墙开启与关闭Q&A
Ubuntu防火墙开启后SSH连接断开怎么办?
若开启防火墙后失去SSH连接,可通过控制台(Console)或VNC接入服务器,在控制台终端中,执行“sudo ufw disable”即可恢复连接,为避免此情况,务必在开启前确认SSH端口已放行,或配置备用访问方式。
如何查看Ubuntu防火墙当前允许的所有端口?
执行“sudo ufw status verbose”命令,可列出所有活跃规则及默认策略,该输出清晰展示哪些端口对外公开,哪些处于关闭状态,便于审计安全配置。
Ubuntu防火墙开启会影响系统性能吗?
UFW基于内核netfilter,规则匹配在操作系统层面完成,对CPU和内存占用极低,在常规Web服务器或应用服务器负载下,防火墙带来的性能损耗可忽略不计,只有在极高并发且规则极其复杂时,才需考虑优化规则顺序或使用更高级的硬件防火墙。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/417432.html
