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
Pure-FTPD tymczasowe blokowanie adresu IP po n-nieudanych próbach logowania
Dziękuje - zaraz przetestuję.
Może ktoś pomoże dostosować failregex dla pure-ftpd?
Domyślnie ustawiony jest taki:
Ale on nie działa dla logów z /var/log/messages
Albo dla /var/log/auth.log:
Edycja:
Zadziałało:
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 \[.+\]$
Kod: Zaznacz cały
pure-ftpd: ([email protected]) [WARNING] Authentication failed for user [user]
Kod: Zaznacz cały
pure-ftpd: pam_unix_auth(pure-ftpd:auth): authentication failure;
Zadziałało:
Kod: Zaznacz cały
pure-ftpd(?:\[\d+\])?: (.+?@<HOST>\)) \[WARNING\] %(__errmsg)s \[.+\]$
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