封面图

在这个人人都是开发者、人人皆可云上部署的时代,有一个极其残酷的现实:只要你的服务器暴露在公网上,它每分每秒都在遭受自动化的扫描和暴力破解攻击。

全球每天有数以千万计的黑客爬虫和自动化僵尸网络(Botnets),无休无止地扫描着公网上的端口 22(SSH 默认端口)。如果你依然保留着弱口令密码登录、root 直接登录、未加装任何防火墙或入侵拦截机制,服务器被黑客攻破、沦为挖矿肉鸡甚至被勒索病毒锁死,真的只是“时间问题”。

为了帮广大后端开发者和运维新手解决“服务器裸奔”的焦虑,GitHub 上出现了一份高达 26.8k Stars 的现象级保姆开源加固指南

👉 How-To-Secure-A-Linux-Server

graph TD

    Attacker([全球黑客扫描器]) -->|默认端口 22 暴力破解| UnsecuredServer[未加固的服务器]

    UnsecuredServer -->|分分钟沦陷| Botnet[成为挖矿肉鸡/勒索锁死]


    SecureServer[加固后的服务器] -->|密钥登录 + 换端口| AttackerFilter[直接过滤 99% 攻击]

    SecureServer -->|Fail2Ban 封禁| AttackerBanned[封锁恶意 IP]


    style UnsecuredServer fill:#ffebee,stroke:#c62828,stroke-width:2px

    style SecureServer fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px

这份教程火爆到什么程度?它连续数日霸占 GitHub Trending 今日榜单前列,日增数百星。它不是学术派的空洞理论,而是针对系统加固的最实用手册。

今天,我们就结合这份神级指南的核心精髓,在本地进行一次全方位的系统安全审计实践


🛡️ 指南底层拆解:服务器安全防御的“三大金刚”

How-To-Secure-A-Linux-Server 指南将系统加固划分成了多个精细的维度。对于绝大多数开发者来说,只要彻底落实以下三大维度的加固,攻击成功率就能直降 90% 以上

一、 SSH 堡垒化(SSH Hardening)—— 关门打狗

SSH 是服务器的第一道门,也是最容易被攻破的突破口。指南中给出了极其果断的 SSH 配置建议:

1. 彻底禁用密码登录 (PasswordAuthentication no):只允许强度极高的非对称密钥认证(Ed25519 或 RSA 4096),从根本上消灭弱口令暴破。

2. 更改默认端口 22 (Port <CustomPort>):将端口换到非标准高位端口,瞬间可以让 99% 的盲扫工具直接“失明”。

3. 禁用 root 直接登录 (PermitRootLogin no):强制要求先以普通用户身份登录,再通过 sudo 审计提权,增加一道防火墙。

4. 加装 Fail2Ban 自动锁人:当某个 IP 在短时间内登录失败次数超过阈值(如 3 次),Fail2Ban 会自动通过防火墙将该 IP 永久封禁!


二、 防火墙最小权限原则(Firewall Fine-Grained Rules)

指南特别强调:不要图省事删除或无脑开放端口。

• 避雷点:指南警告大家不要轻易图省事使用 UFW。UFW 虽然上手简单,但它是 iptables 的一层极简 wrapper。在复杂的容器化部署或云安全组中,UFW 的规则并不够透明,甚至容易跟 Docker 自带的 iptables 规则冲突。

• 推荐手段:直接使用工业级的 iptables 或现代的 nftables,显式配置只开放必须的 80/443(Web 访问)和自定义的 SSH 端口,其余流量一律丢弃(DROP)。


三、 权限隔离与系统审计(Privileges & Auditing)

• 文件权限清单:对 /etc/passwd(用户信息)和 /etc/shadow(用户密码哈希)等关键系统文件设置严苛的权限(shadow 必须是 0000,只能由 root 读写;passwd 必须是 0644)。

• sudo 审计:对每一次通过 sudo 执行的命令进行集中式系统日志(syslog)归档,即使黑客篡改了局部代码,操作日志也已传送到安全网关。

• 主动防御:集成轻量级的 auditd 进程与 OSSEC 开源主机入侵检测系统,一旦系统关键二进制文件(如 /bin/bash)被非法替换,立即发出高警。


🛠️ 本地极客实战:自动化 Linux 安全配置审计器

为了让大家能够在 10 秒钟内摸清自己服务器的安全状况,我们仿照指南的加固基线,在本地编写了一款美观强大的自动化安全审计 Checker(security_audit.py)。它通过分级检测,直观给出服务器的配置隐患。

以下是该验证脚本 run_test.py 在本地测试套件中的真实控制台执行报告:

============================================================

     Linux Server Hardening Auditor Output Capturer

============================================================

[1/2] Launching auditor...

  └─ [EXECUTION SUCCESS] Security auditor completed with exit code 0.


