
核心要点(TL;DR)
痛点引入:新手服务器上线,安全配置从何下手?
很多新手在服务器上线时,往往只关注业务能否跑起来,而忽略了安全配置。结果服务器刚上线几天就被植入挖矿程序、SSH被暴力破解、数据被窃取。其实,服务器防护并不需要高深技术,只要按照一份最小安全清单逐项落实,就能挡住绝大多数常见攻击。本文为你梳理从零配置到上线的最小安全清单,附带具体命令和检查项,照着做即可。
1. SSH安全加固:锁好第一道门
SSH是服务器管理的入口,也是攻击者最常尝试突破的地方。默认配置下,root登录和密码认证都是高风险项。
操作步骤:
- 创建普通用户并授予sudo权限:
adduser deploy,然后usermod -aG sudo deploy(Ubuntu)或usermod -aG wheel deploy(CentOS)。 - 配置SSH密钥登录:在本地生成密钥对
ssh-keygen -t ed25519,将公钥上传到服务器ssh-copy-id deploy@服务器IP。 - 修改SSH配置文件:编辑
/etc/ssh/sshd_config,设置:PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes Port 2222 # 修改默认端口,降低扫描风险
- 重启SSH服务:
sudo systemctl restart sshd,并测试新连接是否正常。
检查项:使用ssh -p 2222 deploy@服务器IP能登录,root无法登录,密码认证已关闭。
2. 防火墙配置:最小化开放端口
防火墙是服务器的第二道防线,原则是“默认拒绝,按需开放”。
使用UFW(Ubuntu/Debian):
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 2222/tcp # SSH新端口 sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw enable
使用Firewalld(CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
检查项:sudo ufw status或sudo firewall-cmd --list-all确认仅开放必要端口。使用ss -tuln查看监听端口,确保没有多余服务暴露。
3. 系统更新与补丁管理:堵住已知漏洞
未打补丁的系统是攻击者的最爱。建议启用自动安全更新,减少人为遗漏。
Ubuntu/Debian:
sudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades # 选择Yes
CentOS/RHEL:
sudo yum install yum-cron sudo sed -i 's/apply_updates = no/apply_updates = yes/' /etc/yum/yum-cron.conf sudo systemctl enable --now yum-cron
检查项:运行sudo unattended-upgrades --dry-run(Ubuntu)或查看/var/log/yum.log(CentOS)确认更新任务正常。
4. 入侵检测与日志监控:早发现早处理
即使做了基础防护,也需要监控异常行为。推荐安装以下工具:
- Fail2ban:自动封禁暴力破解IP。安装后配置
/etc/fail2ban/jail.local,启用sshd规则。 - AIDE:文件完整性检查,定期比对关键文件变化。
- Logwatch:每日日志摘要邮件,了解系统状况。
检查项:sudo fail2ban-client status sshd查看封禁列表;sudo aide --check检查文件变动;确保日志服务rsyslog运行正常。
5. 最小安全清单对比与上线前检查
| 安全项 | 配置要点 | 检查命令 |
|---|---|---|
| SSH加固 | 禁用root、密钥登录、改端口 | sshd -T | grep permitrootlogin |
| 防火墙 | 默认拒绝,仅开业务端口 | ufw status / firewall-cmd --list-all |
| 系统更新 | 自动安全更新已启用 | apt list --upgradable / yum check-update |
| 入侵检测 | Fail2ban、AIDE已配置 | fail2ban-client status |
| 日志监控 | 日志服务运行,定期审查 | journalctl -u rsyslog |
上线前逐项核对,确保全部通过。对于更高要求,可考虑使用AegisX的服务器安全加固服务,提供自动化基线检查和实时防护。
行动建议:立即动手,持续维护
安全不是一次性的工作,而是持续的过程。建议每季度复查一次安全配置,关注安全公告,及时更新。将上述清单保存为检查表,每次新服务器上线时执行一遍。记住,最小的安全清单也能挡住大多数自动化攻击,但真正的安全需要你保持警惕。
常见问题(FAQ)
新手如何快速检查服务器是否安全?
可以从五个方面快速检查:SSH是否禁用密码登录、防火墙是否启用并限制端口、系统更新是否及时、是否安装入侵检测工具、日志是否有异常登录记录。使用命令如`ss -tuln`查看开放端口,`lastb`检查失败登录。完成这些基本检查能发现大部分明显风险。
为什么必须禁用root用户的SSH登录?
root用户拥有最高权限,一旦被暴力破解,攻击者可直接控制整台服务器。禁用root登录后,攻击者需要同时猜解用户名和密码/密钥,难度大幅增加。建议创建普通用户并通过sudo提权,同时修改SSH默认端口并启用密钥认证,多重措施提升安全性。
服务器防火墙应该怎么配置才安全?
遵循最小化原则:默认拒绝所有入站流量,仅开放业务必需端口(如HTTP/HTTPS)。使用ufw或firewalld工具,例如`ufw default deny incoming`然后`ufw allow 22/tcp`(修改SSH端口后需放行新端口)。定期审查规则,移除不再使用的端口。出站流量可默认允许,但敏感环境建议限制。
如何确保服务器系统及时更新?
启用自动安全更新是最简单有效的方法。对于Ubuntu/Debian,安装unattended-upgrades并配置仅安全更新;对于CentOS/RHEL,使用yum-cron并设置apply_updates=yes。同时定期手动检查更新,重启服务使补丁生效。更新前建议在测试环境验证,避免影响业务。
有哪些免费的服务器入侵检测工具推荐?
推荐使用AIDE(文件完整性检查)、rkhunter(rootkit检测)、fail2ban(防暴力破解)和logwatch(日志分析)。这些工具开源免费,配置简单。例如fail2ban可自动封禁多次登录失败的IP,大幅降低SSH爆破风险。结合系统日志监控,能及时发现异常。