步骤/目录:
1.背景介绍
2.步骤

本文首发于个人博客https://lisper517.top/index.php/archives/102/,转载请注明出处。
本文的目的是为linux系统稍微增加防护,减少ssh爆破的影响。
本文写作日期为2023年12月22日。主要参考了 这篇文章

1.背景介绍

最近查看服务器的 /var/log/auth.log ,发现经常被人爆破,尝试不同的用户名密码,并且每次都换新IP。之前在 提升树莓派安全性 中曾经提到过一些提升linux安全性的方法(比如读取auth.log,ban掉爆破IP),笔者目前只允许密钥登录,安全性应该是很高的,但是毕竟还是有人喜欢试密码,所以最好有一个软件能ban掉这些IP,fail2ban就很合适。

可惜的是fail2ban只能针对用相同IP爆破的人。对于每次用不同IP的,除非你能确保自己只会从固定IP登录,否则没什么好办法。

2.步骤

(1)安装fail2ban

apt update
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
systemctl status fail2ban

(2)fail2ban的配置

它的默认配置文件是 /etc/fail2ban/jail.d/defaults-debian.conf/etc/fail2ban/jail.conf ,这两个文件夹下如果有 *.local 则会覆盖 *.conf 的配置,fail2ban在更新时可能会覆盖 *.conf 的内容。所以最好的方式是复制 *.local 并自行修改。

cp /etc/fail2ban/jail.{conf,local}
vim /etc/fail2ban/jail.local

笔者进行了如下修改:

1.#ignoreip = 127.0.0.1/8 ::1
在后面添加白名单
2.#bantime  = 10m
改为 bantime  = -1 ,即永久封禁
3.#maxretry = 5
改为 maxretry = 3 ,即尝试3次就会封禁
4.
[sshd]
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
添加一行:enabled = true

[sshd] 下面还可以看到很多其它服务,也能通过fail2ban来封ip。

在某些情况下,fail2ban找不到systemd的log文件,报错 Have not found any log file for sshd jail 。这时可以在 [sshd] 下指定 backend=systemd

最后重启一下服务:

systemctl restart fail2ban

(3)fail2ban状态检查

fail2ban-client status 

显示目前sshd的 jail 已开启。

fail2ban-client status sshd

显示目前sshd封禁的ip等信息。
如果要手动封禁或者取消封禁ip,用以下的命令:

fail2ban-client set sshd banip 1.1.1.1
fail2ban-client set sshd unbanip 1.1.1.1

标签: fail2ban

添加新评论