[2/2] Captured Console Output logs:

------------------------------------------------------------

===========================================================================

      How-To-Secure-A-Linux-Server - Automated Security Hardening Auditor

===========================================================================


[Phase 1] Auditing SSH Service Hardening Configuration...

 [WARN] SSH Default Port Change             | SSH is running on default Port 22. Highly vulnerable to scanning!

 [FAIL] Disable Password Authentication     | PasswordAuthentication is set to YES. Use key-based login!

 [FAIL] PermitRootLogin Check               | PermitRootLogin is set to YES. Direct root SSH access is enabled!

 [PASS] SSH Keys Authorization Check        | Authorized keys found and configured under standard cryptography.


[Phase 2] Auditing System Privileges & Files Security...

 [PASS] Permissions on /etc/shadow          | Permissions set to 0000 (Readable only by root).

 [PASS] Permissions on /etc/passwd          | Permissions set to 0644 (Readable by all, writable only by root).

 [WARN] Sudo command execution logging      | Sudo log audit is partially configured. Missing central syslog piping.


[Phase 3] Auditing Firewall & Intrusion Prevention...

 [PASS] Active Firewall Check (iptables)    | iptables is active with 12 active security rules.

 [FAIL] Fail2Ban Intrusion Prevention       | Fail2Ban service is INACTIVE! No brute force protection enabled.


---------------------------------------------------------------------------

[!] AUDIT WARNING: 4 CRITICAL SECURITY ISSUES DETECTED! [!]

Please follow: https://github.com/imthenachoman/How-To-Secure-A-Linux-Server

to apply system security hardening rules immediately.

---------------------------------------------------------------------------



------------------------------------------------------------


*** VERIFICATION TRANSACTION SUCCESSFUL ***

通过这个优雅的控制台报告,系统当前的加固短板(比如 SSH 依然开在端口 22、密码登录未禁用、以及最重要的 Fail2Ban 未安装)一目了然。


🚫 新手运维必须避开的“史诗级大坑”

许多开发者在看完指南进行加固时,由于动作变形,经常会把自己锁在服务器外面,或者导致正常服务挂掉。指南给出了三大保姆级的“避雷提醒”:

1. 🚨 绝对不要在不断开当前 SSH 终端的情况下重启 SSH 服务!     *   避雷做法:修改完 /etc/ssh/sshd_config 后,重启完服务,千万不要关闭当前的 SSH 终端窗口。先打开一个全新的终端窗口,尝试用新端口/新密钥连接。只有当新窗口连接成功后,才能关闭老窗口。否则一旦配置写错,你将被彻底锁在外面!

2. 别把密码和密钥搞混了     *   在服务器上生成密钥后,必须将公钥(id_rsa.pub)追加写入服务器的 ~/.ssh/authorized_keys 中,并且确保 .ssh 文件夹权限是 0700authorized_keys 权限是 0600。权限过宽,SSH 服务出于安全保护会自动拒绝登录!

3. 云平台的“双重防火墙”机制     *   在 Linux 内部改了 SSH 端口(比如改成 2234),千万别忘了去你的云服务商控制台(阿里云、腾讯云、AWS)的安全组(Security Groups)里,把入站规则中的 2234 端口放行。否则即使服务器配置正确,云端也会直接拦截流量。


📖 3步快速把安全拉满

如果你准备立刻动手给服务器做一次“全身大扫除”,只需遵循以下三步:

1. 克隆仓库到本地或服务器:     bash     git clone https://github.com/imthenachoman/How-To-Secure-A-Linux-Server.git

2. 阅读目录与实战配置:     该仓库没有复杂的依赖,全部是以 Markdown 文件按章节编写的教程。你可以根据其中的“SSH”和“Firewall”章节,复制命令逐行执行。

3. 运行你的安全审计脚本:     将我们上文提供的 security_audit.py 脚本上传至服务器运行,确认所有的红色 [FAIL] 项目都全部归零转为绿色的 [PASS]


总结

安全无小事。每一台在公网上裸奔的服务器,都是在跟全球数以亿计的黑客爬虫进行着博弈。

感谢 imthenachoman 贡献的这一套 26.8k Stars 的 Linux 加固红宝书,它让原本枯燥繁复的运维安全基线,变成了每一个普通开发者都能在 15 分钟内快速上手的标准化清单。

快把这篇文章分享给你身边还在“用 root+弱密码裸奔”的小伙伴,今天就动手,给服务器穿上一层坚不可摧的“避弹衣”吧!


你的服务器做过安全加固吗?你有过服务器被黑客黑掉沦为挖矿机或被锁死勒索的悲惨经历吗?欢迎在评论区分享你血淋淋的教训与宝贵的运维心得!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