一台新购的服务器如果不加任何安全配置,通常在上线后数小时内就会被自动化扫描工具发现,并尝试暴力破解SSH密码。本文整理了20条必做的服务器安全加固操作,按优先级排序,新购服务器第一时间完成这些配置,可以规避绝大多数常见攻击。
一、账号与认证安全(最高优先级)
1. 修改SSH默认端口
编辑 /etc/ssh/sshd_config,将 Port 22 修改为高位端口(如 Port 29999),重启SSH服务后生效。自动化扫描工具通常只扫描22端口。
2. 禁用root直接登录
在 sshd_config 中设置 PermitRootLogin no,创建普通用户并赋予sudo权限,通过普通用户登录后再切换root。
3. 使用SSH密钥认证,禁用密码登录
生成密钥对后,将公钥上传至服务器 ~/.ssh/authorized_keys,然后在 sshd_config 中设置 PasswordAuthentication no。密码登录彻底关闭后,暴力破解攻击失效。
4. 设置强密码策略
对于仍需密码的账号,在 /etc/security/pwquality.conf 中配置最小长度12位、必须包含大小写字母+数字+特殊字符。
5. 配置登录失败锁定
安装并配置 fail2ban,设置SSH登录失败5次后封锁IP 1小时:
maxretry = 5
bantime = 3600
二、防火墙配置
6. 启用UFW并设置默认拒绝策略
ufw default deny incomingufw default allow outgoing
然后仅开放需要的端口,如SSH端口、80、443。
7. 限制SSH访问来源IP
如果你的办公IP相对固定,可只允许特定IP访问SSH端口:ufw allow from 你的IP to any port 29999
8. 关闭不必要的端口和服务
执行 ss -tlnp 查看所有监听端口,关闭不需要的服务(如 telnet、rpcbind、cups 等)。
三、系统更新与补丁
9. 立即更新所有软件包
apt update && apt upgrade -y(Ubuntu/Debian)yum update -y(CentOS)
10. 配置自动安全更新
安装 unattended-upgrades,确保安全补丁自动更新,减少因漏洞未修复导致的风险。
四、文件系统与权限
11. 检查SUID/SGID文件
find / -perm /6000 -type f 2>/dev/null
对不必要的SUID权限文件执行 chmod a-s 文件路径 撤销权限。
12. 保护重要配置文件
对 /etc/passwd、/etc/shadow、/etc/sshd_config 等关键文件设置适当权限,防止未授权修改。
13. 开启文件系统审计
安装 auditd,配置对关键目录(/etc、/bin、/usr/bin)的写入操作进行审计记录。
五、Web服务安全
14. 隐藏Nginx/Apache版本信息
在Nginx配置中添加 server_tokens off,防止通过Response Header泄露服务器版本,减少针对特定版本漏洞的攻击。
15. 配置安全HTTP响应头
在Nginx中添加:X-Frame-Options、X-Content-Type-Options、Content-Security-Policy等安全头,防御XSS和点击劫持。
16. 限制目录访问权限
确保Web服务运行账号(如www-data)对网站目录仅有读权限,对上传目录无执行权限,防止上传Webshell后被执行。
六、监控与备份
17. 配置登录告警
在 ~/.bashrc 或 /etc/profile 中添加SSH登录时发送邮件或Webhook通知,及时发现异常登录行为。
18. 定期备份数据
配置每日自动备份数据库和网站文件,备份数据存储至独立的对象存储(OSS)或本地不同物理位置,遵守3-2-1备份原则。
19. 安装入侵检测工具
部署 rkhunter 或 chkrootkit,定期扫描是否存在Rootkit或系统文件被篡改的情况。
20. 配置系统资源监控
部署监控工具(如Zabbix、Prometheus + Grafana),设置CPU、内存、带宽超限告警,确保异常情况能在第一时间发现。
完成以上20条配置后,服务器的安全防护等级将达到相当可靠的水平。网宝云服务器提供安全中心功能,可帮助用户快速检查常见安全风险项,购买后可在用户中心访问。