Protejarea asteriscului de conexiuni neautorizate. Îmbunătățirea securității Asterisk. Dezactivați notificarea despre parola incorectă

În zilele noastre, de foarte multe ori trebuie să ne confruntăm cu diferite tipuri de atacuri pe Asterisk și analogi. Configurarea incorectă și ignorarea regulilor simple implică pierderi financiare pentru o întreprindere care utilizează PBX Asterisk.

În acest articol, ne vom uita la mecanismele de securitate inițiale ale Asterisk 13 după instalare și nu vom acoperi mecanismele de securitate Linux. Mai jos vom descrie o serie de reguli care vă vor ajuta să vă securizați sistemul:

1. Parole și autentificări rezistente la piratare pe toate dispozitivele din rețea (Asterisk, telefoane IP, gateway-uri VoIP).

Parolele pentru conturile SIP, administratori, managerii Asterisk și pentru dispozitivele de rețea trebuie să conțină cel puțin 13 caractere (litere, cifre, caractere speciale, majuscule și minuscule). Nu utilizați login-uri în sistem, cum ar fi admin, administrator, manager etc.

2. Configurarea SIP corectă în Asterisk – sip.conf.

Pentru a vă proteja împotriva scanerelor, ar trebui să schimbați portul SIP standard, să interziceți apelurile și înregistrările oaspeților, apelarea suprapusă, abonamentul la informațiile despre starea canalului etc. O descriere completă a parametrilor generali sip.conf este descrisă în articol. Mai jos este sip.conf pe care l-am configurat pentru serverul Asterisk cu comentarii:

Context=default ;Atribuiți un context neutilizat pentru apelurile efectuate în mod implicit allowguest=no ;Interziceți conexiunile invitaților (fără autentificare) match_auth_username=no ;Interziceți utilizarea câmpului „nume utilizator” în loc de „de la” allowoverlap=no ;Interziceți o singură cifră dialing;allowtransfer= nu ;Interzicem utilizarea domeniului de redirecționare=CUCM11.5(1)SU3 ;Folosim numele de domeniu al serverului (ascundem acel asterisc) ;domainsasrealm=no ;recordonfeature=automixmon bindport=9050 ;Schimbați semnalizarea SIP port udpbindaddr=0.0.0.0 ;Adresă UDP implicită tcpenable=yes ;Activați suportul TCP (în cazul în care aveți Avaya) tcpbindaddr=0.0.0.0 ;Adresă TCP implicită;tlsenable=no ;tlsbindaddr=0.0.0.0 ;outtime; tcpauthlimit = 100 ;websocket_enabled = true ; websocket_write_timeout = 100 transport=udp ;Transport implicit srvlookup=yes ;Permite apeluri la nume DNS;pedantic=yes ;tos_sip=cs3 ;tos_audio=af=text=aftos_1cos_3_; ;cos_audio=5 ;cos_video=4 ;cos_text=3 ;maxexpiry=3600 ;minexpiry=60 ;defaulttexpiry=120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxexpiry=60 ;maxexpiry=120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxexpiry=3600 ;maxforwards=76 disponibilitatea gazdei; 60 sec =ulaw ;Permite Ulaw ;autoframing=da ;mohinterpret=default ;mohsuggest=default ;parkinglot=plaza language=ru ;Face rusă ca limba implicită în sistem tonezone=ru ;Determină tonezone global în Ru relaxdtmf=yes ;Activează recunoașterea semnale DTMF prost recunoscute;trustrpid = no ;sendrpid = yes rpid_update=yes ;Notificare imediată a serverului care se apropie despre modificările stării liniei;trust_id_outbound = no ;prematuremedia=no ;progressinband=no callerid=CUCM11.5(1)SU3 ; Dacă nu avem CallerID instalat undeva, faceți-o useragent simbolic=Cisco-SIPGateway/IOS-12.x ;Și ca PBX avem Cisco-SIPGateway ;promiscredir = no ;usereqphone = no dtmfmode=rfc2833 ;Setați tonul pentru apăsarea butoanelor de pe telefon;compactheaders = da videosupport=da ; Activem suportul pentru apeluri video; textsupport=no maxcallbitrate=2048 ;Rata maximă de biți pentru comunicarea video authfailureevents=yes ;Setați starea Peer dacă nu se poate conecta=respins alwaysauthreject=da ;Dacă cererea de autentificare a fost respinsă, atunci răspunsul NU va spune că utilizatorul a introdus incorect, protecția de căutare a numelui de utilizator auth_options_requests=yes ;Solicită autorizare la trimiterea OPTION și INVITE ;accept_outofcall_message = no ;outofcall_message_context = mesaje auth_message_requests=activare; MESSAGE solicită ;g726nonstandard = yes ;outboundproxy=proxy.provider.domain:8080 ;supportpath =yes ;rtsavepath=yes ;matchexternaddrlocally = yes ;dynamic_exclude_static = yes ;contactdeny=0. 0.0.0/0.0.0.0 ;contactpermit=172.16.0.0/255.255.0.0 ;contactacl=named_acl_example ;rtp_engine=asterisk ;regcontext=sipregistrations regextenonqualify=da regcontext ; legacy_useroption_parsing=yes ;send_diversion=nu ;shrinkcallerid=yes ;use_q850_reason = nu ;refer_addheaders=da autocreatepeer=no ;Dezactivați înregistrarea UAC fără autentificare t1min=200 ;Timp minim de trecere pentru gazdă și mesaje; timerb=32000 rtptimeout= 600 ;Anulează apelul dacă nu există activitate a fluxurilor media RTP după 600 de secunde rtpholdtimeout=300 ;Anulează apelul dacă nu există nicio activitate a fluxurilor media RTP în modul Hold după 300 de secunde;rtpkeepalive= ;sesiune timers=originate ;session-expires=600 ;session-minse=90 ;session-refresher=uac ;sipdebug = yes ;recordhistory=yes ;dumphistory=yes ;allowsubscribe=nu ;subscribecontext = implicit ;notifyringing =hold nu y;es; notifycid = yes callcounter=yes ;Activați contorul de apeluri t38pt_udptl=yes ;Activați suportul pentru T.38 cu corectarea erorilor FEC faxdetect=yes ;Activați detectarea CNG și T.38 nat=auto_force_rport,auto_comedia ;Găsiți automat Nat și date media pe portul de la care Asterisk l-a primit și nu ceea ce a primit în SDP ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Dirijam traficul RTP direct între egali, ocolind Asterisk ;directrtpsetup=yes ;directmediadeny=00; .0.0/0 ;directmediapermit=172.16.0.0/16 ;directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=Apel SIP ;Schimbarea numelui sesiunii SDP sdpowner=CiscoSystemsstringSIP-GW-Changing user user fields crypting SDP user fields; =nu ;encryption_taglen=80 ;avpf=yes ;force_avp=yes ;rtcachefriends=yes ;rtsavesysname=yes ;rtupdate =yes ;rtautoclear=yes ;ignoregexpire=yes ;domain=customer.com,customer=domainlows-noexternal; =nu ;fromdomain=mydomain.tld ;snom_aoc_enabled = yes jbenable=yes ;Activați utilizarea buffer-ului RTP pentru a compensa întârzierile; jbforce = no jbmaxsize=200 ;Setați dimensiunea maximă a tamponului RTP la 200 ms;jbresyncthreshold =;j1bimpl0; = fix ;jbtargetextra = 40 ;jblog = nr

