En banaction, dva transporta: popravilo jaila fail2ban za VPN
Ban je le tako širok, kot je protokol v njegovem dejanju. Primerjajte števce verige s poslušalci in nato pokrijte oba transporta v samem jailu.
Nič v fail2ban samo ne odvrže paketa: pokliče dejanje in prav to dejanje poimenuje protokol in vrata. Ko jail poroča o banu, medtem ko daemon še naprej sprejema prijave, je ban običajno resničen in ožji, kot nakazuje dnevnik. Odjemalec, ki se znova poveže prek drugega transporta, nikoli ne naleti na nameščeno pravilo. Preden karkoli spremenite, primerjajte, kaj je dejanje namestilo, s tem, na kar daemon posluša, ker je dokaz v požarnozidnem zaporedju, ki ga je dejanje zapisalo, ne na seznamu jaila.
Berite verigo, ne povzetka jaila
fail2ban vstavi svojo verigo pred verigo storitve, zato seznam števcev pokaže točno to, kar obstaja. Veriga, poimenovana po jailu, ki drži eno pravilo s stolpcem protokola udp, je popolna razlaga za prijave TCP, ki še prihajajo. Zavržejo se le paketi UDP z blokiranega vira. Storitev ima poslušalca TCP in nič v tej verigi se ga ne dotakne.
Bodite pozorni tudi na učinek sosednjega jaila. En gostitelj je lahko videti popolnoma konfiguriran samo zato, ker manjkajočo polovico zagotavlja drug jail, in ista gradnja ne naredi ničesar tam, kjer ta jail ni nameščen.
Dejanje poimenuje en protokol in prav tam se zlomi
Vsak banaction je predloga ukaza požarnega zidu in protokol sedi v enem od njegovih nadomestnih znakov. Ozkost je namerna, saj spletni jail in jail DNS nimata kaj početi z blokiranjem enakih vrat. To postane past, ko storitev posluša na več kot enem transportu, kar daemoni VPN počnejo redno. Filter lahko spremlja neuspešne prijave z obeh transportov, medtem ko dejanje pokriva enega.
Namestitve SoftEther in OpenVPN običajno poslušajo na UDP in TCP hkrati, in ker je vrstica dnevnika v obeh primerih videti enako, filter spremlja oba. Asimetrija se nikoli ne pokaže v poročilu samega jaila. fail2ban je napake pravilno preštel in nato namestil pravilo, ki velja za polovico prometa, po katerem so te napake prišle.
Naj ban pokrije oba transporta
Popravite to v definiciji jaila; ročno napisana pravila bo naslednje ponovno nalaganje premešalo. Izpišite dve dejanji, eno za vsak protokol:
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"]
Ne poskušajte tega skrajšati s protocol = all. Privzeti banaction je dejanje multiport in se razširi v -p <protocol> -m multiport --dports <port>; brez protokola L4 ujemanje vrat nima česa preizkusiti, zato iptables pravilo zavrne, medtem ko jail še vedno poroča o uspešnem banu. Dejanje za vsa vrata, kot je iptables-allports ali nftables-allports, sprejme en vnos, a blokira vsaka vrata na tem viru, kar je druga odločitev in zahteva lastno utemeljitev. Pustite protocol na tcp ali udp in sprejmite dva vnosa.
Dokažite, da pravilo obstaja, namesto da zaupate nastavitvi, ker nastavitev opisuje namero, dokler je veriga ne zadrži:
iptables -S f2b-vpn-tcp
iptables -S f2b-vpn-udp
Vsaka veriga naj navede eno pravilo, s -p tcp v prvem in -p udp v drugem, oba poimenujeta blokirani naslov. Nato potrdite, da je isti naslov zavrnjen na obeh transportih. Ban, ki ga v verigi niste videli, je upanje, in naslednje poročilo o istem simptomu bo spet stalo isto uro.
Kaj ban še vedno zgreši, in naslednji primer
Dejanje zavrne en vir in to samo na vratih, navedenih v njem. Ne naredi ničesar proti napadalcu, ki rotira naslove, in ne more ločiti sovražnega stroja od izhoda operaterskega NAT, ki si ga deli na stotine uporabnikov, kjer en ban izloči ljudi, ki niso storili ničesar. Prepričajte se, da filter bere naslov, ki ga odjemalec resnično ima, ne posredovane glave ali naslova proxyja. Držite okno dovolj kratko, da napaka sama poteče.
Nič od tega ne zagovarja preskoka popravila protokola; zagovarja držanje dveh idej hkrati. Ban je ožji, kot nakazuje povzetek jaila, in tudi popoln ban je ožji od grožnje. Postavite požarnozidno verigo ob seznam poslušalcev daemona in primerjajte protokol za protokolom, ker ta dva seznama odločata, ali lahko ban sploh doseže storitev.
Hranite ukaz za ponovno nalaganje in seznam verig v runbooku ob jailu. Naslednja oseba bo potrebovala oboje, povzetek jaila pa ji ne bo povedal niti enega.