如何安全地管理服务器:基础加固清单
如何安全地管理服务器:基础加固清单
面向安全入门,整理可落地的服务器安全加固清单,覆盖账号权限、SSH 安全、系统服务、防火墙、日志审计、补丁更新、文件权限、备份、风险运维习惯,适用于 Linux 服务器为主,兼顾通用思路。全部为实操项,可以直接作为检查清单使用。
前言
Web 漏洞很多时候是应用层问题,但服务器本身配置不当,会放大攻击风险。就算 Web 代码没有漏洞,如果服务器账号弱密码、开放多余端口、服务版本老旧,攻击者依旧可以直接拿下服务器权限。服务器加固不是一次性操作,而是日常运维习惯。
学习目标
-
掌握 Linux 服务器基础加固的检查项,形成标准化检查清单
-
明白每一项加固对应的风险点
-
建立最小权限、最小暴露面的安全思维
-
区分必须做、建议做、可选优化项
合规提示:加固操作在自己拥有权限的服务器执行,不要操作不属于自己的主机。
一、账号与权限加固(最重要)
核心思想:最小权限原则,减少高权限账号,禁止直接使用 root 日常登录
-
禁用 root 远程 SSH 登录
-
禁止 root 直接 ssh 远程登录,创建普通日常用户,需要管理时再 su /sudo 提权。
-
配置文件
/etc/ssh/sshd_config设置PermitRootLogin no -
风险:root 账号是攻击者首要爆破对象,root 可远程登录,一旦密码泄露服务器直接沦陷。
-
清理无用账号
-
检查系统全部用户:
cat /etc/passwd -
删除长期不用、业务废弃账号,删除多余测试账号。
-
避免服务器存在大量休眠账号被利用。
-
强密码策略
-
设置密码复杂度:长度大于 12 位,大小写 + 数字 + 特殊符号,禁止弱密码
123456、服务器域名、手机号。 -
配置密码过期策略,强制定期更换密码。
-
sudo 权限精细化管控
-
不要给普通用户全部 sudo 权限,只授予业务必须的命令。
-
禁止普通用户无密码 sudo。
-
禁止空密码账号 系统中不允许存在密码为空的账号,空密码可直接登录。
二、SSH 服务加固(远程管理入口)
SSH 是服务器最主要远程入口,也是暴力破解重灾区。
-
修改 SSH 默认 22 端口(可选) 修改端口不能防御高级攻击,但可以阻挡大量自动化扫描器暴力爆破。
注意:改端口前确认防火墙放行新端口,防止自己被锁服务器外面。
-
优先使用密钥登录,关闭密码登录(强烈推荐)
-
配置 SSH 密钥公私钥认证,本地保存私钥,服务器存放公钥。
-
配置完成后关闭密码登录
PasswordAuthentication no。 -
风险:密码会被暴力破解,密钥方式安全性远高于密码。
-
限制允许登录的用户 sshd_config 配置
AllowUsers user1 user2,只允许指定用户 SSH 登录,其他账号直接拒绝。 -
限制 SSH 最大尝试次数 配置登录失败最大重试次数,配合 fail2ban 防护暴力破解。
-
安装 fail2ban 防护暴力破解 自动检测 SSH、Web 多次失败登录 IP,自动封禁 IP 一段时间,抵挡爆破攻击。
重要提醒:修改 sshd 配置后,执行systemctl restart sshd,不要关闭当前会话,新开窗口测试登录,防止配置错误把自己锁在服务器外。
三、防火墙与网络最小暴露面
安全核心:不需要对外提供的端口一律不要对外开放
-
启用系统防火墙 firewalld /ufw,不要关闭防火墙 很多人为了省事直接关闭防火墙,所有端口全部暴露公网。
-
端口白名单策略 只放行业务真正需要对外的端口,例如 80、443,SSH 端口。 数据库 3306、Redis 6379、Mongodb 等绝对不要直接对公网开放。 数据库、缓存只允许内网访问,需要外部管理走 SSH 隧道或者跳板机。
-
禁止不必要协议,关闭 UDP 高危端口
-
云服务器额外配置安全组 云服务器除系统防火墙,还有平台安全组,两层都要配置。很多人系统防火墙做了加固,安全组全部放行,等于加固失效。
-
不使用的服务,直接关闭 + 禁用开机自启,而不是只防火墙拦截。
四、系统服务与软件版本管理
-
定期系统补丁更新 执行系统更新,修复操作系统内核、组件已知 CVE 漏洞。
# CentOS yum update # Ubuntu/Debian apt update && apt upgrade
生产环境更新前评估业务影响,避免更新导致业务异常。
-
关闭无用服务,禁用开机自启 查看开机自启服务,把业务不需要的服务停止,禁止开机启动。
systemctl list-unit-files –type=service
多余的服务就多一份攻击面。
-
第三方组件版本管控 Nginx、MySQL、Redis、PHP 等中间件保持相对新版本,老旧版本存在大量历史漏洞。 禁止使用废弃版本软件。
-
高危服务禁止监听 [0.0.0.0](0.0.0.0) Redis、Mysql、Memcached,配置监听 [127.0.0.1](127.0.0.1) 或者内网网卡,不监听全部网卡。
五、文件与目录权限加固
错误文件权限是提权、泄露源码、植入后门常见入口。
-
关键系统文件权限锁定
-
/etc/passwd、/etc/shadow权限严格保护,不允许普通用户写入。 -
ssh 私钥文件权限必须严格,私钥文件不能其他用户可读。
-
Web 网站目录权限 Web 运行用户只给必要读、执行权限,不要给 777 全局权限。 网站上传目录只允许写入,禁止执行脚本权限。
-
禁止重要配置文件对其他用户可读,数据库配置文件(账号密码)权限收紧。
-
定期查找服务器上权限 777 的文件,排查可疑文件:
find / -type f -perm 777
六、日志与审计,出事可溯源
-
开启系统日志,不随意清空日志 /var/log 下面保存 ssh 登录日志、系统日志、web 服务日志。 日志不要存放在被 web 访问的目录,防止攻击者下载日志。
-
保存登录审计记录 记录谁登录服务器、登录 IP、操作行为。可以配置 rsyslog 远程日志,把日志同步到另一台日志服务器;就算服务器被入侵,攻击者也无法删除远程日志销毁证据。
-
定期查看异常登录日志:
last lastb
观察陌生 IP、凌晨异常登录记录。
-
开启 sudo 操作日志,记录 sudo 执行过的命令。
七、备份策略(被入侵之后最后保障)
-
业务数据定期备份,数据库、网站源码分开备份。
-
备份不要放在同一台服务器,备份同步到外部存储。服务器被入侵,攻击者会把本机备份一并删除。
-
定期测试备份是否可以正常恢复,只备份不测试恢复等于没有备份。
-
备份文件做好权限保护,不要对外可访问。
八、运维习惯与风险规避
-
不要在服务器浏览器上网、不要随意下载陌生文件 服务器本地浏览网页容易被恶意页面攻击,导致服务器沦陷。
-
禁止在命令行、脚本、日志明文写账号密码、密钥。 很多人 shell 命令直接输入密码,历史命令记录泄露密钥。
-
服务器不要安装多余软件,减少攻击面。
-
跳板机思路:业务服务器不直接暴露 SSH 公网,通过一台跳板机登录业务内网服务器。
-
禁止把服务器私钥、配置文件上传到公网代码仓库 (Git)。
-
定期巡检:端口、账号、计划任务 crontab,排查后门、定时恶意任务。
crontab -l
-
做好服务器资产台账:记录服务器 IP、开放端口、运行服务、负责人。
九、恶意行为检测(基础自查)
基础入侵自查简单命令,日常巡检使用:
# 查看开放端口 ss -tulnp # 查看系统登录记录 last # 查看定时任务 crontab -l ls /etc/cron.* # 查看进程,寻找陌生异常进程 ps aux
加固不等于百分百安全,加固是降低被攻击概率;如果业务重要,还需要 WAF、入侵检测、漏洞扫描等安全能力。
加固检查清单
✅ 禁用 root SSH 远程登录 ✅ SSH 使用密钥登录,关闭密码认证 ✅ 配置 fail2ban 抵御暴力破解 ✅ 清理无用系统账号 ✅ 防火墙 / 云安全组,最小端口放行 ✅ 数据库、缓存不对外网开放 ✅ 系统与中间件定期打补丁更新 ✅ 停止无用服务,取消开机自启 ✅ 杜绝 777 高危文件权限 ✅ Web 上传目录禁止脚本执行权限 ✅ 开启系统审计日志,优先远程日志存储 ✅ 业务数据异地定期备份,验证可恢复 ✅ 定期检查登录日志、计划任务、端口进程 ✅ 不硬编码明文密钥密码,不泄露到公网仓库
小结
服务器加固核心三原则:
-
最小暴露面:不需要对外开放的全部关闭
-
最小权限:账号、文件、服务只给需要的权限
-
可追溯可恢复:日志审计 + 异地备份
加固是持续过程,不是一次性做完就完事,业务变更后要重新复核安全配置。
本文要点
- SSH 与远程管理安全
- 防火墙与端口策略
- 日志监控与备份
📌 本文为技术科普内容,仅用于学习研究。
⚠️ 合规声明: 本文内容仅用于网络安全合规学习、科研与授权测试用途。严禁用于任何未授权行为,违者自行承担全部法律责任。