3. Folosim un port IAX non-standard.

Pentru a face acest lucru în fișier /etc/asterisk/iax.conf in sectiune modifica parametrul bindport=4569 pe parametru bindport=9069

4. Asterisk trebuie lansat ca alt utilizator (nu root). Cum se face acest lucru este scris în.

5. Setați adresele IP sau rețelele permise pentru extensiile SIP.

deny=0.0.0.0/0.0.0.0 ;Deny everything permis=10.0.0.0/255.0.0.0 ;Permite permisul cunoscut=172.20.0.0/255.255.0.0 ;Permite permisul cunoscut=192.168.0.0/16 ;Permite permisul cunoscut

6. Setați o limită pentru apeluri simultane.

call-limit=2 ;Setați valoarea la 2, astfel încât utilizatorul să poată efectua un transfer

7. Setați reguli diferite de rutare de ieșire pentru fiecare utilizator.

Este necesar să eliminați toate rutele implicite și să vă atribuiți propriile rute, distinse după contexte:

  • Seturi locale
  • Apeluri locale
  • Apeluri de zonă
  • Apeluri la distanță lungă
  • Apeluri internaționale

O listă completă a codurilor ABC, DEF poate fi luată din resursa oficială Rossvyaz.
Pentru ruta implicită, faceți

Exten => _X.,1,Hangup()

8.

9.

10. Conectăm toate dispozitivele telefonice la un VLAN de voce separat. Aici trebuie să-i tensionăm pe cei din rețea.

11. Acordăm o atenție deosebită direcției internaționale 8-10.

Stabilim doar indicațiile utilizate în organizație și le adăugăm (extindem) după cum este necesar. De asemenea, trimitem o notificare prin e-mail dacă un utilizator sau atacator a folosit o destinație internațională necunoscută și a stabilit o limită pentru fiecare conexiune și pentru numărul simultan de apeluri. O soluție gata făcută pentru protejarea direcțiilor 8-10 este descrisă în articol.

12. Dezactivați canalele și serviciile neutilizate.

De exemplu, dacă nu utilizați MGCP sau Skinny, dezactivați aceste module din fișier /etc/asterisk/modules.conf:

Noload => pbx_gtkconsole.so noload => chan_alsa.so noload => chan_console.so noload => res_ari.so noload => chan_dahdi.so noload => codec_dahdi.so noload => res_ari_device_states.so noload => res_ari_applications.so noload = > res_ari_channels.so noload => res_ari_events.so noload => res_ari_playbacks.so noload => res_ari_endpoints.so noload => res_ari_recordings.so noload => res_ari_bridges.so noload => res_ari_asterisk.so noload => res_ari_sounds.so noload => res_ari_sounds.so noload .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;====================== ===== ; PBX -- noload => pbx_ael.so ; Canale -- noload => chan_mgcp.so noload => chan_skinny.so noload => chan_unistim.so noload => chan_pjsip.so noload => chan_modem.so noload => chan_modem_aopen.so noload => chan_modem_bestdata.so noload => chan_modem_i4l. deci noload => chan_alsa.so noload => chan_oss.so ; Codec-uri -- noload => codec_lpc10.so ; Formate -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; Aplicații -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Limităm accesul de la distanță la IP-PBX utilizând Firewall.

Dacă intenționați să oferiți acces de la distanță angajaților autorizați, cel mai bine este să îl organizați folosind un server VPN (de exemplu, Open VPN).

14. Setați drepturi limitate la directoare.

