1032 字
5 分钟
云服务器初始化安全清单:安全组、SSH 加固与 fail2ban

一台新云服务器从拿到公网 IP 那一刻起,就开始被全互联网的扫描器光顾——SSH 爆破尝试通常在几分钟内出现。默认配置的服务器在公网上等于裸奔。这套清单按「先挡住外面的,再管好里面的」排序,30 分钟内可以全部完成。

第 1 步:安全组只开必要端口(云厂商层面)#

安全组是云平台的虚拟防火墙,规则在系统之外生效——就算系统内防火墙没配,安全组也能兜底。原则:默认全拒,按需放行。

一台 Web 服务器的典型放行清单:

端口来源用途
22(或自定义 SSH 端口)你的办公/家庭 IP 段SSH 管理
800.0.0.0/0HTTP(跳转 HTTPS 及证书验证)
4430.0.0.0/0HTTPS

数据库 3306、Redis 6379、管理面板端口永远不要对公网开放,内部访问走 VPC 内网。SSH 来源限制为固定 IP 段是性价比最高的一条规则,直接砍掉 99% 的爆破流量。

第 2 步:创建普通用户,告别 root 日常操作#

Terminal window
adduser deploy
usermod -aG sudo deploy # Debian/Ubuntu;RHEL 系是 wheel 组

此后所有日常操作用 deploy 登录,需要特权时 sudo。直接以 root 工作,一个手滑的 rm -rf 就没有任何挽回余地。

第 3 步:SSH 密钥登录,关掉密码#

在本地生成密钥(如果还没有):

Terminal window
ssh-keygen -t ed25519 -C "deploy@myserver"
ssh-copy-id deploy@服务器IP

验证密钥能登录后,修改服务器 /etc/ssh/sshd_config:

PasswordAuthentication no # 禁用密码登录
PermitRootLogin no # 禁止 root 直接登录
PubkeyAuthentication yes

改完务必新开一个终端验证能登录,再关掉旧会话——配置写错又断开会话,就只能靠云厂商的 VNC 控制台救场了。

Terminal window
sudo sshd -t # 语法检查
sudo systemctl reload ssh

关于改 SSH 端口(如 2222):它能减少日志噪音,但对有目的的扫描者作用有限(全端口扫描照样找到)。可做可不做;如果改,记得同步更新安全组。

第 4 步:fail2ban 封禁爆破 IP#

即使有密钥登录,爆破流量仍会灌满日志。fail2ban 监控日志,把反复失败的 IP 自动拉进防火墙黑名单:

Terminal window
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

jail.local 中调整 sshd 段:

[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h

含义:10 分钟内失败 5 次,封禁 1 小时。启动并查看状态:

Terminal window
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

第 5 步:系统防火墙(ufw)作为第二道门#

安全组在云侧,ufw 在系统侧,两层独立互备:

Terminal window
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # 若改了 SSH 端口则填新端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

第 6 步:开启自动安全更新#

系统漏洞补丁不及时打,前面的加固都是沙上筑塔。Debian/Ubuntu 用 unattended-upgrades 自动安装安全更新:

Terminal window
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades # 交互式确认开启

默认只自动更新安全源(security),不动功能更新——这个平衡对服务器正合适。

第 7 步:时间同步与基础可观测#

  • 确认 timedatectl 显示 NTP 同步正常——证书验证、日志时间线、排障对齐全依赖准确时间。
  • 顺手装上排障工具:apt install htop iotop ncdu mtr-tiny。
  • 在云平台控制台配置监控告警(CPU、磁盘、带宽),这是系统外的一层眼睛。

加固完成后的自查#

Terminal window
ss -tlnp # 监听端口是否与预期一致,没有多余服务
grep "PasswordAuthentication" /etc/ssh/sshd_config
sudo fail2ban-client status # jail 是否生效
sudo ufw status

对照清单逐项打钩。安全不是一次性动作——定期检查登录日志(journalctl -u ssh)、关注所用软件的安全公告,才是常态。

延伸阅读#

云服务器初始化安全清单:安全组、SSH 加固与 fail2ban
https://meow.us.kg/posts/cloud-server-initial-hardening/
作者
もゆちゃん
发布于
2026-10-19
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取