Nekas fail2ban pats par sevi neizmet paketi: tas izsauc darbību, un tieši šī darbība nosauc protokolu un portu. Kad jail ziņo par ban, kamēr dēmons turpina pieņemt pieteikšanās, ban parasti ir īsts un šaurāks, nekā liecina žurnāls. Klients, kas atkārtoti piesakās pa otru transportu, nekad nesastop uzstādīto noteikumu. Pirms kaut ko mainīt, salīdziniet, ko darbība uzstādīja, ar to, ko dēmons klausās, jo pierādījums ir ugunsmūra ķēdē, ko darbība ierakstīja, nevis jail sarakstā.

Lasiet ķēdi, nevis jail kopsavilkumu

fail2ban ievieto savu ķēdi pakalpojuma ķēdes priekšā, tāpēc skaitītāju saraksts precīzi parāda, kas pastāv. Ķēde, kas nosaukta jail vārdā un satur vienu noteikumu, kura protokola kolonna rāda udp, ir pilnīgs skaidrojums nemitīgi pienākošajām TCP pieteikšanās reizēm. Noraida tikai UDP paketes no bloķētā avota. Pakalpojumam ir TCP klausītājs, un nekas tajā ķēdē to neaizskar.

Pievērsiet uzmanību arī kaimiņu jail ietekmei. Viens resursdators var izskatīties lieliski konfigurēts tikai tāpēc, ka trūkstošo pusi nodrošina cits jail, un tā pati būve neko nedara tur, kur šis jail nav uzstādīts.

Darbība nosauc vienu protokolu, un tieši tur tā lūzt

Katrs banaction ir ugunsmūra komandas veidne, un protokols atrodas vienā no tās vietturēm. Šaurība ir apzināta, jo tīmekļa jail un DNS jail nav darīšana ar identisku portu bloķēšanu. Tas kļūst par slazdu, kad pakalpojums klausās vairāk nekā vienā transportā, ko VPN dēmoni dara regulāri. Filtrs var novērot neveiksmīgas pieteikšanās no abiem transportiem, kamēr darbība aptver vienu.

SoftEther un OpenVPN izvietojumi parasti klausās UDP un TCP vienlaikus, un tā kā žurnāla rinda abos gadījumos izskatās vienādi, filtrs novēro abus. Asimetrija nekad neparādās pašā jail ziņojumā. fail2ban pareizi saskaitīja neveiksmes un pēc tam uzstādīja noteikumu, kas attiecas uz pusi no trafika, pa kuru šīs neveiksmes ieradās.

Lai ban aptver abus transportus

Labojiet to jail definīcijā; ar roku rakstītie noteikumi tiks sajaukti nākamajā pārlādē. Izrakstiet divas darbības, pa vienai katram protokolam:

action = %(banaction)s[name=%(__name__)s-tcp, actionname=%(__name__)s-tcp, protocol="tcp", port="%(port)s", chain="%(chain)s"]
         %(banaction)s[name=%(__name__)s-udp, actionname=%(__name__)s-udp, protocol="udp", port="%(port)s", chain="%(chain)s"]

Nemēģiniet to saīsināt ar protocol = all. Noklusējuma banaction ir multiport darbība, un tā izvēršas uz -p <protocol> -m multiport --dports <port>; bez L4 protokola porta atbilstībai nav ko pārbaudīt, tāpēc iptables noraida noteikumu, kamēr jail joprojām ziņo par veiksmīgu ban. Visu portu darbība, piemēram, iptables-allports vai nftables-allports, pieņem vienu ierakstu, bet bloķē katru portu šajā avotā, kas ir cits lēmums un prasa savu pamatojumu. Atstājiet protocol uz tcp vai udp un pieņemiet divus ierakstus.

Pierādiet, ka noteikums pastāv, nevis paļaujieties uz iestatījumu, jo iestatījums apraksta nodomu, līdz ķēde to notur:

iptables -S f2b-vpn-tcp
iptables -S f2b-vpn-udp

Katrai ķēdei jāuzskaita viens noteikums, pirmajā -p tcp un otrajā -p udp, un abi nosauc bloķēto adresi. Pēc tam apstipriniet, ka tā pati adrese tiek noraidīta abos transportos. Ban, ko neesat redzējis ķēdē, ir cerība, un nākamais ziņojums par to pašu simptomu atkal izmaksās to pašu stundu.

Ko ban joprojām palaiž garām, un nākamais gadījums

Darbība noraida vienu avotu un tikai tajos portos, kas tajā uzskaitīti. Tā neko nedara pret uzbrucēju, kas maina adreses, un nevar atdalīt naidīgu mašīnu no operatora līmeņa NAT izejas, ko dala simtiem lietotāju, kur viens ban izslēdz cilvēkus, kuri neko nav izdarījuši. Pārliecinieties, ka filtrs lasa adresi, kas klientam patiešām ir, nevis pārsūtītu galveni vai starpniekservera adresi. Turiet logu pietiekami īsu, lai kļūda beigtos pati.

Nekas no tā neattaisno protokola labojuma izlaišanu; tas attaisno divu ideju turēšanu vienlaikus. Ban ir šaurāks, nekā liecina jail kopsavilkums, un pat pilnīgs ban ir šaurāks par draudiem. Novietojiet ugunsmūra ķēdi blakus dēmona klausītāju sarakstam un salīdziniet protokolu pa protokolam, jo šie divi saraksti izlemj, vai ban vispār var sasniegt pakalpojumu.

Turiet pārlādes komandu un ķēžu sarakstu runbook failā blakus jail. Nākamajam cilvēkam būs vajadzīgi abi, un jail kopsavilkums viņam nepateiks nevienu.

Saistītie raksti