Ghid pentru incepatori impotriva atacurilor gen brute force

Sunt incepator in linux, si cam la cateva zile de cand am pus linuxul am descoperit(dupa un mic ghid de la departamentul abuse al rds pitesti) ca am fost victima unor atacuri de tip brute force. Iata cateva exemple in acest sens(ip-urile sunt din diferite colturi ale lumii , inclusiv romania):

Jul 22 15:46:13 linux sshd[20750]: Invalid user admin from 202.169.30.25
Jul 22 15:46:20 linux sshd[20763]: Invalid user user from 202.169.30.25
Jul 22 15:46:31 linux sshd[20772]: Invalid user test from 202.169.30.25

Aug 7 20:33:52 linux sshd[12136]: Invalid user belea from 79.101.51.249
Aug 7 20:33:52 linux sshd[12138]: Invalid user gordon from 79.101.51.249
…si exemplele pot continua .

Vazand acest lucru si tinand cont de ceea ce mi s-a zis de la departamentul de abuse am inceput sa caut pe google modalitati de contracarare a acestor atacuri care cauzeaza probleme conexiunii de internet . Dupa destule ore de cautare si documentare am dat peste niste site-uri in care se arata exact ce trebuie facut, asa din ele m-am inspirat in a creea acest ghid :
Pasul 1 : schimba portul de ssh de la 22 la ceva care nu este folosit de nici un serviciu de pe serverul tau , pentru asta poti accese /etc/services (acelasi lucru il sugerez si ptr portul de ftp)

Pasul 2 : se da DISABLE la root login astfel incat atunci cand accesezi serverul te loghezi numai ca user normal si apoi prin su/sudo devii root . De asemenea se da DISABLE si la telnet in cazul in care este activ pe server

Pasul 3 : se instaleaza Chkrootkit (verifica daca exista instalat vreun worm/rootkit pe server):
cd /tmp
wget –passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
mv chkrootkit.tar.gz /usr/local/
cd /usr/local/
tar xvfz chkrootkit.tar.gz
ln -s chkrootkit-0.43/ chkrootkit (inlocuiesti 0.43 cu versiunea corecta obtinuta la dezarhivare)
cd chkrootkit/
make sense
Programul chkrootkit este localizat in /usr/local/chkrootkit. Se poate folosi tastand cd /usr/local/chkrootkit/ && ./chkrootkit intr-o consola de server ca root. Daca un worm, rootkit, etc. este descoperit , el va fi indicat prin cuvantul INFECTED (scris cu litere mari). Pentru a primi notificari din partea porgramului este necesar sa creati un fisier –> root &1 | mail -s “chkrootkit output” me@myself.tld) (unde 0 3 reprezinta 3 am ce poate fi schimbat in functie de necesitati) ; apoi executati chmod 600 /var/spool/cron/crontabs/root urmat de /etc/init.d/cron restart .

Pasul 4 : Instalati Portsentry
cd /tmp
wget http://heanet.dl.sourceforge.net/sourcefor…ntry-1.2.tar.gz
tar xvfz portsentry-1.2.tar.gz
cd portsentry_beta/
Inainte de instalarea programului este necesar sa corectati o greseala descoperite de cei de la Novell . Eroarea apare la fisierul portsentry.c si are urmatoarea forma :

printf (”Copyright 1997-2003 Craig H. Rowland
sourceforget dot net>n”);

Forma corecta a acestei parti din fisier este urmatoarea :

printf (”Copyright 1997-2003 Craig H. Rowland n”);

Dupa ce eroarea a fost corectata putem continua instalarea softului:
make linux
make install
Portsentry va fi instalat in /usr/local/psionic/portsentry/ . Se acceseaza acest program si se editeaza /usr/local/psionic/portsentry/portsentry.conf prezicand care porturi vor fi protejate de portsentry . ATENTIE : orice port din portsentry.conf ce este in mod curent activ pe server va fi sters ; actiunea programului vizeaza porturile care nu sunt folosite de nici un serviciu. Exemplu : daca portul 143 (IMAP TCP) este folosit dar se gaseste si in portsentry.conf este necesar ca el sa fie scos din acel conf. Urmatorul lucru pe care trebuie sa il faceti este sa creati un “init script” . Cu ajutorul unui editor de texte gen PICO sau VI(M) (Emacs sau Kate) se creeaza un fisier portsentry(/etc/init.d/portsentry) in care se vor adauga urmatoarele elemente:
#!/bin/bash

