用途:加固运行 Kamal 部署的 Linux 服务器,减少公网暴露,同时不破坏 Kamal 所需的 SSH 与 kamal-proxy 端口(80、443),避免把用户锁在服务器外。
主要能力:只读检查脚本 scripts/inspect.sh 报告系统与包管理器、监听端口及进程(ss -tulpn)、防火墙状态与规则(ufw/firewalld/nftables)、sshd 有效配置(PermitRootLogin、PasswordAuthentication、Port)、fail2ban 是否运行、自动安全更新是否已配置、Docker 守护进程是否监听 TCP、可登录用户与免密 sudo 条目。随后按类别应用:自动安全更新、fail2ban、防火墙/端口封锁、SSH 加固(密码认证、root 登录、端口),每项均附对应撤销命令。验证脚本 scripts/verify.sh 检查被封锁端口与仍开放端口,以及 sshd 配置、fail2ban、自动更新定时器是否生效。
使用方式:先读取 config/deploy.yml 的 servers:、ssh:(默认 root/22)与 accessories: 端口绑定,确认目标主机与连接方式。在目标服务器运行:ssh root@your-server 'bash -s' < skills/server-hardening/scripts/inspect.sh。向用户逐项确认公开端口、SSH 账户、是否禁用 root 登录与密码认证、更新策略、是否自动重启、是否安装 fail2ban。展示每项变更的命令与撤销命令并获明确同意后,按低风险到高风险顺序应用(更新与 fail2ban 优先,防火墙其次,SSH 最后)。编辑前备份,例如:sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d%H%M%S)。验证:ssh root@your-server 'bash -s' < skills/server-hardening/scripts/verify.sh 22 80 443。
适用场景:Kamal 部署的服务器初始加固、收紧公网暴露面、配置自动更新与防暴力破解。
限制:所有变更需用户明确同意;禁用密码认证、改 SSH 端口或限制 root 登录前必须确认密钥登录可用,并保留第二个已连接会话直至验证完成;Docker 会插入自己的防火墙规则,仅靠 ufw deny 不一定能封锁 Docker 已发布端口;验证脚本只能证明回环端口开放,需用户从本机确认外部可达性并重新登录。回滚方式为恢复带时间戳的备份并重载服务,卸载新装组件。相关技能:setup、servers、ssh、accessories。