26.8k Star 狂飙!Linux 服务器安全防护加固“保姆级”指南,别等被黑了才后悔!

26.8k Star 狂飙!Linux 服务器安全防护加固“保姆级”指南,别等被黑了才后悔!
26.8k Star 狂飙!Linux 服务器安全防护加固“保姆级”指南,别等被黑了才后悔!

封面图

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

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

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

? How-To-Secure-A-Linux-Server

Mermaid Diagram

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

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


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

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

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

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

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

2. 更改默认端口 22 (Port ):将端口换到非标准高位端口,瞬间可以让 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+弱密码裸奔”的小伙伴,今天就动手,给服务器穿上一层坚不可摧的“避弹衣”吧!


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


公众号二维码

长按二维码关注 “边学边练”

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有