Orice utilizare a materialelor site-ului este posibilă numai cu permisiunea autorului și cu indicarea obligatorie a sursei.

Telefonia poate fi ieftină
si functionala!

Compania IT KUB oferă o gamă largă de servicii de instalare, integrare și configurare a telefoniei IP

Serviciile IT pot fi de înaltă calitate!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

Configurația APF este localizată în /etc/apf/conf.apf

Pentru a începe editarea fișierului, utilizați următoarea comandă:

nano /etc/apf/conf.ap f

Setați IFACE_IN și IFACE_OUT pentru interfața de rețea orientată spre Internet. Pentru interfața de rețea orientată către rețeaua locală, setați IFACE_TRUSTED.

SET_TRIM="0"

APF are capacitatea de a suporta QoS. Pentru SIP și IAX trebuie să instalați următoarele:

T.O.S. _8="21,20,80,4569,5060,10000_20000"

Dacă ați schimbat portul SSH, va trebui să editați fișierul conf.apf pentru a se potrivi noului port.

HELPER_SSH_PORT="2222"

Asigurați-vă că înlocuiți 2222 cu numărul de port corect pe care alegeți să rulați SSH.

Filtrarea de intrare este folosită pentru a deschide porturi pentru acces; TCP și UDP au setări separate. Pentru Asterisk (Trixbox), următoarele porturi trebuie să fie deschise; sunt listate atât TCP, cât și UDP. Dacă nu utilizați TFTP, atunci nu deschideți portul 69. Nu uitați să schimbați portul SSH. În caz contrar, nu veți putea obține acces; aici folosim portul 2222 din ultimul nostru exemplu. Nu am inclus porturi IAX în această instalare. Există o modalitate simplă de a vă asigura că numai anumite gazde pot folosi IAX, despre care vom trata mai târziu. Acest lucru este convenabil dacă utilizați IAX pentru a instala trunchiuri interstații care sunt invizibile pentru lumea exterioară.

IG_TCP_CPORTS="2222,69,80,5060,6600,10000_20000"
IG_UDP_CPORTS="69,5060,10000_20000"

Nu folosesc filtrarea de ieșire, așa că nu este tratată în acest articol. Este setat la EGF="0", dezactivat implicit.

Pentru a vedea o listă de opțiuni de linie de comandă, rulați apf fără steaguri.

#apf
apf(3402): (glob) jurnalul de stare nu a fost găsit, creat
APF versiunea 9.6< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Drepturi de autor (C) 1999-2007, R-fx Networks< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Drepturi de autor (C) 2007, Ryan MacDonald< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Acest program poate fi redistribuit liber în conformitate cu termenii GNU GPL
utilizarea /usr/local/sbin/apf
-s|--start ........................... încărcați toate regulile firewall
-r|--restart ...................... oprire (purgerea) și reîncărca regulile firewall
-f|--stop...... ................. opri (elimină) toate regulile firewall
-l|--list ........................... listează toate regulile firewall
-t|--status ........................ scoate jurnalul de stare firewall
-e|--refresh ........................... reîmprospăta și rezolvă numele dns în încredere
reguli
-a HOST CMT|--allow HOST COMMENT ... adaugă gazdă (IP/FQDN) la
allow_hosts.rules și încărcați imediat o nouă regulă în firewall
-d HOST CMT|--deny HOST COMMENT .... adaugă gazdă (IP/FQDN) la
deny_hosts.rules și încărcați imediat o nouă regulă în firewall
-u|--remove HOST ................... elimina gazda din
*_hosts.rules și eliminați imediat regula din firewall
-o|--ovars ........................... scoate toate opțiunile de configurare

Pentru a porni APF folosim următoarele comenzi:

# apf -s
apf(3445): (glob) activarea paravanului de protecție
apf(3489): (glob) determinat (IFACE_IN) eth0 are adresa 192.168.1.31
apf(3489): (glob) determinat (IFACE_OUT) eth0 are adresa 192.168.1.31
apf(3489): (glob) se încarcă preroute.rules http://r-fx.ca/downloads/reserved http://feeds.dshield.org/top10-2.txt
http://www.spamhaus.org/drop/drop.lasso
apf(3489): (sdrop) analizează drop.lasso în /etc/apf/sdrop_hosts.rules
apf(3489): (sdrop) se încarcă sdrop_hosts.rules
apf(3489): (glob) se încarcă porturi comune de drop
..........decupate pentru acest document.........
apf(3489): (glob) scadere implicită (intrare) intrare
apf(3445): (glob) firewall inițializat
apf(3445): (glob) !!MODUL DE DEZVOLTARE ACTIVAT!! - firewall-ul se va spăla
la fiecare 5 minute.

Putem vedea că APF a început, a descărcat mai multe reguli de pe dshield.org și spamhaus.org. Acum să testăm conectarea la serverul Asterisk (Trixbox) prin SSH pentru a ne asigura că ați configurat totul corect. Dacă nu vă puteți conecta, trebuie să așteptați 5 minute și apoi APF va elimina blocul. Odată ce sunteți sigur că vă puteți conecta prin SSH, putem schimba conf.apf DEVEL_MODE = "1" în DEVEL_MODE = "0" și repornim APF. APF va porni și nu va emite un avertisment că este în DEVELOPMETN_MODE.

APF: reglaj suplimentar

