Linux:这啥命令?这台服务器我说了算-防火墙与安全加固——“门是装好了,怎么谁都能进?”

举报
yd_240046519 发表于 2026/11/09 08:52:29 2026/11/09
【摘要】 第十四章:防火墙与安全加固——“门是装好了,怎么谁都能进?”服务器终于能远程登录了,正准备庆祝,却发现:SSH 能连,网页能开,陌生 IP 也在疯狂敲门。我的服务器是开了家 24 小时自助餐厅吗?这一章给 Linux 装门锁:只开必要端口,守住 SSH 入口。以 Ubuntu 为例,建议先在测试机练习。 1. 防火墙管什么?防火墙负责按照规则放行或拦截网络流量。想象服务器是一栋楼:IP 地...

第十四章:防火墙与安全加固——“门是装好了,怎么谁都能进?”

服务器终于能远程登录了,正准备庆祝,却发现:

SSH 能连,网页能开,陌生 IP 也在疯狂敲门。

我的服务器是开了家 24 小时自助餐厅吗?

这一章给 Linux 装门锁:只开必要端口,守住 SSH 入口。以 Ubuntu 为例,建议先在测试机练习。

1. 防火墙管什么?

防火墙负责按照规则放行或拦截网络流量。想象服务器是一栋楼:

  • IP 地址是楼的地址;
  • 端口是不同房间的门;
  • 防火墙规则是保安手里的访客名单。

常见端口:22(SSH)、80(HTTP)、443(HTTPS),通常使用 TCP。

先看本机有哪些服务在监听:

sudo ss -lntup

LISTEN 表示等待连接;端口监听不代表外网可访问,还受防火墙、安全组等限制。

2. UFW:新手友好的门卫

Ubuntu 常用 UFW(Uncomplicated Firewall)。

sudo apt update
sudo apt install ufw
sudo ufw status verbose

若显示 inactive 就尚未启用。别急着 enable,当心把 SSH 挡在门外。

**远程操作前:**保留 SSH 会话,确认有云控制台等恢复手段,并将示例中的 22 换成实际 SSH 端口。

3. 先留钥匙,再关大门

对仅提供 SSH、HTTP 和 HTTPS 的服务器,可按顺序设置:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered

先设默认策略、放行必要端口,最后启用防火墙。

重要:启用后在新终端测试 SSH 成功,再关旧连接。云平台安全组与 UFW 还需分别检查。

4. 规则不是贴上就不能改

临时要开放测试应用的 8080/TCP:

sudo ufw allow 8080/tcp
sudo ufw status numbered

测试结束,撤销规则:

sudo ufw delete allow 8080/tcp

也可以按编号删除:

sudo ufw status numbered
sudo ufw delete 规则编号

删除前重新确认编号。别误删 SSH 规则。

如果只允许特定管理 IP 访问 SSH(示例 IP,请替换):

sudo ufw allow from 203.0.113.10 to any port 22 proto tcp

确认指定 IP 的新连接成功后,才考虑移除宽泛的 SSH 规则。动态 IP 不建议这样限制。

5. 防火墙不是万能护身符

防火墙只管谁能进门,基础加固还要打补丁:

sudo apt update
sudo apt upgrade

生产环境更新前要评估维护窗口。

核对开放服务:

sudo ss -lntup
sudo systemctl --type=service --state=running

停用不需要的服务;平时用普通账户,必要时再 sudo。

6. 给 SSH 再加一道锁

先确认新会话能用密钥登录且能管理服务器,再关闭密码登录。

编辑 SSH 服务端配置(通常为 /etc/ssh/sshd_config 或其包含的配置文件):

PermitRootLogin no
PasswordAuthentication no

修改后先查语法:

sudo sshd -t

通过后再重新加载(Ubuntu):

sudo systemctl reload ssh

保留旧连接,新终端验证成功后再退出;特殊云登录方式先查厂商说明。

7. 谁在半夜敲我的门?

查看 SSH 服务最近一天的日志:

sudo journalctl -u ssh --since "1 day ago"

筛选常见失败记录:

sudo journalctl -u ssh --since "1 day ago" | grep -Ei 'failed|invalid|authentication'

失败尝试不等于入侵;重点查异常成功登录。日志单位名因发行版而异。

8. 实战:给测试机做一次安全体检

在自己的测试虚拟机完成下面流程:

# ① 观察端口和防火墙状态
sudo ss -lntup
sudo ufw status verbose

# ② 确认当前 SSH 端口后,先放行(示例为 22)
sudo ufw allow 22/tcp

# ③ 允许网页服务端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# ④ 检查规则
sudo ufw status numbered

确认有恢复手段后,再按第 3 节启用 UFW。用新终端测试 SSH,失败时保留旧连接修复。

最后检查:

sudo ufw status verbose
sudo journalctl -u ssh -n 20

运维不是“把所有端口都封了”,而是只开放业务真正需要的入口。

本章速查

sudo ss -lntup                # 查看监听端口
sudo ufw status verbose      # 防火墙状态
sudo ufw allow 22/tcp        # 放行 SSH(按实际端口改)
sudo ufw allow 443/tcp       # 放行 HTTPS
sudo ufw status numbered     # 查看规则编号
sudo ufw delete allow 8080/tcp  # 删除特定规则
sudo sshd -t                 # 检查 SSH 配置语法
sudo journalctl -u ssh -n 20 # 查看 SSH 日志

下一章:《第十五章:备份与恢复——“删库一时爽,恢复火葬场?”》

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。