直接用chattr +i锁定/etc/ssh/sshd_config可行,但必须前置完成配置加固与验证:禁用root登录、启用密钥认证、执行sshd -t语法检查并实测登录;随后按备份→停服务→加锁→重启→验证顺序操作,维护时须闭环解锁-编辑-重锁,并同步启用审计与内核防护。

直接用 chattr +i 锁定 /etc/ssh/sshd_config 是可行的,但必须前置完成配置加固和验证,否则锁死错误配置会导致 SSH 服务无法启动,系统彻底失联。
先加固再锁定:确保配置本身安全可靠
锁定前,必须确认以下几项已正确设置并测试通过,否则加锁等于自毁远程通道:
- PermitRootLogin no —— 显式禁用 root 远程登录(取消注释、值设为 no)
- AllowUsers(推荐)或 AllowGroups —— 显式白名单,只允许可信普通用户登录
- PasswordAuthentication no(可选但强推)—— 关闭密码登录,强制密钥认证
- PubkeyAuthentication yes —— 确保密钥认证启用
- StrictModes yes —— 显式声明,防止因权限宽松导致配置被忽略
改完后务必执行:sudo sshd -t(语法检查),无报错再继续;接着用非 root 账户实测 SSH 登录是否正常,确认能连上、能 sudo、root 确实连不上。
三步安全锁定:备份→验证→加锁
顺序不可跳过,缺一不可:
-
备份原始配置:运行
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.locked.bak -
验证当前配置可运行:执行
sudo systemctl restart sshd && echo "OK",不报错即表示服务能正常重启 -
执行不可修改锁定:先停服务
sudo systemctl stop sshd,再加锁sudo chattr +i /etc/ssh/sshd_config,最后重启sudo systemctl start sshd
加锁后用 lsattr /etc/ssh/sshd_config 检查输出中含 i 标志(如 ----i---------e---),再尝试 echo test | sudo tee -a /etc/ssh/sshd_config,应返回 Operation not permitted。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
日常维护必须配套受控流程
加锁不是一劳永逸,每次需要修改配置时,必须走闭环操作:
- 临时解锁:
sudo chattr -i /etc/ssh/sshd_config - 用
sudo sshd -t验证新配置语法 - 重启服务测试生效:
sudo systemctl restart sshd - 确认无误后立即重锁:
sudo chattr +i /etc/ssh/sshd_config - 记录操作:
logger "sshd_config updated by $(whoami) at $(date)"
建议封装为脚本,避免人工遗漏。在麒麟等信创系统中,还可叠加 KYSEC 内核级防护:kysecctl --set config-immutable=on,进一步封堵提权后的绕过行为。
为什么不能只靠 chattr?还要配审计与监控
chattr +i 能防普通进程和低权限篡改,但无法阻止已获得 root 权限的攻击者通过内核模块、eBPF 或内存补丁绕过。因此必须同步启用:
-
文件访问审计:运行
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_protect -
异常行为追踪:定期执行
sudo ausearch -k sshd_config_protect | grep -E "(exec|write)" -
拒绝 Web 文件管理工具写入:如使用 FileBrowser,添加规则
filebrowser rules add /etc/ssh/ --deny write
这样才构成“属性锁定 + 内核防护 + 行为审计”的纵深防御,真正让恶意篡改既难执行、也易发现。

















