[+] bash - netstat, iptables i blokowanie IP
: 10 listopada 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:
a w wyniku tego otrzymuje coś takiego:
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.
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:
Kod: Zaznacz cały
netstat -plan | grep :80 | awk {'print $5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1
Kod: Zaznacz cały
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
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.