Fail2ban filtrs OpenVPN Access Server: real_ip un jail
Access Server raksta savu žurnāla formātu, tāpēc standarta filtri neko neatrod. Noenkurojieties uz real_ip, sadaliet jail pa virsmām un pārbaudiet, vai adrese nav starpniekserveris.
Jūs nokopējāt OpenVPN jail no kopienas ziņas, pārstartējāt fail2ban, un neviena adrese nekad netiek bloķēta. Iemesls gandrīz vienmēr ir žurnāla formāts: Access Server neraksta tās autentifikācijas kļūmes rindas, ko gaida standarta filtrs. Pirms aiztikt filtru, pārliecinieties, vai ieraksti vispār pastāv, jo šablons nevar sakrist ar to, ko pakalpojums nekad nav reģistrējis.
Šī ir procedūra, ko ievēroju Access Server saimniekā: apstiprināt ieraksta formu, uzrakstīt vienu noenkurotu izteiksmi, pārbaudīt to īstajā žurnālā, pēc tam sadalīt jail pēc uzbrūkošās virsmas un pārbaudīt, vai bloķēšana sasniedz ugunsmūri.
Apstipriniet, ka kļūmes ieraksts pastāv
Access Server raksta savas strukturētās rindas uz /var/log/openvpnas.log, un klienta adrese atrodas laukā real_ip pēdiņās, nevis syslog rindas sākumā. Pirms rakstīt jebkuru šablonu, meklējiet neizdevušos pieteikšanos, par kuru zināt, ka tā notika:
grep -i 'LOG ERR' /var/log/openvpnas.log | tail -20Ja nekas neparādās, nākamais aizdomās turamais ir žurnāla līmenis. Access Server ir žurnāla datubāzes atkļūdošanas slēdzis /usr/local/openvpn_as/etc/as.conf (DEBUG_LOGDB=1), un pakalpojums pēc tā maiņas ir jāpārstartē. Uzskatiet šo slēdzi par diagnostikas iestatījumu, kas jāsamazina atpakaļ, tiklīdz šablons ir gatavs, nevis par pastāvīgu konfigurāciju.
Kamēr esat failā, ievērojiet, kuras virsmas tajā raksta. Klienta portāla, administrācijas saskarnes un tuneļa autentifikācijas kļūmes nonāk vienā failā ar dažādiem marķieriem, un šī detaļa vēlāk nosaka jail izkārtojumu.
Noenkurojiet vienu filtru uz real_ip
Turiet izteiksmi šauru. Filtrs, kas piesavinās jebkuru rindu ar IP adresi, bloķēs cilvēkus par parastiem savienojuma pārtraukumiem, un noslogotā serverī vienīgais simptoms ir lietotāju sūdzības, ka viņus bloķēja par klēpjdatora aizvēršanu. Piesavinieties kļūdas ierakstu un satveriet adresi pēdiņās:
# /etc/fail2ban/filter.d/openvpnaccess.local
[Definition]
failregex = ^ .*LOG ERR.*"real_ip": "<HOST>".*
ignoreregex =Sākuma atstarpe nav kosmētiska. Access Server iekārto savus ierakstus, un noenkurošanās uz to neļauj šablonam piesavināties arī rindas, ko tajā pašā failā raksta nesaistīti pakalpojumi. Ja jūsu ierakstiem tā vietā sākumā ir laika zīmogs, saskaņojiet šo prefiksu, bet noenkurojieties uz kaut ko, kas patiešām ir katrā ierakstā, kuru plānojat piesavināties.
Kad nepieciešama precizitāte pa virsmām, sašauriniet vēl vairāk, pieprasot virsmas marķieri (WEB_CLIENT, WEB_ADMIN vai VPN) tajā pašā rindā. Vienu filtru ar trim šabloniem ir vieglāk auditēt nekā trīs filtrus, kas atšķiras ar vienu vārdu.
Pārbaudiet izteiksmi pirms jail iespējošanas
Nekad neiespējojiet filtru, ko neesat palaiduši pret ražošanas žurnālu. Dokumentētais tests filtru izlaiž divreiz, vienreiz ielādei un vienreiz lietošanai, un izlaisto rindu ziņojums ir tā daļa, ko ir vērts lasīt:
fail2ban-regex --print-all-missed /var/log/openvpnas.log \
/etc/fail2ban/filter.d/openvpnaccess.local \
/etc/fail2ban/filter.d/openvpnaccess.local > missed.txtSalīdziniet sakritību skaitu ar kļūmēm, ko apstiprinājāt pirmajā solī. Nulle sakritību nozīmē, ka šablons ir nepareizs; sakritības rindās, kas nav autentifikācijas kļūmes, nozīmē, ka tas ir pārāk plats. Lasiet missed.txt, līdz varat izskaidrot katru rindu, ko izvēlējāties nepiesavināties.
Veiciet šo testu kopijā, ja žurnāls ir liels, un atkārtojiet to pēc katras Access Server atjaunināšanas. Žurnāla formāts ir saskarne, pret kuru saskaņojat, un tā nav stabila API.
Sadaliet jail pēc virsmas, nevis pēc dēmona
Viens Access Server piedāvā vairākas autentifikācijas virsmas: klienta un administrācijas tīmekļa saskarnes 943/tcp portā, un tuneli 1194/udp vai 443/tcp portā lielākajā daļā izvietojumu. Viens jail, kas nosedz tās visas, ļauj minēšanas mēģinājumiem tunelī bloķēt adresi, kas ir arī jūsu administrācijas ceļš, un tas slēpj, kura virsma patiešām tiek uzbrukta. Dodiet katrai virsmai savu jail ar savu portu un sliekšņiem:
# /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 = 1hSāciet ar maziem skaitītājiem un īsu bloķēšanu, un paceliet tos, kad būsiet novērojuši nedēļu reālas satiksmes. Dāsns slieksnis koplietotā biroja adresē soda katru lietotāju aiz viena NAT, un agresīva bloķēšana tuneļa virsmā atvieno leģitīmus klientus, kuru saglabātie akreditācijas dati naktī ir beigušies.
Pārbaudiet bloķēšanu, backend un blakuszaudējumus
Pēc pārstartēšanas statusa izvade ir ātrākais apstiprinājums, ka jail pastāv un skaita:
fail2ban-client status
fail2ban-client status openvpnas-tunnelPēc tam apstipriniet, ka bloķēšana sasniedz ugunsmūri, kuru jūs patiešām darbināt, jo jail, kas konfigurēts backend, kuru neviens neizpilda, neko neaizsargā. Ar iptables darbību adreses parādās ķēdē, kas nosaukta jail vārdā (f2b-openvpnas-tunnel); ar nftables darbību tās nonāk kopā fail2ban paša tabulā. Pārbaudiet to, ko izmanto jūsu saimnieks, nevis pieņemiet.
Divi blakusefektu pārbaudi ir svarīgāki par pašu bloķēšanu. Pirmkārt, pārbaudiet, vai real_ip ir klienta adrese, nevis slodzes balansētājs vai apgrieztais starpniekserveris; aiz starpniekservera katrs bloķējums nonāk uz starpniekservera un velk līdzi visu pakalpojumu. Otrkārt, pierakstiet atbloķēšanas procedūru, jo adrese, kas 02:00 pārsniedz slieksni, parasti pieder dežūrējošajam inženierim: fail2ban-client set openvpnas-tunnel unbanip 203.0.113.24.
Paturiet prātā robežu, kamēr regulējat. Fail2ban ir ātruma ierobežotājs vienā autentifikācijas virsmā, nevis piekļuves kontroles slānis. Tas neaizstāj MFA, ierobežojumus katram kontam vai administrācijas saskarnes turēšanu ārpus publiskā interneta, un Access Server ir savi autoban iestatījumi, kurus ir vērts pārbaudīt pirms divu ātruma ierobežotāju sakraušanas vienā portā.