Linux VPS/云服务器安全第三课:只开必要的"窗户"

Linux VPS/云服务器安全第三课:只开必要的"窗户"

前面三道防线,还差最后一步

还记得我们前面做了什么吗?

  • 第一期:用SSH密钥替代密码,修改默认端口
  • 第二期:配置fail2ban自动封禁攻击者

现在你的服务器已经比90%的人安全了。但还有一个问题:你的服务器到底开了多少个端口?这些端口都需要对外开放吗?

小张按照前两期教程配置好服务器后,用工具扫描了一下自己的服务器,发现除了SSH,还开着MySQL的3306端口、Redis的6379端口。这些端口本来只需要本地访问,现在却暴露在公网上。

如果这些服务有漏洞,或者配置不当(比如没设密码),黑客就能直接利用。

今天我们要做的,就是给服务器装上"防火墙",只开必要的门窗,其他全部锁死。

什么是防火墙?

想象你的服务器是一栋房子:

  • 没有防火墙:所有门窗都开着,任何人都能从任何地方进来
  • 有防火墙:你明确规定哪些门可以开、给谁开,其他全部锁死

**UFW(Uncomplicated Firewall)**就是Ubuntu/Debian系统上最简单的防火墙管理工具。名字里的"Uncomplicated"(不复杂)不是吹的,真的很简单。

为什么需要防火墙?

1. 减少攻击面
服务器上可能运行着多个服务,但不是所有服务都需要对外开放。比如MySQL通常只需要让应用服务器访问,不需要全世界都能连。

2. 防止漏洞被利用
即使某个软件有安全漏洞,如果端口没开放,黑客也无法利用。这就是"纵深防御"——多层保护,层层把关。

3. 符合安全最佳实践
安全领域有个"最小权限原则":只给必需的权限,其他一律拒绝。防火墙就是这个原则的具体实现。

安装UFW

大部分Ubuntu/Debian系统默认已经安装了UFW,但可能没有启用。我们先检查并安装:

检查是否已安装:

ufw --version

如果显示版本号,说明已安装。如果提示命令不存在,就需要安装:

Ubuntu/Debian系统:

sudo apt update
sudo apt install ufw -y

CentOS/RHEL系统:

sudo yum install epel-release -y
sudo yum install ufw -y

安装完成后,就可以开始配置了。

5步配置UFW

第一步:检查当前状态

sudo ufw status

大部分新服务器会显示:

Status: inactive

这说明防火墙还没启用。先别急着启用,我们要先配置好规则。

第二步:设置默认策略

这是最重要的一步,决定了防火墙的基本逻辑:

# 默认拒绝所有进入的连接
sudo ufw default deny incoming

# 默认允许所有出去的连接
sudo ufw default allow outgoing

什么意思?

  • incoming(进站):别人连接你的服务器,默认全部拒绝
  • outgoing(出站):你的服务器连接外部,默认全部允许

这样最安全:默认全关,需要什么就单独开放。

第三步:允许SSH连接

⚠️ 这一步最关键!必须在启用防火墙之前完成,否则会把自己锁在外面!

# 如果你修改后的SSH端口是23456
sudo ufw allow 23456/tcp

如果你没改过SSH端口,还是默认的22:

sudo ufw allow 22/tcp

第四步:允许其他需要的服务

根据你的服务器用途,开放相应的端口。

如果是Web服务器:

# 允许HTTP(80端口)
sudo ufw allow 80/tcp

# 允许HTTPS(443端口)
sudo ufw allow 443/tcp

如果某个服务只需要特定IP访问:

比如MySQL只允许你的应用服务器(IP: 192.168.1.100)访问:

sudo ufw allow from 192.168.1.100 to any port 3306

这样,只有这个IP能连接MySQL,其他IP全部被拦截。

第五步:启用防火墙

配置完所有规则后,启用UFW:

sudo ufw enable

会提示:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

输入 y 确认。

验证配置:

sudo ufw status verbose

输出示例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
23456/tcp                  ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
3306                       ALLOW       192.168.1.100

看到这样的输出,说明配置成功了!

常用管理命令

查看规则(带编号)

sudo ufw status numbered

输出:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 23456/tcp                  ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

删除规则

# 方法1:按编号删除
sudo ufw delete 2

# 方法2:按规则删除
sudo ufw delete allow 80/tcp

封禁某个恶意IP

sudo ufw deny from 103.x.x.x

这个IP的所有连接都会被拒绝。

限制连接频率

这个功能类似简化版的fail2ban:

sudo ufw limit 23456/tcp

这会限制同一IP在30秒内最多尝试6次连接,超过就暂时封禁。

临时关闭/启用防火墙

调试问题时可能需要临时关闭:

# 关闭防火墙
sudo ufw disable

# 重新启用
sudo ufw enable

推荐配置模板

Web服务器基础配置

如果你要搭建网站,这是最常用的配置:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 23456/tcp  # SSH(改成你的端口)
sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS
sudo ufw enable

提示:直接复制这段命令,把SSH端口号改成你自己的,就能用了。

常见问题

Q:我会不会把自己锁在外面?
A:只要在启用防火墙之前先允许SSH端口就不会。万一真锁了,云服务商都有VNC控制台可以救急。

Q:UFW和fail2ban会冲突吗?
A:不会冲突,建议一起使用。UFW管端口开放,fail2ban管自动封禁,两者配合效果更好。

