Walang anuman sa fail2ban ang nagtatapon ng packet nang mag-isa: tumatawag ito ng aksyon, at ang aksyon na iyon ang nagbibigay ng pangalan sa protocol at port. Kapag nag-uulat ang jail ng ban habang patuloy na tumatanggap ang daemon ng mga login, ang ban ay karaniwang totoo at mas makitid kaysa sa ipinahihiwatig ng log. Ang client na muling kumokonekta sa kabilang transport ay hindi kailanman nakakatagpo ng naka-install na panuntunan. Bago magbago ng anuman, ihambing ang ini-install ng aksyon sa pinakikinggan ng daemon, dahil nasa firewall chain na isinulat ng aksyon ang ebidensya, hindi sa listahan ng jail.

Basahin ang chain, hindi ang buod ng jail

Naglalagay ang fail2ban ng sarili nitong chain sa harap ng chain ng serbisyo, kaya eksaktong ipinapakita ng listahan ng counter kung ano ang umiiral. Ang chain na pinangalanan sa jail, na may isang panuntunan na ang column ng protocol ay udp, ay kumpletong paliwanag sa mga login TCP na patuloy na dumarating. Ang mga packet UDP lamang mula sa naka-block na pinagmulan ang tinatanggihan. May listener TCP ang serbisyo, at walang anuman sa chain na iyon ang humahawak dito.

Pansinin din ang epekto ng katabing jail. Maaaring magmukhang perpektong naka-configure ang isang host dahil lang sa ibang jail ang nagbibigay ng kulang na kalahati, at walang ginagawa ang parehong build sa lugar kung saan hindi naka-install ang jail na iyon.

Isang protocol lang ang pinapangalanan ng aksyon, at doon ito nasisira

Bawat banaction ay template ng command ng firewall, at ang protocol ay nasa isa sa mga placeholder nito. Sadyang makitid ito, dahil ang web jail at DNS jail ay walang kinalaman sa pag-block ng magkatulad na port. Nagiging bitag ito kapag nakinig ang serbisyo sa mahigit isang transport, na karaniwang ginagawa ng mga daemon ng VPN. Maaaring bantayan ng filter ang mga bigong login mula sa dalawang transport habang isa lang ang sakop ng aksyon.

Ang mga deployment ng SoftEther at OpenVPN ay karaniwang nakikinig sa UDP at TCP nang sabay, at dahil magkapareho ang hitsura ng log line sa dalawang kaso, binabantayan ng filter ang dalawa. Hindi kailanman lumilitaw ang asimetriyang ito sa sariling ulat ng jail. Binilang nang tama ng fail2ban ang mga pagkabigo at pagkatapos ay nag-install ng panuntunang nalalapat sa kalahati ng trapikong pinagmulan ng mga pagkabigong iyon.

Gawing sakop ng ban ang dalawang transport

Ayusin ito sa depinisyon ng jail sa halip; ang mga panuntunang isinulat sa kamay ay mahahalo sa susunod na reload. Isulat nang malinaw ang dalawang aksyon, isa para sa bawat protocol:

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

Huwag subukang paikliin ito gamit ang protocol = all. Ang default na banaction ay isang multiport na aksyon, at lumalawak ito sa -p <protocol> -m multiport --dports <port>; kung walang protocol L4 ay walang masusubok ang pagtutugma ng port, kaya tinatanggihan ng iptables ang panuntunan habang nag-uulat pa rin ang jail ng matagumpay na ban. Ang aksyong lahat ng port tulad ng iptables-allports o nftables-allports ay tumatanggap ng isang entry, ngunit hinaharangan nito ang bawat port sa pinagmulang iyon, na ibang desisyon at nangangailangan ng sariling katwiran. Iwanan ang protocol sa tcp o udp at tanggapin ang dalawang entry.

Patunayan na umiiral ang panuntunan sa halip na magtiwala sa setting, dahil ang setting ay naglalarawan ng layunin hanggang sa hawakan ito ng chain:

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

Dapat maglista ang bawat chain ng isang panuntunan, na may -p tcp sa una at -p udp sa pangalawa, at parehong binabanggit ang naka-block na address. Pagkatapos ay kumpirmahin na tinatanggihan ang parehong address sa dalawang transport. Ang ban na hindi mo nakita sa chain ay pag-asa, at ang susunod na ulat ng parehong sintomas ay muling magdudulot ng parehong oras.

Ano ang nalalampasan pa ng ban, at ang susunod na kaso

Ang ginagawa ng aksyon ay tanggihan ang isang pinagmulan, at sa mga port na nakalista lamang dito. Wala itong ginagawa laban sa attacker na nagpapalit ng address, at hindi nito maihihiwalay ang isang masamang makina sa isang carrier-grade NAT exit na pinagsasaluhan ng daan-daang user, kung saan ang isang ban ay naglalabas ng mga taong walang ginawang masama. Siguraduhing binabasa ng filter ang address na talagang taglay ng client, hindi isang forwarded header o proxy address. Panatilihing sapat na maikli ang window para mag-expire nang mag-isa ang isang pagkakamali.

Wala sa mga ito ang nangangatwiran na laktawan ang pagwawasto ng protocol; nangangatwiran ito na hawakan ang dalawang ideya nang sabay. Ang ban ay mas makitid kaysa sa ipinahihiwatig ng buod ng jail, at maging ang kumpletong ban ay mas makitid kaysa sa banta. Ilagay ang firewall chain sa tabi ng listahan ng listener ng daemon at ihambing protocol sa protocol, dahil ang dalawang listahang iyon ang nagpapasya kung maaabot ng ban ang serbisyo.

Itago ang reload command at ang listahan ng chain sa runbook sa tabi ng jail. Kakailanganin ng susunod na tao ang dalawa, at wala sa mga ito ang sasabihin sa kanya ng buod ng jail.

Kaugnay na mga artikulo