RonMercier/securebydefault-server-hardening

GitHub: RonMercier/securebydefault-server-hardening

基于真实攻击日志的云VPS Linux服务器加固工具集,提供自动化脚本和配置,增强生产环境安全性。

Stars: 0 | Forks: 0

# 默认安全服务器加固 **适用于云VPS部署的生产级Linux服务器加固基线。** 基于 [SecureByDefault.io](https://securebydefault.io) 实际基础设施构建并经实战验证——这是一台位于Linode上的Ubuntu 24服务器,在上线24小时内即遭到机器人探测。这不是理论性的加固方案,而是从第一天起就抵御真实自动化攻击的精确配置。 ![securebydefault-server-hardening](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/926e61ab4b200526.png) ## 覆盖范围 | 层级 | 配置内容 | |---|---| | **防火墙(UFW)** | 默认拒绝,仅开放22/80/443端口 | | **SSH加固** | 仅密钥认证、禁用root登录、暴力破解限制 | | **Nginx** | 安全头部、屏蔽敏感路径、速率限制 | | **Fail2Ban** | SSH + Nginx监狱配置,优化封禁时间 | | **SSL/TLS** | Certbot + Let's Encrypt、HTTPS重定向、HSTS | | **系统** | 自动更新、内核加固sysctl参数 | | **监控** | 日志审查清单、攻击模式参考 | ## 触发此项目的攻击事件 服务器上线24小时内——无公开链接,无公开流量——机器人即开始探测以下内容: ``` /.aws/credentials /.env /api/.env /backend/.env /app/.env /secrets.json /serviceAccountKey.json ``` ## 仓库结构 ``` securebydefault-server-hardening/ ├── README.md ← You are here ├── nginx/ │ ├── securebydefault.conf ← Full Nginx server block (HTTPS + blog routing) │ └── security-headers.conf ← Security headers snippet (include-ready) ├── fail2ban/ │ ├── jail.local ← SSH + Nginx jail configuration │ └── nginx-req-limit.conf ← Nginx request-limit jail filter ├── ufw/ │ └── setup.sh ← UFW firewall setup script ├── ssh/ │ └── sshd_config.hardened ← Hardened SSH daemon config ├── system/ │ ├── sysctl.hardened.conf ← Kernel hardening parameters │ └── unattended-upgrades.conf ← Automatic security updates config ├── scripts/ │ ├── harden.sh ← Full automated hardening script │ └── audit.sh ← Quick security audit check script └── docs/ ├── ATTACK_LOG.md ← Real attack patterns observed post-launch └── CHECKLIST.md ← Pre-launch hardening checklist ``` ## 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/RonMercier/securebydefault-server-hardening.git cd securebydefault-server-hardening ``` ### 2. 运行自动化加固脚本 ``` chmod +x scripts/harden.sh sudo ./scripts/harden.sh ``` 此脚本配置UFW、加固SSH设置、启用自动更新并应用sysctl加固参数。Nginx和Fail2Ban配置需单独应用(见下文),因为它们需要针对具体站点进行定制。 ### 3. 应用Nginx配置(需先自定义) ``` # 编辑服务器名称和路径以匹配您的域名 nano nginx/securebydefault.conf # 复制到 Nginx sites-available sudo cp nginx/securebydefault.conf /etc/nginx/sites-available/yourdomain.conf sudo ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/ # 测试并重载 sudo nginx -t && sudo systemctl reload nginx ``` ### 4. 应用Fail2Ban配置 ``` sudo cp fail2ban/jail.local /etc/fail2ban/jail.local sudo cp fail2ban/nginx-req-limit.conf /etc/fail2ban/filter.d/nginx-req-limit.conf sudo systemctl restart fail2ban sudo fail2ban-client status ``` ### 5. 使用审计脚本验证 ``` chmod +x scripts/audit.sh sudo ./scripts/audit.sh ``` ## 关键安全决策(及原因) **仅SSH密钥认证** 完全禁用基于密码的SSH认证。日志中所有密码失败尝试都来自机器人——没有人在凌晨3点输错密码。完全移除攻击面比速率限制更彻底。 **UFW默认拒绝策略** 仅开放22、80、443端口。其他所有流量静默丢弃。这不仅是良好安全实践,还能保持日志可读性。无噪音的日志才是你会真正查看的日志。 **Nginx屏蔽凭据路径** 专用`location`块对所有常见凭据探测路径(`.env`、`.aws`、`.git`、`credentials`、`secrets`、`xmlrpc.php`等)返回404。机器人会立即跳过这些请求——它们在Web服务器层即被终止,不会触及应用代码。 **安全头部** 全局设置`X-Frame-Options`、`X-Content-Type-Options`、`X-XSS-Protection`、`Referrer-Policy`和`server_tokens off`。这些措施能防御特定类别攻击,并提升安全评分(可通过securityheaders.com检测)。 **优化版Fail2Ban配置** 默认Fail2Ban配置过于宽松——允许过多失败尝试后才封禁,且封禁时间太短。本仓库中的监狱配置针对未运行用户认证服务的生产服务器优化:更快失败、更严格封禁、更长封禁期。 **启用自动更新** VPS中凭据窃取后最常见的攻击途径是未修补的CVE漏洞。自动安全更新意味着不依赖他人记得运行`apt upgrade`。设置后测试,然后忘记它。每月审查升级日志即可。 ## 实际攻击模式记录(首个24小时) 这些来自我的Nginx日志的实际探测路径记录在`docs/ATTACK_LOG.md`中。本仓库的加固配置已拦截所有这些攻击。 ``` Credential file probes: /.env, /.aws/credentials, /api/.env, /secrets.json CMS exploits: /wp-login.php, /xmlrpc.php, /wp-config.php Admin panel discovery: /admin, /phpmyadmin, /manager/html Backup file hunting: /backup.sql, /db.sql, /.git/config Service fingerprinting: /server-status, /info.php, /phpinfo.php ``` ## 环境 测试环境: - **操作系统:** Ubuntu 24.04 LTS - **Web服务器:** Nginx 1.24+ - **PHP:** 8.3-FPM(用于`/blog`子目录的WordPress) - **SSL:** Let's Encrypt / Certbot - **防火墙:** UFW - **入侵防御:** Fail2Ban 1.0+ ## 贡献 欢迎提交Issue和PR。如果您观察到`ATTACK_LOG.md`中未记录的攻击模式,请创建新Issue——保持该列表更新对大家都有帮助。 ## 许可证 MIT许可证 - 自由使用,适应您的配置,不提供任何保证。 ## 关于 由**Ron Mercier**构建 — 云与网络安全工程师。曾在Akamai Technologies负责DDoS缓解和事件响应。网络安全硕士,持有CySA+、PenTest+、AWS CCP认证。 🌐 [securebydefault.io](https://securebydefault.io) · 📬 [通讯订阅](https://newsletter.securebydefault.io) · 💼 [领英](https://www.linkedin.com/in/ron-mercier)
标签:Fail2Ban配置, Let's Encrypt, Nginx安全, SSH安全, SSL/TLS加密, sysctl加固, UFW, 云VPS防护, 云服务器安全, 内存分配, 子域名枚举, 安全基线, 安全头配置, 安全最佳实践, 应用安全, 攻击防御, 教学环境, 数字取证, 暴力破解防护, 服务器加固, 生产环境, 生产级配置, 监控日志, 真实攻击案例, 系统安全, 网络安全, 自动化脚本, 防火墙配置, 隐私保护