Docker, fail2ban, emby

Heb je problemen met het instellen van je netwerk, bedraad of draadloos, dan kan je hier altijd terecht!
Plaats reactie
StarWing
Elite Poster
Elite Poster
Berichten: 966
Lid geworden op: 28 jan 2006, 18:21
Uitgedeelde bedankjes: 51 keer
Bedankt: 81 keer
Provider

Ik ben al een paar dagen aan het stoeien om een fail2ban in werking te krijgen via een docker container op een Ubuntu server.
Initieel had ik samen met onze Vriend ChatGPT een docker compose gemaakt voor f2b + nextcloud + redis + collabora. Maar dat werkt maar halvelings.
Het probleem ligt bij fail2ban, ik krijg deze niet aan de praat.
Niet via de compose die chatgpt gemaakt heeft, maar ook niet op een losse f2b voor een bestaande emby.

De finale setup zou zijn dat ik een aantal docker containers die extern benaderbaar zijn, voorzie van een f2b jail, zodat failed logins gebanned worden.
Er staat reeds een cloudflare voor die GeoBlock doet, maar dit zou dan een additionele laag zijn.

In eerste instantie had ik een pak foutmeldingen, maar dat kwam blijkbaar door een aanpassing in een van hun laatste commits (zie DEFAULT onder de jail.local).
Mocht iemand zich geroepen voelen om onderstaande eens te bekijken.
Volgens de logs is de jail up & running, maar er wordt nougabollen actie ondernomen door f2b :/

Achtergrond:
De emby draait tevens in een docker container, en staat achter een reverse proxy: HA op PfSense, en is volledig werkend incl certs.
De HA gaat de traffiek redirecten van https://emby.whatever naar 192.168.10.155:8096

Docker compose fail2ban:

Code: Selecteer alles

services:
  fail2ban:
    image: lscr.io/linuxserver/fail2ban:latest
    container_name: fail2ban
    cap_add:
      - NET_ADMIN
      - NET_RAW
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
      - VERBOSITY=-vvvv #optional
    volumes:
      - ./config:/config
#     - /var/log:/var/log:ro
      - /docker/emby/library/logs:/remotelogs/emby:ro #optional
      - /docker/jellyseer/config/logs:/remotelogs/jellyseer:ro
#      - /path/to/nextcloud/log:/remotelogs/nextcloud:ro #optional
Docker compose emby:

Code: Selecteer alles

services:
  emby:
    image: lscr.io/linuxserver/emby:latest
    container_name: emby
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - /docker/emby/library:/config
      - /docker/emby/backup:/backup
      - /DataDisk/Video:/Video
      - /DataDisk/Audio:/Audio
 #     - /opt/vc/lib:/opt/vc/lib #optional
    ports:
      - 192.168.10.155:8096:8096
      - 192.168.10.155:8920:8920 #optional
    devices:
      - /dev/dri:/dev/dri #optional
 #     - /dev/vchiq:/dev/vchiq #optional
 #     - /dev/video10:/dev/video10 #optional
 #     - /dev/video11:/dev/video11 #optional
 #     - /dev/video12:/dev/video12 #optional
    restart: unless-stopped
    networks:
      - docker_lan
networks:
  docker_lan:
    external: true
jail.local:

Code: Selecteer alles

[DEFAULT]
#banaction = nftables
#banaction_allports = nftables[type=allports]
banaction = iptables-multiport
banaction_allports = iptables-allports


[emby]
enabled = true
port = 8096,443,80
filter = emby
logpath = /remotelogs/emby/embyserver.txt
maxretry = 3
findtime = 600
bantime = 43200
chain   = DOCKER-USER
#chain   = INPUT
action  = %(known/action)s
Ik heb al gespeeld met chain: docker-user of input, tevens met iptables of nft tables. Maar ik weet niet wat het verschil is tussen beiden.


Onderstaande geeft ook gewoon weer dat de jail draait.

