ubuntu部署fail2ban防止ssh暴力破解

AI摘要

正在生成中……


安装 fail2ban

1
2
sudo apt update
sudo apt install fail2ban

配置 fail2ban

  1. 创建一个本地配置文件: 复制默认配置文件并创建本地配置文件:

    1
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. 编辑本地配置文件: 编辑 /etc/fail2ban/jail.local 文件:

    1
    sudo vim /etc/fail2ban/jail.local
  3. 在您的配置文件280行左右找到 [sshd] 的内容:

    1
    2
    3
    4
    5
    6
    7
    8
    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = %(sshd_log)s
    maxretry = 5
    findtime = 10m
    bantime = 24h
  • enabled: 确保此项设为 true 来启用对SSH服务的防护。
  • port: 默认应该是22,即SSH服务端口。
  • filter: 应该已经指向了用于分析SSH日志的过滤器,通常是 sshd
  • logpath: 设置SSH日志文件路径,通常为 /var/log/auth.log/var/log/secure
  • maxretry: 设置允许的最大失败登录尝试次数,默认可能为6次,可以根据需要减少。
  • findtime: 在指定的时间内达到最大尝试次数才会触发禁止,例如 findtime = 10m 表示10分钟内。
  • bantime: IP被禁止访问的持续时间,例如 bantime = 24h 将阻止IP地址24小时。
  1. 启动并设置开机自动启动Fail2ban

    1
    2
    3
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl status fail2ban

查看暴力破解尝试

  1. 通过日志查看:

    您可以使用以下命令查看 /var/log/auth.log 日志文件中的暴力破解尝试:

    1
    sudo grep "Failed password" /var/log/auth.log

    这将显示所有登录失败的记录。

  2. 查看 fail2ban 日志:

    您可以通过查看 fail2ban 日志了解哪些IP被封禁:

    1
    sudo cat /var/log/fail2ban.log
  3. 查看已屏蔽的IP地址列表

    1
    sudo fail2ban-client status sshd

设置密钥登录, 禁止密码登录

1. 制作秘钥对

首先登录到服务器后,在命令行输入命令:

出现提示一路回车到底即可,会生成2个文件,id_rsa(私钥) 和 id_rsa.pub(公钥)

1
ssh-keygen

2. 在服务器上安装公钥

在命令行输入一下命令确保公钥能够成功安装:

1
2
cd ~/.ssh
cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。
此外,为了确保连接成功,输入如下指令以保证以下文件权限正确:

1
2
chmod 600 authorized_keys
chmod 700 ~/.ssh

3. 配置SSH,打开秘钥登录功能

使用vim 编辑 /etc/ssh/sshd_config 文件

1
sudo vim /etc/ssh/sshd_config

然后按i进入编辑模式,在空白位置输入:

1
2
RSAAuthentication yes
PubkeyAuthentication yes

注意此处需要留意root 用户能否通过 SSH 登录, 如果需要进行如下设置:

1
PermitRootLogin yes

此处便已经设置好了使用秘钥登录了,但是如果需要禁用密码登录可以进行如下设置:

1
PasswordAuthentication no

这一步最好是在完成前面的全部设置,然后能够用秘钥登录的前提下设置,不然又不能用密码登录,秘钥又没法登录就尴尬了。 编辑完文本后按ESC:wq 保存文件并退出。

最后,输入如下指令重启 SSH 服务:

1
service sshd restart

将私钥导出,导入到本地windows下的ssh工具如finalshell使用即可。