目录:
一、引言
二、sshd 服务配置加固
三、基于 IP 的访问控制(hosts.allow/hosts.deny)
-
默认拒绝所有外部访问
-
允许指定源 IP 地址
四、fail2ban: 动态防御暴力破解
-
安装 fail2ban
-
配置规则
-
启动与验证
五、Google Authenticator:二次认证(2FA)
-
安装并初始化
-
修改 PAM 验证模块
-
启用质询响应
-
重启 sshd 服务
-
登录流程
六、总结
一、引言
SSH 是 Linux 系统中最基础且最常被攻击的远程访问协议。任何暴露在公网的 SSH 服务都可能在短时间内遭受端口扫描与暴力破解尝试。本篇文章旨在从 服务配置、访问控制、行为防御与多因素认证 四个方面,系统性提升 SSH 服务的安全性。
二、sshd 服务配置加固
文件位置:/etc/ssh/sshd_config
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Port | 非默认端口,如 22922 | 减少被扫描概率 |
| PermitRootLogin | no | 禁止 root 用户登录 |
| PasswordAuthentication | no | 禁止密码认证,仅使用密钥认证 |
| AllowUsers | opsuser | 限定允许登录的账户名 |
| MaxAuthTries | 3 | 限制登录尝试次数 |
| LoginGraceTime | 30 | 限制认证超时时间 |
| X11Forwarding | no | 禁止图形转发 |
| AllowTcpForwarding | no | 禁止 TCP 转发 |
修改后执行
systemctl restart sshd使配置生效。
三、基于 IP 的访问控制(hosts.allow/hosts.deny)
文件位置:
-
/etc/hosts.allow
-
/etc/hosts.deny
这两份文件属于 TCP Wrapper 控制机制(sshd 默认支持)。
1. 默认拒绝所有外部访问
在 /etc/hosts.deny 中写入:
sshd: ALL
2. 允许指定源 IP 地址
在 /etc/hosts.allow 中写入:
sshd: 10.10.10.0/24,10.188.188.188
支持配置网段和单个 IP 地址,无论你是一行写多个地址,还是分行列出来,hosts.allow 都能正常识别,效果完全一样。配置方式可以根据你自己的习惯来。
sshd: 10.10.10.0/24
sshd: 10.188.188.188
四、fail2ban: 动态防御暴力破解
fail2ban 通过监控日志文件自动封禁异常 IP。
1. 安装 fail2ban
apt -y install fail2ban
2. 配置规则
新建 /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 10m
bantime = 1h
3. 启动与验证

fail2ban 会基于日志匹配封禁源 IP,防御大多数自动化爆破工具。
五、Google Authenticator:二次认证(2FA)
1. 安装并初始化
apt install libpam-google-authenticator
google-authenticator
扫描生成的二维码并保存应急码。
2. 修改 PAM 验证模块
编辑 /etc/pam.d/sshd:
在顶部添加:
auth required pam_google_authenticator.so
3. 启用查询响应
编辑 /etc/ssh/sshd_config:
ChallengeResponseAuthentication yes
4. 重启 sshd 服务
systemctl restart sshd
5. 登录流程
-
Verification code-->Password -
任何单一凭据泄露都不足以登录系统

六、总结
安全与便捷从来是一对对立的矛盾。 SSH 加固的每一步操作------无论是禁用密码登录、限制来源 IP,还是启用二次认证------都会让远程登录变得更加繁琐。 但这正是安全的本质:牺牲效率,换取确定性。
对于生产环境而言,SSH 并不只是一个"登录入口",而是系统边界的最后防线。 一个未做限制的端口、一个共享的密钥文件、一次被遗忘的测试账户,都可能成为入侵的切入点。
所以,在安全与便捷之间,理性的选择不是偏向任何一端,而是明确权衡边界:
-
在个人环境,可以降低部分约束、保留便捷;
-
在服务器生产环境,应优先考虑最小暴露面与最小权限;
-
在企业或多用户环境,应引入集中密钥管理与审计机制。