LHIDC

linux服务器安全加固并不等于关闭一切入口,适合中小团队的最小可用基线

面向中小团队梳理一套兼顾安全与可维护性的 Linux 服务器最小可用基线,覆盖账号与 SSH、补丁更新、日志审计、备份恢复等关键项,并指出过度激进加固可能带来的业务与维护风险。

linux服务器安全加固并不等于关闭一切入口,适合中小团队的最小可用基线

安全加固的目标不是“把门都焊死”

一个中小团队常见的服务器场景是:几台 Linux 服务器承载网站、接口、数据库或内部系统,运维可能由开发兼任,业务还要持续上线。此时做 linux 服务器安全加固,最怕两种极端:完全不管,所有服务裸露在公网;或者一次性关闭 root、禁用密码、收紧防火墙、改 SSH 端口、强制重启更新,结果攻击面是小了,自己也进不去了。

适合中小团队的最小可用基线,应当优先解决“可被远程暴力尝试、账号权限混乱、补丁长期缺失、日志不可追踪、备份不可恢复”这些高概率问题,同时保留可维护入口和回滚手段。它不是企业级零信任全套架构,也不是把所有端口都关掉,而是在有限人力下建立一套能长期执行的安全底线。

这里的“最小可用基线”可以理解为:在不显著增加运维复杂度、不影响业务发布和故障处理的前提下,必须长期保持的账号、访问、补丁、审计、备份与应急配置。它适合公网 Linux 服务器、少量运维人员、没有独立安全团队的中小团队作为第一阶段加固标准。

中小团队做安全加固时的现实约束

安全方案如果脱离团队能力,很容易从“保护服务器”变成“制造维护风险”。中小团队在落地 linux 服务器安全加固时,通常有几个约束:

  • 服务器数量不多,但每台都可能承载关键业务;
  • 运维人员有限,无法 7×24 小时盯日志和告警;
  • 发布、排障、数据修复经常需要远程登录;
  • 应用依赖可能比较旧,激进升级可能引发兼容问题;
  • 很多服务器没有完整的配置管理和自动化回滚体系。

因此,安全基线应先覆盖“高收益、低副作用”的项目。比如禁用 root 远程登录、使用普通账号加 sudo、限制 SSH 登录来源、定期安装安全补丁、保留关键日志、做可恢复备份。这些措施通常不会改变业务架构,却能明显降低常见风险。

可以先把基线分成四类:入口控制、系统维护、行为审计、恢复能力。

基线类别 最小要求 主要降低的风险 维护注意点
账号与 SSH 普通用户登录、sudo 提权、禁用 root 远程登录、优先使用密钥 暴力破解、共享账号、权限失控 修改 SSH 前必须保留当前会话和备用入口
网络暴露面 只开放业务必要端口,管理端口限制来源 扫描探测、无关服务被利用 防火墙规则先放行 SSH 再启用
补丁与服务 定期安装安全更新,关闭不用的服务 已知漏洞、组件长期失修 重要业务先在低峰或测试环境验证
日志与备份 登录日志可查,关键配置和数据可恢复 事后无法追踪、误操作无法恢复 备份必须做恢复验证,不只看“备份成功”

账号与 SSH:先把管理入口做稳

SSH 是 Linux 服务器最常见的管理入口,也是最容易被扫描和尝试登录的位置。中小团队的目标不是让 SSH “消失”,而是让它满足三个条件:谁登录可识别、登录方式不容易被撞库、出现问题还能恢复。

使用个人账号,不把 root 当日常入口

建议为每位管理员创建独立账号,通过 sudo 获取管理权限。这样日志中能看到具体操作者,而不是所有人共用 root。

以 Ubuntu/Debian 为例:

sudo adduser opsuser
sudo usermod -aG sudo opsuser

以 RHEL/Rocky/AlmaLinux 为例:

sudo useradd opsuser
sudo passwd opsuser
sudo usermod -aG wheel opsuser

