一台新云服务器从拿到公网 IP 那一刻起,就开始被全互联网的扫描器光顾——SSH 爆破尝试通常在几分钟内出现。默认配置的服务器在公网上等于裸奔。这套清单按「先挡住外面的,再管好里面的」排序,30 分钟内可以全部完成。
第 1 步:安全组只开必要端口(云厂商层面)
安全组是云平台的虚拟防火墙,规则在系统之外生效——就算系统内防火墙没配,安全组也能兜底。原则:默认全拒,按需放行。
一台 Web 服务器的典型放行清单:
| 端口 | 来源 | 用途 |
|---|---|---|
| 22(或自定义 SSH 端口) | 你的办公/家庭 IP 段 | SSH 管理 |
| 80 | 0.0.0.0/0 | HTTP(跳转 HTTPS 及证书验证) |
| 443 | 0.0.0.0/0 | HTTPS |
数据库 3306、Redis 6379、管理面板端口永远不要对公网开放,内部访问走 VPC 内网。SSH 来源限制为固定 IP 段是性价比最高的一条规则,直接砍掉 99% 的爆破流量。
第 2 步:创建普通用户,告别 root 日常操作
adduser deployusermod -aG sudo deploy # Debian/Ubuntu;RHEL 系是 wheel 组此后所有日常操作用 deploy 登录,需要特权时 sudo。直接以 root 工作,一个手滑的 rm -rf 就没有任何挽回余地。
第 3 步:SSH 密钥登录,关掉密码
在本地生成密钥(如果还没有):
ssh-keygen -t ed25519 -C "deploy@myserver"ssh-copy-id deploy@服务器IP验证密钥能登录后,修改服务器 /etc/ssh/sshd_config:
PasswordAuthentication no # 禁用密码登录PermitRootLogin no # 禁止 root 直接登录PubkeyAuthentication yes改完务必新开一个终端验证能登录,再关掉旧会话——配置写错又断开会话,就只能靠云厂商的 VNC 控制台救场了。
sudo sshd -t # 语法检查sudo systemctl reload ssh关于改 SSH 端口(如 2222):它能减少日志噪音,但对有目的的扫描者作用有限(全端口扫描照样找到)。可做可不做;如果改,记得同步更新安全组。
第 4 步:fail2ban 封禁爆破 IP
即使有密钥登录,爆破流量仍会灌满日志。fail2ban 监控日志,把反复失败的 IP 自动拉进防火墙黑名单:
sudo apt install fail2bansudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localjail.local 中调整 sshd 段:
[sshd]enabled = truemaxretry = 5findtime = 10mbantime = 1h含义:10 分钟内失败 5 次,封禁 1 小时。启动并查看状态:
sudo systemctl enable --now fail2bansudo fail2ban-client status sshd第 5 步:系统防火墙(ufw)作为第二道门
安全组在云侧,ufw 在系统侧,两层独立互备:
sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow 22/tcp # 若改了 SSH 端口则填新端口sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw enablesudo ufw status verbose第 6 步:开启自动安全更新
系统漏洞补丁不及时打,前面的加固都是沙上筑塔。Debian/Ubuntu 用 unattended-upgrades 自动安装安全更新:
sudo apt install unattended-upgradessudo dpkg-reconfigure -plow unattended-upgrades # 交互式确认开启默认只自动更新安全源(security),不动功能更新——这个平衡对服务器正合适。
第 7 步:时间同步与基础可观测
- 确认
timedatectl显示 NTP 同步正常——证书验证、日志时间线、排障对齐全依赖准确时间。 - 顺手装上排障工具:
apt install htop iotop ncdu mtr-tiny。 - 在云平台控制台配置监控告警(CPU、磁盘、带宽),这是系统外的一层眼睛。
加固完成后的自查
ss -tlnp # 监听端口是否与预期一致,没有多余服务grep "PasswordAuthentication" /etc/ssh/sshd_configsudo fail2ban-client status # jail 是否生效sudo ufw status对照清单逐项打钩。安全不是一次性动作——定期检查登录日志(journalctl -u ssh)、关注所用软件的安全公告,才是常态。
延伸阅读
分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 3 天
部分内容可能已过时