如何在Docker容器里开启fail2ban防止SSH暴力破解

一、前提介绍

Docker容器里开启了SSH服务,但是发现有大量的暴力破解进程,需要使用fail2ban防止SSH暴力破解,将攻击的IP拉黑。

二、原因分析

但是直接安装fail2ban,和没有使用容器的主机一样配置时,发现并不会生效。

因为在使用docker容器时,开启了SSH服务,但是因为容器里没有开启rsyslog,所以fail2ban依赖的/var/log/auth.log日志文件无法生成。

同时因为容器没有增加特权,也无法访问一些内核功能,无法使用iptables,比如输入iptables -nL,会报下面的错误:

can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

三、解决方案

(一)为容器增加特权

下面是我自己创造的一个容器示列,添加privileged

version: '3.1'

services:
  ubuntu:
    image: registry.cn-hangzhou.aliyuncs.com/yasin/dev-env-ubuntu:20.04
    container_name: ubuntu
    privileged: true
    restart: always
    ports:
      - "10022:22"
    volumes:
      - ./root:/root
    entrypoint:
      - /run.sh

(二)安装并启动rsyslog

apt update
apt install rsyslog -y
rsyslogd

启动完成后,可以发现已经生成了/var/log/auth.log日志文件。

(三)安装fail2ban

apt install fail2ban -y

(四)配置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

service fail2ban start

启动完成后,如果还有暴力破解的进程,可以使用fail2ban-client status sshd,查看策略是否生效:

Status for the jail: sshd
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	226
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	137.184.42.119

fail2ban实际上是自动为我们创建了iptables的规则,这时候使用iptables -nL,可以看到该IP已经被我们自动拉黑,拒绝所有连接:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-SSH    tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain f2b-SSH (1 references)
target     prot opt source               destination         
REJECT     all  --  137.184.42.119       0.0.0.0/0            reject-with icmp-port-unreachable
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

四、设置开机启动

为了使我们的容器能够开机自动启动fai2ban,我们可以修改容器的启动入口,比如我的容器开机入口/run.sh

#!/bin/bash
/usr/sbin/rsyslogd
rm -f /var/run/fail2ban/fail2ban.sock && /etc/init.d/fail2ban start
/usr/sbin/sshd -D
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值