Fail2ban-Filter fir OpenVPN Access Server: real_ip an Jailen
Den Access Server schreift säin eegene Logformat, dofir fannen d'Standardfilteren näischt. Anker op real_ip, deele Jailen no Uewerfläch a kontrolléier, datt d'Adress keen Proxy ass.
Dir hutt eng OpenVPN Jail aus engem Gemeinschaftspost kopéiert, fail2ban nei gestart, an et gëtt ni eng Adress gespaart. D'Ursaach ass bal ëmmer d'Logformat: den Access Server schreift net déi Authentifikatiounsfehler-Zeilen, déi en Standardfilter erwaart. Ier Dir de Filter ufässt, kontrolléiert, ob d'Opzeechnungen iwwerhaapt do sinn, well e Muster kann net mat deem iwwerenee stëmmen, wat den Déngscht ni geloggt huet.
Dëst ass de Runbook, deen ech op engem Access Server Host befollegen: d'Form vun der Opzeechnung bestätegen, een verankerte Ausdrock schreiwen, en um richtegen Log testen, duerno d'Jailen no der Uewerfläch opdeelen, déi ugegraff gëtt, an iwwerpréiwen, datt d'Spär bis op d'Firewall kënnt.
Bestätegt, datt d'Fehleropzeechnung existéiert
Den Access Server schreift seng eege strukturéiert Zeilen an /var/log/openvpnas.log, an d'Clientadress steet an engem Feld real_ip a Guillemets, net um Ufank vun enger Syslog-Zeil. Sicht no engem feelgeschloenen Login, vun deem Dir wësst, datt en geschitt ass, ier Dir iergendeen Muster schreift:
grep -i 'LOG ERR' /var/log/openvpnas.log | tail -20Wa näischt erschéngt, ass den Logniveau den nächsten Verdächtegen. Den Access Server huet en Debug-Schalter fir d'Logdatebank an /usr/local/openvpn_as/etc/as.conf (DEBUG_LOGDB=1), an den Déngscht muss no der Ännerung nei gestart ginn. Behandelt dee Schalter als diagnostesch Astellung, déi erëm erofgesat gëtt, soubal Dir Äre Muster hutt, an net als permanent Konfiguratioun.
Wärend Dir an der Datei sidd, bemerkt, wéi eng Uewerflächen dran schreiwen. Feeler am Clientportal, an der Administratiounsschnittstell an an der Tunnelauthentifikatioun landen an der selwechter Datei mat ënnerschiddleche Markéierungen, an dat Detail entscheet méi spéit de Layout vun den Jailen.
Ankert ee Filter op real_ip
Halt den Ausdrock enk. E Filter, deen all Zeil mat enger IP-Adress behaapt, späert Leit fir gewéinlech Verbindungsopbréch, an op engem beschäftegte Server ass dat eenzegt Symptom, datt d'Benotzer sech beschwéieren, si wieren ausgespaart ginn, well si e Laptop zougemaach hunn. Behaapt d'Fehleropzeechnung a fänkt d'Adress a Guillemets:
# /etc/fail2ban/filter.d/openvpnaccess.local
[Definition]
failregex = ^ .*LOG ERR.*"real_ip": "<HOST>".*
ignoreregex =D'Leetplaz ass net kosmetesch. Den Access Server zitt seng Opzeechnungen an, an d'Ankeren drop verhënnert, datt de Muster och Zeile behaapt, déi onverbonne Déngschter an déiselwecht Datei schreiwen. Wann Är Opzeechnungen amplaz en Zäitstempel uganks droen, passt dee Prefix un, awer ankert op eppes, wat wierklech an all Opzeechnung präsent ass, déi Dir behaapte wëllt.
Wann Dir Prezisioun pro Uewerfläch braucht, engt weider an, andeem Dir d'Markéierung vun der Uewerfläch (WEB_CLIENT, WEB_ADMIN oder VPN) an der selwechter Zeil verlaangt. Een Filter mat dräi Mustere léisst sech méi einfach auditëieren wéi dräi Filteren, déi sech an engem Wuert ënnerscheeden.
Test den Ausdrock, ier Dir eng Jail aktivéiert
Aktivéiert ni e Filter, deen Dir net géint de Produktiounslog lafe gelooss hutt. Den dokumentéierten Test gëtt de Filter zweemol duerch, eemol fir ze lueden an eemol fir unzewenden, an de Bericht iwwer verpassene Zeile ass deen Deel, deen et wäert ass ze liesen:
fail2ban-regex --print-all-missed /var/log/openvpnas.log \
/etc/fail2ban/filter.d/openvpnaccess.local \
/etc/fail2ban/filter.d/openvpnaccess.local > missed.txtVergläicht d'Zuel vun de Treffer mat de Feeler, déi Dir am éischte Schrëtt bestätegt hutt. Null Treffer heescht, datt de Muster falsch ass; Treffer op Zeilen, déi keng Authentifikatiounsfeeler sinn, heescht, datt en ze breet ass. Liest missed.txt, bis Dir all Zeil erkläre kënnt, déi Dir gewielt hutt net ze behaapten.
Maacht dësen Test op enger Kopie, wann de Log grouss ass, a widderhëlt en no all Upgrade vum Access Server. D'Logformat ass d'Schnittstell, géint déi Dir kommt, an et ass keng stabil API.
Deelt d'Jailen no Uewerfläch op, net no Daemon
Een Access Server presentéiert méi Authentifikatiounsuewerflächen: Client- an Administratiounswebschnëttstellen op 943/tcp, an den Tunnel op 1194/udp oder 443/tcp an de meeschte Installatiounen. Eng eenzeg Jail, déi se all ofdeckt, léisst Rateversich um Tunnel eng Adress späre, déi och Ären Administratiounswee ass, an et verstoppt, wéi eng Uewerfläch tatsächlech ugegraff gëtt. Gitt all Uewerfläch hir eege Jail mat hirem eegene Port an hire Schwellen:
# /etc/fail2ban/jail.d/openvpnaccess.local
[openvpnas-web-client]
enabled = true
port = 943
protocol = tcp
filter = openvpnaccess
logpath = /var/log/openvpnas.log
maxretry = 3
findtime = 10m
bantime = 1h
[openvpnas-tunnel]
enabled = true
port = 443
protocol = udp
filter = openvpnaccess
logpath = /var/log/openvpnas.log
maxretry = 5
findtime = 10m
bantime = 1hFänkt mat klengen Zieler an enger kuerzer Spär un, an hieft se eréischt, nodeems Dir eng Woch richtegen Trafic observéiert hutt. Eng generéis Schwelle op enger gedeelter Bürosadress bestrooft all Benotzer hannert engem NAT, an eng aggressiv Spär op der Tunneluewerfläch trennt legitim Clienten of, deenen hir gespäichert Umeldungsinformatiounen iwwer Nuecht ofgelaf sinn.
Iwwerpréift d'Spär, de Backend an de Kollateralschued
No engem Neistart ass d'Statusausgab déi séierst Bestätegung, datt d'Jail existéiert an zielt:
fail2ban-client status
fail2ban-client status openvpnas-tunnelDuerno bestätegt, datt d'Spär bis op d'Firewall kënnt, déi Dir tatsächlech bedreift, well eng Jail, déi fir en Backend konfiguréiert ass, deen keen duerchsetzt, näischt schützt. Mat der iptables-Aktioun erschéngen d'Adressen an enger Kette, déi no der Jail benannt ass (f2b-openvpnas-tunnel); mat der nftables-Aktioun landen se an engem Set an der eegener fail2ban-Tabell. Kontrolléiert déi, déi Ären Host benotzt, amplaz se unzehuelen.
Zwee Kollateralkontrollen zielen méi wéi d'Spär selwer. Als éischt bestätegt, datt real_ip d'Clientadress ass an net e Load Balancer oder e Reverse Proxy; hannert engem Proxy landet all Spär um Proxy an zitt den ganzen Déngscht mat erof. Zweetens schreift d'Prozedur fir d'Entspären op, well d'Adress, déi um 02:00 iwwer d'Schwelle geet, meeschtens dem Bereetschaftsingenieur gehéiert: fail2ban-client set openvpnas-tunnel unbanip 203.0.113.24.
Halt d'Grenz am Kapp wärend Dir tunet. Fail2ban ass en Temposbegrenzer op enger Authentifikatiounsuewerfläch, keng Zougangskontrollschicht. Et ersetzt weder MFA nach Aschränkungen pro Kont nach d'Fernhalen vun der Administratiounsschnittstell vum öffentlechen Internet, an den Access Server huet seng eege Autoban-Astellungen, déi et wäert ass ze kontrolléieren, ier Dir zwee Temposbegrenzer op de selwechte Port stackt.