luni, 31 octombrie 2011

Vor sa intre strainii la voi in casa? Trantiti-le usa in nas.

Daca va uitati prin loguri (sau chiar daca nu va uitati) sa stiti ca permanent serverul/desktopul dvs. este supus atacurilor. Majoritatea lor vin din China, Rusia, Ukraina dar si din Germania,SUA.Franta, etc.
Pentru ca sa restrangeti cat mai mult posibilitatea unei intruziuni puteti instala pachetul xtables cu ajutorul caruia puteti bloca anumite tari. Spre exemplu stiti ca nu veti pleca in strainatate ca sa va conectati prin SSH. Nimic mai simplu decat sa blocati accesul prin SSH tuturor tarilor in afara de Romania. Si posibilitatile de folosire sunt cu mult mai multe dar vi le voi prezenta la sfarsit prin exemple. Trebuie sa stiti insa ca Ubuntu nu are un suport prea grozav pentru xtables, asa ca oricat am incercat, instalarea de mai jos functioneaza numai pentru Ubuntu 10.04 Lucid Lynx. Solutia pe care am adoptat-o este un amalgam. Instalez pachetele suportate de Ubuntu (xtables-addons-1.21) iar pentru descarcarea, actualizarea si conversia bazei de date cu IP-urile tarilor folosesc doua executabile dintr-o versiune nesuportata inca de Ubuntu (xtables-addons-1.30). Va asigur insa ca veti avea totul perfect functional. Iar baza de date va fi actualizata automat lunar cu ajutorul lui cron.
Dar sa incepem cu instalarea.
Copiati continutul scriptului de mai jos intr-un fisier numit xtables ( sau descarcati-l de <<< AICI >>>), il puneti pe server/desktop intr-un folder (de exemplu /home) , il faceti executabil cu comanda
sudo chmod +x /home/xtables
si il lansati in executie cu comanda
sudo /home/xtables
Instalarea dureaza aproximativ 2 minute.
Acesta este scriptul:


#!/bin/bash

# verific versiunea de ubuntu care trebuie sa fie 10.04 Lucid Lynx
versiune=$(lsb_release -c | awk '{print $2}')
case $versiune in
        lucid)
                echo "Folositi Ubuntu 10.04 Lucid Lynx. Incepe instalarea aplicatiei xtables..."
                ;;
        *)
                echo "Actualul script de instalare nu suporta decat Ubuntu 10.04 Lucid Lynx"
                echo "Instalatea a esuat..."
                exit 1
                ;;
esac
sudo apt-get update
sudo aptitude -y install iptables iptables-dev
sudo apt-get -y install kernel-package
sudo aptitude -y install build-essential
sudo aptitude -y install module-assistant
sudo module-assistant prepare
sudo module-assistant auto-install xtables-addons-source
sudo aptitude -y install xtables-addons-common
sudo aptitude -y install libtext-csv-xs-perl gzip unzip
# descarc xtables-addons versiunea 1.30 care ofera fisierele necesare pentru download si conversie baza date tari
wget -O /usr/src/xtables-addons.tar.xz  http://sourceforge.net/projects/xtables-addons/files/Xtables-addons/1.30/xtables-addons-1.30.tar.xz/download
cd /usr/src/
tar xf /usr/src/xtables-addons.tar.xz
# copiez fisierele geoip_build_db.pl si geoip_download.sh
mkdir /etc/xtables
cp /usr/src/xtables-addons-1.30/geoip/geoip_build_db.pl /etc/xtables/geoip_build_db.pl
cp /usr/src/xtables-addons-1.30/geoip/geoip_download.sh /etc/xtables/geoip_download.sh
# sterg arhiva si folderul in care s-a facut dezarhivarea
rm -rf /usr/src/xtables-addons-1.30
rm /usr/src/xtables-addons.tar.xz
# creez directorul unde va fi cautata baza de date
mkdir /var/geoip
mkdir /var/geoip/LE
cd /etc/xtables
# descarc baza de date in format csv
/etc/xtables/geoip_download.sh
/etc/xtables/geoip_build_db.pl -D /var/geoip/LE *.csv
# creez fisierul executabil care va face in fiecare luna update la baza de date cu IP-urile tarilor
echo -e "#!/bin/bash
cd /etc/xtables
# descarc baza de date in format csv
rm /etc/xtables/GeoIPCountryWhois.csv
rm /etc/xtables/GeoIPv6.csv
rm /etc/xtables/GeoIPCountryCSV.zip
/etc/xtables/geoip_download.sh
/etc/xtables/geoip_build_db.pl -D /var/geoip/LE *.csv" > /etc/cron.monthly/geoip_xptables

sudo chown -R root:root /etc/cron.monthly/geoip_xptables
chmod +x "/etc/cron.monthly/geoip_xptables"
chmod 755 /etc/cron.monthly/geoip_xptables


Acum avem instalat xtables. Insa trebuie sa-l folosim. Pasii pe care-i vom urma sunt aceiasi pentru orice firewall bazat pe iptables.
Descarcati de <<< AICI >>> fisierul numit firewall pe care il copiati in /etc/init.d/ .
Din terminal executati:
sudo chmod +x /etc/init.d/firewall
sudo chmod 755 /etc/init.d/firewall
sudo chown root:root /etc/init.d/firewall

Acest fisier /etc/init.d/firewall este fisierul in care vom adauga instructiunile privind filtrarea anumitor tari conform exemplelor de mai jos:
Daca locuim in Romania si nu avem chef ca toti sa incerce sa ne gaseasca parola pentru SSH blocam accesul tuturor tarilor in afara de Romania la acest serviciu:
/sbin/iptables -A tcp_packets -p TCP --dport 22 -m state --state NEW -m geoip ! --src-cc RO -j DROP Daca plecam in vacanta in Spania si intentionam sa ne conectam prin SSH si de acolo, nodificam regula de mai sus inlocuind-o cu:
/sbin/iptables -A tcp_packets -p TCP --dport 22 -m state --state NEW -m geoip ! --src-cc RO,ES -j DROP
Daca doriti sa blocati mai mult de un singur port (de ex. porturile 22 si 995) folositi regula:
/sbin/iptables -A tcp_packets -p TCP -m multiport --destination-port 22,995 -m state --state NEW -m geoip ! --src-cc RO,ES -j DROP
In toate aceste reguli observati conditia -m state --state NEW. Asta inseamna ca toate conexiunile initiate din tarile pe care le blocam vor esua, in schimb toate conexiunile pe care le initiem noi catre acele tari vor fi realizate.

Aceste reguli le inserati in fisierul /etc/init.d/firewall in sectiunea aflata la intre liniile 140-149 din fisier iar portule pe care le tineti deschise le modificati la liniile 281-290.

Dupa ce ati terminat de configurat fisierul firewall.bash nu mai aveti decat sa executati in terminal:
sudo update-rc.d firewall defaults

Pornirea firewall-ului o puteti face cu comanda
/etc/init.d/firewall start

Sa aveti spor la inchis usi.

Niciun comentariu: