Fórumok
Fail2ban véd egy email szervert. Mivel vannak, akik ritkán, de kitartóan próbálkoznak, a findtime = 86400 (egy nap), a maxretry = 5. Ez általában jól is működik, de most egy új támadó 5 órája szinte percenként próbálkozik, ám az IP címe mégsem került tiltásra.
Csak nem fogja kivárni az 1 napot a fail2ban, hogy tiltsa? A fail2ban szerint a findtime értékét csak a tiltás feloldásához használja, a tiltáshoz nem.
Van valakinek ötlete, hogy miért nem kerül blokkolásra az új IP?
Nem akarom a findtime értékét lejjebb venni, így holnapra kiderül, hogy tényleg kivárja-e az egy napot, de addig is érdekelnek az ötletek, vagy az, hogy mit rontottam/ronthattam el.
Hozzászólások
Egészen pontosan mivel próbálkozik a "támadó"?
Ha olyannal,amire nincs beállítva filter akkor nem fogja BANnolni!
Van rá állítva szűrő.
Valami konkrétumot tudnál mutatni?
Mi a jail konfigja, milyen filterek vannak erre a jailre beállítva, és mi(k) az a logsor(ok), ami(k)re úgy véled, hogy illeszkedő, de mégsem tesz semmit a fail2ban? A fail2ban-regex mond valamit rá?
A szabvány 535-ös hibás jelszóval való próbálkozás.
A minta jó, a többit meg is fogja. Ugyanilyen típusú log bejegyzéseket tiltólistára tett már vagy tízet.
A mintára illeszkednek is a bejegyzések. Ezt egy külön kis perl scripttel ellenőriztem.
A felismerendő logsorok:
Egyébként a fail2ban alapbeállítással fut. Csak néhány fix IP van fehérlistán, de nem a támadóé. A findtime és a bantime van még egyedire állítva.
Látszik, hogy bár a bejegyzés hajnali 5-kor történt, még most sincs a tiltólistán. Egyre inkább az a gyanúm, hogy holnap kerül fel rá.
Ez mit mond? (Ha nem ott van a logfile-ok, akkor a helyes útvonalakat írd be.)
A mai nap sem blokkolta az IP címet, így a teóriám megdőlt.
Néztem én is a fail2ban logjában, de nincs semmi erről az IP címről.
A második grep rendben visszaadja a próbálkozásokat: 16 sort.
Annyit elnéztem, hogy nem reggel 5 óta folyamatosan jövő támadás volt, hanem reggel 5-kor pár másodpercig tartó folyamatos támadás. Összesen 16 próbálkozással.
Mivel az egész 4 másodpercen belül lezajlott, lehet, hogy a maxretry nem a logsorok darabszámában értendő, hanem másodpercekben?
Ez logikus is lenne, ha a logsor időbélyegéhez rögzíti a támadás tényét, mert így tényleg csak 4 mintája lenne, bár összesen 16 valódi kísérlet volt.
Nem lehet,hogy mindig más felhasználó névvel próbálkozik?
Egyszer én is láttam hasonlót, de nem emlékszem pontosan.
Pedig akkor hibajegyet is terveztem feladni.
Mindig ugyanazzal a felhasználónévvel próbálkozott.
fail2ban jo otlet, de onmagaban IMHO nem elegendo.
Kiegeszitok:
- throttling a SYN csomagokra, per-ip. esetleg fail2ban-nal hazasitani. keyword: traffic shaping. Ha tenylegesen percenkent 1x tud probalkozni, maris nem erdekel senkit, hogy probalkozik. egeszsegere.
- knockd. nem feltetlen applikalhato, de pl. ssh -nal kivalo random scan-ek ellen. van olyan verzioja is, ahol specialisan formazott udp/icmp csomagban van signed/encrypted es timestamp-elt uzenet, szoval kvazi egy elo-auth.
- 2FA! manapsag mar egyre egyszerubb. persze rengeteg megoldas van ra, keresgelj. nemileg maceras usereknek, de lehet vele takarozni, hogy "industry standard" es "mindenki csinalja" meg "haladunk a korral".
Alapvetően most az a gond, hogy a fail2ban nem azt csinálja, amit kellene, és nem az.
Azóta megnéztem, és még sok másik IP címet is kihagy így a blokkolásból, pedig a minták alapján kellene.
Hányas fail2ban?
Be tudnál másolni egy olyan sort a logból, amit megfogott?
Pl.:
A verzió kimarad:
Fail2Ban v0.9.6
A legfrissebb 9.3-as debianban található változat.
Akkor ez valszeg valami bug lesz - próbáld meg a legfrissebbet, van backports a Debian Maintainer-től:
deb http://neuro.debian.net/debian-devel stretch main contrib non-free
deb-src http://neuro.debian.net/debian-devel stretch main contrib non-free
Feltelepítettem ... nem sokkal jobb a helyzet.
0.9.6 helyett 0.9.7-es verzióm lett.
A teljes logot ez sem olvassa végig, csak a legfrissebbeket találja meg, ugyanazt a 3-at, mint a régi az adatbázistörlés után.
Ez érdekes...
Semmi trüki.
Annyi trükk azért van, hogy nálad mindenütt ott a contrib non-free, nálam pedig csak az alapértelmezett main.
Toljatok mindketten egy `apt-cache policy fail2ban' parancsot, es latszani fog, ki honnan kapta es miert az adott verziot.
Ha jól látom, a kulcsszó a debian-devel.
Amúgy is fura, hogy a 9.4 a stabil verzió, mégis 9.6 van a normál tárolóban.
Nem, a debian-devel csak egy elnevezés, lehetne kiscica is ott. A kulcs maga a tároló.
Ezt a 9.4 stabil/9.6 normál dolgot nem értem... :(
Bizonyára Te jobban otthon vagy ezekben a dolgokban, de én nem hiszem, hogy a debian-devel helyett állhatna kiscica. Az egy mappa neve a neuro.debian.net szerveren, amit Te nem nevezhetsz át tetszésed szerint, és a neve arra utal, hogy fejlesztői csomagokat tartalma.
Szerintem.
Nem tudom, Neked hogyan lett debian-devel a forrásod, én a neuro oldalon kikattintgattam, hogy hogy tudom használni a tárolót, és ott nem kínált ilyen lehetőséget.
A 9.4 pedig a fail2ban saját wiki oldaláról jön:
stable: fail2ban-0.9.4
very-stable: fail2ban-0.8.14
A debianban mégis 9.6 van, nem a 9.4. Ezt sem értem.
Hello, bocs, úgy értettem, hogy a repository karbantartója dönti el, hogy mi a könyvtár neve (pontosabban az URI része), ez lehet kiscica is. Yaroslav (ő a maintainer, és ezt a backport repot is ő viszi) így döntött.
Úgy lett debian-devel tárolóm, hogy felvettem. Te is fel tudod venni a /etc/apt/sources.list fájlba, ennek a tartalmát direkt bemásoltam.
Az általad írt 9.4 helyesen 0.9.4 - csak azért pontosítok, mert nem tudtam, hogy most f2b verzióról beszélsz, vagy a Debianról (ami amúgy 9.3 még csak), vagy miről... :).
Ha jól megnézed az általd linkelt oldal alján az utolsó frissítés dátumát: 3 July 2013, at 15:28. - ez azért már picit régen volt, szerintem ezt ne vegyük alapul. :)
A Debianban (9.3) azért van 0.9.6, mert mikor a 9-es Debiant kiadták, akkor ez volt az aktuális stable kiadás fail2ban-ból, ez Debian policy. Azóta jött ki fail2ban-ból a 0.10, ez már bent van a SID-ben, lehet, hogy a testing-ben is. Ha a testing átmegy stable-be, akkor ami épp abban az időpontban stabil verzióként szerepel csomagként, az lesz a release végéig, ahhoz csak security fixek jöhetnek (kivéve a kivételek :)). A 0.9.4 pedig dezinformáció volt.
Így ok?
Igen, pár dolog tisztább.
Azt felfogtam, hogy közvetlenül is beírhatnám a sources fájlba a debian-devel tárolót, de ezt direkt nem akartam, mivel fejlesztői csomagokat nem szeretnék használni, csak stabil csomagokat.
A neuro oldalán továbbra sem ezt a forrást ajánlják, tehát azt továbbra sem értem, hogy honnan került hozzád a tároló címe, ha a hivatalos neuro oldalon nem ezt kínálják.
Persze, lehet, itt is benéztem valami dátumot?
Bár a fail2ban oldalán lehet, hogy elavult az az oldal, amit belinkeltem, de mégiscsak az az oldal van kint hivatalosan. Ez akkor azt jelenti, hogy a fail2ban a saját wikijében sem jelenít meg valós információt? Vagyis már annyira nincs mögötte fejlesztő, hogy az oldalukon megjelenő információk valósak legyenek?
Ha beírom egyszerűen csak a https://www.fail2ban.org/ címet a böngészőbe, akkor átugrik a https://www.fail2ban.org/wiki/index.php/Main_Page oldalra, ahol szintén azt mondja, kiemelt zöld alapon, hogy
stable : fail2ban-0.9.4
És ez az oldal már 2016-os, nem 2013-as.
Akkor?
Nekem úgy tűnik, hogy a stabil verzió továbbra is a 0.9.4.
Milyen url mutatja Neked, hogy a 0.9.6 vagy azóta még magasabb verzió a stabil?
azt továbbra sem értem, hogy honnan került hozzád a tároló címe
leveleztem párszor a fail2ban Debian maintainerével, Yaroslavval (a 0.8-hoz, ami már elég régóta nem támogatott, de ez volt a 8-as Debianban, írtam IPv6 támogatást), és ő maga írta, hogy ez a backports. De ez nem DEVEL!, ez backports. Az, hogy ő így hívja, hát.... ez van :).
mégiscsak az az oldal van kint hivatalosan
ezt szerintem felejtsd el... :)
azt jelenti, hogy a fail2ban a saját wikijében sem jelenít meg valós információt?
igen, kb ezt jelenti.
Vagyis már annyira nincs mögötte fejlesztő, hogy az oldalukon megjelenő információk valósak legyenek?
lehet, ha gondolod, jelentkezz, szívesen fogadnak minden segítséget...
Milyen url mutatja Neked, hogy a 0.9.6 vagy azóta még magasabb verzió a stabil?
https://github.com/fail2ban/fail2ban/releases
Mondjuk ez alapján, és az issue-k, patch-ek alapján nem úgy tűnik, mint ami mögött nincs ember. Egy dolog, hogy a Wikivel senki nem foglalkozik. Ha ez zavar, tényleg megteheted, hgy jelentkezel doksi írásra, hidd el, örülni fognak.
Van még egy olyan verzió is, hogy csinálsz saját Debian tárolót, és fordító/devel környezetet, oda mindig felteszed az aktuális forrás stable kiadását, és onnan szeded le magadnak a csomagokat. Ellenőrzött, friss... mi kell még? :)
Ok, megértettem, hogy van ugyan oldaluk, de minek.
Elfogadom a tényt, hogy a github a hivatalos forrásuk.
Ha jó lennék fejlesztőnek, akkor ki tudnám javítani a hibájukat, de a pythonhoz lövésem sincs. Próbáltam megkeresni a bugot a forrásukban, de a hideg ráz ettől a szintaxistól ... meg kellene vele barátkoznom, de annyi erővel megírom magamnak ugyanezt a szűrést.
Összességében csak ámulva figyelek, hogy ennyien használják, gyakorlatilag alternatív szoftvere sincs, mindenki ezt nyomja, mégis ennyire bugos.
Eddig tapasztalataim alapján ez olyankor szokott előfordulni, amikor én rontok el valamit, de nagyon. Most azonban hiába keresem, nem találok hibát a konfigurációmban.
Már írtam egy külön scriptet, ami ezeket az 535-ös hibákat kigyűjti, és manuálisan hozzá bannolja a többi felismerthez, de ha az exim logokat rosszul olvassa, akkor a többi logban sem bízhatok benne.
Tehát emésztek.
Köszönöm az információkat.
Csak még egy kérdés, hogy az eredeti problémát megoldjuk: sikerült feltenni a legfrissebb verziót abból a repóból, amit írtam?
Ha igen, megoldódott a probléma?
Ha nem (oldódott meg a hiba), érdemes tenni egy próbát a legfrissebb stabil verzióval, leszedni a Githubról (nem kell csomagot csinálni, csak installáld fel).
Ha az sem segít, küldj bugreportot (a Github-on), lehet, hogy pár nap, de foglalkozni fognak vele...
Hát, beállítottam az általad megadott forrást, amit úgy aposztrofáltál, hogy ebben tárolódik a friss stabil fail2ban.
Upgradel-tem volna, de a git-et is frissíteni akarta. Nem engedtem.
Feltelepítettem csak a fail2ban-t ebből a tárolóból, de már telepítés közben azt írta ki: unstable 0.10.2-1
Erős fenntartásaim vannak azzal, hogy ez stabil csomag lenne ...
Na, de majd meglátjuk, hogyan teljesít.
Sajnos a 0.10.2-1 is ugyanezt csinálja. :(
Nem tudom, bugreportban mit küldjek, mivel nem tudom, hogyan reprodukálható a hiba, mi alapján észleli az egyik sort, és hagyja ki a másikat ...
Csak ird le, hogy milyen mukodest tapasztalsz, milyen beallitasok mellett, es szerinted mi lenne a helyes elvart mukodes.
Igen, így valahogy :).
https://github.com/fail2ban/fail2ban/issues/new
Van kitöltési segédlet :).
a.
A non-free szerintem itt nem játszik, ki is törölhető.
És az apt-cache policy után mint látható a contrib-nak sincs jelentősége.
Így fél nap után az új verzióval a tapasztalat:
19 IP cím helyett jelenleg 4 IP cím van blokkolás alatt.
Továbbra is csak az IP-k egy részét blokkolja.
Ma reggel 4:36-kor 30 darab próbálkozás a 75.149.71.77 IP címről.
Nem került blokkolásra, de még csak felismerésre sem. A fail2ban logja említést sem tesz róla.
A fail2-regex kimentet a 30 kísérletre:
Vagyis mindet felismerte.
Na, ki varr erre gombot?
Akkor még egyet nézz meg. A logolást állítsd debugra (set loglevel DEBUG), és ilyen sorokat fogsz látni:
Nézd az talált sorok időpontjait, a sorszám folytonosságát stb.
A debug sem segített.
A kérdéses bejegyzések idejét sem találom a DEBUG logban.
Sorszám alatt nem tudom, mit értesz, olyan adatot nem találtam.
Az új verzió exim filter mintái eltérnek az előző verzió mintáitól, de úgy látszik, nem ezzel van probléma.
"Sorszám alatt nem tudom, mit értesz, olyan adatot nem találtam."
A "Total # of detected failures:" után következő darabszámot, annak ugye elvileg folytonosnak kell lennie.
Ilyet:
Nem nagyon van több tippem.
A findtime értéke által definiált időszeletben nézi a f2b hogy megvolt-e maxretry darab sikertelen login próbálkozás. Ha megvolt blokkolja a bantime-ban megadott időre az IP-t.
Ha pontosan egy nap a findtime és 4 a maxretry akkor egy napon belül 4 próbálkozás bannoláshoz kéne hogy vezessen.
Findtime növelés kéne, pld 4 napra. Mennyi a bantime?
Illetve maxretry le 3-ra.
Amit feljebb írsz hogy 16 próbálkozás 4 darab egyezést eredményezetz akkor a válasz az hogy nem érte el a nálad beállított 5 maxretry határt.
A fail2ban wikije alapján a findtime:
The counter is set to zero if no match is found within "findtime" seconds.
Vagyis nem a próbálkozások számolásához, hanem a nullázáshoz használja.
Ma például 10:14-től 10:20-ig 234 próbálkozás volt, 2-3 másodpercenként, azonos usernévvel a 180.118.242.127 IP címről.
Egy logsor ebből:
A fail2ban logjában 0 bejegyzés tartozik ehhez az IP címhez. Nem is blokkolta.
A bantime 604800 ( 1 hét ).
A findtime értékét lecsökkentettem 21600-ra ( 6 óra ).
Eközben pedig sorban fogja meg az új próbálkozásokat is, mint amilyen a következő logsor:
Az eredeti 87.98.226.111 IP címet pedig 14-e óta nem tiltotta le, és nem is került be a fail2ban logjába, pedig arról összesen 378 próbálkozás történt azonos felhasználónévvel.
Csak egy tipp. Ilyenbe még nem futottam bele.
(ylmf-pc) vs. (vtVI8Gf362)
Nem lehet, hogy az elsőben lévő - jellel van problémája?
Nekem eleve úgy van megcsinálva a dolog, hogy a log tartalmát átviszem egy másik fájlba, ahol csak az idő, az ip és a hibaüzenet van feltüntetve, azt olvasgatja a f2b.
--
openSUSE 42.2 x86_64
Igen, nekem is feltűnt, de a legfrissebb például ilyen:
Ilyenbő ma 02:12-től 14:11-ig összesen 56 sor volt.
Mi a fail2ban-regex kimenete? Nézd meg stringként a logbejegyzés rendes (nem kicsillagozott) sorával is, és akár megnézheted a teljes logfile-lal is.
Ilyenkor fail2ban-regex-szel tesztelem, hogy illik-e rá a szűrő:
https://linux.die.net/man/1/fail2ban-regex
fail2ban-regex OPTIONS LOG REGEX
- rendszerint alkalmazom a még a print-all-missed és a print-all-matched opciót, ha sok a log, akkor pipe-olva a uniq-ba.
--print-all-missed
Print all missed lines
--print-all-ignored
Print all ignored lines
--print-all-matched
Print all matched lines
Érdemes még megnézni, hogy nincs-e véletlenül benne a whitelist-ban? És hogy a fail2ban mit log-ol? Mert ha azt logolja, hogy ban-olná, de már szerinte ban-olva is van és mégis tud jönni, akkor lehet, hogy az action nem jó és mégsem adja hozzá a megfelelő szabályt. És akkor ránéznék az iptables szabályokra. Illetve ipset-tel oldom meg, ezért a megfelelő ipset-et megnézem. Meg hogy a fail2ban log alapján egyáltalán felismeri-e, mint nem kívánatos tevékenység?
Üdv:
Dw.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Na, ez egyre izgalmasabb!
A következő parancs kimente ugyanis gyakorlatilag üres volt:
A kimenetben pedig: "Ignoreregex: 0 total" szerepel.
Vagyis a saját mintája alapján minden "Incorrect authentication data" logbejegyzést megtalált.
Egyébként sem fehérlistán nincsenek a keresett IP-k, sem a fail2ban saját logjában nem tesz róluk említést, azaz fel sem ismeri.
Hát akkor illeszkedik a minta. Fail2ban mit log-ol? Próbálja ban-olni? Illetve bele került az iptables-be?
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Én is találkoztam ilyen jelenséggel (Ubuntu 14.04, fail2ban v0.8.11-1), megoldást egyelőre nem találtam. Egyelőre még csak zavaró, de nem kritikus mértékű a probléma. Majd írok helyette saját megoldást.
Én is elkezdtem gondolkozni egy saját változat elkészítésén.
[off]
Milyen érdekes, hogy még a legjobbindulatú szoftvereknek is ez a fejlődéstörténete. Kezdődik egy hasznos, jó kis funkcióval, fejlődik, egyre többet tud, és a végén már az alap funkcióit sem biztosítja stabilan ...
[/off]
Nemrég hasonlóan jártam, és már az összes létező debug módszerrel próbálkoztam sikertelenül.
A megoldás nálam az volt, hogy a fail2ban saját sqlite3 adatbázis fileját töröltem, és fail2ban restart.
Ez jó ötlet!
Kipróbáltam, és meglepve látom, hogy az újraindítás után nem olvassa újra az össze meglévő logot. Legalábbis előtte már 19 IP-t blokkolt az exim logjai alapján, utána meg csak 3-at.
Az azért a javára írható, hogy ez az új 3 IP cím nem szerepelt az előzőleg blokkolt 19 régiben.
Lehet, az egész problémának köze van a dbpurgeage paraméterhez, ami nálam szintén 1 nap volt?
Felemeltem két hétre, töröltem az adatbázist, de így sem talál meg több IP címet. Marad az új 3, a régi 19 meg feledve.
Így legalább egyre valószínűbb, hogy ez egy bug.
Én azt gondolom, hogy ha törlöd a fail2ban saját DB-jét, akkor utána amikor a logfilet újraolvassa, akkor csak az adott jailhez megadott "findtime+bantime" ideig fog visszaolvasni. Miért is olvasná vissza az egész logot restartnál, hiszen pont azért építi a saját DB-jét, hogy ezt ne kelljen megtennie. Tehát, ha a korábban talált IP-ket továbbra is bannolni szeretnéd, akkor azokat ki kell parseolni a logból, és manuálisan bannolni.
Sajnos messze nem. Nálam a bantime talán egy hét volt ... már nem tudom. De végül uninstall lett a fail2ban sorsa, így már ki sem fog derülni.