
核心要点(TL;DR)
- 新服务器上线前必须完成账号、SSH、防火墙、补丁、日志五类基线配置。
- SSH 禁用 root 直登并改用密钥认证,可消除绝大多数暴力破解风险。
- 防火墙默认拒绝入站,仅按需放行端口,是成本最低的收敛手段。
- 基线配置需固化为脚本与检查清单,避免每台机器重复踩坑。
很多人拿到新服务器后的第一件事是装环境、传代码、解析域名,安全配置留到「以后再说」。但公网 IP 一旦暴露,SSH 暴力破解、端口扫描、漏洞探测会在数小时内到来。本文按可执行顺序给出 10 项服务器安全基线配置,每项都附命令与验证方法,照着做约 30 分钟即可完成基础加固。
一、先建普通账号,禁止 root 直接操作
root 拥有全部权限,一旦泄露等于服务器失守。第一步是创建具备 sudo 权限的普通账号,日常操作全部走该账号。
useradd -m -s /bin/bash deploy
passwd deploy
usermod -aG sudo deploy # Debian/Ubuntu
usermod -aG wheel deploy # CentOS/RHEL验证:su - deploy 后执行 sudo whoami 应返回 root。确认新账号可正常登录后,再进入下一步。
二、SSH 加固:密钥登录 + 禁用 root
SSH 是入侵入口的重灾区。修改 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
AllowUsers deploy先把本地公钥写入 ~/.ssh/authorized_keys 并设权限 chmod 600,再用新终端验证密钥登录成功,最后 systemctl restart sshd。切记保留一个已登录会话和云控制台 VNC 作为兜底。
三、防火墙默认拒绝,只放行必要端口
最小暴露面是最划算的安全投入。以 firewalld 为例:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --set-default-zone=public
firewall-cmd --reload
firewall-cmd --list-allUbuntu 可用 ufw:ufw default deny incoming 后 ufw allow 22,80,443/tcp。同时核对云厂商安全组,两处规则必须一致,否则会出现「本地放行、外部不通」的排查陷阱。
四、补丁、时间同步与内核参数
未打补丁的服务是被批量扫描利用的主要目标。执行 apt update && apt upgrade 或 yum update,并开启自动安全更新。时间同步影响日志取证与证书校验,确认 timedatectl 显示 NTP 已同步。内核层面可开启 SYN Cookie 并关闭不必要的转发,写入 /etc/sysctl.d/99-hardening.conf 后 sysctl -p 生效。
五、日志审计与文件权限检查
确保 auditd 或 rsyslog 正常运行,重点保留 SSH 登录、sudo 提权、定时任务变更记录。检查高危权限:
find / -xdev -perm -4000 -type f 2>/dev/null
find / -xdev -perm -002 -type f 2>/dev/null
crontab -l; ls -l /etc/cron.*对 SUID 文件与全局可写文件逐项确认来源,删除来源不明的条目。Web 目录权限建议目录 755、文件 644,属主为运行用户而非 root。
六、上线前检查清单
| 类别 | 检查项 | 验证命令 |
|---|
- 账号:无空口令账号,普通账号具备 sudo
- SSH:root 禁登、密码登录关闭、端口受控
- 网络:
ss -lntp监听端口与防火墙规则一致 - 补丁:系统与关键组件为最新安全版本
- 日志:登录与提权记录可查,磁盘有告警
- 权限:无异常 SUID 与全局可写文件
建议把以上步骤写成初始化脚本,新机器统一执行。若希望减少手工维护,可将主机入侵检测、基线核查与告警联动交给 AegisX 这类平台统一管理,把精力留给业务本身。
行动建议:今天就选一台测试机,按本文顺序跑一遍,把每一步命令记录成脚本;确认无误后再应用于生产服务器,并加入每月巡检清单。
常见问题(FAQ)
新买的服务器不配置安全基线直接上线,风险到底有多大?
风险很高。云服务器公网 IP 暴露后,SSH 暴力破解扫描通常在数小时内就会出现,弱口令或 root 直登极易被攻破。默认开放的高危端口、未打补丁的服务、过宽的目录权限也会被自动化工具批量利用。基线配置的本质是把已知的低成本攻击面提前关掉,投入半小时可规避大部分入门级入侵。
禁用 root 登录后,怎么保证自己不会把自己锁在服务器外?
操作前先确认新账号能正常登录并具备 sudo 权限,再修改 SSH 配置。改完先用 ssh -t 新账号@IP 另开一个终端验证登录成功,确认无误后再关闭当前会话。切勿在只开一个窗口时直接重启 sshd,也不要同时修改端口和禁用密码登录,建议分两步执行并保留云控制台 VNC 作为兜底通道。
安全基线配置做完一次就够了吗?
不够。基线是持续状态而非一次性动作,系统升级、安装新服务、业务上线都可能重新打开端口或放宽权限。建议把基线固化为初始化脚本,并配合定期巡检:每周核对监听端口与账号列表,每月检查补丁与日志异常。新机器一律走同一套脚本,避免手工配置导致的标准漂移。
小网站或个人项目也需要做这么多配置吗?
需要,但可按优先级取舍。无论规模大小,SSH 密钥登录、防火墙默认拒绝、系统补丁、普通账号运行服务这四项必须做,成本极低而收益最高。日志审计与文件权限检查可先做基础版。攻击是自动化的,不会因为站点小就放过,反而小站常因缺乏监控成为跳板。
防火墙配置后业务访问不通,怎么快速排查?
先确认监听状态:ss -lntp 查看服务是否真的在监听目标端口与地址。再检查规则链:iptables -L -n -v 或 firewall-cmd --list-all,确认放行规则在正确的链和区域。随后在服务器本地用 curl 127.0.0.1:端口 测试,排除应用问题。最后从外部用 telnet 或 nc 测试连通性,并确认云厂商安全组是否也放行了同一端口。