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.