piątek, 18 stycznia 2013

Zabezpieczenie przed atakiem Brute Force dla Direct Admin - Skrypt Bash cz.7


Znalezione w sieci, jak w prosty sposób zablokować adresy IP, które mogą nam utrudnić życie. Metoda ta będzie działała wraz z DirectAdmin, który będzie uruchomiony na Debianie. W drugiej części uruchomienie na Fedora/CentoOS.



1) Instalacja iptables:


apt-get install iptables








2)Skrypt blokady:


nano /usr/local/directadmin/scripts/custom/block_ip.sh

dodajemy do niego:



#!/bin/sh
curriptables(){                /sbin/iptables -nL      }
#Sprawdzamy czy IP nie jest już zablokowaneCOUNT=`grep -c $ip /etc/network/iptables.save`;if [ "$COUNT" -ne 0 ]; then        echo "$ip znajduje się w iptables ($COUNT). Nie blokuj.";        curriptables        exit 2;fi
echo "Dodawanie $ip do iptables...";/sbin/iptables -I INPUT -s $ip -j DROP/sbin/iptables-save > /etc/network/iptables.save
echo "Wynik:";curriptablesexit 0;




Nadajemy prawa do skryptu:

chmod 700 /usr/local/directadmin/scripts/custom/block_ip.sh
Skrypt będzie podpięty w Direct Admin-Brute Force Monitor, następnie klikamy na IP Info oraz IP do zablokowania. Aby iptables ładowała się po restarcie dodajemy poniższą linijkę do naszego pliku konfiguracyjnego inferfejsy (/etc/network/interfaces) dla wszystkich kart sieciowych:
post-up iptables-restore /etc/network/iptables.save
Jeżeli adresy mają być blokowane automatycznie tworzymy mały skrypt:
nano /directadmin/scripts/custom/brute_force_notice_ip.sh
dodajemy do niego:
#!/bin/shSCRIPT=/usr/local/directadmin/scripts/custom/block_ip.ship=$value $SCRIPTexit $?;
Ustawiamy prawa dostępu:
chmod 700 /usr/local/directadmin/scripts/custom/brute_force_notice_ip.sh
Możemy ustawić powiadamianie Admina o blokadzie IP. W DA przechodzimy kolejno: Direct Admin-Admin Settings-Notify Admin before block IP. Jeżeli z IP chcemy zdjąć blokadę możemy to zrobić ręcznie:
iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROPiptables-save > /etc/network/iptables.save
Lub poprzez skrypt:
#!/bin/bashunblock="/root/bash/unblock.txt"if [ -e $unblock ]; then rm $unblock fi echo -n "Ile adresow chcesz odblokowac(podaj liczbe): "read ilei=1while [ $i -le $ile ] ; doecho -n "Podaj $i adres IP:"read IPecho $IP >> $unblocki=$[ i + 1 ]done # Usuniecie IP z iptablesfor i in `cat $unblock | awk '{ print $1 }'`do iptables -D INPUT -s $i -j DROPiptables-save > /etc/network/iptables.savedone



2 komentarze:

  1. a co zrobić jeśli polecenie post-up iptables-restore /etc/network/iptables.save się nie wykonuje z powodu braku komendy post-up ?

    OdpowiedzUsuń
  2. Sprawdziłem to, faktycznie był błąd.Linijka musi być dodana do konfiguracji Twoich kart sieciowych, już to poprawiłem.
    To: post-up iptables-restore /etc/network/iptables.save dodaj do /etc/network/interfaces pod konfiguracją sieciówki, która ma wyjście na zewnątrz, bo głównie o nią chodzi.

    OdpowiedzUsuń