Asgjë në fail2ban nuk hedh një paketë vetë: thërret një veprim, dhe ky veprim është ai që emërton një protokoll dhe një portë. Kur jail raporton një ban ndërkohë që daemon vazhdon të pranojë hyrjet, bani zakonisht është i vërtetë dhe më i ngushtë sesa sugjeron logu. Një klient që rilidhet përmes transportit tjetër nuk e takon kurrë rregullin e instaluar. Përpara se të ndryshoni ndonjë gjë, krahasoni atë që instali veprimi me atë që dëgjon daemoni, sepse prova ndodhet në zinxhirin e firewall-it që shkroi veprimi, jo në listën e jail.

Lexoni zinxhirin, jo përmbledhjen e jail

fail2ban fut zinxhirin e vet përpara zinxhirit të shërbimit, kështu që një listë numëruesish tregon saktësisht çfarë ekziston. Një zinxhir i quajtur sipas jail, që mban një rregull të vetëm, kolona e protokollit të të cilit lexon udp, është një shpjegim i plotë për hyrjet TCP që vazhdojnë të vijnë. Refuzohen vetëm paketat UDP nga burimi i bllokuar. Shërbimi ka një dëgjues TCP, dhe asgjë në atë zinxhir nuk e prek.

Vini re edhe efektin e jail-it fqinj. Një host mund të duket i konfiguruar përsosmërisht vetëm sepse një jail tjetër furnizon gjysmën që mungon, dhe i njëjti build nuk bën asgjë aty ku ai jail nuk është i instaluar.

Veprimi emërton një protokoll të vetëm, dhe pikërisht aty thyhet

Çdo banaction është një shabllon komande firewall-i, dhe protokolli ndodhet në një nga vendmbajtëset e tij. Ngushtësia është e qëllimshme, pasi një jail web dhe një jail DNS nuk kanë punë me bllokimin e portave identike. Bëhet kurth kur shërbimi dëgjon në më shumë se një transport, gjë që daemonët VPN e bëjnë rregullisht. Filtri mund të vëzhgojë hyrjet e dështuara nga të dy transportet ndërsa veprimi mbulon një.

Vendosjet e SoftEther dhe OpenVPN zakonisht dëgjojnë në UDP dhe TCP njëkohësisht, dhe meqë rreshti i logut duket i njëjtë në të dyja rastet filtri vëzhgon të dyja. Asimetria nuk shfaqet kurrë në raportin e vetë jail. fail2ban i numëroi saktë dështimet dhe më pas instali një rregull që zbatohet për gjysmën e trafikut mbi të cilin mbërritën ato dështime.

Bëni që bani të mbulojë të dy transportet

Rregullojeni në përkufizimin e jail; rregullat e shkruara me dorë do të përzihen në ringarkimin tjetër. Shkruani dy veprime, një për çdo protokoll:

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"]

Mos provoni ta shkurtoni me protocol = all. banaction-i parazgjedhur është një veprim multiport, dhe zgjerohet në -p <protocol> -m multiport --dports <port>; pa protokoll L4 nuk ka asgjë që përputhja e portës të testojë, prandaj iptables e refuzon rregullin ndërsa jail vazhdon të raportojë një ban të suksesshëm. Një veprim për të gjitha portat si iptables-allports ose nftables-allports pranon një zë të vetëm, por bllokon çdo portë në atë burim, gjë që është një vendim tjetër dhe kërkon justifikimin e vet. Lëreni protocol në tcp ose udp dhe pranoni dy zërat.

Provoni që rregulli ekziston në vend që t'i besoni cilësimit, sepse një cilësim përshkruan një qëllim derisa një zinxhir ta mbajë:

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

Çdo zinxhir duhet të listojë një rregull, me -p tcp në të parin dhe -p udp në të dytin, dhe të dy emërtojnë adresën e bllokuar. Më pas konfirmoni që e njëjta adresë refuzohet në të dy transportet. Një ban që nuk e keni parë në zinxhir është një shpresë, dhe raporti tjetër për të njëjtin simptomë do të kushtojë përsëri të njëjtën orë.

Çfarë ende humbet një ban, dhe rasti tjetër

Ajo që bën veprimi është të refuzojë një burim të vetëm, dhe vetëm në portat e listuara në të. Nuk bën asgjë kundër një sulmuesi që rrotullon adresat, dhe nuk mund të ndajë një makinë armiqësore nga një dalje NAT në nivel operatori e ndarë nga qindra përdorues, ku një ban i vetëm përjashton njerëz që nuk bënë asgjë. Sigurohuni që filtri lexon adresën që klienti ka vërtet, jo një header të përcjellë ose një adresë proxy. Mbani dritaren mjaft të shkurtër që një gabim të skadojë vetë.

Asgjë nga këto nuk argumenton për të kapërcyer rregullimin e protokollit; argumenton për të mbajtur dy ide njëkohësisht. Bani është më i ngushtë sesa sugjeron përmbledhja e jail, dhe edhe një ban i plotë është më i ngushtë se kërcënimi. Vendosni zinxhirin e firewall-it pranë listës së dëgjuesve të daemonit dhe krahasoni protokoll pas protokolli, sepse ato dy lista vendosin nëse një ban mund t'i arrijë shërbimit.

Mbajeni komandën e ringarkimit dhe listën e zinxhirëve në runbook pranë jail. Personi tjetër do t'i ketë nevojë për të dyja, dhe përmbledhja e jail nuk do t'i thotë asnjërën.

Artikuj të ngjashëm