Q:云服务商已经有安全组了,还需要配置UFW吗?
A:强烈建议都配置。两层防护,双重保险。而且如果你迁移到其他云平台,UFW配置可以直接带走。

Q:防火墙会影响服务器性能吗?
A:几十条规则几乎没有任何影响,完全不用担心。

四道防线:你的服务器固若金汤

回顾一下整个系列,现在你的服务器有了:

  1. 第一道防线:SSH密钥认证 - 像指纹锁,黑客猜不出来
  2. 第二道防线:修改默认端口 - 藏起门牌号,机器人找不到
  3. 第三道防线:fail2ban自动封禁 - 24小时智能保安,试几次就拉黑
  4. 第四道防线:UFW防火墙 - 只开必要的窗户,其他全部锁死

就像给家里装了指纹锁、藏了门牌号、雇了保安、还把不用的门窗全封死。现在黑客想进你的服务器?难度系数:地狱级!

今天就行动

UFW的配置真的很简单,5分钟就能完成:

  1. 安装UFW(一行命令)
  2. 设置默认策略(拒绝进入,允许出去)
  3. 允许SSH端口(别忘了这步!)
  4. 允许需要的服务端口
  5. 启用UFW

现在就去给你的服务器配置防火墙吧!只开必要的端口,其他全部关闭,让服务器更安全。


下期预告:我们将继续讲解服务器安全的其他重要措施:禁用root直接登录、使用普通用户+sudo、定期更新系统等。

你的服务器开了哪些端口?配置过程中遇到问题?欢迎在评论区留言讨论!

Read more

fnm + uv + rustup:打造 Debian/Ubuntu 下最丝滑的开发环境“三剑客”,彻底告别 Linux 权限地狱

fnm + uv + rustup:打造 Debian/Ubuntu 下最丝滑的开发环境“三剑客”,彻底告别 Linux 权限地狱

作为一名长期在 Linux 服务器上工作的开发者,我见过不少因权限管理不当导致的问题:有人为了装最新的 Node.js 强行添加了来源不明的 PPA,结果导致 apt 依赖损坏,系统无法正常更新;有人习惯了 sudo pip install,直到某天发现系统自带的工具因为 Python 库版本冲突而无法运行;还有的人在 npm i -g 时遇到 Permission denied,最后执行了 sudo chmod -R 777 /usr/lib。 今天这篇文章,介绍如何用普通用户权限在 Debian/Ubuntu 下配置 Node.js、Python 和 Rust 开发环境,彻底避免上述问题。 为什么要坚持非 root 安装? 保护系统稳定性。

By serverinf
除了 127.0.0.1,你电脑里其实还住着 1600 万个“自己”

除了 127.0.0.1,你电脑里其实还住着 1600 万个“自己”

身为开发者,你一定每天都在和 127.0.0.1 打交道。 启动后端服务、连接 Redis、调试 API…… 在我们的潜意识里: 127.0.0.1 = localhost = 本机。 但你有没有想过: 为什么偏偏是 127? 既然 127.0.0.1 代表自己,那 127.0.0.2 又是谁? 甚至,为什么 Linux 里还有一个诡异的 127.0.1.1? 今天,我们拆开这个被用了 40 年的“回环地址”包裹,看看里面藏着哪些你不知道的秘密。 一、

By serverinf
全球机房探秘:第 5 期:韩国机房:全球网速最快国家的真相,北方用户的隐藏福利

全球机房探秘:第 5 期:韩国机房:全球网速最快国家的真相,北方用户的隐藏福利

摘要:千兆入户的"网速天堂",为什么连回国内却经常卡顿?KT、SK、LG 怎么选?韩国 VPS 到底适合谁? 在上一篇日本机房的文章里,我们聊了"白天法拉利,晚上拖拉机"的线路选择难题。今天,我们把目光投向一个自带光环的地方——韩国机房。 经常关注科技新闻的朋友都知道,在各类全球网速排行榜上,韩国经常霸占榜首,千兆(1Gbps)甚至万兆网络入户简直是家常便饭。 很多新手就会想:"既然韩国网速全球第一,那我买个韩国 VPS,速度岂不是原地起飞?" 先别急着掏钱! 理想很丰满,现实往往有点骨感。欢迎来到《全球机房探秘》第六站,今天我们来扒一扒"全球最快网速"背后的真相。 01 真相一:内网&

By serverinf
拒绝"挤爆"内存:部署 OpenClaw 到底需要多高配置的 VPS /云服务器?

拒绝"挤爆"内存:部署 OpenClaw 到底需要多高配置的 VPS /云服务器?

最近 AI 圈最火的开源项目,莫过于被称为“大龙虾”的 OpenClaw 了。 如果你还没听说过它,简单解释一下:它不是那种只能陪你聊天的机器人,而是一个真正的“数字员工”。它能自己查资料、写代码、操作你的服务器终端、甚至在浏览器里帮你下单购物。这种“自主性”让无数开发者直呼:AI 终于从“只会动嘴”进化到“能动手干活”了。目前 OpenClaw 在 GitHub 上已积累超过 68,000 个 Star,是目前增速最快的开源项目。 然而,很多新手兴冲冲地在自己吃灰多年的“1核 1G”入门级 VPS 上部署后,迎来的不是效率的飞跃,而是没完没了的断连、报错、卡死。 今天,我们就来拆解一下:想要稳稳地跑起

By serverinf