Configurarea nu se termină aici dacă doriți să vă conectați serverele Asterisk (Trixbox) prin IAX. Pentru a face acest lucru, va trebui să adăugați porturi IAX la conf.apf. Această opțiune va funcționa cu adrese IP statice sau DynDNS. Comanda apf -a permite accesul pentru o anumită adresă IP. Acest lucru va permite la nivel global gazdei să se conecteze la Asterisk (Trixbox) ocolind regulile firewall.

apf -a 192.168.1.216

Acest lucru va permite sistemului 192.168.1.216 să se conecteze la orice port de pe serverul cu firewall, ocolind astfel regulile firewall. Dacă rulați APF pe ambele Asterisk (Trixbox), asigurați-vă că faceți același lucru pe cealaltă gazdă folosind adresa IP corectă.

APF permite, de asemenea, administratorului de sistem să blocheze o gazdă sau o întreagă subrețea. Acest lucru este convenabil dacă vedeți că cineva încearcă să se conecteze la computer prin FTP, Telnet, SSH și așa mai departe. Pentru a bloca o anumită gazdă, utilizați următoarele: asigurați-vă că utilizați adresa IP pe care doriți să o blocați.

apf -d 192.168.1.216

Pentru a bloca o subrețea completă (CIDR):

apf -d 202.86.128.0/24

APF nu acceptă QoS pentru pachetele UDP. Numai TCP. Există o modalitate ușoară de a remedia acest lucru. Există un fișier functions.apf în /etc/apf/internals. Trebuie să edităm acest fișier manual. Există mai multe locuri în care trebuie să adăugăm o singură linie. Căutăm secțiunea TOS_ din fișierul functions.apf. Va arata asa:

dacă [! "$TOS_0" == "" ]; apoi
pentru i în `echo $TOS_0 | tr "," " "`; do
i=`echo $i | tr "_" ":"`
$IPT -t mangle -A PREROUTING -p tcp --sport $i -j TOS --set-tos 0
$IPT -t mangle -A PREROUTING -p udp --sport $i -j TOS --set-tos 0
Terminat
fi

Această linie suplimentară trebuie făcută pentru toți biții TOS pe care îi utilizați.

B.F.D.

Detectarea forței brute (atac de dicționar) este utilizată pentru a detecta încercările de conectare neautorizate.

Fișierul de configurare pentru BFD se află în /usr/local/bfd și se numește conf.bfd. Acest fișier, ca și fișierul APF, conține multe comentarii. Ne vom uita la doar câteva dintre setări.

Prima variabilă de configurare la care ne vom uita este TRIG; acesta este numărul de încercări eșuate înainte ca atacatorul să fie blocat. Valoarea implicită este 15. Rețineți că acesta este numărul de încercări nu de la un singur cont, ci de la o adresă IP. Deci, dacă există 15 încercări de conectare nereușite de la o adresă IP folosind conturi diferite, aceasta va fi în continuare blocată.

BFD are o caracteristică frumoasă - trimite e-mailuri atunci când este detectată o forță brută. Pentru a activa această opțiune, setați EMAIL_ALERTS la 1; nu uitați să indicați adresa la care doriți să primiți notificări - EMAIL_ADRESS.

BFD este lansat de cron la fiecare 3 minute și se află în /etc/cron.d.

Puteți obține o listă de adrese IP interzise folosind comanda:

Pentru a porni BFD utilizați următoarea comandă:

bfd -s

rezumat

Aceasta completează revizuirea noastră despre securitatea Asterisk (Trixbox).

Acest articol discută doar principiile de bază ale protecției Asterisk (Trixbox). Desigur, construirea de sisteme VoIP sigure nu se limitează la asta.

Puteți citi articolul original la link

Data: 09:56 28.07.2018

Există multe povești pe Internet despre hacking de asterisc și pedeapsa ulterioară din partea operatorului. Undeva a fost o poveste despre o anumită companie mică din Australia care a reușit să piardă 15.000-20.000 de dolari. Nu cred că cineva vrea să fie într-o astfel de situație. Este mult mai bine, fără să așteptați probleme, să efectuați un anumit set de măsuri care vor reduce semnificativ numărul de opțiuni de hacking și vor minimiza pericolul.

Port non-standard în loc de 5060

Dacă este posibil din punct de vedere tehnic, schimbați ÎNTOTDEAUNA portul standard 5060 cu oricare altul. Cu cât este mai diferit de cel standard, cu atât mai bine. Atacatorii vă vor găsi foarte repede asteriscul prin simpla scanare a porturilor folosind o serie de adrese. Acest lucru se va întâmpla foarte repede - primele încercări de a-mi ghici parola au fost detectate în 3 zile după lansarea asteriscului pe Internet.
Portul este configurat în fișierul sip.conf din secțiunea:

Bindport=5060 => bindport=5172

După astfel de acțiuni, numărul de culegători va scădea la aproape zero.

Configurarea unui firewall

Interzicem conectarea la portul Asterisk din exterior - acest lucru va dezactiva capacitatea de a ghici parole. Cu toate acestea, unii furnizori de telefonie SIP nu funcționează dacă nu pot ajunge ei înșiși la portul dvs. 5060 - în acest caz, trebuie să permiteți accesul la acest port de pe serverul acestui furnizor. Așa că într-o zi m-am gândit câteva zile de ce nu există nicio conexiune cu Beeline, apoi le-am deschis accesul IP la portul meu 5060 și a apărut conexiunea.

Dezactivați apelurile pentru oaspeți

Dacă nu aveți nevoie să primiți apeluri fără înregistrare, asigurați-vă că dezactivați următoarea opțiune în sip.conf:
allowguest=da => allowguest=nu ; Permiteți sau respingeți apelurile invitaților (implicit este da)

