基于docker-compose安装fail2ban
安装rsyslog
fail2ban依赖rsyslog,安装并启动后,会产生日志文件 /var/log/auth.log
apt update
apt install rsyslog -y
rsyslogd
docker-compose.yml
mkdir -p /app/docker/fail2ban/
cd /app/docker/fail2ban/
cat <<EOF > docker-compose.yml
version: '3.8'
services:
fail2ban:
image: crazymax/fail2ban:latest
container_name: fail2ban
restart: always
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- ./data:/data
- /var/log:/var/log:ro
EOF
启动
docker-compose up -d
配置SSH规则
vim data/jail.d/sshd.conf
#内容如下
cat <<EOF > data/jail.d/sshd.conf
[sshd]
enabled = true
chain = INPUT
port = ssh
filter = sshd[mode=aggressive]
logpath = /var/log/auth.log
maxretry = 3
findtime = 60 # 1 分钟内
bantime = 31536000 # 封禁 365 天(31,536,000 秒)
EOF
重启启动
docker-compose restart
查看被ban的记录
docker exec fail2ban fail2ban-client status sshd
如下:
root@:/app/docker/fail2ban# docker exec fail2ban fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 3
|- Total banned: 3
`- Banned IP list: 123.58.207.155 92.255.85.107 92.255.85.253
解封IP
docker exec fail2ban fail2ban-client set sshd unbanip 1.1.1.1
ban一个ip
docker exec fail2ban fail2ban-client set sshd banip 103.167.64.9
查看有效的登录用户
grep -E '/bin/bash|/bin/zsh' /etc/passwd
显示当前登录到系统的用户信息
who
显示系统中所有的登录和注销记录
last
who 与 last 的区别:
who:显示当前系统中正在登录的用户。
实时信息,反映当前在线的用户。 不包括注销的历史记录。 last:显示所有的登录和注销历史记录。
包括历史记录,反映所有曾经登录过的用户(包括已注销的)。 可以查看每个用户的登录时长和注销信息。