创建后不要立即关闭当前 root 会话。应先用新账号另开一个 SSH 窗口登录,并验证 sudo 是否可用:

ssh opsuser@your_server_ip
sudo whoami

如果输出为 root,说明 sudo 权限生效。确认备用账号可用后,再继续调整 SSH 配置。

禁用 root 远程登录,但不要盲目锁死 root

通常建议禁止 root 直接通过 SSH 登录:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
sudo nano /etc/ssh/sshd_config

确认或添加以下配置:

PermitRootLogin no

修改后先检查配置语法:

sudo sshd -t

没有输出通常表示语法检查通过,再重载 SSH 服务:

sudo systemctl reload sshd

部分 Debian/Ubuntu 系统服务名可能是 ssh,可先确认:

systemctl status ssh
systemctl status sshd

这里要注意:禁用 root SSH 登录不等于立刻锁定 root 本地账号。对于还没有控制台、救援模式或云平台远程登录能力的服务器,过早锁死 root 可能在 sudo 配置出错时增加恢复难度。更稳妥的做法是先确保普通账号、sudo、备份入口都可用,再逐步收紧。

SSH 密钥优先,密码登录分阶段关闭

密钥登录比密码更适合公网服务器。管理员可在本地生成密钥:

ssh-keygen -t ed25519 -C "opsuser@server"

将公钥放入服务器用户目录:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

确认密钥登录成功后,再考虑关闭密码登录:

PasswordAuthentication no
PubkeyAuthentication yes

但这一步要谨慎。若团队成员还没有统一密钥管理习惯,或者存在第三方自动化脚本仍依赖密码登录,直接关闭可能导致维护中断。可先执行过渡策略:

  • 只允许固定管理员账号登录;
  • 限制 SSH 来源 IP;
  • 对失败登录做限速或封禁;
  • 统计一段时间后再关闭密码登录。

例如可在 sshd_config 中限制允许登录的用户:

AllowUsers opsuser deployuser

修改后同样执行:

sudo sshd -t
sudo systemctl reload sshd

防火墙不是越严越好,而是只开放必要路径

Linux 服务器安全加固离不开防火墙,但中小团队最常见的事故之一就是“规则写错后 SSH 断开”。启用防火墙前,应先确认当前业务端口和管理端口。

查看监听端口:

sudo ss -tulpn

重点关注:

  • 0.0.0.0:22[::]:22:SSH 是否对公网开放;
  • 0.0.0.0:800.0.0.0:443:Web 服务;
  • 0.0.0.0:330654326379:数据库或缓存是否暴露公网;
  • 不认识的高位端口:确认是否为业务组件、监控 Agent 或临时进程。

如果使用 UFW,启用前先放行 SSH 和业务端口:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status verbose

确认规则无误后再启用:

sudo ufw enable

如果使用 firewalld,可先查看当前区域和规则:

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all

放行业务端口示例:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

数据库、Redis、管理后台等不应默认暴露公网。若确实需要远程访问,优先使用内网、VPN、堡垒机或固定 IP 白名单,而不是直接开放给所有来源。

补丁与服务:可控更新比长期不更新更重要

很多入侵并不依赖复杂攻击,而是利用已公开漏洞。中小团队至少应建立一个固定节奏:每周或每两周检查安全更新,每月安排一次维护窗口,对内核、OpenSSH、OpenSSL、Web 服务、数据库客户端等关键组件进行更新。

Ubuntu/Debian 可使用:

sudo apt update
apt list --upgradable

执行升级前建议先确认应用依赖,低峰期操作:

sudo apt upgrade

RHEL/Rocky/AlmaLinux 可使用:

sudo dnf check-update

若软件源支持安全公告元数据,可查看安全更新:

sudo dnf updateinfo list security

再根据维护窗口更新:

sudo dnf update

