Ubuntu SSH如何设置强密码保护
导读:Ubuntu SSH强密码保护设置指南 一 策略先行 密码复杂度与周期 安装口令检查模块:sudo apt-get install libpam-cracklib。该模块可在修改密码时强制检查强度与历史。 配置复杂度(编辑 /etc/pa...
Ubuntu SSH强密码保护设置指南
一 策略先行 密码复杂度与周期
- 安装口令检查模块:sudo apt-get install libpam-cracklib。该模块可在修改密码时强制检查强度与历史。
- 配置复杂度(编辑 /etc/pam.d/common-password):在包含 pam_cracklib.so 的行加入或调整为例如 retry=3、minlen=12、ucredit=-1、lcredit=-1、dcredit=-1、ocredit=-1,分别表示重试次数、最小长度、至少包含大写/小写/数字/特殊字符各1个。
- 禁止复用旧密码:在同一文件 pam_unix.so 行末尾追加 remember=5,已用密码会记录在 /etc/security/opasswd。
- 设置密码有效期(编辑 /etc/login.defs):例如 PASS_MAX_DAYS 180(建议周期)、PASS_MIN_DAYS 1(避免频繁改回旧口令)、PASS_WARN_AGE 14(到期前提醒)。
- 风险提示:先确保所有账户密码已符合新策略,再启用,避免被锁死。
二 登录失败锁定与会话保护
- 使用 PAM 计数器的失败锁定(编辑 /etc/pam.d/common-auth 与 /etc/pam.d/common-account):
- 在 common-auth 添加:auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600
- 在 common-account 添加:account required pam_tally2.so
- 说明:连续失败 3 次后锁定 600 秒,包含 root;解锁后恢复正常。
- 仅用 SSH 的场景可配合服务端限制:在 /etc/ssh/sshd_config 设置 MaxAuthTries 3、LoginGraceTime 60,降低暴力尝试窗口。
- 查看与重置锁定计数:pam_tally2 -u 用户名;必要时 pam_tally2 --reset -u 用户名。
三 加固 SSH 服务与访问控制
- 禁用 root 远程登录:在 /etc/ssh/sshd_config 设置 PermitRootLogin no(或 prohibit-password),避免高权限账户被直接暴破。
- 优先使用密钥认证:在客户端生成密钥对(如 ssh-keygen -t rsa -b 4096),将公钥部署到服务器 ~/.ssh/authorized_keys;服务器端可设置 PubkeyAuthentication yes、PasswordAuthentication no,彻底消除口令被猜测的风险。
- 限制可登录账户/组:在 /etc/ssh/sshd_config 使用 AllowUsers alice bob 或 AllowGroups sshusers 白名单控制。
- 更改默认端口与访问控制:将 Port 改为非 22(如 2222),并用 UFW 仅允许可信来源访问(如 ufw allow from 1.2.3.0/24 to any port 2222)。
四 入侵防护与持续监控
- 部署 Fail2Ban:sudo apt-get install fail2ban,为 SSH 启用监狱(jail)以自动封禁反复失败的来源 IP,降低暴力破解成功率。
- 集中审计与告警:安装并启用 auditd,对关键文件与登录事件进行审计(如监控 /etc/passwd、/var/log/auth.log 相关事件),便于事后溯源。
- 日志巡检:定期查看 /var/log/auth.log,关注 Failed password、Connection closed by 等异常模式。
五 快速检查与回滚建议
- 验证与生效:每次修改 PAM/SSH 配置后执行 sudo systemctl restart ssh(或 sshd),并先开一个备用会话验证,避免因配置错误导致断连。
- 快速核查要点:
- 复杂度:grep -n “pam_cracklib.so” /etc/pam.d/common-password
- 历史与周期:grep -E “remember=|PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE” /etc/pam.d/common-password /etc/login.defs
- 锁定策略:grep -n “pam_tally2.so” /etc/pam.d/common-auth /etc/pam.d/common-account
- SSH 关键项:grep -n “PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|Port|AllowUsers|AllowGroups” /etc/ssh/sshd_config
- 回滚思路:保留一份原始配置备份;如出现无法登录,使用本地/控制台会话恢复或在救援模式回滚相关行。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SSH如何设置强密码保护
本文地址: https://pptw.com/jishu/770771.html
