Cum se pot bloca atacuri DDOS în Linux cu psad
Atacurile DDOS reprezintă una din cele mai mari probleme care pot fi cauzate unei reţele sau unui sistem care serveşte servicii de Internet şi nu numai. Detalii despre ce sunt şi cum pot afecta atacurile DDOS nu reprezintă scopul acestui articol dar puteţi citi în amănunt despre ele pe această pagină de pe avocatnet.ro.
Prima, cea mai simplă şi una din cele mai importante modalităţi de apărare a unui sistem care rulează Linux este folosirea firewall-ului incorporat în acesta, iptables.
Astfel, folosind iptables, un sistem poate fi securizat foarte detaliat, spre exemplu, o singură comandă fiind de ajuns să blocheze un acces neautorizat:
# iptables -I INPUT -s adresa IP de blocat -j DROP
Această comandă va introduce date în fişierul de configurare al iptables, instruind-ul să renunțe la orice pachet cu origine de la IP-ul specificat.
Totodată, pentru atacuri cu surse multiple (mai multe IP-uri) se poate folosi un script de „automatizare” precum cel de mai jos și crea ulterior un fișier conținând lista IP-urilor:
#!/bin/sh
for i in $(< banned_IPs.cfg) ; do
iptables -I INPUT -i eth1 -s „$i” -j DROP
done
Acest script poate fi salvat ca fisier, denumit -de exemplu- banned_IPs.sh, oferindu-i permisii de execuție:
# chmod +x banned_IPs.sh
Fișierul conținând lista adreselor o putem denumi banned_IPs.cfg, specificarea adreselor realizându-se pe linii separate:
192.168.1.228
123.456.789.0
87.118.118.130
Acum se va rula scriptul banned_IPs.sh pentru a adăuga această lista de adrese la lista adreselor restricționate de iptables:
# ./banned_IPs.sh
Dacă folosirea doar a iptables poate părea insuficientă pentru a contracara de exemplu un atac DDOS, o alternativă eficientă poate fi reprezentată prin următoarea variantă prezentată.
Soluţia propusă prin acest articol este cea adusă de psad. psad este un program gratuit care poate rula în paralel cu iptables şi monitorizează logurile acestuia, verifică după scanări de porturi şi orice alt trafic suspicios asociat de obicei cu încercările unui atacator de a căuta o cale de acces într-un server Linux. Vă vom arăta cum se poate detecta adresa IP a sursei atacului şi cum se poate bloca atacul folosind iptables şi psad.
Pentru început vom instala psad, acest pachet fiind disponibil atat pentru sisteme bazate pe apt (Debian, Ubuntu) cât şi rpm (Fedora, CentOS). Astfel, vom rula:
Debian: # apt-get install psad
sau
Fedora: # yum install psad
Dacă rulaţi o distribuţie care nu recunoaşte aceste două formate, se poate descărca un alt format de pe pagina de Internet a programului psad.
Vom continua restul acestui tutorial pentru platforma Debian (aplicabil şi pentru Ubuntu), însă cu mici modificări, aplicabilitatea se poate extinde şi pentru alte distribuţii de Linux.
După instalarea psad, vom deschide fişierul syslog.conf în editorul de text favorit:
# nano /etc/syslog.conf
Vom adăuga urmatoarea linie la sfarşitul acestui fişier:
kern.info |/var/lib/psad/psadfifo
Alternativ, se poate obţine acelaşi rezultat prin comanda următoare:
# echo -e ‘kern.infot|/var/lib/psad/psadfifo’ >> /etc/syslog.conf
Acum vor trebui repornite serviciile (daemons) sysklogd şi klog:
/etc/init.d/sysklogd restart
/etc/init.d/klogd restart
psad va detecta si instrui iptables să blocheze toate adresele IP suspicioase. Atentie, ocazional poate bloca însăşi adresa IP de pe care lucraţi. Pentru a circumveni acest aspect, se poate crea un fişier conţinând o listă cu adresele IP pe care le considerăm sigure (modificați în prealabil variabila utilizator conform cu setarea existentă în sistemul Dvs.):
# nano /home/utilizator/safeiplist.cfg
Introduceţi toate adresele pe care vreţi ca psad să le considere sigure şi să nu mai fie blocate în viitor. Exemplu:
127.0.0.0/24
192.168.0.0/24
89.36.21.35
Acum vom crea și folosi un script pentru a configura iptables cu regulile necesare. Atentie, acest script va elimina orice alte setări anterioare existente în iptables. Modifcați variabilele utilizator, WORKDIR si SAFEIPLIST cu setările specifice sistemului Dvs.
WORKDIR=”/home/utilizator/”
INTERVAL=”5″
HITCOUNT=”5″
SAFEIPLIST=”safeiplist.cfg”
cd $WORKDIR
iptables -F
if [ -f $SAFEIPLIST ]; then
IPS=$(grep -Ev “^#” $SAFEIPLIST)
for i in $IPS
do
iptables -A INPUT -s $i -j ACCEPT
done
fi
iptables -A INPUT -m state –state NEW -m recent –set
iptables -A INPUT -m state –state NEW -m recent –update –seconds $INTERVAL –hitcount $HITCOUNT -j LOG
Acest script va înregistra adresele IP care au cinci sau mai multe tentative de conectare într-un interval de cinci secunde. După ce fișierul este salvat, îi vom da permisiuni de execuție și îl vom rula.
# chmod +x /home/utilizator/ipblock.sh
# /home/utilizator/ipblock.sh
După ce pașii anteriori au fost îndepliniți cu succes, ne vom întoarce la editarea fișierului de configurare al psad și vom modifica în funcție de nevoile noastre (pentru orice neclarități se poate accesa în orice moment documentația disponibilă online a psad):
EMAIL_ADDRESSES utilizator@domeniu.com;
Specificăm numele gazdă al sistemului:
HOSTNAME domeniu.com;
Dacă avem doar o interfață de rețea pe server, vom seta:
HOME_NET NOT_USED;
Se pot ajusta de asemenea și nivele de periculozitate (sensibilitate) pentru psad și defini un set de porturi de ignorat. Ca exemplu vom folosi porturile de comunicație 80 și 8080, astfel:
IGNORE_PORTS udp/80, udp/8080;
Configurarea de bază fiind realizată, se poate salva și închide fișierul, restartând ulterior psad:
# /etc/init.d/psad restart
Pentru a urmări rapoartele generate de psad se poate rula următoarea comandă:
# psad -S
Pentru a elimina automat IP-urile înregistrate se poate da comanda:
# psad -F
psad este o unealtă foarte versatilă și puternică, care poate face minuni cateodată. Totuși pentru a nu da peste cap sistemul prin setări neadecvate, acesta ar trebui folosit cu grijă. Este recomandat să citiți întotdeauna și să vă informați dinainte folosind documentația existentă.