是否开启自动更新,要看业务特点。对于纯静态站点、标准 Web 服务,自动安装安全补丁的风险相对较低;对于强依赖特定运行时版本的应用,建议先通知、备份、测试,再升级。自动更新不应替代变更记录,尤其是涉及内核、数据库、语言运行时和反向代理时。

除了更新,还要清理无用服务。先列出已启用服务:

systemctl list-unit-files --type=service --state=enabled

发现不明确的服务,不要直接停用。应先查看用途:

systemctl status service_name
ps -ef | grep service_name

确认与业务无关后,再安排停用。涉及生产环境时,建议保留变更记录,写清楚停用时间、服务名、原因和回滚方式。

日志与审计:至少要能回答“谁在什么时候做了什么”

安全加固不只是防止攻击,也包括事后可追踪。中小团队不一定马上建设集中日志平台,但单机日志不能缺失。

常用登录检查命令包括:

last
lastb
who

Ubuntu/Debian 查看 SSH 认证日志:

sudo grep "sshd" /var/log/auth.log | tail -n 50

RHEL/Rocky/AlmaLinux 通常查看:

sudo grep "sshd" /var/log/secure | tail -n 50

也可以使用 systemd 日志:

sudo journalctl -u ssh --since "24 hours ago"
sudo journalctl -u sshd --since "24 hours ago"

如果不确定服务名,先用 systemctl status sshsystemctl status sshd 判断。

最低限度的审计应覆盖:

  • 成功登录和失败登录;
  • sudo 提权记录;
  • SSH 配置变更;
  • 防火墙规则变更;
  • 关键业务服务重启;
  • 数据库备份和恢复操作。

对于 sudo 日志,可查看系统认证日志,也可用:

sudo journalctl | grep sudo | tail -n 50

日志保留时间要与业务风险匹配。至少应保证最近 7 到 30 天可查;涉及交易、客户数据或合规要求时,应根据实际要求延长保留周期,并考虑异地保存,避免攻击者进入服务器后删除本地日志。

备份与应急入口:安全基线必须包含“能恢复”

很多团队把安全加固理解为“防入侵”,却忽略误操作、勒索、升级失败和配置损坏。对于中小团队,备份和应急入口是最容易被低估的安全项。

关键备份不只备份网站目录

最小备份范围建议包括:

  • 应用代码或可重新部署的制品;
  • 数据库备份;
  • 上传文件、用户文件、业务附件;
  • /etc 下的关键配置;
  • Nginx、Apache、PHP-FPM、Supervisor、systemd unit 等服务配置;
  • crontab 定时任务;
  • 防火墙规则和 SSH 配置;
  • 证书与续期配置,但要注意私钥保护。

可先用只读方式核对关键配置位置:

sudo ls -lah /etc/nginx
sudo ls -lah /etc/ssh
sudo crontab -l
sudo systemctl list-timers

数据库备份不要只看文件是否生成,还要定期做恢复验证。最小验证可以是:在测试库或临时环境导入备份,确认表结构、核心数据量和应用连接是否正常。没有恢复验证的备份,只能算“可能有用的文件”。

应急入口要提前设计

如果 SSH 配置错误、防火墙误封、密钥丢失,团队需要一个不会依赖当前 SSH 的恢复路径。可根据服务器环境准备:

  • 控制台或救援模式访问方式;
  • 至少两个具备 sudo 权限的管理员账号;
  • 离线保存的应急密钥,限制使用人和使用记录;
  • 关键配置文件修改前自动备份;
  • 变更前保留一个已登录的 SSH 会话,确认新会话可登录后再退出。

修改 SSH、防火墙、sudoers 时尤其要谨慎。编辑 sudoers 建议使用 visudo,它会做语法检查:

sudo visudo

不要直接用普通编辑器覆盖 /etc/sudoers。一旦语法错误,可能导致所有 sudo 提权失败。

这些激进加固做法可能影响业务与维护

