BAN-HACKERS jest skryptem perlowym, który pozwala na blokowanie dostępu do serwera WWW dla potencjalnych włamywaczy.
Skrypt ten współpracuje z modułem firewalla WWW ModSecurity. Każdy adres IP przechwycony przez tego firewalla jest automatycznie dodawany do filtra "iptables" oraz do bazy danych (BD) SQLite. Ta baza również pamięta kiedy dany IP został dodany, więc po upływie określonego czasu każdy adres może zostać usunięty z BD oraz z "iptables".
Można również zdefiniować tzw "białą " listę - jej elementy nie są nigdy dodawane do BD (iptables).
Instalacja
Nota:
Zakładam, że serwer WWW działa z uprawnieniami użytkownika "apache" i że chcesz
zainstalować mój skrypt w katalogu/usr/local/apache2/bin
Pobierz skrypt ban-hackers.pl i skopiuj go do katalogu /usr/local/apache2/bin
(wersja dla Windows2K, przygotowana przez Dave'a Arrowsmitha) - zobacz Forum Apache Lounge
Jako użytkownik root
Zainstaluj moduł DBD::SQLite (przy pomocy komendy jak poniżej) cpan DBD::SQLite
Uruchom visudo i dopisz następującą linię apache ALL=(root) NOPASSWD:/sbin/iptables -I INPUT -p tcp --dport 80 -s * -j DROP
Wywołaj crontab -e i dołącz poniższą linię
MAILTO=root
# Every minute check the database for new ip# to ban
* * * * * root /usr/local/apache2/bin/ban-hackers.pl add
# Every hour purge expired entries
0 * * * * root /usr/local/apache2/bin/ban-hackers.pl purge
(Modsecurity wersja 1.9.*) Odszukaj w pliku konfiguracyjnym modułu mod_security linię zawierającą dyrektywę SecFilterDefaultAction i dołącz do jej wartości napis ,exec:/usr/local/apache2/bin/ban-hackers.pl
(Modsecurity wersja 2.*) Umieść w pliku konfiguracyjnym modułu mod_security następującą linię
SecRule RESPONSE_STATUS "^418$" "exec:/usr/local/apache2/bin/ban-hackers.pl,msg:'Address has been blocked',severity:5,phase:5"
gdzie 418 jest zdefiniowanym kodem statusu zwracanym podczas wykonywania akcji 'deny' lub 'redirect' - kod ten można zdefiniować za pomocą dyrektywy SecDefaultAction
Konfigurowanie
Domyślnie adresy IP które zostały umieszczone w BD 120 godzin temu (5 dni) lub wcześniej są usuwane z BD (iptables), o ile liczba elementów w tej bazie nie przekracza 200.
Jeśli liczba elementów jest większa, usuwane są adresy które były dodane 24 godziny temu lub wcześniej. Jeśli chcesz wyłączyć tę pierwszą możliwość, wyedytuj mój skrypt
i przypisz zmiennej $standard_period wartość 0. W celu wyłączenia drugiej z nich, przypisz zmiennej $max_elements wartość 0.
Baza danych jest przechowywana w pliku /usr/local/apache2/logs/hackers.sqlite.
Jeśli chcesz to zmienić, wyedytuj mój skrypt a następnie zmień wartość zmiennej $dbname
Jeśli chcesz zdefiniować "białą" listę, wyedytuj mój skrypt i zmodyfikuj zawartość hasza %whitelist. Każdy adres IP, który nie powinien
być umieszczany w BD (iptables) musi być kluczem w tym haszu, a klucz ten może wskazywać dowolną wartość.
Dokument modyfikowano: 27-07-24 10:47:13
[an error occurred while processing this directive]
Stanisław Polak,