Fail2ban提升服务器安全性
步骤/目录:
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