跳至内容

Linux服务器防止暴力破解ssh的方法

发布日期:
作者:
评论数:暂无评论

一:限制ssh密码错误次数

例如某个ip在10分钟内输错3次,禁止1个小时再登录,这样可以防止ssh暴力破解。fail2ban 是一个能够自动化保护服务器免受暴力破解攻击的工具,在配置fail2ban之前,检查服务器是否有这2个文件(一般都存在):

1,服务器是否存在/var/log/auth.log,如果不存在,请先手动创建一个:

sudo touch /var/log/auth.log

2,是否存在/etc/rsyslog.conf文件,并且里面包含下面这行(一般是包含下面这行):

auth,authpriv.*                   -/var/log/auth.log

/etc/rsyslog.conf文件是系统日志配置的核心文件,如果它不存在,可能需要重新安装 rsyslog ,重新安装 rsyslog:

sudo apt install --reinstall rsyslog

这样就会有/etc/rsyslog.conf文件了。

以下是配置 fail2ban 来限制 SSH 密码错误次数的步骤:

步骤 1:安装 fail2ban

大多数 Linux 发行版都可以通过包管理器安装 fail2ban。对于基于 Debian 的系统:

sudo apt update
sudo apt install fail2ban

步骤 2:配置 SSH 监控

fail2ban 默认包含 SSH 监控的 jail 配置文件。首先,创建一个本地配置文件,以避免直接修改默认配置文件:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

步骤 3:编辑配置文件

编辑 /etc/fail2ban/jail.local 文件:

sudo vi /etc/fail2ban/jail.local

找到 [sshd] 部分,并进行如下配置:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1/8 ::1 192.168.1.100

上述配置的解释:

  • enabled = true:启用 sshd 监控。
  • port = ssh:指定 SSH 端口。
  • filter = sshd:使用默认的 sshd 过滤器。
  • logpath = /var/log/auth.log:指定 SSH 登录尝试的日志文件路径。
  • maxretry = 3:在 findtime 时间内允许的最大失败次数。
  • bantime = 3600:禁止登录的时间(以秒为单位),这里设置为 1 小时。如果要永久禁止,设置为-1
  • findtime = 600:在 findtime 时间窗口(以秒为单位)内,最多允许 maxretry 次失败尝试,这里设置为 10 分钟。
  • ignoreip = 127.0.0.1/8 ::1 192.168.1.100:需要加入白名单的 IP 地址,可以添加多个 IP 地址或子网,使用空格分隔。如果不需要可不用加这行。

步骤 4:重启 fail2ban 服务

完成配置后,重启 fail2ban 服务以应用更改:

sudo systemctl restart fail2ban

步骤 5:检查 fail2ban 状态

确保 fail2ban 正常运行并监控 SSH:

sudo fail2ban-client status sshd

这将显示 sshd jail 的当前状态,包括当前被禁止的 IP 地址列表。

步骤 6:手动解除封禁

使用以下命令解除特定 IP 地址的封禁:

sudo fail2ban-client unban IP_ADDRESS

IP_ADDRESS 替换为需要解除封禁的 IP 地址。

附加步骤:测试 fail2ban

尝试从另一个终端或计算机进行 SSH 登录,并故意输入错误的密码,直到触发禁止规则。然后检查 fail2ban 是否正确地禁止了 IP。

通过上述步骤,fail2ban 将会在 10 分钟内检测到超过 3 次失败的 SSH 登录尝试,并禁止该 IP 地址 1 小时。

二:修改ssh默认端口

编辑/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

找到以下行:

#Port 22

修改配置,将前面的注释去掉,22端口更改为别的,这里以8888举例:

Port 8888

 保存并退出编辑器,重启 SSH 服务

sudo systemctl restart sshd

此后使用ssh登录时,需要更改端口登录:

ssh -p 8888 user@server

三:使用密钥登录,并禁用密码登录

该方法在另一篇文章中有介绍,点击下方查看:

ssh使用密钥登录的方法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注