如何在Docker容器里开启fail2ban防止SSH暴力破解
一、前提介绍
Docker容器里开启了SSH服务,但是发现有大量的暴力破解进程,需要使用fail2ban防止SSH暴力破解,将攻击的IP拉黑。
二、原因分析
但是直接安装fail2ban,和没有使用容器的主机一样配置时,发现并不会生效。
因为在使用docker容器时,开启了SSH服务,但是因为容器里没有开启rsyslog
,所以fail2ban
依赖的/var/log/auth.log
日志文件无法生成。
同时因为容器没有增加特权,也无法访问一些内核功能,无法使用iptables
,比如输入iptables -nL
,会报下面的错误:
1 |
|
三、解决方案
(一)为容器增加特权
下面是我自己创造的一个容器示列,添加privileged
:
1 |
|
(二)安装并启动rsyslog
1 |
|
启动完成后,可以发现已经生成了/var/log/auth.log
日志文件。
(三)安装fail2ban
1 |
|
(四)配置SSH规则
这里请自行搜索fail2ban
配置规则,下面是一个SSH的规则示列:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 86400
bantime = 86400
action = iptables[name=SSH, port=ssh, protocol=tcp]
将上面的内容保存为文件jail.local
,复制到/etc/fail2ban/jail.d/
目录。
(五)启动fail2ban
1 |
|
启动完成后,如果还有暴力破解的进程,可以使用fail2ban-client status sshd
,查看策略是否生效:
1 |
|
fail2ban
实际上是自动为我们创建了iptables
的规则,这时候使用iptables -nL
,可以看到该IP已经被我们自动拉黑,拒绝所有连接。
1 |
|
四、设置开机启动
为了使我们的容器能够开机自动启动fai2ban,我们可以修改容器的启动入口,比如我的容器开机入口/run.sh
:
1 |
|
如何在Docker容器里开启fail2ban防止SSH暴力破解
https://www.shangyexin.com/2021/10/27/docker-fail2ban/