LXSecure 是一个交互式的 Linux 服务器安全加固脚本,参考了 CIS Benchmarks 等安全标准[reference:0],覆盖 SSH 安全、防火墙、入侵检测、文件完整性、内核参数调优等 14 个加固模块,支持 Debian/Ubuntu、CentOS/RHEL/Rocky/Alma 等主流发行版。
每次买一台新 VPS,第一件事就是手动配安全:改 SSH 端口、装 Fail2ban、配防火墙……这些事情做了无数次,每次都是重复劳动。更烦的是,有时候忘了某个步骤,过几天一看 /var/log/auth.log,满屏的暴力破解记录。
这个脚本就是把那些重复的加固操作整理成一份自动化的东西。跑一遍,该加固的都加固了。
| 编号 | 功能 |
|---|---|
| 0 | 退出 |
| 1 | 系统更新 |
| 2 | SSH 安全加固 |
| 3 | 防火墙配置 |
| 4 | Fail2ban |
| 5 | 密码策略 |
| 6 | 文件权限加固 |
| 7 | 内核参数(多场景) |
| 8 | 审计日志 |
| 9 | 恶意软件扫描 |
| 10 | 账户安全检查 |
| 11 | AIDE 文件完整性 |
| 12 | 生成安全报告 |
| 13 | 自动安全更新 |
| 14 | 关闭不必要服务 |
| 15 | Lynis 安全审计 |
| 16 | 执行全部加固 |
bash <(curl \-sSL https://raw.githubusercontent.com/gzy318/LXSecure/main/install.sh)
wget https://raw.githubusercontent.com/gzy318/LXSecure/main/lxsecure.sh
chmod +x lxsecure.sh
sudo ./lxsecure.sh
脚本会帮你完成三件事:改一个高位端口(建议 10000-65535)、禁用 Root 密码登录、可选禁用所有用户的密码认证。改端口的时候脚本会先放行新端口再重启 SSH 服务——这个顺序很重要,先放行再重启,你就不会把自己锁在门外。
密钥生成用的是 Ed25519 算法,比 RSA 更快也更安全。脚本生成密钥后会提示你下载私钥并删除服务器上的副本,这是基本的安全意识——私钥不应该留在服务器上。
脚本会自动检测你系统上已有的防火墙工具——UFW、Firewalld 还是原生的 iptables——然后用对应的方式配置。默认只开放 SSH、80、443 三个端口,其他全关。你也可以在配置时额外放行自己需要的端口。
Fail2ban 的原理很简单:它会盯着认证日志看,同一个 IP 如果在短时间内连续失败太多次,就直接把它扔进防火墙黑名单。脚本配置了两个 jail:一个是常规的 sshd,5 次失败封 1 小时;一个是 sshd-ddos,10 次失败封 2 小时。双保险。
这是脚本里比较有特色的一个功能。内核参数调优这件事,不同场景需求完全不一样:
-
安全优先:适用于公网 Web 服务器。开启 tcp_syncookies 防 SYN flood 攻击,开启 rp_filter 防 IP 欺骗,限制 dmesg 访问防止信息泄露。
-
高性能:适用于数据库、游戏服务器。扩大网络缓冲区、增加文件句柄数上限、降低 swappiness 减少磁盘交换。
-
均衡模式:适用于个人开发机,在安全和性能之间取一个折中。
AIDE(Advanced Intrusion Detection Environment)的工作原理是给系统关键文件拍一张“快照”——记录每个文件的哈希值、权限、大小、时间戳。之后定期对比,如果哪个文件变了,就能发现。脚本会在首次运行时初始化 AIDE 数据库,并配置每日自动检查。
Linux 内核级别的审计系统,比应用层日志更底层、更可靠。脚本配置的规则会监控 /etc/passwd、/etc/shadow、/etc/sudoers 等关键文件的变化,以及 execve、openat、mount 等敏感系统调用。这些日志在出事之后回溯现场非常有用。
脚本里内置了一个很重要的设计:所有可能把你锁在门外的操作,都有防锁死逻辑。
比如修改 SSH 端口,脚本的执行顺序是:先放行新端口 → 再修改 SSH 配置 → 最后重启 SSH 服务。这样就算新端口配置有问题,你当前的连接也不会断,还有机会修复。
又比如防火墙配置,UFW 启用之前会先确保 SSH 端口已经被放行。
这些细节看起来不起眼,但实际操作中,“把自己锁在服务器外面”是新手最常遇到的问题。
Q: 修改 SSH 端口后连不上了怎么办?
A: 如果你还保持着原来的 SSH 连接,立即另开一个终端测试新端口。如果新端口连不上,检查防火墙是否放行了新端口。如果实在连不上,大部分 VPS 提供商都有 VNC 救援模式可以进去修复。
Q: 脚本支持哪些系统?
A: Debian/Ubuntu、CentOS/RHEL 7+、Rocky Linux、AlmaLinux。
Q: 执行全部加固大概需要多久?
A: 不包括 Lynis 审计的话,5-10 分钟。Lynis 审计单独跑需要 10-20 分钟。
Q: 脚本会破坏现有服务吗?
A: 大部分操作是配置层面的修改,不会卸载或删除现有软件。但修改 SSH 配置和防火墙规则可能会影响现有连接,建议在维护窗口执行。