如何安全地管理服务器:基础加固清单

如何安全地管理服务器:基础加固清单

如何安全地管理服务器:基础加固清单

面向安全入门,整理可落地的服务器安全加固清单,覆盖账号权限、SSH 安全、系统服务、防火墙、日志审计、补丁更新、文件权限、备份、风险运维习惯,适用于 Linux 服务器为主,兼顾通用思路。全部为实操项,可以直接作为检查清单使用。

前言

Web 漏洞很多时候是应用层问题,但服务器本身配置不当,会放大攻击风险。就算 Web 代码没有漏洞,如果服务器账号弱密码、开放多余端口、服务版本老旧,攻击者依旧可以直接拿下服务器权限。服务器加固不是一次性操作,而是日常运维习惯。
学习目标
  1. 掌握 Linux 服务器基础加固的检查项,形成标准化检查清单
  2. 明白每一项加固对应的风险点
  3. 建立最小权限、最小暴露面的安全思维
  4. 区分必须做、建议做、可选优化项
合规提示:加固操作在自己拥有权限的服务器执行,不要操作不属于自己的主机。

一、账号与权限加固(最重要)

核心思想:最小权限原则,减少高权限账号,禁止直接使用 root 日常登录
  1. 禁用 root 远程 SSH 登录
  • 禁止 root 直接 ssh 远程登录,创建普通日常用户,需要管理时再 su /sudo 提权。
  • 配置文件 /etc/ssh/sshd_config 设置 PermitRootLogin no
  • 风险:root 账号是攻击者首要爆破对象,root 可远程登录,一旦密码泄露服务器直接沦陷。
  1. 清理无用账号
  • 检查系统全部用户:cat /etc/passwd
  • 删除长期不用、业务废弃账号,删除多余测试账号。
  • 避免服务器存在大量休眠账号被利用。
  1. 强密码策略
  • 设置密码复杂度:长度大于 12 位,大小写 + 数字 + 特殊符号,禁止弱密码 123456、服务器域名、手机号。
  • 配置密码过期策略,强制定期更换密码。
  1. sudo 权限精细化管控
  • 不要给普通用户全部 sudo 权限,只授予业务必须的命令。
  • 禁止普通用户无密码 sudo。
  1. 禁止空密码账号 系统中不允许存在密码为空的账号,空密码可直接登录。

二、SSH 服务加固(远程管理入口)

SSH 是服务器最主要远程入口,也是暴力破解重灾区。
  1. 修改 SSH 默认 22 端口(可选) 修改端口不能防御高级攻击,但可以阻挡大量自动化扫描器暴力爆破。
注意:改端口前确认防火墙放行新端口,防止自己被锁服务器外面。
  1. 优先使用密钥登录,关闭密码登录(强烈推荐)
  • 配置 SSH 密钥公私钥认证,本地保存私钥,服务器存放公钥。
  • 配置完成后关闭密码登录 PasswordAuthentication no。
  • 风险:密码会被暴力破解,密钥方式安全性远高于密码。
  1. 限制允许登录的用户 sshd_config 配置 AllowUsers user1 user2,只允许指定用户 SSH 登录,其他账号直接拒绝。
  2. 限制 SSH 最大尝试次数 配置登录失败最大重试次数,配合 fail2ban 防护暴力破解。
  3. 安装 fail2ban 防护暴力破解 自动检测 SSH、Web 多次失败登录 IP,自动封禁 IP 一段时间,抵挡爆破攻击。
重要提醒:修改 sshd 配置后,执行 systemctl restart sshd,不要关闭当前会话,新开窗口测试登录,防止配置错误把自己锁在服务器外。

三、防火墙与网络最小暴露面

安全核心:不需要对外提供的端口一律不要对外开放
  1. 启用系统防火墙 firewalld /ufw,不要关闭防火墙 很多人为了省事直接关闭防火墙,所有端口全部暴露公网。
  2. 端口白名单策略 只放行业务真正需要对外的端口,例如 80、443,SSH 端口。 数据库 3306、Redis 6379、Mongodb 等绝对不要直接对公网开放。 数据库、缓存只允许内网访问,需要外部管理走 SSH 隧道或者跳板机。
  3. 禁止不必要协议,关闭 UDP 高危端口
  4. 云服务器额外配置安全组 云服务器除系统防火墙,还有平台安全组,两层都要配置。很多人系统防火墙做了加固,安全组全部放行,等于加固失效。
  5. 不使用的服务,直接关闭 + 禁用开机自启,而不是只防火墙拦截。

四、系统服务与软件版本管理

  1. 定期系统补丁更新 执行系统更新,修复操作系统内核、组件已知 CVE 漏洞。
# CentOS yum update # Ubuntu/Debian apt update && apt upgrade
生产环境更新前评估业务影响,避免更新导致业务异常。
  1. 关闭无用服务,禁用开机自启 查看开机自启服务,把业务不需要的服务停止,禁止开机启动。
