主题
07 · 防火墙、SSH 加固与基本安全
目标:用
ufw只放行必要端口;安全改 SSH;避免把自己锁在门外。
官方:Firewall · OpenSSH Server
1. 环境前提(必读)
- 再开一个 SSH 会话,确认两个窗口都能操作,再改防火墙 / sshd
- 云厂商还有一层 安全组:机器内 ufw 放行了,安全组没放行,公网照样不通
- WSL:本篇以云机为准;WSL 上 ufw 场景弱,作对照即可
2. 两层门:安全组 + ufw
text
互联网 → 云安全组 → 主机 ufw → 进程监听的端口1
两边都要允许:SSH(22 或自定义)、之后 HTTP 80、HTTPS 443。
3. ufw 最小可用
bash
sudo ufw status verbose1
建议顺序(先允许 SSH,再 enable):
bash
sudo ufw allow OpenSSH
# 若 SSH 不是 22:
# sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
删规则示例:
bash
sudo ufw status numbered
sudo ufw delete 编号1
2
2
禁用(救急):
bash
sudo ufw disable1
应用只监听 127.0.0.1:8080 时:不必对公网放行 8080;由 Nginx 反代即可(09、10)。
4. SSH 加固清单(可选,逐步做)
每次只改一项,保存后新开会话验证,再断开旧会话。
bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)
sudo vim /etc/ssh/sshd_config1
2
2
常见加固项(按需,勿一次全开):
| 项 | 建议 | 注意 |
|---|---|---|
| 密钥登录已通 | 再考虑关密码 | PasswordAuthentication no |
PermitRootLogin | no 或 prohibit-password | 确保有 sudo 普通用户 |
| 改端口 | 可选 | 同步改安全组与 ufw |
改完:
bash
sudo sshd -t # 配置语法检查
sudo systemctl reload ssh # 或 sshd,视版本单位名
# Ubuntu 常见:
sudo systemctl reload ssh.service1
2
3
4
2
3
4
验证:
bash
# 新窗口
ssh USER@HOST1
2
2
5. 其它基本习惯
- 私钥带 passphrase;服务器
authorized_keys权限正确(03) - 不在公网裸奔数据库端口(3306/6379 等)
- 定期
sudo apt update并在维护窗口upgrade(练习机可更勤) - 可疑登录:
sudo journalctl -u ssh -n 100/last
6. 云机 vs WSL
| 云 Ubuntu | WSL2 | |
|---|---|---|
| ufw | 建议启用 | 多数人依赖 Windows 防火墙;不必强行照抄 |
| 锁门外风险 | 真实 | 低(本机) |
| 安全组 | 必须同步 | 无 |
7. 动手清单
- [ ] 双 SSH 会话已开
- [ ]
ufw allow OpenSSH后再enable - [ ] 放行 80/tcp(为 09 做准备)
- [ ] 云控制台安全组同样放行 SSH 与 80
- [ ] (可选)备份
sshd_config,只改一项并sshd -t+ 新会话验证
8. 常见翻车
| 翻车 | 处理 |
|---|---|
ufw enable 后 SSH 全断 | 用云厂商 VNC/串口控制台 登入,ufw allow OpenSSH 或 ufw disable |
| 只开了 ufw 没开安全组 | 控制台改安全组 |
| 关密码但密钥未配好 | 第二个会话进不去 → 控制台救急,恢复 bak |
| 放行了 8080 给全世界 | 改为仅本机监听 + Nginx 反代 |
9. 官方入口
- Ubuntu Firewall
- OpenSSH Server
man ufw、man sshd_config
下一篇:systemd —— 让进程成为可启停、可自启的服务。
