Sziasztok!
A fail2ban nem ismeri fel a proftp-t.
A megoldás ott lesz, hogy jól kell bekonfigutálni a /etc/fail2ban/filter.d/proftpd.conf fájlt (de valahogy nekem nem jön össze).
Ezen belül is a failregex-et.
proftpd.conf eredeti tartalma:
failregex =
\(\S+\[\]\)[: -]+ USER \S+: no such user found from \S+ \[\S+\] to \S+:\S+ *$
\(\S+\[\]\)[: -]+ USER \S+ \(Login failed\): .*$
\(\S+\[\]\)[: -]+ SECURITY VIOLATION: \S+ login attempted\. *$
\(\S+\[\]\)[: -]+ Maximum login attempts \(\d+\) exceeded *$
A proftpd log tartalma sikertelen belépésnél a következő:
jún 16 01:07:45 kkk proftpd[11673] 127.0.1.1 (xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx]): USER valami.hu (Login failed): No such user found.
jún 16 01:33:46 kkk proftpd[12053] 127.0.1.1 (xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx]): USER valami: no such user found from xxx.xxx.xxx.xxx [xxx.xxx.xxx.xxx] to yyy.yyy.yyy.yyy:21
Előre is köszönöm a segítséget!
Hozzászólások
Triviális kérdés, de azért tisztázzuk a legelején. Ugye a fail2ban konfigjában beállítottad a ProFTPD logjának figyelését? Mert alapesetben - a csomag telepítésével - csak az SSH van engedélyezve. Ha engedélyezettre állítottad, működnie kell (a regexpet nem kell módosítani hozzá, mert valóban illeszkedik). Ha ennek ellenére mégsem működik, akkor a szokásos minimum információkat írd le, légy szíves: milyen release, milyen fail2ban verzió, releváns konfigok, logok, hány próbát tettél stb.
Igen természetesen beállítottam:
Verzió: Fail2ban v0.8.4
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
#logpath = /var/log/auth.log
maxretry = 3
Volt egy olyan kísérletem is, hogy egy alternatív logot hozok lére a Proftpd-vel:
ExtendedLog /var/log/proftpd/auth.log AUTH auth
LogFormat auth "%v %t \"%r\" [%h] %s"
És a /etc/fail2ban/filter.d/proftpd.conf failregex-t átírom a következőre:
failregex = \[\]\s+530$
A fail2ban logjában látom a proftpd-t:
2013-06-16 06:25:10,167 fail2ban.filter : INFO Log rotation detected for /var/log/proftpd/proftpd.log
Próbák száma végtelen:D
u.i.: SSH tiltása jól működik.
Tehát még Squeeze. Feltettem egy Squeeze-re, és hogy teljesen megegyezzen a konfig a tiéddel, a fail2ban konfigjában a tiedéhez hasonlóan átírtam a default 6-ról 3-ra a maxretry értékét. Ezután kipróbáltam, és megfelelőeen működik:
A fail2ban logban látszik, hogy követi a proftpd logját:
Egy távoli gépről:
és még kétszer, a maxretry-nak megfelelően.
/var/log/proftpd/proftpd.log:
/var/log/fail2ban.log:
A tiltás is életbe lépett:
Viszont nem jó az a kísérleted, amikor azt írtad, hogy: "És a /etc/fail2ban/filter.d/proftpd.conf failregex-t átírom a következőre: failregex = \[\]\s+530$". Mert a log sorvége nem teljesen az általad felírt mintának megfelelő, ami: "[]" + egy vagy több whitespace + "530". Kimaradt belőle a kliens neve. Helyette a '\[\S+\]\s+530$' már jó lehetne.
Még egy kérdés: ugye nem 127.0.0.1-ről (pontosabban "ignoreip"-s címről) jövő kérésekkel nézed?
Nem a 127.0.0.1 címről nézem, hanem külső IP-ről.
SSH, postfix, couriersmtp simán tilt!
De az FTP-t nem veszi figyelembe.
/var/log/fail2ban.log
2013-06-16 13:11:51,447 fail2ban.jail : INFO Creating new jail 'proftpd'
2013-06-16 13:11:51,447 fail2ban.jail : INFO Jail 'proftpd' uses poller
2013-06-16 13:11:51,447 fail2ban.filter : INFO Added logfile = /var/log/proftpd/proftpd.log
2013-06-16 13:11:51,447 fail2ban.filter : INFO Set maxRetry = 3
2013-06-16 13:11:51,448 fail2ban.filter : INFO Set findtime = 600
2013-06-16 13:11:51,448 fail2ban.actions: INFO Set banTime = 6000
2013-06-16 13:11:51,464 fail2ban.jail : INFO Jail 'proftpd' started
Log készítése proftpd-ben
/etc/proftpd/proftpd.conf
SystemLog /var/log/proftpd/proftpd.log
Iptables:
Chain fail2ban-proftpd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
A fail2ban loglevelt megemelve debugra mit látsz a fail2ban.log-ban? Látszik, hogy észreveszi a proftpd.log módosulását? Látszik, hogy megtalálja benne a kliens IP-jét? Mit mond a "fail2ban-client status proftpd"?
Megemeltem debugra.
Nem látja a próbálkozásokat a fail2ban pedig a log-ban benne van:(
fail2ban-client status proftpd
Status for the jail: proftpd
|- filter
| |- File list: /var/log/proftpd/proftpd.log
| |- Currently failed: 0
| `- Total failed: 0
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 0
De a log módosulását sem veszi észre? Így néz ki normál esetben, benne a "DEBUG /var/log/proftpd/proftpd.log has been modified" sorokkal (ill. az auth.log-ra hasonlóan), a végén pedig ban, és az iptables parancsok, valamint azok sikeressége.
Konfigmódosítás után szokott lenni restart vagy reload? Most csomaggal szállított regexp van beállítva filterként?
Mert annak illeszkednie kell:
Lehet dátum formátum miatt van? Hogy lehet orvosolni?
fail2ban.log
2013-06-16 15:25:29,247 fail2ban.filter : DEBUG Found a match for ' aaa proftpd[24406] 127.0.1.1 (xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx]): USER valami.hu (Login failed): No such user found.
' but no valid date/time found for 'jún 16 15:25:28'. Please contact the author in order to get support for this format
2013-06-16 15:25:29,247 fail2ban.filter : DEBUG Found a match for ' aaa proftpd[24406] 127.0.1.1 (xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx]): USER valami.hu (Login failed): No such user found.
' but no valid date/time found for 'jún 16 15:25:28'. Please contact the author in order to get support for this format
Úgy tűnik, a Squeeze-ben lévő fail2ban nincs felkészítve a más locale szerinti dátum mező értelmezésére. Van is róla jegy: #648324. A 0.8.6-1 verzióban javították, azaz a Wheezy-ben már menni fog rendesen. Ha valamiért még nem akarsz upgrade-elni, akkor a proftpd-re, vagy akár a teljes rendszerre állítsd vissza locale-t pl. C-re. Vagy - mivel az SSH megy -, meg lehet nézni a syslogon keresztüli logolást is.
Köszönöm a segítséget!
Leírom hátha valakinek kelleni fog.
Következő képen oldattam meg:
dpkg-reconfigure locales paranccsal felraktam a LANG=en_US.UTF-8 nyelvi csomagot.
/etc/default/proftpd pedig bedobtam egy sort: export LANG=en_US.UTF-8
Ez a tipp segített most nekem egy hasonló probléma megoldásában. Köszönöm!
Készítettem egy virtuális debian-t és azon működik a fail2ban.