Neat yn fail2ban smyt op himsels in pakket fuort: it ropt in aksje oan, en dy aksje is wat in protokol en in poarte beneamt. As de jail in ban meldt wylst de daemon oanmeldings bliuwt akseptearjen, is de ban meastentiids echt en smeller as't log seit. In klant dy't oer it oare transport opnij ferbynt, treft nea de regel dy't ynstallearre is. Ferlykje wat de aksje ynstallearre hat mei dêr't de daemon nei harket foardat jo wat feroarje, want it bewiis leit yn 'e firewallkeatling dy't de aksje skreau, net yn 'e list fan de jail.

Lês de keatling, net de gearfetting fan de jail

fail2ban foeget syn eigen keatling foar de tsjinstkeatling yn, sadat in tellerlist krekt sjen lit wat bestiet. In keatling neamd nei de jail, mei ien regel wêrfan't de protokolkoalme udp seit, is in folsleine ferklearring foar TCP-oanmeldings dy't oanbliuwe te kommen. Allinnich UDP-pakketten fan 'e ferbeane boarne wurde ôfwiisd. De tsjinst hat in TCP-harker, en neat yn dy keatling rekket it oan.

Let ek op it buorjail-effekt. Ien host kin perfekt konfigurearre lykje, inkeld om't in oare jail de helte leveret dy't mist, en deselde build docht neat dêr't dy jail net ynstallearre is.

De aksje beneamt ien protokol, en dêr brekt it

Elke banaction is in sjabloan foar in firewallopdracht, en it protokol sit yn ien fan syn plakferfangers. De smelheid is mei opset, want in webjail en in DNS-jail hawwe neat te meitsjen mei it blokkearjen fan identike poarten. It wurdt in falstrik as de tsjinst op mear as ien transport harket, wat VPN-daemons geregeldwei dogge. It filter kin mislearre oanmeldings fan beide transporten besjen wylst de aksje ien dekt.

SoftEther- en OpenVPN-ynsetten harkje meastentiids tagelyk op UDP en TCP, en om't de logrigel yn beide gefallen itselde liket, besjocht it filter beide. De asymmetry is nea te sjen yn it eigen rapport fan de jail. fail2ban telde de mislearrings korrekt en ynstallearre doe in regel dy't jildt foar de helte fan it ferkear dêr't dy mislearrings op oankamen.

Lit de ban beide transporten dekke

Reparearje it ynstee yn 'e definysje fan de jail; hânskreaune regels wurde by de folgjende werlading trochinoar slein. Skriuw twa aksjes út, ien foar elk 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"]

Besykje dat net te ferkoartsjen mei protocol = all. De standert-banaction is in multiport-aksje, en dy wreidet út nei -p <protocol> -m multiport --dports <port>; sûnder L4-protokol is der neat foar de poartematch om te testen, dus iptables wiist de regel ôf wylst de jail noch altyd in slagge ban meldt. In aksje foar alle poarten lykas iptables-allports of nftables-allports akseptearret ien yngong, mar ferbant elke poarte op dy boarne, wat in oare beslissing is en syn eigen rjochtfeardiging nedich hat. Lit protocol op tcp of udp stean en akseptearje de twa yngongen.

Bewiis dat de regel bestiet ynstee fan op 'e ynstelling te fertrouwen, want in ynstelling beskriuwt in bedoeling oant in keatling it hâldt:

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

Elke keatling heart ien regel te listigjen, mei -p tcp yn 'e earste en -p udp yn 'e twadde, en beide neame it ferbeane adres. Befêstigje dan dat itselde adres op beide transporten wegere wurdt. In ban dy't jo net yn 'e keatling sjoen hawwe, is in hope, en it folgjende rapport fan itselde symptoom sil wer deselde oere kostje.

Wat in ban noch mist, en it folgjende gefal

Wat de aksje docht, is ien boarne ôfwize, en allinnich op 'e poarten dy't deryn neamd binne. It docht neat oan in oanfaller dy't adressen rotearret, en it kin in fijannige masine net skiede fan in carrier-grade NAT-útgong dy't troch hûnderten brûkers dield wurdt, dêr't ien ban minsken bûtensletten hâldt dy't neat dien hawwe. Soargje derfoar dat it filter it adres lêst dat de klant wier hat, net in trochstjoerde kop of in proxyadres. Hâld it finster koart genôch dat in flater fan sels ferrint.

Neat dêrfan pleitet foar it oerslaan fan 'e protokolreparaasje; it pleitet foar it hâlden fan twa ideeën tagelyk. De ban is smeller as't de gearfetting fan 'e jail suggerearret, en sels in folsleine ban is smeller as de bedriging. Set de firewallkeatling njonken de harkerlist fan 'e daemon en ferlykje protokol foar protokol, want dy twa listen beslisse oft in ban de tsjinst oait berikke kin.

Hâld de werladingsopdracht en de keatlinglist yn 'e runbook njonken de jail. De folgjende persoan hat beide nedich, en de gearfetting fan 'e jail sil him gjin fan beide fertelle.

Relatearre artikelen