安全建议放到不同团队中,副作用不一样。下面这些做法并非绝对不能用,但不适合作为中小团队第一天就全面执行的默认项。

激进做法 可能带来的问题 更稳妥的处理方式
立即关闭所有密码登录 密钥未分发完整时,管理员和自动化脚本无法登录 先启用密钥并观察一段时间,再分阶段关闭密码
只改 SSH 端口就认为安全 扫描仍可发现端口,且可能造成防火墙、监控、脚本失效 改端口只能降低噪音,应配合密钥、限源、失败登录限制
默认拒绝所有出站连接 可能导致系统更新、证书续期、接口回调、监控上报失败 先梳理出站依赖,再逐项收紧
强制自动重启安装内核更新 可能在业务高峰中断服务 安排维护窗口,或使用受控重启策略
对系统目录随意 chattr 锁定 后续升级、证书更新、服务写入可能失败 只对明确需要保护的文件使用,并记录解除方式
盲目套用高强度密码过期策略 管理员频繁改密码,反而增加弱密码和记录泄露风险 优先使用密钥、MFA 或密码管理器,密码策略适度即可
开启严格 SELinux/AppArmor 策略但不验证 应用读写目录、端口绑定、子进程调用可能异常 先观察日志和告警,针对应用逐项调整策略
一次性卸载“看似无用”的包 可能删除编译、备份、监控或依赖组件 先确认依赖关系和回滚方式,再清理

中小团队应避免“复制一份加固脚本直接跑完”。不同发行版、应用栈、部署方式差异很大,脚本里的一条防火墙规则、一个 sysctl 参数、一次服务禁用,都可能改变线上行为。更安全的做法是把加固拆成小步骤,每一步可验证、可回滚、可记录。

一套可落地的最小可用基线清单

如果团队需要快速建立第一版 linux 服务器安全加固标准,可以按下面顺序执行。顺序很重要:先保证可登录和可恢复,再逐步收紧。

  1. 记录当前服务器用途、业务端口、管理员账号和备份状态。
  2. 创建个人管理员账号,验证 sudo 权限。
  3. 配置 SSH 密钥登录,确认至少两个管理员可正常登录。
  4. 禁用 root 远程 SSH 登录,但保留可控的应急恢复方式。
  5. 检查监听端口,关闭或限制不应暴露公网的服务。
  6. 启用防火墙前先放行 SSH 和必要业务端口。
  7. 建立补丁检查节奏,重要更新安排维护窗口。
  8. 保留登录、sudo、服务重启和关键配置变更日志。
  9. 备份应用、数据库、配置和证书相关文件。
  10. 定期做恢复验证,确认备份不是“只生成不可用”。
  11. 为 SSH、防火墙、sudoers 等高风险变更建立回滚记录。
  12. 每季度复查一次账号、端口、服务和备份有效性。

这套基线不追求复杂,但要求持续执行。对于中小团队来说,安全能力往往不是来自某一次“大加固”,而是来自每次上线、每次扩容、每次人员变动时都能保持同一套底线。

从最小基线向更高等级扩展

当服务器数量增加、管理员增多、业务数据更敏感时,可以在最小可用基线之上继续扩展。例如引入堡垒机或 VPN 统一管理入口,集中收集日志,使用配置管理工具批量下发基线,增加主机入侵检测,给关键后台增加多因素认证,按照业务等级拆分网络区域。

扩展时仍要遵守一个原则:新增安全措施必须能被团队维护。上线前确认回滚路径,变更后观察 SSH 登录、业务端口、系统更新、证书续期、备份任务和监控告警是否正常。安全加固不是关闭一切入口,而是让必要入口更可控,让异常行为更容易被发现,让故障和误操作有机会恢复。

上一篇 日本名古屋云服务器和大阪云服务器面向关西用户,延迟与交付如何比较 下一篇 linux磁盘IO性能测试应看哪些指标,避免只盯吞吐量

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案