Linux:这啥命令?这台服务器我说了算-防火墙与安全加固——“门是装好了,怎么谁都能进?”
第十四章:防火墙与安全加固——“门是装好了,怎么谁都能进?”
服务器终于能远程登录了,正准备庆祝,却发现:
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 日志
下一章:《第十五章:备份与恢复——“删库一时爽,恢复火葬场?”》
- 点赞
- 收藏
- 关注作者
评论(0)