Fail2ban – Asterisk

Am rămas dator din articolul anterior cu prezentarea unei soluții pentru a ne proteja serverul asterisk împotriva atacurilor.
Știu că securitatea este un subiect complex și nu putem acoperi toate aspectele, dar exemplul următor este unul destul de eficient, fără însă a vă garanta că este invincibil și că va protejează împotriva tuturor amenințărilor.

Țineți cont că am folosit asterisk-1.4.26.2_1 care rulează pe un FreeBSD 7.2-STABLE și este în producție din octombrie 2009. Sistemul are ipfw activat.

A. Instalăm fail2ban:

cd /usr/ports/security/py-fail2ban/
make
make install

B. Fail2Ban – definire filtru asterisk:

cd /usr/local/etc/fail2ban/filter.d

Vom crea un fișier asterisk.conf cu următorul conținut:

[INCLUDES]

[Definition]

failregex = NOTICE.* .*: Registration from ‘.*’ failed for ” – Wrong password
NOTICE.* .*: Registration from ‘.*’ failed for ” – No matching peer found
NOTICE.* .*: Registration from ‘.*’ failed for ” – Username/auth name mismatch
NOTICE.* .*: Registration from ‘.*’ failed for ” – Device does not match ACL
NOTICE.* .*: Registration from ‘.*’ failed for ” – Peer is not supposed to register
NOTICE.* failed to authenticate as ‘.*’$
NOTICE.* .*: No registration for peer ‘.*’ \(from \)
NOTICE.* .*: Host failed MD5 authentication for ‘.*’ (.*)
NOTICE.* .*: Failed to authenticate user .*@.*

ignoreregex =

C. Fișier jail.conf
Având în vedere că nu intenționez să folosesc jail2ban pe sistemul respectiv pentru alte lucruri ci doar pentru asterisk, am creat un nou fișier jail.conf în /usr/local/etc/fail2ban, cu următorul conținut (bineînțeles după ce l-am redenumit pe cel vechi):

[DEFAULT]
ignoreip = 127.0.0.1
bantime = 3600
findtime = 600
maxretry = 3
backend = auto

[asterisk-ipfw]
enabled = true
filter = asterisk
action = ipfw[localhost=A.B.C.D,port=any]
sendmail-whois[name=ASTERISK, dest=noc@domeniu.ro, sender=fail2ban@domeniu.ro]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200

Atenție să modificați A.B.C.D cu adresa IP pe care ascultă asterisk. Deasemenea modificați și adresele de email sau eliminați-le dacă nu doriți să fiți atenționati.

D. Formatul datei în logurile asterisk

Pentru ca să funcționeze cum ne dorim, trebuie să modificăm formatul în care este notată data în fișierul de log-uri al serviciului asterisk. Pentru acest lucru ne asigurăm că în fișierul /usr/local/etc/asterisk/logger.conf, în secțiunea [general] avem:

dateformat=%F %T

Nu uitați de restart la asterisk după acest pas.

E. Modificare fișier acțiune fail2ban

După cum am definit anterior în fișierul jail.conf, programul fail2ban va aplica acțiunea ipfw (definită în fișierul ipfw.conf din directorul action.d). Vom face o mică modificare în acest fișier, astfel încât linia:

actionban = ipfw add deny tcp from <ip> to <localhost> <port>

va deveni:

actionban = ipfw add deny all from <ip> to <localhost> <port>

F. Pornire servicu fail2ban

Vom adăuga în fișierul /etc/rc.conf linia:

fail2ban_enable=”YES”

și apoi executăm comanda:

/usr/local/etc/rc.d/fail2ban start

Rezultatul:

2013-01-06 23:57:37,251 fail2ban.server : INFO Starting Fail2ban v0.8.4
2013-01-06 23:57:37,252 fail2ban.server : INFO Starting in daemon mode

Pentru a testa, vom folosi unealta de care spuneam aici: svcrack.py. Dacă rulăm acum comanda:

ipfw show

vom observa:

00100 1256 497966 deny ip from adrea_ip_atacator to adresa_ip_server_asterisk

Scopul a fost atins. Am înțeles însă că nu este funcțională soluția în cazul în care se folosesc alte versiuni de asterisk  datorită conținutului logului rezultat.

Convorbiri plăcute!

Articole asemanatoare:

Etichetat cu: , , , , ,
7 comments on “Fail2ban – Asterisk
  1. vlad spune:

    fraiere nu-ti citeste nimeni rahaturile

  2. Mulțumesc pentru că ți-ai răpit din timpul tău și ai lăsat un comentariu.

  3. ursan2003 spune:

    salut bogdane
    si eu sant din jud suceava locuiesc in strainatate si in timpul liber destul de putin din pacate ma mai joc cu voip
    ti-am dat add pe messenger poate schimbam o vorba doua despre voip si astrisk in general
    regards

  4. Cip spune:

    Ce idiot ala de-a comentat 🙂

    Eu chiar ma chinui cu un asterisk pus pe raspbian, abia am inceput sa ma joc cu el. Nu reusesc sa fac un IVR, momentan caut unde si cum sa pun fisierele de sunet. Default nu s-au instalat sunetele..

    Oricum, ai printre putinele documentatii in limba romana, iar site-ul tau m-a mai ajutat si alta data.

    Multumesc ca imparti din experienta ta gratis!

  5. Cip, cum se miscă? Tocmai mă gândesc să îmi cumpăr și eu un Pi.

  6. Cip spune:

    Imi cer scuze, nu am mai revenit si nici nu am fost notificat ca s-a raspuns.
    E ok, nu am avut timp decat sa pun un mesaj de WELCOME.
    Voiam sa mai fac un IVR pe el, dar mi-a picat de la niste pene de curent ( era pe UPS dar si ala s-a dus ). Asa ca acum nu mai am nici de unele.

    Oricum, multumesc din nou pentru ca faci sharing, de multe ori cand caut ceva, tot pe site-ul tau ajung.
    Nu cand caut „manele hot”, ca vlad, evident 🙂

  7. Cip spune:

    Ah, si am mai instalat la un client pe asterisk, cu interioare, legat pe un PI. Merge blana. Telefoane Linksys sip. Clientul voia sa ii pun si trunchi cu fixul de la Romtelecom, dar trebuia sa ii pun un PAP2 si nu as fi stiut sa il setez, nici timp nu prea am avut.

    Cel mai sigur, i-am pus un EUROVOICE si merge fara probleme!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*