
fail2ban
別のサーバーからアプリケーションをテストすると、次のログが表示されます。
2021-08-01 18:48:37,692 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:37
2021-08-01 18:48:37,897 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:37
2021-08-01 18:48:38,496 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:38
2021-08-01 18:48:38,671 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:38
2021-08-01 18:48:38,860 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:38
2021-08-01 18:48:38,976 fail2ban.actions [1]: NOTICE [nginx] Ban 51.195.221.70
2021-08-01 18:48:39,234 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:39
[SNIP]
2021-08-01 18:48:41,686 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:41
2021-08-01 18:48:41,872 fail2ban.filter [1]: INFO [nginx] Found 51.195.221.70 - 2021-08-01 18:48:41
2021-08-01 18:48:41,897 fail2ban.actions [1]: NOTICE [nginx] 51.195.221.70 already banned
リクエストは、見つかって禁止されても継続できます。私の Docker コンテナは次のようになります。
fail2ban:
image: 'crazymax/fail2ban:latest'
restart: 'always'
network_mode: 'host'
cap_add:
- 'NET_ADMIN'
- 'NET_RAW'
volumes:
- 'nginx-log:/var/log:ro'
- 'fail2ban-data:/data'
env_file:
- './fail2ban.env'
私の設定は次のとおりです:
jail.d/nginx.conf
[nginx]
enabled = true
logpath = /var/log/access.log
port = http,https
フィルター.d/nginx.conf
[Definition]
failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+\" 419 .+$
ignoreregex =
助けていただければ幸いです。IP テーブルを構成する必要がありますか?
答え1
https://github.com/crazy-max/docker-fail2ban/blob/master/examples/jails/traefik/jail.d/traefik.conf
chain = DOCKER-USER
これを機能させるには、追加する必要があることがわかりましたjail.d/nginx.conf
。