在Linux系统中,SSH(Secure Shell)是一种安全的远程登录协议
-
使用强密码策略:确保用户密码足够复杂,包含大小写字母、数字和特殊字符。可以使用
passwd
命令来设置和更改密码。 -
禁用root远程登录:通过编辑
/etc/ssh/sshd_config
文件,将PermitRootLogin
选项设置为no
,以禁止通过SSH直接登录为root用户。
PermitRootLogin no
- 限制SSH访问:编辑
/etc/ssh/sshd_config
文件,添加或修改以下选项以限制特定IP地址或网络访问SSH服务:
AllowUsers user1 user2 AllowGroups group1 group2 DenyUsers user3 user4 DenyGroups group3 group4
- 使用密钥认证:禁用密码认证,仅允许使用密钥对进行身份验证。编辑
/etc/ssh/sshd_config
文件,将以下选项设置为yes
:
PubkeyAuthentication yes PasswordAuthentication no
然后,确保用户的公钥已添加到~/.ssh/authorized_keys
文件中。
-
启用公钥加密:使用
ssh-keygen
命令生成一对公钥和私钥,并将公钥添加到远程服务器的~/.ssh/authorized_keys
文件中。这将确保在传输过程中使用加密密钥。 -
使用防火墙限制SSH端口:使用
iptables
或ufw
等防火墙工具,仅允许特定IP地址或网络访问SSH端口(默认为22)。
例如,使用ufw
限制IP为192.168.1.0/24的访问:
sudo ufw allow from 192.168.1.0/24 to any port 22
-
定期更新SSH密钥:定期更换SSH密钥对,并确保所有用户的公钥已更新到远程服务器。
-
监控SSH活动:使用
/var/log/auth.log
(或相应的日志文件)监控SSH登录活动,以便及时发现异常行为。 -
使用SSH客户端配置:在客户端(如
ssh-cli
或OpenSSH
)上,使用-o
选项指定安全的连接参数,例如:
ssh -o StrictHostKeyChecking=yes -o PubkeyAuthentication=yes -o PasswordAuthentication=no user@hostname
遵循以上建议,可以大大提高Linux SSH服务的安全性。