systemctl list-unit-files –type=service
多余的服务就多一份攻击面。
  1. 第三方组件版本管控 Nginx、MySQL、Redis、PHP 等中间件保持相对新版本,老旧版本存在大量历史漏洞。 禁止使用废弃版本软件。
  2. 高危服务禁止监听 [0.0.0.0](0.0.0.0) Redis、Mysql、Memcached,配置监听 [127.0.0.1](127.0.0.1) 或者内网网卡,不监听全部网卡。

五、文件与目录权限加固

错误文件权限是提权、泄露源码、植入后门常见入口。
  1. 关键系统文件权限锁定
  • /etc/passwd、/etc/shadow 权限严格保护,不允许普通用户写入。
  • ssh 私钥文件权限必须严格,私钥文件不能其他用户可读。
  1. Web 网站目录权限 Web 运行用户只给必要读、执行权限,不要给 777 全局权限。 网站上传目录只允许写入,禁止执行脚本权限。
  2. 禁止重要配置文件对其他用户可读,数据库配置文件(账号密码)权限收紧。
  3. 定期查找服务器上权限 777 的文件,排查可疑文件:
find / -type f -perm 777

六、日志与审计,出事可溯源

  1. 开启系统日志,不随意清空日志 /var/log 下面保存 ssh 登录日志、系统日志、web 服务日志。 日志不要存放在被 web 访问的目录,防止攻击者下载日志。
  2. 保存登录审计记录 记录谁登录服务器、登录 IP、操作行为。可以配置 rsyslog 远程日志,把日志同步到另一台日志服务器;就算服务器被入侵,攻击者也无法删除远程日志销毁证据。
  3. 定期查看异常登录日志:
last lastb
观察陌生 IP、凌晨异常登录记录。
  1. 开启 sudo 操作日志,记录 sudo 执行过的命令。

七、备份策略(被入侵之后最后保障)

  1. 业务数据定期备份,数据库、网站源码分开备份。
  2. 备份不要放在同一台服务器,备份同步到外部存储。服务器被入侵,攻击者会把本机备份一并删除。
  3. 定期测试备份是否可以正常恢复,只备份不测试恢复等于没有备份。
  4. 备份文件做好权限保护,不要对外可访问。

八、运维习惯与风险规避

  1. 不要在服务器浏览器上网、不要随意下载陌生文件 服务器本地浏览网页容易被恶意页面攻击,导致服务器沦陷。
  2. 禁止在命令行、脚本、日志明文写账号密码、密钥。 很多人 shell 命令直接输入密码,历史命令记录泄露密钥。
  3. 服务器不要安装多余软件,减少攻击面。
  4. 跳板机思路:业务服务器不直接暴露 SSH 公网,通过一台跳板机登录业务内网服务器。
  5. 禁止把服务器私钥、配置文件上传到公网代码仓库 (Git)。
  6. 定期巡检:端口、账号、计划任务 crontab,排查后门、定时恶意任务。
crontab -l
  1. 做好服务器资产台账:记录服务器 IP、开放端口、运行服务、负责人。

九、恶意行为检测(基础自查)

基础入侵自查简单命令,日常巡检使用:
# 查看开放端口 ss -tulnp # 查看系统登录记录 last # 查看定时任务 crontab -l ls /etc/cron.* # 查看进程,寻找陌生异常进程 ps aux
加固不等于百分百安全,加固是降低被攻击概率;如果业务重要,还需要 WAF、入侵检测、漏洞扫描等安全能力。

加固检查清单

✅ 禁用 root SSH 远程登录 ✅ SSH 使用密钥登录,关闭密码认证 ✅ 配置 fail2ban 抵御暴力破解 ✅ 清理无用系统账号 ✅ 防火墙 / 云安全组,最小端口放行 ✅ 数据库、缓存不对外网开放 ✅ 系统与中间件定期打补丁更新 ✅ 停止无用服务,取消开机自启 ✅ 杜绝 777 高危文件权限 ✅ Web 上传目录禁止脚本执行权限 ✅ 开启系统审计日志,优先远程日志存储 ✅ 业务数据异地定期备份,验证可恢复 ✅ 定期检查登录日志、计划任务、端口进程 ✅ 不硬编码明文密钥密码,不泄露到公网仓库

小结

服务器加固核心三原则:
  1. 最小暴露面:不需要对外开放的全部关闭
  2. 最小权限:账号、文件、服务只给需要的权限
  3. 可追溯可恢复:日志审计 + 异地备份
加固是持续过程,不是一次性做完就完事,业务变更后要重新复核安全配置。
本文要点
  • SSH 与远程管理安全
  • 防火墙与端口策略
  • 日志监控与备份

📌 本文为技术科普内容,仅用于学习研究。

⚠️ 合规声明: 本文内容仅用于网络安全合规学习、科研与授权测试用途。严禁用于任何未授权行为,违者自行承担全部法律责任。
滚动至顶部