Dezactivați notificarea despre parola incorectă

Aproape toată lumea are conturi asterisc de tipul 100, 200, 700 etc. În mod implicit, Asterisk generează o eroare despre o parolă incorectă pentru un cont existent și alta pentru un cont inexistent. Cu ajutorul special software de ghicire a parolelor, un atacator poate încerca rapid toate numerele scurte și poate ghici parolele numai pentru conturile existente care au răspuns „parolă incorectă”. Pentru a preveni acest lucru, schimbați opțiunea din sip.conf:
alwaysauthreject = nu => alwaysauthreject = da
După această configurare, Asterisk va da același răspuns pentru orice autorizare incorectă.

Folosim parole complexe pentru conturi

Orice parolă poate fi ghicită, singura întrebare este timpul. Deoarece configurarea dispozitivelor SIP se face o dată și pentru o lungă perioadă de timp, nu vă zgâriți cu parolele complexe. Pentru mine, folosesc parole lungi cu combinații de litere mari și mici + numere astfel: secret=f64GCD74ssdZ42

ASIGURAȚI-vă că eliminați toate parolele care se potrivesc cu datele de conectare. Acestea sunt primele parole folosite pentru parole.

Folosim refuz/permis pentru conturi

O trebuinta! Indicăm următoarele rânduri pentru toate conturile care nu necesită conexiune la Internet:

Respinge=0.0.0.0/0.0.0.0 permis=10.1.1.1/24 permis=10.1.2.1/24

Unde 10.1.1.1,10.1.2.1 sunt intervalele de adrese locale de la care se va face conexiunea. asterisc nu va accepta conexiuni de la alte adrese.

Setarea unei limite de apeluri

Limită apel=1

Nu folosim extensia implicită în mod inutil

Nu avem nevoie de el. Tot ce ar trebui să fie implicit:

Exten => _X.,1,Hangup

Nu facem o singură regulă universală pentru toate apelurile

Să spunem nu regulilor precum:

Exten => _X.,1,Dial(SIP/$(EXTEN)@operator)

Notăm clar toate combinațiile necesare de numere transmise operatorului. Dacă nu este nevoie să utilizați comunicarea internațională, nu descrieți deloc regulile pentru aceasta. Aproape toate cazurile de hacking sunt folosite pentru a efectua apeluri în străinătate.

;Servicii de urgență exten => _0X,1, Dial(SIP/$(EXTEN)@operator) exten => _0X,n, Hangup ;Moscow exten => _8495XXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8495XXXXXXX,n, Hangup exten => _8499XXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8499XXXXXXX,n, Hangup exten => _XXXXXXX,1, Dial(SIP/$(EXTEN)@operator ) exten => _XXXXXXX,n, Hangup ;Intercity Rusia/Mobile exten => _8XXXXXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8XXXXXXXXXX,n, Hangup

În articolul de astăzi vom vorbi despre cum să protejați un IP PBX împotriva accesului neautorizat și vom oferi câteva sfaturi simple, în urma cărora puteți crește semnificativ securitatea centrală telefonică. Exemplele care vor fi date în acest articol se referă la IP-PBX bazate pe Asterisk, dar multe dintre ele se aplică tuturor VoIP-PBX-urilor fără excepție.

În primul rând, să ne dăm seama ce găuri de securitate amenință și cu ce consecințe se confruntă o afacere dacă un atacator obține acces la un IP PBX.

Amenințare de hacking

Spre deosebire de piratarea unui computer personal sau a unei e-mailuri, piratarea unui PBX înseamnă apeluri gratuite pentru hacker, pentru care proprietarul PBX-ului va trebui să plătească. Există multe cazuri în care hackerii au cheltuit sume enorme de bani după ce au petrecut doar câteva ore pe un PBX piratat.

De regulă, ținta atacatorilor sunt IP PBX care sunt accesibile din rețeaua publică. Folosind diverse scanere SIP și examinând vulnerabilitățile sistemului, ei aleg locurile de atacat. Parole implicite, porturi SIP deschise, un firewall gestionat necorespunzător sau absența acestuia - toate acestea pot cauza acces neautorizat.

Din fericire, toate aceste vulnerabilități pot fi remediate și complet gratuit.

Pași simpli pentru îmbunătățirea securității

După cum puteți vedea, protejarea unui IP-PBX de intruziunile externe nu este atât de dificilă; urmând sfaturile sugerate, puteți crește semnificativ securitatea și fiabilitatea sistemului.

După cum știți, asterisc este o aplicație (server) pentru telefonie IP. Adică permite clienților conectați la acesta să se sune între ei și cu lumea exterioară, folosind (printre altele) linii telefonice. Acest lucru prezintă următoarele riscuri:

  1. clienții sunt identificați prin autentificare/parolă și, de asemenea, (de regulă) prin adresa IP. În același timp, este posibil să selectați o parolă (mai devreme sau mai târziu, în funcție de complexitatea acesteia, dar în orice caz este posibil), iar de foarte multe ori restricțiile privind adresele IP sunt departe de a fi atât de stricte pe cât ne-am dori ( în mod ideal, fiecare client ar trebui să aibă propria sa adresă IP unică)
  2. apeluri primite de pe Internet (de exemplu, de la alte servere asterisk). Cu aceste conexiuni, totul este mai complicat, deoarece asteriscul (în configurația de bază) nu prevede afișarea adreselor IP de la care se realizează conexiunea.

