Linux 怎么防止 ssh 被暴力破解
原创Linux 怎样防止 SSH 被暴力破解
在当今的网络环境中,SSH(Secure Shell)是一种广泛使用的远程登录协议,它提供了可靠的登录对策,用于在Linux系统之间进行远程管理。然而,由于SSH的可靠性较高,一些恶意用户大概会尝试通过暴力破解来获取系统访问权限。为了保护您的Linux系统不受SSH暴力破解的威胁,以下是一些有效的预防措施。
1. 制约SSH登录尝试次数
通过制约SSH登录尝试次数,可以有效地防止暴力破解。以下是在Linux系统中实现这一功能的步骤:
# 安装fail2ban
sudo apt-get install fail2ban
# 编辑fail2ban的配置文件
sudo nano /etc/fail2ban/jail.conf
# 在[sshd]部分添加以下内容
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
# 重启fail2ban服务
sudo systemctl restart fail2ban
上述代码中,`maxretry` 参数用于设置最大尝试次数,`findtime` 参数用于设置检查日志的时间间隔,`bantime` 参数用于设置禁止登录的时间。
2. 使用强密码策略
确保所有用户都使用强密码是防止SSH暴力破解的基础。以下是一些设置强密码的策略:
- 使用至少8个字符的密码,并包含大小写字母、数字和特殊字符。
- 避免使用常见的单词或短语。
- 定期更换密码。
以下是在Linux系统中设置强密码策略的步骤:
# 修改系统密码策略
sudo nano /etc/pam.d/common-password
# 在文件中添加以下内容
password requisite pam_pwquality.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1
# 重启pam服务
sudo systemctl restart pam_systemd
上述代码中,`minlen` 参数用于设置密码最小长度,`difok` 参数用于设置密码必须与旧密码不同的最小字符数,`ucredit`、`lcredit` 和 `dcredit` 参数分别用于设置密码中必须包含的大写字母、小写字母和数字的最小数量。
3. 制约SSH登录端口
将SSH登录端口从默认的22改为其他端口,可以减少恶意用户尝试破解的机会。以下是在Linux系统中更改SSH登录端口的步骤:
# 修改SSH配置文件
sudo nano /etc/ssh/sshd_config
# 在文件中找到以下内容并修改
Port 22
# 保存并退出文件
# 重启SSH服务
sudo systemctl restart ssh
请注意,更改SSH端口后,所有通过SSH连接到服务器的用户都需要更新他们的SSH客户端配置文件(例如,`~/.ssh/config`),以使用新的端口。
4. 使用公钥认证
与密码认证相比,公钥认证更加可靠。以下是在Linux系统中使用公钥认证的步骤:
# 生成公钥和私钥
ssh-keygen -t rsa -b 4096
# 将公钥添加到授权密钥文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 将公钥上传到远程服务器的相应目录
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP地址
在上述代码中,`-t rsa` 参数指定生成RSA密钥,`-b 4096` 参数指定密钥长度为4096位。
5. 监控SSH日志
监控SSH日志可以帮助您及时发现异常登录尝试。以下是在Linux系统中监控SSH日志的步骤:
# 安装logwatch
sudo apt-get install logwatch
# 编辑logwatch配置文件
sudo nano /etc/logwatch.conf.local
# 在文件中找到以下内容并取消注释
LOGWATCHocer_include /var/log/auth.log
# 运行logwatch
sudo logwatch
在上述代码中,`LOGWATCHocer_include` 参数用于指定要监控的日志文件。
6. 使用防火墙规则
使用防火墙规则制约SSH登录尝试可以进一步尽大概减少损耗可靠性。以下是在Linux系统中使用防火墙规则的步骤:
# 安装iptables
sudo apt-get install iptables
# 编辑iptables规则
sudo nano /etc/iptables/rules.v4
# 在文件中添加以下内容
iptables -A INPUT -p tcp --dport 22 -j DROP
# 保存并退出文件
# 应用iptables规则
sudo iptables-apply
在上述代码中,