当前位置:首页 > 行业动态 > 正文

Linux怎么防止ssh被暴力破解

使用强密码,定期更换;限制登录尝试次数和时间间隔;启用防火墙;安装并启用SSH密钥认证。

在Linux系统中,SSH(Secure Shell)是一种非常常用的远程登录和管理工具,由于其默认配置可能存在安全破绽,SSH可能会成为破解攻击的目标,暴力破解是一种常见的攻击手段,破解通过尝试大量的用户名和密码组合来试图登录系统,为了防止SSH被暴力破解,我们可以采取以下一些措施:

Linux怎么防止ssh被暴力破解  第1张

1、修改SSH端口

默认情况下,SSH服务运行在22端口,我们可以通过修改SSH的端口号来防止暴力破解,修改SSH端口后,破解需要知道新的端口号才能尝试破解,这大大增加了破解的难度。

2、禁用root用户远程登录

root用户是Linux系统中的最高权限用户,禁用root用户的远程登录可以大大降低系统被攻击的风险,我们可以通过修改/etc/ssh/sshd_config文件来实现这一点。

3、使用公钥认证

公钥认证是一种比密码认证更安全的方式,它使用一对密钥,公钥放在服务器上,私钥放在客户端,当客户端尝试登录时,服务器会使用公钥进行验证,这种方式不需要在网络上传输密码,因此更安全。

4、设置密码策略

我们可以通过设置密码策略来防止暴力破解,我们可以设置密码的最小长度、最大使用期限、必须包含的字符类型等。

5、使用防火墙

防火墙可以阻止未经授权的访问,使用防火墙可以防止SSH被暴力破解,我们可以设置防火墙规则,只允许来自特定IP地址的SSH连接。

6、安装并更新安全补丁

经常更新系统和软件的安全补丁可以防止已知的安全破绽被利用,从而防止SSH被暴力破解。

7、使用Fail2Ban

Fail2Ban是一个防止暴力破解的工具,它可以监控SSH服务的日志文件,如果发现异常的登录尝试,Fail2Ban会自动封锁这个IP地址一段时间。

以下是如何在Linux中实施上述措施的详细步骤:

修改SSH端口

打开SSH配置文件
sudo nano /etc/ssh/sshd_config
找到并修改Port行,例如改为2222
Port 2222

禁用root用户远程登录

打开SSH配置文件
sudo nano /etc/ssh/sshd_config
找到并注释掉或删除PermitRootLogin行,例如改为#PermitRootLogin yes
#PermitRootLogin yes

使用公钥认证

首先在客户端生成公钥和私钥:

sshkeygen t rsa b 4096 C "your_email@example.com"

然后将公钥复制到服务器:

sshcopyid user@your_server_ip_address

最后在服务器上配置公钥认证:

打开SSH配置文件
sudo nano /etc/ssh/sshd_config
找到并修改PasswordAuthentication行,例如改为no
PasswordAuthentication no

设置密码策略

打开PAM配置文件
sudo nano /etc/pam.d/commonpassword
找到并修改如下行:minlen=10 ucredit=1 lcredit=1 dcredit=1 ocredit=1 maxrepeat=3 maxsequence=3 ignorespace neverlogged md5 retry=3 use_authtok tryfirst passwd_check_capability minclass=8 maxclass=8 deny_empty_password enforce_for_root use_locking unlock_time=0 retry=3 not_used_retry=3 disallow_username pam_pwquality.so retry=3 silent_failure local_users_only debug nullok use_authtok remember=5 authtok_type= (默认值) md5 shadow obscure sha512 minlen=10 ucredit=1 lcredit=1 dcredit=1 ocredit=1 maxrepeat=3 maxsequence=3 ignorespace neverlogged md5 retry=3 use_authtok tryfirst passwd_check_capability minclass=8 maxclass=8 deny_empty_password enforce_for_root use_locking unlock_time=0 retry=3 not_used_retry=3 disallow_username pam_pwquality.so retry=3 silent_failure local_users_only debug nullok use_authtok remember=5 authtok_type= (默认值) md5 shadow obscure sha512 minlen=10 ucredit=1 lcredit=1 dcredit=1 ocredit=1 maxrepeat=3 maxsequence=3 ignorespace neverlogged md5 retry=3 use_authtok tryfirst passwd_check_capability minclass=8 maxclass=8 deny_empty_password enforce_for_root use_locking unlock_time=0 retry=3 not_used_retry=3 disallow_username pam_pwquality.so retry=3 silent_failure local_users_only debug nullok use_authtok remember=5 authtok_type= (默认值) md5 shadow obscure sha512 minlen=10 ucredit=1 lcredit=1 dcredit=1 ocredit=1 maxrepeat=3 maxsequence=3 ignorespace neverlogged md5 retry=3 use_authtok tryfirst passwd_check_capability minclass=8 maxclass=8 deny_empty_password enforce_for_root use_locking unlock_time=0 retry=3 not_used_retry=3 disallow
0