Tuesday, October 19, 2010

Aktualizacja ips_outline.py

Parę dni temu otrzymałem prywatną wiadomość z prośbą o pomoc w ustawianiu mojego IPS-a do poprawnego wykrywania logu:
imapd: LOGIN FAILED, user=***@***, ip=[::ffff:adres_ip]
Skrypt opisałem wcześniej można go pobrać ze strony projektu: http://code.google.com/p/ipsoutline/

Przypomnę składnię:

name;;find1,find2,NULL;;key1,between1,between2;key2,between1,between2;;iptables rule param param;1,2;N;time

W tym przypadku poprawna reguła powinna wyglądać następująco:

imapd_auth;;imapd,LOGIN FAILED,NULL;;ip=[::ffff,:,];;iptables -A INPUT -s param -j ACCEPT;1;1;00:01:00

Kluczem jest ip=[::ffff, a jego wartość zawiera się między :, a ].
Przy określeniu takiej składni na jaw wyszedł pewien błąd, który poprawiłem. Wyjaśnić należy jeszcze, że klucz może mieć dowolną długość, ale ograniczniki szukanej wartości (muszą znajdować się po kluczu) muszą być pojedynczymi znakami (tak zostało to napisane, ale oczywiście można by to zmienić).

Ponadto padł pomysł, aby dodać powiadamianie na e-maila. Pomysł fajny, więc i zrealizowany.
Swój adres e-mail należy wpisać w liniach 178 (dla wpisów istniejących) oraz 191 (dla wpisów nowych). Nie polecam używania powiadomienia dla istniejących wpisów, może to generować bardzo wiele zbędnych wiadomości.

Warto również wspomnieć o pewnej właściwości, o której chyba nie wspominałem we wcześniejszych wpisach. Spójrzmy na regułę ips-a:

sshd;;sshd,Failed password,NULL;;from, , ;port, , ;;iptables -I INPUT 3 -s param -j DROP;1;3;00:01:00


Zaznaczony kod (reguła iptables) będzie wykonana tak jak każda inna w terminalu. Tak więc nic nie stoi na przeszkodzie, aby na jej końcu dodać operator && i dopisać zupełnie inną komendę, która zostanie wykonana, bądź też wykonać cały skrypt.