在Linux中,通过SSH Key替代密码进行身份验证属于常见的安全做法。想要继续提高SSH Key的安全性,一般采用一些安全加固措施。华纳云在本文总结了关于SSH Key安全加固中的方法希望对大家有所帮助!
使用强密码的SSH Key,ssh-keygen 生成 SSH 密钥对时,选择强加密算法和密钥长度。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
使用Ed25519算法,这种算法属于更现代、更安全的选择,对比RSA,它的生成密钥长度更短且安全性更高:
ssh-keygen -t ed25519 -C "your_email@example.com"
配置强加密选项,在 /etc/ssh/sshd_config 文件中,指定使用强加密选项:
# 禁用弱加密算法
KexAlgorithms curve25519-sha256@libssh.org
Ciphers aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256
# SSH版本
Protocol 2
配置SSH Key的文件权限,确保私钥的文件权限于文件所有者可读,公钥文件可供SSH服务使用:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh
编辑 /etc/ssh/sshd_config,修改SSH配置禁用密码登录,仅允许SSH Key认证。
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
重启SSH服务:
sudo systemctl restart sshd
在/etc/ssh/sshd_config 中指定允许使用 SSH 登录的用户或组,限制允许的用户:
AllowUsers user1 user2
# 或者限制某个组的用户
AllowGroups sshusers
利用 SSH Agent 缓存私钥,避免在每次连接时输入密码。
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
当需要通过中间主机进行 SSH 连接时,可以使用 SSH Agent 转发来提高安全性:
ssh -A user@intermediate-host
在 /etc/ssh/sshd_config 中启用 SSH Agent 转发:
AllowAgentForwarding yes
Fail2ban 可以检测 SSH 登录失败次数并阻止可疑 IP 地址。所以安装Fail2ban,让其进行入侵检测:
sudo apt update
sudo apt install fail2ban
在 /etc/fail2ban/jail.local 中为 SSH 配置一个jail,配置Fail2ban:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
启动 Fail2ban 服务
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
在 /etc/ssh/sshd_config 中,将 SSH 端口更改为非标准端口以减少被扫描的风险:
Port 2222
当服务器有多个网卡或 IP 地址,限制 SSH 仅监听特定 IP 地址:
ListenAddress 192.168.1.100
另外还可以通过双因素认证,来增强登录的安全性:
sudo apt install libpam-google-authenticator
配置 Google Authenticator
为用户配置双因素认证:
google-authenticator
根据提示完成设置,然后编辑 /etc/pam.d/sshd 添加:
auth required pam_google_authenticator.so
在 /etc/ssh/sshd_config 中启用挑战响应认证:
ChallengeResponseAuthentication yes
重启SSH服务
sudo systemctl restart sshd
定期更新SSH服务器和客户端软件最新版本,确保系统免受已知漏洞影响:
sudo apt update
sudo apt upgrade openssh-server
监控SSH登录活动,使用日志监控定期检查SSH登录日志,监控可疑行为:
sudo tail -f /var/log/auth.log
实时监控工具如 logwatch 或 OSSEC 来监控 SSH 登录活动并发送警报。在大型环境中,设置SSH服务器保证其具备高可用性和冗余,防止单点故障。
以上方式,能帮助您大大增强 Linux 系统中 SSH Key 的安全性。结合其他安全策略(如防火墙、入侵检测系统等),让系统拥有提供一个更加稳固的防护层。定期评估安全策略,以适应不断变化的安全需求和威胁。