Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Referitor la email bombing exista o descriere destul de clara pe site-ul CERT. Pe scurt, e un atac targetat pe serviciul de email al unui utilizator. Se trimit foarte multe mesaje email catre o anumita adresa sau catre mai multe adrese pe un singur domeniu pana cand resursele sunt consumate iar serviciul devine indisponibil. Exista si o varianta distribuita a atacului in care se folosesc mai multe adrese IP facand astfel foarte greu de identificat un pattern care sa permita luarea unor masuri.

Pentru a ne proteja putem folosi CSF, un firewall/IDS bazat pe iptables, creat de cei de la ConfigServer care a ajuns sa fie folosit de foarte multi sysadmini pe serverele cu Linux.

Instalare CSF

Daca nu aveti CSF instalat, va trebui sa il instalati. Instalarea dureaza mai putin de un minut folosind comenzile de mai jos:

mkdir /root/install
cd /root/install
wget http://configserver.com/free/csf.tgz
tar -zxvf csf.tgz
cd csf/
./install.generic.sh

In cazul de fata am folosit pentru instalare ./install.generic.sh. In folderul csf exista si fisiere de instalare pentru servere cu cPanel sau DirectAdmin: install.cpanel.sh respectiv install.directadmin.sh.

Protectie Mailbomb

In /etc/csf/csf.conf puteti configura CSF dupa bunul plac. Tot acolo sunt declarate caile catre logurile de sistem, urmarite de lfd – daemonul care urmareste logurile si blocheaza IP-urile in caz de atac. Pe noi ne intereseaza calea catre logul serviciului de email, adica valoarea pentru SMTPAUTH_LOG. In cazul de fata fiind vorba de un server cu cPanel calea va fi /var/log/exim_mainlog, dar regulile pot fi modificate pentru a se mula pe orice MTA atata timp cat salveaza in loguri mesajele de eroare.

In logul Exim va trebui sa gasim mesajele de eroare corespunzatoare mail bombingului. Un exemplu ar fi liniile de mai jos:

2013-09-04 09:38:26 H=hostname1.exemplu.ro (exemplu1.ro) [190.99.187.52]:19343 F=<portentousndlu635@google.com> rejected RCPT <prosper1@exemplu.ro>: No Such User Here
2013-09-04 16:43:34 H=hostname2.exemplu.ro (exemplu2.ro) [79.101.233.168]:26347 F=<humpss@zetisbew.com> rejected RCPT <hugh3@exemplu.ro>: No Such User Here
2013-09-04 00:25:42 H=hostname3.exemplu.ro (exemplu3.ro) [178.223.248.66]:24776 F=<obliviousyd@seurewest.com> rejected RCPT <sharon@exemplu.ro>: No Such User Here

Observam ca e vorba de un atac distribuit, sunt IP-uri diferite, dar mesajul de eroare este intotdeauna acelasi: No Such User Here. Deci nu este un mailbombing targetat spre un cont de email ci unul targetat pe intreg domeniul exemplu.ro – probabil in speranta ca va umple spatiul contului de catch-all sau va bloca serviciul de email.

CSF ne ofera posibilitatea sa facem propriile reguli de identificare/blocare a atacurilor editand fisierul /usr/local/csf/bin/regex.custom.pm. In cadrul subrutinei custom_line putem adauga regulile noastre. In cazul nostru verificam daca linia procesata contine ‘No Such User Here’ si daca fisierul din care provine linia este cel specificat in SMTPAUTH_LOG, deci vom adauga in cadrul subrutinei urmatoarele linii:

if (($lgfile eq $config{SMTPAUTH_LOG}) and ($line =~ /\[(\d+\.\d+\.\d+\.\d+)\]\:\d+.+rejected [email protected]\.ro\>\: No Such User Here/)) {
    return ("Mailbombing pe exemplu.ro de la ",$1,"MailBomb","5","25,26","1800");
}

Dupa cum se poate vedea am format o expresie regulata care sa extraga IP-ul atacatorului.

Functia return() primeste sase parametri:

  • un mesaj text;
  • adresa IP a atacatorului;
  • un text de identificare specific pentru regula creata;
  • numarul de identificari ale mesajului in ultimele 5 minute;
  • porturile pe care nu se va permite traficul IP-ului atacator;
  • numarul de secunde pentru care va fi blocat IP-ul atacator, sau 1 pentru blocare permanenta.

In cazul nostru daca mesajul ‘No Such User Here’ va fi inregistrat de mai mult de 5 ori pentru acelasi IP in ultimele 300 de secunde, IP-ul va fi blocat pentru 1800 de secunde (30 de minute).

Dupa ce ati facut modificarea salvati fisierul si restartati serviciul lfd. Rezultatul poate fi urmarit in /var/log/lfd.log:

Sep  4 20:10:21 abc02 lfd[25414]: (MailBomb) Mailbombing pe exemplu.ro de la  31.148.248.4 (KZ/Kazakhstan/-): 5 in the last 300 secs - *Blocked in csf* for 1800 secs [LF_CUSTOMTRIGGER]
Sep  4 20:10:21 abc02 lfd[25415]: (MailBomb) Mailbombing pe exemplu.ro de la  85.29.158.29 (KZ/Kazakhstan/-): 5 in the last 300 secs - *Blocked in csf* for 1800 secs [LF_CUSTOMTRIGGER]
Sep  4 20:11:21 abc02 lfd[25585]: (MailBomb) Mailbombing pe exemplu.ro de la  186.112.192.226 (CO/Colombia/-): 5 in the last 300 secs - *Blocked in csf* for 1800 secs [LF_CUSTOMTRIGGER]
Sep  4 20:11:26 abc02 lfd[25596]: (MailBomb) Mailbombing pe exemplu.ro de la  190.236.116.45 (PE/Peru/-): 5 in the last 300 secs - *Blocked in csf* for 1800 secs [LF_CUSTOMTRIGGER]
Sep  4 20:11:46 abc02 lfd[25848]: (MailBomb) Mailbombing pe exemplu.ro de la  190.42.120.169 (PE/Peru/-): 5 in the last 300 secs - *Blocked in csf* for 1800 secs [LF_CUSTOMTRIGGER]
Linux

7 Responses so far.

  1. Mihai says:

    Un tutorial foarte bun. Multumim

  2. sex shop says:

    mersi mult!!!

    am testat si eu si merge perfect;)

  3. Roxana says:

    Chiar imi era frica de problema asta. Mersi foarte mult de ajutor, a fost destul de simplu de instalat.

  4. Velix says:

    Nu inteleg cum se poate ca o adresa de mail nou inregistrata sa fie bombardata de spam. Nu m-am inregistrat pe site-uri. Voi incerca solutia, merci!

  5. sex shop says:

    foarte bun articol.. felicitari!!!

  6. yvettefashion says:

    Farte bun multumesc mult 🙂

  7. Sergiu Tot says:

    Va multumesc pentru aprecieri!

    @Velix, spamerii au diverse metode prin care incearca sa gaseasca adrese functionale. Daca esti sigur ca nu ai folosit-o niciunde, probabil are un nume comun (ex. [email protected] sau [email protected]) pe care se trimit spamuri in mod implicit.