Pure-FTPD tymczasowe blokowanie adresu IP po n-nieudanych próbach logowania

Konfiguracja serwerów, usług, itp.
Jarod
Beginner
Posty: 116
Rejestracja: 31 maja 2010, 17:46

Pure-FTPD tymczasowe blokowanie adresu IP po n-nieudanych próbach logowania

Post autor: Jarod »

Cześć.
ftp wystawiony na świat, około 10 kont dla +1000 użytkowników. Musi działać na standardowym porcie (zmiana portu byłaby rozwiązaniem, ale nie mogę tego zrobić z określonych powodów, podobnie zmiana haseł co jakiś czas w moim przypadku nie wchodzi w grę).

Chciałbym uzyskać taki efekt:
Z określonego IP po np. 5 nieudanych próbach logowania, dany adres jest blokowany na określoną ilość sekund (blokowany tzn. nie odrzucany na firewallu ale od czasu nawiązania połączenia z ftp do monitu o login i hasło mija określona ilość sekund).

Cel - walka z różnego rodzaju botami, które próbują złamać hasła
Awatar użytkownika
turox
Posty: 49
Rejestracja: 19 września 2010, 15:40
Lokalizacja: Tychy

Post autor: turox »

Jarod
Beginner
Posty: 116
Rejestracja: 31 maja 2010, 17:46

Post autor: Jarod »

Dziękuje - zaraz przetestuję.
Jarod
Beginner
Posty: 116
Rejestracja: 31 maja 2010, 17:46

Post autor: Jarod »

Dziękuje - zaraz przetestuję.

Może ktoś pomoże dostosować failregex dla pure-ftpd?

Domyślnie ustawiony jest taki:

Kod: Zaznacz cały

failregex = pure-ftpd(?:\[\d+\])?: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$
Ale on nie działa dla logów z /var/log/messages

Kod: Zaznacz cały

pure-ftpd: ([email protected]) [WARNING] Authentication failed for user [user]
Albo dla /var/log/auth.log:

Kod: Zaznacz cały

pure-ftpd: pam_unix_auth(pure-ftpd:auth): authentication failure;
Edycja:
Zadziałało:

Kod: Zaznacz cały

pure-ftpd(?:\[\d+\])?: (.+?@<HOST>\)) \[WARNING\] %(__errmsg)s \[.+\]$
fair
Posty: 21
Rejestracja: 16 listopada 2008, 17:06
Lokalizacja: Wrocław

Post autor: fair »

Można również skorzystać z prostszego rozwiązania

Kod: Zaznacz cały

$IPTABLES -N ftp_blocked
$IPTABLES -A ftp_blocked -m recent --name pure-ftpd --rcheck --hitcount 5 --seconds 120 -j REJECT --reject-with icmp-host-unreachable
$IPTABLES -A ftp_blocked -m recent --name pure-ftpd --update
$IPTABLES -A ftp_blocked -m recent --name pure-ftpd --rcheck -j ACCEPT
$IPTABLES -A ftp_blocked -m recent --name pure-ftpd --set
$IPTABLES -A ftp_blocked -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 --syn -m state --state NEW -j ftp_blocked
ODPOWIEDZ