HOWTO fail2ban 0.7.x pl

From Fail2ban
Jump to: navigation, search

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