Programul fail2ban împreună cu un firewall (de exemplu, iptables) și un asterisc configurat corespunzător (afișează informații complete în jurnale, inclusiv adrese IP ale clienților și ale altor servere) vă permite să blocați în mod eficient încercările de conectare și ghicirea parolei.

Înainte de a începe configurarea, trebuie să instalați iptables și fail2ban. În plus, iptables trebuie să fie deja configurat (și să permită conexiunile cu asterisc) înainte de a configura fail2ban! Puteți citi cum să configurați iptables aici: setarea iptables pentru asterisc. De asemenea, puteți instala fail2ban înainte de a instala asterisk în sine, caz în care (cel puțin în teorie) în timpul procesului de instalare, cele mai recente versiuni de asterisk vor detecta că fail2ban este instalat și îl vor configura automat. In orice caz:

  1. Problema securității telefoniei IP nu este întotdeauna luată în considerare înainte de instalarea asterisk. Adică, cel mai probabil, veți dori să instalați fail2ban pe un sistem cu un asterisc deja instalat (și configurat).
  2. În toate cazurile, configurarea automată nu va funcționa deloc, darămite să funcționeze corect (și începe să blochezi toate atacurile împotriva asteriscului).

Configurarea înregistrării cu asterisc

În primul rând, este logic să configurați înregistrarea cu asterisc, astfel încât informațiile să înceapă imediat să fie colectate în formatul și forma de care avem nevoie. Pentru a face acest lucru, în directorul de configurare a asteriscului (/etc/asterisk în mod implicit), găsiți fișierul logger.conf și faceți-i următoarele modificări: uncomment (eliminați punctul și virgulă de la începutul liniei):

Dataformat=%F %T ; Format de dată ISO 8601

Acest lucru este necesar pentru ca asteriscul să scrie data în jurnale în formatul corect:
an-lună-zi ore:minute:secunde

Începând cu versiunea 10 a asterisk, puteți activa Cadrul de securitate Asterisk. Pentru a face acest lucru, în fișierul logger.conf, găsiți și decomentați (sau adăugați) linia:

Securitate => securitate

Această linie, în partea stângă a săgeții, specifică numele fișierului în care vor fi salvate evenimentele, iar în partea dreaptă, nivelurile (tipurile de evenimente) care vor fi salvate. În acest exemplu, evenimentele legate de nivelul de securitate (și numai ele) vor fi salvate într-un fișier numit securitate în folderul jurnal asterisc.
Desigur, după efectuarea modificărilor, este necesar ca asteriscul să recitească configurația. Pentru a face acest lucru, puteți fie reîncărca serviciul asterisk, fie doar configurația jurnalului (reîncărcarea loggerului din CLI asterisk).

După aceasta, un fișier numit securitate va apărea în folderul jurnal cu asterisc (în mod implicit /var/log/asterisk). Nu uitați să configurați rotația jurnalului pentru acest fișier (la fel ca și pentru alte jurnale cu asterisc)!

Configurarea regulilor de filtrare

Acum trebuie să creăm un filtru care va extrage evenimente potențial periculoase din fluxul general de mesaje cu asterisc (autentificare/parolă incorectă, încercare de conectare de la o adresă IP neautorizată etc., etc.). În același timp, trebuie nu numai să detectăm astfel de evenimente potențial periculoase, ci și să izolăm de acolo adresa IP de la care a fost efectuată acțiunea. Adică, nu căutăm doar linii specifice în fișierele de evenimente asterisc, ci setăm reguli de filtrare.
Regulile de filtrare pot fi scrise în fișierul /etc/fail2ban/filter.d/asterisk.conf. Iată o mostră a conținutului acestui fișier:

# Fișierul de configurare Fail2Ban # # # $Revision: 250 $ # # Citiți prefixele comune. Dacă sunt disponibile personalizări -- citiți-le din # common.local #before = common.conf #_daemon = asterisc # Opțiune: failregex # Note.: regex pentru a se potrivi cu mesajele de eșec de parolă din fișierul jurnal. Gazda # trebuie să fie potrivită de un grup numit „gazdă”. Eticheta „ ” # poate fi folosită pentru potrivirea IP/nume de gazdă standard și este doar un alias pentru # (?:::f(4,6):)?(?P \S+) # Valori: TEXT # # Asterisk 1.8 folosește Gazdă:Format port care este reflectat aici failregex = NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Parolă greșită NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” " - Nu s-a găsit niciun peer care se potrivește NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Numele de utilizator/numele de autentificare nepotrivire NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Dispozitivul nu se potrivește cu ACL NOTICE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Nu este un domeniu local NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Peer nu trebuie să înregistreze NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ :.*” - Eroare ACL (permis/refuz) NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ ” - Parolă greșită NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ ” - Nu s-a găsit niciun peer care se potrivește NOTIFICARE.* .*: Înregistrarea de la „.*” a eșuat pentru „ ” - Numele de utilizator/numele de autentificare nepotrivire NOTIFICARE.* .* : Înregistrarea de la ".*" a eșuat pentru " " - Dispozitivul nu se potrivește cu ACL NOTICE.* .*: Înregistrarea de la ".*" a eșuat pentru " " - Nu este un domeniu local NOTIFICARE.* .*: Înregistrarea de la ".*" a eșuat pentru " " - Peer nu trebuie să înregistreze NOTIFICARE.* .*: Înregistrarea de la ".*" a eșuat pentru " " - Eroare ACL (permis/refuz) NOTIFICARE.* .*: Înregistrare de la "\".*\" .*" a eșuat pentru " :.*" - Nu s-a găsit niciun peer care se potrivește NOTIFICARE.* .*: Înregistrarea de la "\".*\".*" a eșuat pentru " :.*" - Parolă greșită NOTIFICARE.* .*: Nu înregistrare pentru peer „.*” \(de la \) NOTIFICARE.* .*: Gazdă a eșuat Autentificarea MD5 pentru „.*” (.*) NOTIFICARE.* .*: Nu s-a putut autentifica utilizatorul .*@ .* NOTIFICARE.* eșuat pentru a se autentifica ca „.*”$ NOTIFICARE.* .*: Se trimite respingere a autenticării false pentru dispozitiv .*\<.>