Code: Selecteer alles

docker exec -it fail2ban fail2ban-client status emby
Status for the jail: emby
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /remotelogs/emby/embyserver.txt
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:
filter.d/emby.local is de std van f2ban:

Code: Selecteer alles

## Version 2023/03/11
# Fail2Ban filter for emby

[INCLUDES]
before = common.conf

[Definition]

_daemon = emby-server

failregex = Server: AUTH-ERROR:\ <HOST>\ -

ignoreregex =
Regextest op de container zelf, voor zover ik dit kan interpreteren:
-log file is leesbaar
-regex is correct

Code: Selecteer alles

root@vdockersrv:/#  fail2ban-regex /remotelogs/emby/embyserver.txt "http/1.1 Response 401 to ‌‍‍<HOST>"

Running tests
=============

Use   failregex line : http/1.1 Response 401 to ‌‍‍<HOST>
Use         log file : /remotelogs/emby/embyserver.txt
Use         encoding : UTF-8


Results
=======

Failregex: 44 total
|-  #) [# of hits] regular expression
|   1) [44] http/1.1 Response 401 to ‌‍‍<HOST>
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [734] {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T|  ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?
`-

Lines: 1524 lines, 0 ignored, 44 matched, 1480 missed
[processed in 0.18 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 1480 lines
Maar ik kan een collega gewoon blijven laten inloggen, zonder dat f2ban iets doet, en ik heb geen idee waar ik dit moet gaan zoeken.
Wat nog zou kunnen is dat ik voor mijn emby (en een pak andere containers) een ander netwerk heb, hiervoor heb ik een "docker lan" aangemaakt, terwijl dit in de f2b docker nog niet geconfigureerd staat, maar volgens mij moet de f2b container dit toch gaan blocken op host niveau?
yuan_lee86
Plus Member
Plus Member
Berichten: 114
Lid geworden op: 24 jan 2007, 13:03
Uitgedeelde bedankjes: 2 keer
Bedankt: 1 keer

Zijn fail2ban en emby wel geconnecteerd met elkaar met de verschillende network_modes? Het lijkt mij dat ze apart wel werken, maar niet met elkaar kunnen communiceren.
StarWing
Elite Poster
Elite Poster
Berichten: 966
Lid geworden op: 28 jan 2006, 18:21
Uitgedeelde bedankjes: 51 keer
Bedankt: 81 keer
Provider

Ondertussen terug een stap verder, maar nog geen block te merken :)

Code: Selecteer alles

2025-12-05 06:44:47,938 fail2ban.actions        [154]: NOTICE  [emby] Unban 188.188.135.111
2025-12-05 06:45:07,030 fail2ban.filter         [154]: INFO    [emby] Found 188.188.135.111 - 2025-12-05 06:45:06
2025-12-05 06:45:09,032 fail2ban.filter         [154]: INFO    [emby] Found 188.188.135.111 - 2025-12-05 06:45:08
2025-12-05 06:45:11,034 fail2ban.filter         [154]: INFO    [emby] Found 188.188.135.111 - 2025-12-05 06:45:10
2025-12-05 06:45:11,246 fail2ban.actions        [154]: NOTICE  [emby] Ban 188.188.135.111
2025-12-05 06:45:13,237 fail2ban.filter         [154]: INFO    [emby] Found 188.188.135.111 - 2025-12-05 06:45:13
iptables -L op de host geeft effectief iets weer:

Code: Selecteer alles

Chain DOCKER-INTERNAL (1 references)
target     prot opt source               destination

Chain DOCKER-USER (1 references)
target     prot opt source               destination
f2b-emby   tcp  --  anywhere             anywhere             multiport dports 8096,http,https

Chain f2b-emby (1 references)
target     prot opt source               destination
REJECT     all  --  188.188.135.111      anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere
Maar ik kan nog gewoon inloggen met het "geblokkeerde" ip :(
Plaats reactie

Terug naar “Netwerken en Security”