行业资讯

ubuntu云服务器防火墙设置全攻略

2025-10-03 20:01:03 行业资讯 浏览:9次


在云服务器的世界里,安全就像早餐的第一口面包,吃了才有力气继续工作。朋友们,Ubuntu 作为最受欢迎的云主机系统之一,默认并不会把一大堆端口紧紧关上,这就给了攻击者可乘之机。因此,我们要从防火墙做起,给服务器一个稳稳当当的“铁壁防线”。本文以最友好上手的 UFW 为主线,兼顾 iptables、nftables 的高级玩法,以及云提供商的安全组协同,目标是用最短的步骤让你的云服务器从“任意端口大门”变成“只开必要之门”的安静城堡。

先说清楚三件事:一是你当前的 Ubuntu 版本与云厂商环境,二是你在服务器上跑的业务类型(网页、数据库、API、SSH 管理等),三是你愿不愿意为运维留出一些灵活性。不同的场景下,防火墙策略的严格程度会不同,但原则是一致的:默认拒绝,按需打开端口,最小化暴露范围。只要把核心观念握住,后续扩展就像拼乐高一样顺手。

选择工具时,简单友好往往胜过复杂炫技。UFW(Uncomplicated Firewall)是新手首选,语法直观,默认策略清楚,入门成本极低。对需要细粒度控制的场景,iptables 仍然强大,但学习成本也 υψη。nftables 则是新一代替代品,风格现代、性能出色,逐步成为不少运维的主力。你可以在同一台机器上做短期对比,最后决定留一个主用的防火墙工具。最关键的是,不要让多种工具相互抵触,否则“防火墙互撕”才是真正的安全隐患。

先把 UFW 当作起点,掌握它的基本流程:安装、启用、设定默认策略。常用的起步命令包括:sudo apt-get update && sudo apt-get install ufw;sudo ufw default deny incoming;sudo ufw default allow outgoing;为了不被自己锁死,先允许 SSH 连接,像 sudo ufw allow ssh 或者 sudo ufw allow 22/tcp;还可以给 SSH 加速防护,执行 sudo ufw limit ssh/tcp,以限制暴力尝试的速率。最后用 sudo ufw enable 开启防火墙。这样一换装,门就不再对任何人敞开。

接下来是网页服务的端口策略。大多数站点需要开放 80/tcp 和 443/tcp,这意味着要在 UFW 里明确允许这两个端口。示例:sudo ufw allow 80/tcp;sudo ufw allow 443/tcp。若你还暴露数据库、管理后台等端口,请考虑把它们放在更严格的网段或仅在内网可达的范围内,尽量把外部暴露降到最低。对于不常用的端口,直接拒绝或删除允许规则,避免“误开”的风险。

关于 SSH 的硬化,必须是高优先级事项。最稳妥的做法是禁用根账户直接登录、启用公钥认证、尽可能变更默认端口并禁用密码登录。对应的防火墙策略需要与 SSH 端口保持一致:如果你把 SSH 改成 2222,务必在 UFW 中再执行 sudo ufw allow 2222/tcp。另一种思路是通过 Fail2ban 做暴力破解防护,默认配置就能对多次失败尝试进行阻断,进一步减少暴力登陆的概率。对 SSH 的这些改动,记得在生效前用一个稳定的连接来测试,确保你不会在改动后自己被锁在外面。

如果你希望更强的防护和可观的扩展性,Fail2ban 是常见的搭档。它会监控认证失败的日志并在达到阈值时封锁来源 IP,默认就能对 SSH、Dovecot 等服务进行保护。安装后需要配置 jail.local,设定最大失败次数、封禁时间、以及是否对某些国家或地区屏蔽。与此并行,启用日志聚合和告警也非常有帮助,方便你在早晨起床时就知道谁在敲你的服务器的防火墙门。

深入到底层,iptables 提供了最底层的包过滤能力。你可以从最基本的三条规则入手:允许已建立的连接、允许本机发起的相关连接、阻止无效数据包。典型思路是:-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT;-A INPUT -p tcp --dport 22 -j ACCEPT(若你仍使用 22 端口;若改成 2222,就改成 2222/tcp)等。别忘了保存规则并设置开机加载,例如使用 iptables-save > /etc/iptables/rules.v4。虽然更复杂,但当你需要对网络栈进行极致控制时,iptables 的灵活性仍然有其魅力。

新一代的 nftables 也是一个值得尝试的选项。它把规则、表和链的结构整理得更清晰,且在性能和可维护性方面有明显提升。对于 Ubuntu 20.04 及以上版本,nftables 已经成为不少人默认的选择。基本流程是创建 table、定义 chain、写入规则,再通过 systemctl 启动并设置开机自启。一个最简的例子是:创建 inet table、filter 表;设定允许 SSH、HTTP、HTTPS 的规则,并对其他流量设置默认丢弃;最后执行 sudo systemctl enable --now nftables,使其在系统启动时自动加载。

ubuntu云服务器防火墙设置

别把防火墙孤立在机器上,云服务商的安全组/网络策略同样重要。不同云厂商提供的界面略有差异,但核心思想是一致的:只对外暴露必需端口,其他端口全部拦截,并尽量限制对管理端口的访问范围。常见做法是在云端安全组中只放通对外需要的端口(如 80、443、若需管理再单独列出管理网络),对 SSH 还可以限制来源 IP、子网段或 VPN 通道。通过云端和主机防火墙双层保护,可以显著降低被攻击的概率。

对数据库与内部服务,双层防护是现实的好选择。把数据库端口仅暴露在内网或受信网络段,外部用户通过前端应用服务器间接访问数据库。这种分层设计让即使前端暴露端口,数据库也不会变成直接可触达的靶子。结合云端的私有网络、子网划分和网络 ACL 设置,你可以把不同服务放在不同的安全区域,降低横向移动的风险。

日志与监控是你发现异常的眼睛。开启 UFW 日志能力,查看 /var/log/ufw.log,或使用 sudo ufw status verbose 来了解当前规则执行情况。Fail2ban 的封禁记录、系统日志以及云厂商的安全事件通知,都是你快速识别异常流量的线索。搭配一个简便的日志聚合方案,能够让你在短时间内抓住异常行为的根源,而不至于在一堆数字里迷路。

测试与维护同样重要。上线后可以借助外部的端口探测工具,或从不同的网络环境对端口进行扫描,确认哪些端口开放、哪些端口被拦截。定期回顾和调整 firewall 规则,尤其在新增服务、变更端口、迁移云机房时,确保规则始终与当前架构保持一致。同时,保持系统更新,确保内核与网络栈的修补也能同步覆盖到你的防火墙策略。

顺便提醒一下,广告就藏在不经意的语气里:玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink。好了,我们继续,若你在未来某天忽然想要再加一个专门对外暴露端口的规则,先核对同一台机器上已有的规则,确保不产生自锁效应。脑洞急转弯:如果防火墙也有情绪,会不会对你的新端口说“请给我一个理由让我放行”?