Cele mai vechi versiuni folosesc linii precum liniile avia de mai sus, deoarece începând cu versiunea existau informații în jurnalele despre numărul portului care nu este în versiunea de mai sus ia în considerare la fel ca versiunile vechi și noi, astfel încât nu trebuie să modificați nimic în aceasta

Pentru versiuni și versiuni superioare, dacă ați activat înregistrarea în jurnal, nu uitați să specificați regulile de filtrare pentru aceste jurnale

Regulile de filtrare pot fi scrise într-un fișier. Iată o mostră a conținutului acestui fișier

Configurarea izolatoarelor pt

Acum trebuie să creăm descrieri ale așa-numitelor izolatoare, astfel încât să putem conecta filtrele noastre pentru a explica în ce fișiere trebuie căutate aceste linii și apoi ce să facem

Pentru a face acest lucru, deschideți fișierul

  1. Asigurați-vă că nu există alte reguli asociate cu aceasta, doar căutați fișierul după nume fără ghilimele și asigurați-vă că, dacă există astfel de reguli pentru fiecare dintre ele, proprietatea este setată
  2. Dacă versiunea este mai mică sau nu doriți să utilizați jurnale, folosirea jurnalelor nu este recomandată, atunci va trebui să creați o singură regulă, altfel va trebui să creați reguli

Regula nr.

Această regulă trebuie creată pentru toate versiunile. Puteți crea o nouă regulă sau puteți modifica oricare dintre cele existente, dar este dezactivată. Noua regulă, deoarece în exemplul nostru este folosită împreună cu, va fi apelată și va fi aplicată fișierului în care sunt salvate toate tipurile principale de evenimente Asterisc În mod implicit, acest fișier jurnal principal este numit, dar de exemplu acesta va fi un fișier numit fileVassmsettingsasteriskinfileItaksarule

configurați izolatoare pentru evenimentele principale ale regulilor este activat filtrul care va fi folosit se numește numele filtrului acesta este numele fișierului din directorul care înregistrează fișierul master pentru a aplica filtrul pentru a căuta evenimente potențial periculoase numărul a evenimentelor potențial periculoase găsite de filtru pentru a declanșa acțiunea în ce perioadă de timp în secunde aplicați acțiunea pentru ce perioadă de timp în secunde pentru a căuta evenimente noi potențial periculoase ce trebuie făcut dacă filtrul a detectat o perioadă de atac secunde în jurnalele detectate acțiunile potențial periculoase de la o singură adresă blochează toate porturile pentru aceasta și trimite o scrisoare pentru o listă de adrese de subrețea pentru care toate evenimentele potențial periculoase sunt ignorate

Regula nr.

Această regulă va funcționa numai dacă versiunea este mai nouă și, de asemenea, dacă înregistrarea în jurnal este activată mai sus. Puteți, de asemenea, să creați o nouă regulă sau să modificați una existentă, dar este dezactivată. Noua regulă, deoarece în exemplul nostru este folosită împreună cu, va fi numită iar această regulă va folosi pentru analiză fișierul din directorul jurnal.

configurați izolatori pentru regulile evenimentelor de securitate activat filtrul care va fi folosit se numește numele filtrului acest nume de fișier în directorul care fișierul principal de jurnal pentru a aplica filtrul pentru a căuta evenimente potențial periculoase numărul de evenimente potențial periculoase găsite de către filtru pentru a declanșa acțiunea în ce perioadă de timp în secunde aplicați acțiunea pentru ce perioadă de timp în secunde pentru a căuta evenimente noi potențial periculoase ce trebuie să faceți dacă filtrul a detectat o perioadă de atac secunde în jurnale au detectat acțiuni potențial periculoase dintr-un singur bloc de adrese toate porturile pentru aceasta și trimiteți o scrisoare pentru o listă de adrese de subrețea pentru care sunt ignorate toate evenimentele potențial periculoase

Lansa

Acum trebuie să porniți sau să reporniți și, dacă este necesar, de exemplu, nu a fost încă pornit

Pentru a-l rula, trebuie să îl rulați mai întâi, executați următoarea comandă

Pentru a reporni, executați următoarea comandă

Pentru a verifica dacă a pornit cu succes și regula este încărcată, executați următoarea comandă

iar dacă există o a doua regulă

Pentru a afișa o listă de reguli, executați următoarea comandă

Dacă tocmai ați instalat, nu uitați să vă asigurați că este configurat pentru a porni automat când porniți sistemul

Verificarea lucrării

Principalul lucru în timpul procesului de verificare este să aveți un alt computer sau acces local la server la îndemână, astfel încât în ​​cazul în care adresa dvs. este blocată, vă puteți conecta și elimina această blocare