case “$1″ in
start)
echo “Starting Portsentry…”
ps ax | grep -iw ‘/usr/local/psionic/portsentry/portsentry -atcp’ | grep -iv ‘grep’ > /dev/null
if [ $? != 0 ]; then
/usr/local/psionic/portsentry/portsentry -atcp
fi

ps ax | grep -iw ‘/usr/local/psionic/portsentry/portsentry -audp’ | grep -iv ‘grep’ > /dev/null
if [ $? != 0 ]; then
/usr/local/psionic/portsentry/portsentry -audp
fi
echo “Portsentry is now up and running!”
;;
stop)
echo “Shutting down Portsentry…”
array=(`ps ax | grep -iw ‘/usr/local/psionic/portsentry/portsentry’ | grep -iv ‘grep’
| awk ‘{print $1}’ | cut -f1 -d/ | tr ‘n’ ‘ ‘`)
element_count=${#array[@]}
index=0
while [ “$index” -lt “$element_count” ]
do
kill -9 ${array[$index]}
let “index = $index + 1″
done
echo “Portsentry stopped!”
;;
restart)
$0 stop && sleep 3
$0 start
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0
Dupa ce fisierul a fost creat se foloseste comanda chmod 755 /etc/init.d/portsentry si pentru a porni acest program tastati /etc/init.d/portsentry start . ATENTIE : daca portsentry chkrootkit va spune ca exista ceva infectat ” Checking `bindshell’… INFECTED (PORTS: 31337)” nu va alarmati nu este nici un pericol.

Pasul 5 : Instalati Logcheck
cd /tmp
wget http://heanet.dl.sourceforge.net/sourcefor…ck-1.1.1.tar.gz
tar xvfz logcheck-1.1.1.tar.gz
cd logcheck-1.1.1/systems/
Se schimba in logcheck.sh. SYSADMIN la o adresa de mail sau catre un anumit user (root) . Iata o parte din fisier unde trebuie editata acea linie :
[…]
# CONFIGURATION SECTION

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin

# Logcheck is pre-configured to work on most BSD like systems, however it
# is a rather dumb program and may need some help to work on other
# systems. Please check the following command paths to ensure they are
# correct.

# Person to send log activity to.
SYSADMIN=me@myself.tld

# Full path to logtail program.
# This program is required to run this script and comes with the package.

LOGTAIL=/usr/local/bin/logtail
[…]
Mai departe continuam cu instalarea :
cd ../../
mkdir -p /usr/local/etc/tmp
make
Programu logcheck va fi instalat in /usr/local/etc. Pentru a rula acest program adaugati in acelasi fisier root (exemplu /var/spool/cron/crontabs/root ) urmatoarea linie : 0 3 * * * /usr/local/etc/logcheck.sh (unde 0 3 reprezinta 3am ce poate fi schimbat la o alta ora) . Se folosesc din nou comenzile : chmod 600 /var/spool/cron/crontabs/root si /etc/init.d/cron restart
Dupa ce am instalat aceste programe pot spune ca aceste atacuri s-au redus drastic.

Dupa instalarea programului portsentry atacurile apar sub forma :
Aug 25 13:06:56 linux portsentry[610]: attackalert: TCP SYN/Normal scan from host: 59-120-237-40.HINET-IP.hinet.net/59.120.237.40 to TCP port: 22
Aug 25 13:06:56 linux portsentry[610]: attackalert: Host 59.120.237.40 has been blocked via wrappers with string: “ALL: 59.120.237.40”
Sper ca si voua sa va aduca beneficii fata de atacurile brute force care cauzeaza DOS , astept pareri si completari la adresa ghidului meu :)

Leave a Reply

Your email address will not be published. Required fields are marked *