HOWTO fail2ban 0.7.x pl
Contents
HowTo test the new development branch
For quite a long time now, a new branch is in development. This is almost a complete rewrite with a lot of new features and a better design. There is still a lot of work but this new branch is already functional and can be tested.
This HowTo will not delete or modify your current Fail2ban setup. You only have to turn off any previous version during the tests.
Getting the sources
There is two ways of getting the sources:
There is no official release of the 0.7 branch (trunk) yet. The best way for getting the sources is Subversion. The instructions are available here but here is a quick reminder:
svn co https://svn.sourceforge.net/svnroot/fail2ban/trunk fail2ban-trunk
Źródła są teraz odstępne w katalogu (directory) fail2ban-trunk. Jeśli się zdecydujesz, żeby użyć tarball (zakładam, że to jakiś program, czy cuś), po prostu uruchom:
tar xvfj fail2ban-nightly.tar.bz2
You should have a directory called fail2ban-0.7.5-SVN.
Change your current directory to fail2ban-trunk or fail2ban-0.7.5-SVN.
Setup
Folder konfiguracyjny powinien wyglądać w ten sposób:
config/ |-- action.d | |-- dummy.conf | |-- foo.conf | |-- hostsdeny.conf | |-- iptables.conf | |-- mail-whois.conf | `-- mail.conf |-- fail2ban.conf |-- filter.d | |-- apache-auth.conf | |-- sshd.conf | `-- vsftpd.conf `-- jail.conf
Najważnieszym plikiem jest prawdopodobnie jail.conf. Zawieta definicję twoich więzień. Więzienia to kombinacja jednego filtra i jednej lub kilku czynności. Więcej informacji o pomyśle więzienia dostępnych jest tutaj. Możesz wyczyścić pliki konfiguracyjne używając pliku .local. Na przykład config/fail2ban.local czyści ustawienia w config/fail2ban.conf.
W tym tutorialu będziemy ustawiać konfigurację podobną do tej, jaką wykonują poprzednie wersje: analiza logów SSH, banowanie hostów używających tablic ip (?) i wysyłanie maili z powiadomieniami.
Setup filtra SSH
Podstawowe ustawienie filtra SSH nie powinno wymagać zbyt wielu zmian. Możesz zaadoptować standardowe ustawienia do własnych potrzeb. Proponuję, żebyć użył fail2ban-regex. To takie małe urządzenie, które pozwoli ci sprawdzić własne wyrażenia (expression?).
./fail2ban-regex "1157520814 rblsmtpd: 212.53.135.257 pid 19597 sbl-xbl.test.org: 451 http://www.test.org/query/bl? ip=212.53.135.257" "(?:[\d,.] [\d,.] rblsmtpd: |421 badiprbl: ip)(?P<host>\S*)" Success, the following data were found: Date: Wed Sep 06 06:33:34 2006 IP : 212.53.135.257 Date template hits: 0 hit: Month Day Hour:Minute:Second 0 hit: Weekday Month Day Hour:Minute:Second Year 0 hit: TAI64N 1 hit: Epoch Benchmark. Executing 1000... Performance Avg: 0.089841365814208984 ms Max: 4.3938159942626953 ms (Run 175) Min: 0.073909759521484375 ms (Run 914)
Ustawienia działania tablic ip
Skrypt tablic ip powinien być w porządku. Jednakże, niektóre rzeczy muszą być ustawione w config/jail.conf
Ustawienia jail.conf
Możemy teraz ustawić pierwsze własne więzienie. Nie musimy zmieniać niczego w config/filter.d/sshd.conf lub config/action.d/iptables.conf. Jest to całkiem przydatne, kiedy upgradee'ujesz lub jeśli chcesz zapisać własne zmiany. Zaadaptuj wartość logpath do wskazywania na twój plik loga daemon SSH i ustaw bantime na 600 (10 min).
Od wersji 0.7.4, fail2ban może obserwować kilka plików w jednym więzieniu, a logpath używa również wildcards (dzikich kart?). Na przykład możesz wstawić:
[ssh] enabled = true filter = sshd action = iptables[name=ssh,port=22,protocol=tcp] mail[name=SSH,dest=toto@titi.com] logpath = /var/log/pwdfail/current bantime = 600 maxretry = 3
Since 0.7.3, Fail2ban can watch several files in one jail and logpath supports wildcards. For example, you can put:
logpath = /home/www/*/error_log
Opcja filter jest nazwą pliku w config/filter.d bez rozszerzenia .conf. Pole action jest bardzie interesujące. Teraz, ustawimy jako pierwszą akcję skrypt iptables. Skrypt akcji może mieć kilka parametrów. Popatrz na config/action.d/iptables.conf. Pamiętaj, że nie można używać spacji w polu parametrów. Będzie to naprawione w przyszłości. Określmy kolejną akcję. Wyśle maila z informacją. Po prostu zmień parametr dest na swój adres e-mail. Bądź świadom, że skrypt mail używa komendy mail w twoim systemie (coś jak mailto: w kodzie html). Upewnij się, że ta komenda działa w twojej skrzynce.
Już istnieje kilka wzorów więzień w jail.conf. Powinny ci pomóc w tworzeniu własnych więzień.
Klient/Serwer
Fail2ban składa się teraz z dwóch elementów: serwera i klienta. Serwer monitoruje złącze (?) i czeka na komendy. Monitoruje pliki log i wykonuje akcje. Część klienta jest używana do komunikacji z serwerem. Konwertuje ustawienia config/ na komendy, które są wysyłane na serwer za pomocą złącza unixowego. W tym tutorialu, będziesz potrzebował dostępu do drzewa. Nie jest to konieczne do testowania, ale będziesz musiał mieć dostęp do tablic ip w większości systemów. Najpierw spróboujemy przetestować, czy adres konfiguracji może być poprawnie zanalizowany. Jeśli nie masz adresu /etc/fail2ban z plikami konfiguracyjnymi, użyj opcji -c by podać swój folder konfiguracji. Odpala następującą komendę:
# ./fail2ban-client -c ./config -d
lub
# fail2ban-client -d
Sprawdź, czy nie ma żadnych wyjątków. Powinieneś mieć dużo czegoś takiego:
['set', 'loglevel', 3] ['set', 'logtarget', 'STDERR'] ['add', 'ssh'] ['set', 'ssh', 'bantime', 600] ['set', 'ssh', 'logpath', '/var/log/pwdfail/current'] ['set', 'ssh', 'maxretry', 3]
To są komendy, które zostaną wysłane na serwer. Możesz je wysyłać ręcznie za pomocą:
# ./fail2ban-client set loglevel 3
Ale mogłoby być to trochę irytujące. Cała konfiguracja jest automatycznie wysyłana na początku na serwer. Więc czas, żeby ją zacząć:
# ./fail2ban-client start
Serwer powinien teraz zacząć monitorować plik log. Zerknij na terminal serwera. Jeśli nie zobaczysz niczego, wyjście (output?) może być przekierowane do loga /var/log/fail2ban.log. Możesz to zmienić w config/fail2ban.conf lub, lepiej, stworzyć własny config/fail2ban.local. Możesz zmienić to na bieżąco za pomocą:
# ./fail2ban-client set logtarget STDERR
All of this without restarting the server which is carefully watching your log files during the operation. Mmmmhhh... Three retries are a bit too agressive? Change the setting with:
# ./fail2ban-client set ssh maxretry 5
i wszystko bez restartowania serwera, który uważnie przegląda twoje pliki log podczas działania. Mmmm... te ponowienia prób są trochę zbyt agresywne? Zmień ustawienia za pomocą następującej komendy:
# ./fail2ban-client status ssh Status for the jail: ssh |- filter | |- Currently failed: 0 | `- Total failed: 37 `- action |- Currently banned: 1 `- Total banned: 12
Możesz zatrzymać serwer za pomocą następującej komendy:
# ./fail2ban-client stop
Możesz również wpisać wszystkie poprzednie komendy w trybie interaktywnym. Po prostu odpal:
# ./fail2ban-client -i
Zostaniesz poinformowany obszarem, gdzie możesz bezpośrednio wpisać poprzednie komendy bez konieczności przywoływania fail2ban-client za każdym razem.
# ./fail2ban-client -i Fail2Ban v0.7.2 reads log file that contains password failure report and bans the corresponding IP addresses using firewall rules. fail2ban> status Status |- Number of jail: 1 `- Jail list: ssh-iptables fail2ban>
Jeśli chcesz pomocy w programowaniu Pythona, dokumentacji itd., nie wahaj się kontaktować ze mną.
Tłumaczenie: f!eld