|
[+] bash - netstat, iptables i blokowanie IP
wspo - 10-11-2008 10:44
Jako, że jestem tu nowy witam wszystkich. Od pewnego czasu usiłuje napisać prosty skrypcik ale jak się okazało przerósł on moje możliwości więc prosiłbym o małą pomoc. Sprawa wygląda następująco: Skrypt ma mieć za zadanie sprawdzenie liczby połączeń do serwera apache z poszczególnych IP. Używam do tego polecenia:
netstat -plan | grep :80 | awk {'print $5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1
a w wyniku tego otrzymuje coś takiego: 1 0.0.0.0 1 83.24.xx.xx 1 85.202.xx.xx 1 89.238.xx.xx 2 78.88.xx.xx 2 81.15.xx.xx 2 83.21.xx.xx 2 85.193.xx.xx 2 88.220.xx.xx 2 89.238.xx.xx 2 93.105.xx.xx 4 83.1.xx.xx 4 83.27.xx.xx 6 85.198.xx.xx
xx - ocenzurowałem IP
I teraz pytanie. Jak napisać skrypt aby w przypadku gdy liczba połączeń z jakiegoś IP przekroczy na przykład wartość 50 (kolumna po lewej stronie) banował adres IP, który ustanowił nadmierną ilość połączeń do apache i tym samym zapycha serwer.
P.S: Banować za pomocą iptables umiem. Mógłbym zabezpieczyć apache na przykład instalując mod-evasive no ale używam Debiana 4.0 Etch, dla którego ten mod coś nie chce mi śmigać. Wiem, że taki skrypt nie jest najlepszym rozwiązaniem jeśli chodzi o bezpieczeństwo apache no ale ciekawi mnie jak w ogóle zabrać się za pisanie takiego skryptu. Jeśli ktoś by był na tyle dobry, aby zechciało się mu napisać gotowy skrypt bardzo byłbym wdzięczny.
salmon - 10-11-2008 11:30
tak na szybko to dodaj na końcu filtrowanie:
awk '$1> 50{print $2}'
i masz tylko te do zbanowania.
A tak w ogóle to chyba fail2ban już coś takiego robi, możesz się nim zainteresować.
wspo - 10-11-2008 21:31
Dzięki bardzo mi pomogłeś.
maxblink - 04-12-2008 06:41
Wie ktoś może jak na przykład zrobić taką listę ale połączeń z moim pc, przez port np.: 6112?
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|