Este necesar să verificați funcționarea legăturii, deoarece chiar dacă ați configurat sau copiat totul corect, este posibil ca multe combinații de evenimente să aibă ca rezultat să nu funcționeze încuietorile pe care le-ați configurat.

Secvență de acțiuni pentru verificarea funcționării legăturii

  1. Asigurați-vă că aveți computerul setat să pornească la pornire.
  2. Dacă ați configurat reguli pentru, vă recomandăm insistent să verificați funcționarea fiecăruia dintre ele separat. Pentru a face acest lucru, dezactivați una dintre reguli, de exemplu
  3. reporniți computerul verificați asta
    1. serviciile rulează
    2. o regulă este activată, iar cealaltă este dezactivată

      În acest caz, va apărea un mesaj pentru regula dezactivată

      și pentru mesajul inclus în formular

  4. Asigurați-vă că porniți clientul de pe server însuși de pe alt computer și specificați date incorecte pentru autorizare. Adresa de conectare trebuie să fie adresa serverului. Încercați să vă autentificați o singură dată sau cel mai mare număr de autorizații după care adresa este blocată este specificat în parametru pentru fiecare regulă separat. Ca client de testare, puteți utiliza un program care rulează din linia de comandă
  5. Dacă ați pornit clientul pe același computer la care v-ați conectat la server și dacă setările au fost configurate corect, adresa dvs. este blocată în prezent și nu vă puteți conecta la serverul de pe acest computer, bifați această conectare la alt computer sau local și continuați executarea comenzilor
  6. Rulați comanda ca

    pentru regula activată și asigurați-vă că adresa la care s-a conectat clientul se află în lista blocată

  7. Acum, similar cu acțiunile din paragraf, deblocați a doua regulă, de exemplu, și blocați-o pe prima
  8. Urmați pașii din paragraf doar în loc să reporniți computerul, ceea ce se poate face și prin simpla repornire a serviciului.După aceasta, adresa computerului pe care ați pornit va debloca imediat clientul.de ce reporniți serviciul din nou.
  9. După ce ați verificat funcționarea ambelor reguli separat, nu uitați să le activați atât pentru și pentru parametru. După aceea, desigur, nu uitați să reporniți serviciul
  10. Și ultimul punct, dacă ați completat punctele anterioare suficient de repede în câteva minute, se poate dovedi că, după activarea ambelor reguli, repornirea ulterioară vă va bloca din nou de la adresa căreia ați început clientul
    Atenție

Managementul regulilor

Se dezactivează temporar blocarea adreselor

Pentru a face acest lucru, trebuie să utilizați serviciul. În primul rând, vom afișa o listă de reguli pe consolă, apoi le vom selecta pe cele de care aveți nevoie pentru a le elimina din ban.

Pentru a vizualiza lista de reguli, introduceți comanda

Veți vedea un mesaj ca următorul

Suntem interesați să eliminăm adresa din interdicție, care, după cum vedem, se află în lanțul de reguli numit Dial a command

Dacă comanda se execută cu succes, nu va apărea niciun mesaj și dacă acum rulăm comanda din nou

apoi vedem ca adresa a disparut din blocare, desi ramane blocata.Totodata ne putem conecta din nou la server

Dezactivează definitiv blocarea adreselor

Pentru a nu bloca o anumită adresă sau mai multe adrese, indiferent de câte încercări nereușite de a ghici parola și alte acțiuni ilegale au efectuat, este necesar să faceți setări suplimentare în fișier

Fiecare regulă de fișier poate conține un parametru care specifică lista de adrese incluse în lista albă pentru această regulă. Deoarece pot exista două reguli, rețineți că trebuie să fiți specificat în ambele reguli

Parametrul are următoarea formă

Adică, puteți înregistra adrese individuale ca subrețele în acest caz și puteți intra în lista albă

Deblocarea adresei unde a fost efectuată testarea

În timp ce verificați corectitudinea setărilor, veți rula în mod repetat clientul pentru a testa activitatea de blocare a atacurilor viitoare pe Internet și, în procesul de lucru ulterioar, este posibil să fie necesar să efectuați din când în când acțiuni care pot fi blocate de la exteriorul.pune-l cel putin un an

Există modalități de a rezolva această problemă

  1. Adăugați adresa la regulile din listă, dar uneori poate să nu fie de dorit, de exemplu, să efectuați testarea periodică a lucrării
  2. De obicei, timpul este durata intervalului în secunde în care evenimentul de atac de ghicire a parolei trebuie repetat o dată, după care banul va intra în vigoare mult mai puțin decât acest timp de ban în secunde după care adresa este eliminată din lista blocate. cele. ștergerea adresei dvs. și apoi repornirea serviciului. Când serviciul este repornit, toate blocările sunt anulate. Cu toate acestea, la încărcarea ulterioară, jurnalele sunt analizate din nou dacă jurnalele sunt scurse în timpul încercărilor de conectare nereușite. Unul va fi interzis din nou imediat după lansa.

Testarea configurației

Puteți verifica cum va fi aplicat filtrul acestei persoane sau aceleia. Pentru a face acest lucru, puteți rula comanda

Unde este acest exemplu de fișier de cale cu jurnalele care vor fi filtrate și filtrul în sine care conține fragmente de mesaje de eroare care ar trebui să fie în jurnal pentru a interzice adresele atacatorilor

În cele din urmă, în loc să reporniți, puteți rula următoarea comandă

Link-uri către surse

Materiale preluate în special de pe site-ul oficial al expresiei regulate și reguli pentru asterisc preluate din secțiune