ipset?
amúgy a fail2ban "megoldása" is jó lehet neked.... mármint nem feltétlen fail2ban loganalizálás alapú iptables szabálylétrehozás automatikusan, hanem az, hogy iptables lánc elejére fűzöl egy match-et, amit eldobsz egy saját új láncra ahol szépen pakolod be a banned ip-ket..
pl:
# új lánc létregozása:
iptables -N blokkolt_lista
# új láncban ha nincs illeszkedés dobja vissza a főláncba és folytassa a tűzfalszabályok további illeszkedését:
iptables -A blokkolt_lista -j RETURN
# ez a szabály az INPUT táblából minden 22,443,80 -as portú forgalmat belepattint a saját láncra (persze itt lehet tovább finomítani a MATCH-et NEW,RELATED,ESTABLISHED -re stb)
iptables -I INPUT -p tcp -m multiport --dports 22,443,80 -j blokkolt_lista
# a scripted pedig "csak" pakolja a listába:
iptables -I blokkolt_lista -s 1.2.3.4/32 -j DROP
#fentiek alapján működik a fail2ban is, csak a listába pakolást logelemzéssel végzi...
az ipset azért elegánsabb mert akár több szerveren átívelő közös listát is lehet csinálni, illetve gyorsabb a matchelése, mert a listának adhatsz "típust" hogy pl ipv4 címeket tárolsz benne csak és kizárólag valamint lehet időt megadni, hogy meddig legyen a listába (bár Kadlacsik Józsi többet tudna mesélni erről, de úgy körvonalakban). Nézz utána.
Nem hiszem, hogy a forgalmon észreveszed (ipset-es esetben biztos vagyok benne hogy nem, mert gigabitre tervezték... de a fail2ban jellegű esetben is mivel return-al visszaugrik és nem vegyes matching van a saját láncban, hanem csak source ip+drop valamint párhuzamos láncon /nem a fő láncban/ ezért elhanyagolható, hogy a láncra ráterelsz related,established forgalmat is... )