Skyddar asterisk från obehöriga anslutningar. Konfigurerar fail2ban för att säkra asterisk. Vi gör inte en universell regel för alla samtal

Som ni vet är asterisk en applikation (server) för IP-telefoni. Det vill säga, det tillåter klienter som är anslutna till den att ringa varandra och till omvärlden med hjälp av (bland annat) linjer telefonkommunikation. Detta innebär följande risker:

  1. klienter identifieras med inloggning/lösenord och (vanligtvis) med IP-adress. Samtidigt är det möjligt att hämta ett lösenord (tidigare eller senare, beroende på dess komplexitet, men det är i alla fall möjligt), och väldigt ofta är begränsningarna för IP-adresser långt ifrån så strikta som vi skulle vilja (helst bör varje klient ha sin egen unika IP-adress)
  2. inkommande samtal från Internet (till exempel från andra asteriskservrar). Med dessa anslutningar är allt mer komplicerat, eftersom asterisk (i grundkonfigurationen) inte ger möjlighet att visa IP-adresserna från vilka anslutningen görs.

Fail2ban-programmet tillsammans med en brandvägg (till exempel iptables) och en korrekt konfigurerad asterisk (visas i loggarna fullständig information, inklusive IP-adresser till klienter och andra servrar) låter dig effektivt blockera anslutningsförsök och lösenordsgissning.

Innan du startar konfigurationen måste du installera iptables och fail2ban. Dessutom måste iptables redan vara konfigurerade (och tillåta anslutningar till asterisk) innan fail2ban kan konfigureras! Du kan läsa hur du ställer in iptables här: Ställa in iptables för att asterisk ska fungera. Du kan också installera fail2ban innan du installerar själva asterisken, i vilket fall (åtminstone i teorin) under installationsprocessen senaste versionerna asterisk upptäcker installerat fail2ban och konfigurerar det automatiskt. I alla fall:

  1. Frågan om IP-telefonisäkerhet övervägs inte alltid innan du installerar asterisk. Det vill säga att du troligen vill installera fail2ban på ett system med en asterisk redan installerad (och konfigurerad).
  2. Inte i alla fall fungerar auto-config alls, än mindre fungerar korrekt (och börja blockera alla attacker mot asterisk).

Ställer in asteriskloggning

Först och främst är det vettigt att ställa in asteriskloggning så att information omedelbart börjar samlas in i det format och den form vi behöver. För att göra detta, i asteriskkonfigurationskatalogen (som standard är det /etc/asterisk) hitta filen logger.conf och gör följande ändringar i den: uncomment (ta bort semikolonet i början av raden):

Datumformat=%F %T ; ISO 8601 datumformat

Detta är nödvändigt så att asterisken skriver datumet till loggarna i rätt format:
år-månad-dag timmar:minuter:sekunder

Från och med version 10 av asterisk kan du aktivera Asterisk Security Framework. För att göra detta, i filen logger.conf, hitta och avkommentera (eller lägg till) raden:

säkerhet => säkerhet

Den här raden på vänster sida av pilen indikerar namnet på filen där händelserna kommer att sparas, och på höger sida - nivåerna (typer av händelser) som kommer att sparas. PÅ detta exempel händelser relaterade till säkerhetsnivån (och endast dem) kommer att sparas i en fil som heter säkerhet i asteriskloggmappen.
Naturligtvis, efter att ha gjort ändringar, är det nödvändigt att asterisk läser konfigurationen igen. För att göra detta kan du antingen ladda om asterisktjänsten, eller bara loggkonfigurationen (logger ladda om från asterisk CLI).

Efter det, en fil som heter säkerhet. Glöm inte att ställa in loggrotation för denna fil (samma som för andra asteriskloggar)!

Ställa in filtreringsregler

Nu måste vi skapa ett filter som extraherar potentiellt farliga händelser från asteriskens allmänna meddelandeström (felaktigt användarnamn/lösenord, försök att logga in från en obehörig IP-adress, etc., etc.). Samtidigt behöver vi inte bara upptäcka sådana potentiellt farliga händelser, utan också att därifrån isolera IP-adressen från vilken åtgärden utfördes. Det vill säga, vi letar inte bara efter vissa rader i asteriskhändelsefilerna, utan ställer in filtreringsregler.
Filtreringsregler kan skrivas i filen /etc/fail2ban/filter.d/asterisk.conf. Här är ett exempel på innehållet i denna fil:

# Fail2Ban-konfigurationsfil # # # $Revision: $250 # # Läs vanliga prefix. Om några anpassningar är tillgängliga -- läs dem från # common.local #before = common.conf #_daemon = asterisk # Alternativ: failregex # Notes.: regex för att matcha lösenordsfelmeddelandena i loggfilen. Värden # måste matchas av en grupp som heter "värd". Taggen " " kan # användas för standard IP/värdnamnsmatchning och är endast ett alias för # (?:::f(4,6):)?(?P \S+) # Värden: TEXT # # Asterisk 1.8 använder Host:Port-format som återspeglas här failregex = NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - Fel lösenord NOTICE.* .*: Registrering från ".*" misslyckades för " :.* " - Ingen matchande peer hittades NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - Användarnamn/auth-namn matchar inte NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - Enheten matchar inte ACL NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - Inte en lokal domän NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - Peer ska inte registrera NOTICE.* .*: Registrering från ".*" misslyckades för " :.*" - ACL-fel (permit/deny) NOTICE.* .*: Registrering från ".*" misslyckades för " " - Fel lösenord NOTICE.* .*: Registrering från ".*" misslyckades för " " - Ingen matchande peer hittades NOTICE.* .*: Registrering från ".*" misslyckades för " " - Användarnamn/auth-namn matchar inte NOTIC E.* .*: Registrering från ".*" misslyckades för " " - Enheten matchar inte ACL NOTICE.* .*: Registrering från ".*" misslyckades för " " - Inte en lokal domän MEDDELANDE.* .*: Registrering från ".*" misslyckades för " " - Peer är inte tänkt att registrera NOTICE.* .*: Registrering från ".*" misslyckades för " " - ACL-fel (tillåta/neka) NOTICE.* .*: Registrering från "\ ".*\".*" misslyckades för " :.*" - Ingen matchande peer hittades NOTICE.* .*: Registrering från "\".*\".*" misslyckades för " :.*" - Fel lösenord NOTICE. * .*: Ingen registrering för peer ".*" \(från \) NOTICE.* .*: Värden misslyckades MD5-autentisering för ".*" (.*) NOTICE.* .*: Det gick inte att autentisera användare .*@ . * NOTICE.* misslyckades med att autentisera som ".*"$ NOTICE.* .*: Skickar falskt autentiseringsavslag för enheten .*\<.>

I versionen och tidigare används strängar som avi ovanför strängen, eftersom från och med versionen dök information upp i loggarna på portnumret, som inte finns i ovanstående variant, den tar hänsyn till både gamla och nya versioner, så du behöver inte ändra något i den

För version och högre, om du har aktiverat eller aktiverat loggning, glöm inte att ställa in filtreringsregler för dessa loggar

Filtreringsregler kan skrivas i en fil. Här är ett exempel på innehållet i denna fil

Installera isolatorer för

Nu måste vi skapa beskrivningar av de så kallade isolatorerna för de som ska binda våra filter för att förklara i vilka filer dessa rader ska sökas och sedan vad de ska göra

För att göra detta, öppna filen

  1. Se till att det inte finns några eller inte inkluderade andra regler relaterade till För detta år räcker det att göra en sökning på filen med namn utan citattecken för att säkerställa att om sådana regler finns för var och en av dem, är egenskapen inställd
  2. Om versionen är mindre eller om du inte vill använda loggarna rekommenderas det starkt att använda loggarna, då behöver du bara skapa en regel, annars måste du skapa reglerna

Regel nr.

Denna regel måste skapas för alla versioner. Du kan skapa en ny regel eller ändra någon av de befintliga men inaktiverade den nya regeln, eftersom den i vårt exempel kommer att användas tillsammans med kommer att anropas och kommer att tillämpas på filen där alla huvudtyper av asteriskhändelser sparas.

настраиваемизоляторыдляосновныхсобытийправиловключенофильтркоторымбудетпользоватьсяправилоназываетсяназваниефильтраэтоимяфайлавкаталогеккакомуфайлулогамастерискаприменятьфильтрдляпоискапотенциальноопасныхсобытийколичествопотенциальноопасныхсобытийнайденныхфильтромдлясрабатываниядействиянакакойпериодвременивсекундахприменятьдействиезакакойпериодвременивсекундахискатьвпотенциальноопасныесобытиячтоделатьеслифильтробнаружилатакузапериодсекундвлогахобнаруженопотенциальноопасныхдействийсодногоадресаблокируемвсепортыдляэтогоипосылаемписьмодлясписокадресовподсетейдлякоторыхвсепотенциальноопасныесобытияигнорируются

Regel nr.

Den här regeln fungerar bara om version eller nyare och även om loggning är aktiverad, se ovan. Du kan också skapa en ny regel eller ändra någon av de befintliga men inaktiverade den nya regeln, eftersom den i vårt exempel används tillsammans med will anropas och denna regel kommer att användas för analys av en fil i riskmaster-loggkatalogen

настраиваемизоляторыдлясобытийбезопасностиправиловключенофильтркоторымбудетпользоватьсяправилоназываетсяназваниефильтраэтоимяфайлавкаталогеккакомуфайлулогамастерискаприменятьфильтрдляпоискапотенциальноопасныхсобытийколичествопотенциальноопасныхсобытийнайденныхфильтромдлясрабатываниядействиянакакойпериодвременивсекундахприменятьдействиезакакойпериодвременивсекундахискатьвпотенциальноопасныесобытиячтоделатьеслифильтробнаружилатакузапериодсекундвлогахобнаруженопотенциальноопасныхдействийсодногоадресаблокируемвсепортыдляэтогоипосылаемписьмодлясписокадресовподсетейдлякоторыхвсепотенциальноопасныесобытияигнорируются

lansera

Nu behöver du starta eller starta om och om det är nödvändigt, till exempel, har ännu inte startat

För att köra det måste du köra det först, kör följande kommando

För att starta om kör följande kommando

För att kontrollera att den har lanserats framgångsrikt och att reglerna har laddats, kör följande kommando

och om det finns en andra regel

För att visa listan med regler, kör följande kommando

Om du precis har installerat eller glöm inte att se till att de är konfigurerade så att du startar automatiskt när systemet startar

Kontrollera arbete

Huvudsaken i verifieringsprocessen är att ha en annan dator eller lokal åtkomst till servern till hands så att om din adress är blockerad kunde du ansluta och ta bort denna blockering

Det är nödvändigt att kontrollera länkens funktion, för även om du har konfigurerat eller kopierat allt korrekt, kan det finnas många kombinationer av händelser som ett resultat av vilka låsen du har konfigurerat inte kommer att fungera

Sekvensen av åtgärder för att kontrollera länkens funktion

  1. Se till att du har startups konfigurerade vid datorstart
  2. Om du har konfigurerat regler för det rekommenderar vi starkt att du testar funktionen för var och en av dem individuellt. För att göra detta, inaktivera en av reglerna, till exempel
  3. starta om dina datorer kontrollera det
    1. tjänster körs
    2. en av reglerna är aktiverad och den andra är inaktiverad

      I det här fallet, för den inaktiverade regeln, visas ett meddelande

      och för ett inkluderat meddelande av formuläret

  4. Starta klienten utan själva servern från en annan dator och ange felaktiga uppgifter för auktorisering. Anslutningsadressen måste vara adressen till servern. Försök att logga in en eller flera gånger. Antalet auktoriseringar efter vilka adressen spärras anges i parameter för varje regel separat.
  5. Om du startade klienten på samma dator som du anslutit till servern och om den var korrekt konfigurerad, då är din adress blockerad och du kan inte ansluta till servern från den här datorn, kontrollera detta, anslut till en annan dator eller lokalt och fortsätt exekvering kommandona
  6. Kör kommandovy

    för den aktiverade regeln och se till att adressen som klienten anslutit finns i listan över blockerade

  7. Nu, analogt med åtgärderna från stycket, avblockera till exempel den andra regeln och blockera den första
  8. Följ stegen från punkt till punkt bara istället för att starta om datorn, vilket du också kan göra räcker för att starta om tjänsten. Därefter kommer adressen till datorn som du startade klienten på att låsas upp omedelbart, men du måste starta det igen i punkten för att kontrollera funktionen av den andra regeln.
  9. När du har testat båda reglerna separat, glöm inte att se till att aktivera dem för både för och för-parametern. Efter det, glöm naturligtvis inte att ladda om tjänsten
  10. Och den sista punkten, om du har slutfört eller de tidigare punkterna är tillräckligt snabba i några minuter, kan det tyckas att efter att du aktiverat båda reglerna, den efterföljande omstarten, kommer du igen att blockeras av adressen till klienten som lanserades
    Var försiktig

regelhantering

Inaktivera adressblockering tillfälligt

För att göra detta måste du använda tjänsten. Först visar vi en lista med regler på konsolen och väljer sedan de nödvändiga för att ta bort dem från förbudet

För att se en lista med regler, skriv kommandot

Du kommer att se ett meddelande som detta

Vi är intresserade av att ta bort adressen från förbudet, som, som vi kan se, är i kedjan av regler under namnet vi skriver kommandot

I händelse av framgångsrik exekvering av kommandot kommer inga meddelanden att visas och om vi nu kör kommandot igen

vi kommer att se att adressen har försvunnit från blockeringen, även om den finns kvar i blockeringen. Samtidigt kan vi återigen ansluta till servern

Inaktivera adressblockering permanent

För att inte blockera en viss adress eller flera adresser, oavsett hur många misslyckade försök att gissa lösenordet och andra olagliga handlingar de har begått eller det är nödvändigt att göra ytterligare inställningar i filen

Varje filregel kan innehålla en parameter som anger en lista över adresser som ingår i den vita listan för denna regel. Eftersom det kan finnas två regler, observera att din måste vara skriven i båda reglerna

Parametern har följande form

Det vill säga att du kan förskriva både subnät och individuella adresser i det här fallet, den vita listan faller och

Avblockerar adressen som testades

Under verifieringen av inställningarnas korrekthet kör du upprepade gånger klienten för att testa arbetet med att blockera framtida attacker på Internet, och under efterföljande arbete kan du också behöva utföra åtgärder då och då, konsekvenserna av som kan blockera från sidan.

Det finns sätt att lösa detta problem

  1. Ange adressen i reglerna i listan Men ibland är det kanske inte önskvärt att till exempel utföra periodiska tester av arbete
  2. ОбычновремяэтодлительностьинтервалавсекундахзакотороесобытиеатакаподборпаролядолжноповторитьсяразпослечегобанвступитвсилунамногоменьшечемэтовремябанавсекундахпоистечениикоторогоадресудаляетсяизсписказаблокированныхНапримервыставляетсявминутачасЛибочасаденьилидажебольшеИтакдалееПоэтомуимеетсмыслсделатьпаузудлительностьюнеменеечемсмоментапоследнеготестированияизабаниванияВашегоадресапослечегоперезагрузитьсервисПриперезагрузкесервисавсеблокировкианнулируютсяОднакоприпоследующейзагрузкелогианализируютсясноваиесливлогахвтечениебылонеудачныхпопытокподключениясодногоэтотбудетсновазабаненсразупослезапуска

Konfigurationstestning

Du kan kontrollera hur filtret kommer att tillämpas på en eller annan logg. För att göra detta kan du köra kommandot

Var är den här exempelsökvägsfilen med loggar som kommer att filtreras som själva filtret som innehåller utdragen av felmeddelandet som ska finnas i loggen för att förbjuda angripares adresser

Och slutligen, istället för att starta om med, kan du köra följande kommando

Länkar till källor

Materialet är särskilt hämtat från den officiella webbplatsen för regexp och reglerna för asterisken är hämtade från avsnittet

Telefoni kan vara billigt
och funktionell!

ITCUBE tillhandahåller ett brett utbud av tjänster för installation, integration och konfiguration av IP-telefoni

IT-tjänster kan vara av hög kvalitet!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

APF-konfigurationen finns i /etc/apf/conf.apf

För att börja redigera en fil, använd följande kommando:

nano /etc/apf/conf.ap f

Vi ställer in IFACE_IN och IFACE_OUT för nätverksgränssnittet mot Internet. För nätverksgränssnittet som tittar in i det lokala nätverket, ställ in IFACE_TRUSTED.

SET_TRIM="0"

APF har förmågan att stödja QoS. För SIP och IAX måste du ställa in följande:

TOS _8="21,20,80,4569,5060,10000_20000"

Om du ändrar SSH-porten måste du redigera conf.apf-filen så att den matchar den nya porten.

HELPER_SSH_PORT="2222"

Se till att ersätta 2222 med rätt portnummer som du väljer att hantera SSH på.

Inkommande trafikfiltrering används för att öppna portar för åtkomst; TCP och UDP har separata inställningar. För Asterisk (Trixbox) måste följande portar vara öppna; och TCP och UDP är listade. Om du inte använder TFTP, öppna inte port 69. Glöm inte att ändra SSH-porten. Annars kommer du inte att kunna komma åt; här använder vi port 2222 från vårt senaste exempel. Vi inkluderade inte IAX-portarna i den här installationen. Det finns ett enkelt sätt att säkerställa att endast vissa värdar kan använda IAX, vilket vi kommer att ta upp senare. Detta är användbart om du använder IAX för att ta fram interoffice-trunkar som är osynliga för omvärlden.

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

Jag använder inte utgående filtrering, så det behandlas inte i den här artikeln. Den är inställd på EGF="0", inaktiverad som standard.

För att se en lista med alternativ kommandorad, kör apf utan flaggor.

#apf
apf(3402): (glob) statuslogg hittades inte, skapad
APF version 9.6< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Copyright (C) 1999-2007, R-fx Networks< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Copyright (C) 2007, Ryan MacDonald< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Detta program kan distribueras fritt under villkoren i GNU GPL
användning /usr/local/sbin/apf
-s|--start ........................... ladda alla brandväggsregler
-r|--restart .............. stoppa (spola) och ladda om brandväggsreglerna
-f|--stop........ ............. stoppa (spola) alla brandväggsregler
-l|--list ........................... lista alla brandväggsregler
-t|--status ........................ skriv ut brandväggsstatuslogg
-e|--refresh .......................... uppdatera & lösa dns-namn i förtroende
regler
-a HOST CMT|--tillåt HOST COMMENT ... lägg till värd (IP/FQDN) till
allow_hosts.rules och ladda omedelbart in ny regel i brandväggen
-d HOST CMT|--neka VÄRDKOMMENTAR .... lägg till värd (IP/FQDN) till
deny_hosts.rules och ladda omedelbart in ny regel i brandväggen
-u|--remove HOST ...................ta bort värd från
*_hosts.rules och omedelbart ta bort regeln från brandväggen
-o|--ovars ........................ matar ut alla konfigurationsalternativ

För att starta APF använder vi följande kommandon:

# apf -s
apf(3445): (glob) aktiverar brandvägg
apf(3489): (glob) bestämd (IFACE_IN) eth0 har adress 192.168.1.31
apf(3489): (glob) bestämd (IFACE_OUT) eth0 har adress 192.168.1.31
apf(3489): (glob) laddar 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) parsar drop.lasso till /etc/apf/sdrop_hosts.rules
apf(3489): (sdrop) laddar sdrop_hosts.rules
apf(3489): (glob) laddar vanliga släppportar
...........trimmat för detta dokument.........
apf(3489): (glob) standardinmatning (ingång) släpp
apf(3445): (glob) brandvägg initierad
apf(3445): (glob) !!UTVECKLINGSLÄGE AKTIVAT!! - brandväggen kommer att spolas
var 5:e minut.

Vi kan se att APF är igång och laddar ner några regler från dshield.org och spamhaus.org. Låt oss nu testa att logga in på Asterisk (Trixbox)-servern via SSH för att se till att du har konfigurerat allt korrekt. Om du inte kan ansluta måste du vänta 5 minuter och sedan släpper APF spärren. När du är säker på att du kan SSH in, kan vi ändra DEVEL_MODE = "1" till DEVEL_MODE = "0" i conf.apf och starta om APF. APF startar och utfärdar ingen varning om att den är i DEVELOPMETN_MODE.

APF: ytterligare inställning

Detta är inte slutet på installationen om du vill ansluta dina Asterisk (Trixbox)-servrar över IAX. För att göra detta måste du lägga till IAX-portarna till conf.apf. Det här alternativet fungerar med statiska IP-adresser eller DynDNS. Kommandot apf -a tillåter åtkomst till en specifik IP-adress. Detta kommer globalt att tillåta värden att ansluta till Asterisk (Trixbox) förbi brandväggsreglerna.

apf -a 192.168.1.216

Detta kommer att tillåta system 192.168.1.216 att ansluta till valfri port på den brandväggsserver, och därmed kringgå brandväggsregler. Om du kör APF på båda Asterisk (Trixbox), se till att göra samma sak på den andra värden med rätt IP-adress.

APF tillåter också systemadministratör blockera en värd eller ett helt undernät. Detta är praktiskt om du ser någon som försöker ansluta till din maskin via FTP, Telnet, SSH och så vidare. För att blockera en specifik värd, använd följande: se till att använda IP-adressen du vill blockera.

apf -d 192.168.1.216

Så här blockerar du ett komplett subnät (CIDR):

apf -d 202.86.128.0/24

APF stöder inte QoS för UDP-paket. Endast TCP. Det finns ett enkelt sätt att fixa detta. /etc/apf/internals har en functions.apf-fil. Vi måste redigera den här filen manuellt. Det finns flera ställen där vi behöver lägga till en enda rad. Vi letar efter avsnittet TOS_ i filen functions.apf. Det kommer att se ut så här:

om[! "$TOS_0" == "" ]; sedan
för i i `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
Gjort
fi

Denna extra rad måste göras för alla TOS-bitar du använder.

BFD

Brute force detection (ordboksattack) används för att spåra obehöriga inloggningsförsök.

Konfigurationsfilen för BFD finns i /usr/local/bfd och heter conf.bfd. Den här filen, som för APF, innehåller många kommentarer. Vi ska bara titta på några av anpassningsalternativen.

Den första konfigurationsvariabeln vi ska titta på är TRIG; detta är antalet misslyckade försök innan angriparen blockeras. Standard är 15. Tänk på att detta är antalet försök inte från ett konto, utan från en IP-adress. Så om 15 misslyckade inloggningsförsök kommer från en IP-adress med olika konton, kommer den fortfarande att vara låst.

BFD har en trevlig funktion - skicka e-postmeddelanden vid upptäckt av brute force. För att aktivera det här alternativet, ställ in EMAIL_ALERTS till 1; glöm inte att ange adressen till vilken du vill få meddelanden - EMAIL_ADRESS.

BFD körs av cron var 3:e minut och finns i /etc/cron.d.

Du kan få en lista över förbjudna IP-adresser med kommandot:

För att starta BFD använd följande kommando:

bfd -s

Sammanfattning

Detta avslutar Asterisk (Trixbox) säkerhetsgranskning.

Den här artikeln täcker endast de grundläggande principerna för att skydda Asterisk (Trixbox). Att bygga säkra VoIP-system är naturligtvis inte begränsat till detta.

Originalartikeln finns på länken

Nu måste man mycket ofta hantera olika typer av attacker på Asterisk och dess analoger. Felaktig konfiguration och okunskap om enkla regler innebär ekonomiska förluster för ett företag som använder Asterisk PBX.

I den här artikeln kommer vi att täcka de initiala säkerhetsmekanismerna för Asterisk 13 efter installationen och kommer inte att överväga mekanismerna linux säkerhet. Här är några regler som hjälper till att hålla ditt system säkert:

1. Hack-resistenta lösenord och inloggningar på alla nätverksenheter (Asterisk, IP-telefoner, VoIP-gateways).

Lösenord för SIP-konton, administratörer, Asterisk-hanterare och på nätverksenheter måste innehålla minst 13 tecken (bokstäver, siffror, specialtecken, skiftläge). Använd inte inloggningar i systemet såsom admin, administratör, chef, etc.

2. Korrigera SIP-konfigurationen i Asterisk - sip.conf.

För att skydda dig mot skannrar bör du ändra standard SIP-port, inaktivera gästsamtal och registreringar, överlappningsuppsättningar, prenumerera på kanalstatusinformation, etc. Full beskrivning allmänna sip.conf-parametrar beskrivs i artikeln. Nedan är sip.conf som jag konfigurerade för Asterisk-servern med kommentarer:

Context=standard ;Tilldela en oanvänd kontext för utgående samtal som standard allowguest=no ;Tillåt gästanslutningar (utan autentisering) match_auth_username=no ;Tillåt användningen av "användarnamn"-fältet istället för "från" allowoverlap=no ;Inaktivera ensiffrig dialing;allowtransfer= nej ;Förbjud att använda redirect realm=CUCM11.5(1)SU3 ;Använd ditt serverdomännamn (döljer Asterisk) ;domainsasrealm=no ;recordonfeature=automixmon bindport=9050 ;Ändra SIP-signaleringsport udpbindaddr=0.0.0.0 UDP-adress som standard tcpenable=ja ;Aktivera TCP-stöd (om du har Avaya) tcpbindaddr=0.0.0.0 ;Standard TCP-adress;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ;tcpauthlimit = 100 ;websocket_enabled = sant ;websocket_write_write=tcpauth ;Tillåt anrop till DNS-namn;pedantic=yes ;tos_sip=cs3 ;tos_audio=ef ;tos_video=af41 ;tos_text=af41 ;cos_sip=3 ;cos_audio=5 ;cos_video=4 ;cos_text=3= ;3maxy06 ;min ;defaultexpiry=120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxforwards=70 qualifyfreq=60 ;Sätt värdtillgänglighetskontrollen till 60 sekunder;qualifygap=100 ;qualifypeers=1;mekeepalive=1 ; buggymwi=nej ;mwi_from=asterisk ;vmexten=voicemail ;preferred_codec_only=yes disallow=all ;Inaktivera alla codecs allow=alaw ;Allow Alaw allow=ulaw ;Allow Ulaw ;autoframing=yes ;mohinterpret=default;mohlotplazaparking=default; language=ru ;Gör det ryska språket i systemet som standard tonezone=ru ;Definiera r lokal tonzon i relaxtmf=ja ;Slå på igenkänning av dåligt igenkända DTMF-signaler;trustrpid = nej ;sendrpid = ja rpid_update=ja ;Omedelbart meddelande till den motsatta servern om ändringar i linjestatus;trust_id_outbound = nej ;prematuremedia=no ; callerid=CUCM11. 5(1)SU3 ;Om vi ​​inte har nummerpresentation någonstans, gör det till tecken useragent=Cisco-SIPGateway/IOS-12.x ;Och vi har Cisco-SIPGateway som PBX ;promiscredir = nej ;usereqphone = nej dtmfmode= rfc2833 ;Ställ in knapptryckningstonen på telefonen;compactheaders = ja videosupport=ja ;Aktivera videosamtalsstöd;textsupport=nej maxcallbitrate=2048 ;Maximal bithastighet för videosamtal authfailureevents=ja ;Ställ in Peer-status om den inte kan logga in= rejected alwaysauthreject= ja ;Om autentiseringsbegäran avvisades, kommer svaret INTE att säga att användaren har angetts felaktigt, skydd för uppräkning av användarnamn auth_options_requests=ja ;Kräv auktorisering vid sändning av OP TION och INVITE ;accept_outofcall_message = nej ;outofcall_message_context = meddelanden auth_message_requests=yes ;Aktivera MESSAGE-begäranautentisering ;g726nonstandard = ja ;outboundproxy=proxy.provider.domain;inkluderapathallyyes=contactyes 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=ja ;Om den här tillägget går sönder för en peer-en-kvalité är det inte möjligt att från regcontext ;legacy_useroption_parsing=ja ;send_diversion=nej ;shrinkcallerid=ja ;use_q850_reason = nej ;refer_addheaders=ja autocreatepeer=nej ;Inaktivera UAC-registrering utan autentisering t1min=200 för värd0min=200 fördröjning från värd0min=200 ; =32000 rtptimeout=600 ;Avbryt samtalet om det inte finns någon RTP-medieströmsaktivitet efter 600 sekunder rtpholdtimeout=300 ;Avbryt samtalet om det inte finns någon RTP-medieströmningsaktivitet s i hållläge efter 300 sekunder;rtpkeepalive= ;session-timers=originate ;session-expires=600 ;session-minse=90 ;session-refresher=uac ;sipdebug = ja ;recordhistory=yes ;dumphistory=subscribe=yes ; ;subscribecontext = default ;notifyringing = no ;notifyhold = yes ;notifycid = yes callcounter=yes ;Aktivera samtalsräknare t38pt_udptl=yes ;Aktivera T. 38 med FEC-felkorrigering faxdetect=ja ;Aktivera CNG och T.38-detektion nat=auto_force_rport,auto_commedia ;Hitta Nat automatiskt och mediadata på porten från vilken Asterisk tog emot dem och inte vad den tog emot i SDP ;media_address = 172.16.42.1 ; subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Vidarebefordra RTP-trafik direkt mellan peers, förbi Asterisk ;directrtpsetup=yes ;directmediadeny=0.0.0.0/0 ;directmediapermit=172.16.0.0/16 ;direct_mediaacldspsession=version SIP-anrop ;Ändra SDP-sessionsnamn sdpowner=CiscoSystemsSIP-GW-UserAgent ;Ändra användarfält i SDP-ägarsträngen ;encryption=nej ;encryption_taglen=80 ;avpf=yes ;force_avp=yes ;rtcachefriends=yvretsupdate=yyrtsupdates ; rtautoclear=yes ;ignoreregexpire=yes ;domain=customer.com,customer-context ;allowexternaldomains=no ;allowexternaldomains=no ;fromdomain=mydomain.tld ;snom_aoc_enabled = uses yes of jbenable för att använda yes the; förseningar;jbfor ce = nej jbmaxsize=200 ;Ställ in maximal RTP-buffertstorlek till 200ms;jbresyncthreshold = 1000 ;jbimpl = fix ;jbtargetextra = 40 ;jblog = nej

3. Vi använder icke-standardiserade IAX-portar.

För detta i filen /etc/asterisk/iax.conf i avsnitt ändra parametern bindport=4569 per parameter bindport=9069

4. Asterisk måste köras som en annan användare (inte root). Hur man gör detta står skrivet i.

5. Ställ in tillåtna IP-adresser eller nätverk för SIP-tillägg.

deny=0.0.0.0/0.0.0.0 ; Neka allt permit=10.0.0.0/255.0.0.0 ; Tillåt känt tillstånd=172.20.0.0/255.255.0.0 ; Tillåt känt tillstånd=192.168.0.0/16 ; Tillåt känt

6. Ställ in gränsen för samtidiga samtal.

call-limit=2 ;Sätt värdet till 2 så att användaren kan göra en överföring

7. Ställ in olika regler för utgående routing för varje användare.

Det är nödvändigt att ta bort alla rutter som används som standard och tilldela dina egna med en distinktion till sammanhang:

  • Lokala uppsättningar
  • Lokalsamtal
  • Zonsamtal
  • Långdistanssamtal
  • Internationella samtal

En komplett lista över ABC, DEF-koder kan hämtas från den officiella resursen för Rossvyaz.
För standardrutten gör

Exten => _X.,1,Hängup()

8.

9.

10. Vi visar alla telefonenheter i ett separat Voice VLAN. Här är det nödvändigt att anstränga nätverkare.

11. Vi ägnar särskild uppmärksamhet åt den internationella riktningen 8-10.

Vi anger endast de anvisningar som används i organisationen och lägger till (utvidgar) dem vid behov. Vi gör också ett e-postmeddelande om en användare eller angripare använde en okänd internationell destination och sätter en gräns för varje anslutning och för det samtidiga antalet samtal. En färdig lösning för att skydda riktning 8-10 beskrivs i artikeln.

12. Inaktivera oanvända kanaler och tjänster.

Till exempel, om du inte använder MGCP- eller Skinny-protokollet, inaktivera dessa moduler i filen /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_applikationer.so noload => res_ari_applikationer.so > 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_soundsips .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;===================== = ==== ; PBX -- noload => pbx_ael.so ; Kanaler -- 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 =_i.so noload =_i. so noload => chan_alsa.so noload => chan_oss.so ; Codec -- noload => codec_lpc10.so ; Format -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; Applikationer -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Begränsa fjärråtkomst till IP-PBX med brandvägg.

Om du planerar att tillhandahålla fjärråtkomst för auktoriserade anställda är det bäst att organisera det med hjälp av VPN-servrar(t.ex. OpenVPN).

14. Ange begränsade rättigheter till kataloger.

All användning av webbplatsmaterial är endast möjlig med tillstånd från författaren och med obligatorisk angivelse av källan.

Datum: 09:56 2018-07-28

Det finns många historier på Internet om asteriskhack och efterföljande straff från operatören. Någonstans fanns det en historia om ett litet företag i Australien som lyckades flyga in för 15 000-20 000 dollar. Jag tror inte att någon vill vara i den situationen. Det är mycket bättre, utan att vänta på problem, att utföra en uppsättning åtgärder som avsevärt kommer att minska antalet hackningsalternativ och minimera faran.

Icke-standard port istället för 5060

Om det finns en teknisk möjlighet - byt ALLTID standardporten 5060 till någon annan. Ju mer det skiljer sig från standarden, desto bättre. Angripare kommer mycket snabbt att hitta din asterisk genom att helt enkelt skanna portar över en rad adresser. Detta kommer att hända mycket snabbt - de första försöken att gissa ett lösenord upptäcktes i mig redan 3 dagar efter att asterisken sattes på Internet.
Porten konfigureras i filen sip.conf i avsnittet:

bindport=5060 => bindport=5172

Efter sådana åtgärder kommer antalet plockare att minska till nästan noll.

Konfigurera en brandvägg

Vi förbjuder att ansluta till Asterisk-porten från utsidan - detta kommer att stänga av möjligheten att gissa lösenord. Vissa SIP-telefonileverantörer fungerar dock inte om de inte själva kan nå din port 5060 - i det här fallet måste du tillåta åtkomst till denna port från denna leverantörs server. Så en dag tänkte jag i flera dagar varför det inte fanns någon koppling till Beeline, sedan öppnade jag deras IP-åtkomst till min port 5060 och anslutningen dök upp.

Stäng av gästsamtal

Om du inte behöver ta emot samtal utan registrering, se till att stänga av följande alternativ i sip.conf:
allowguest=ja => allowguest=nej ; Tillåt eller avvisa gästsamtal (standard är ja)

Inaktivera lösenordsvarning

Nästan alla har asteriskkonton som 100, 200, 700, etc. Som standard ger asterisk ett felaktigt lösenordsfel för ett befintligt konto och ett annat för ett icke-existerande konto. Med hjälp av speciella programvara för att gissa lösenord kan en angripare snabbt sortera igenom allt korta nummer och gissa lösenord endast för befintliga konton som svarade "fel lösenord". För att förhindra detta ändrar vi alternativet i sip.conf:
alwaysauthreject = nej => alwaysauthreject = ja
Efter en sådan inställning kommer asterisken att ge samma återhämtning för eventuella felaktiga auktoriseringar.

Vi använder komplexa lösenord för konton

Alla lösenord kan gissas, frågan är bara tid. Eftersom sip-enheter konfigureras en gång och under lång tid, snåla inte med komplexa lösenord. För mig själv använder jag långa lösenord med kombinationer av stora och små bokstäver + siffror så här: secret=f64GCD74ssdZ42

Ta ALLTID bort alla lösenord som matchar inloggningar. Dessa är de första lösenorden som används för lösenord.

Använder neka/tillåta för konton

Obligatoriskt ögonblick! Ange följande rader för alla konton som inte innebär en anslutning från Internet:

Neka=0.0.0.0/0.0.0.0 permit=10.1.1.1/24 permit=10.1.2.1/24

Där 10.1.1.1, 10.1.2.1 är intervall lokala adresser varifrån anslutningen kommer att göras. Anslutningar från andra adresser accepteras inte med asterisk.

Ställa in en samtalsgräns

Samtalsgräns=1

Använd inte standardtillägget i onödan

Vi behöver det inte. Allt som borde vara standard:

Exten => _X.,1,Lägg på

Vi gör inte en universell regel för alla samtal

Säg nej till formulärets regler:

Exten => _X.,1,Dial(SIP/$(EXTEN)@operatör)

Vi skriver tydligt ner alla nödvändiga kombinationer av nummer som överförs till operatören. Om det inte finns något behov av att använda internationell kommunikation – beskriv inte reglerna för det alls. Nästan alla fall av hackning används för samtal utomlands.

; Emergency Services exten => _0X,1, Dial(SIP/$(EXTEN)@operatör) exten => _0X,n, Lägg på ;Moscow exten => _8495XXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8495XXXXXXX,n, Lägg på anknytning => _8499XXXXXXX,1, Dial(SIP/$(EXTEN)@operatör) förlängning => _8499XXXXXXX,n, Lägg på anknytning => _XXXXXXX,1, Dial(SIP/$(EXTEN)@operatör ) exten => _XXXXXXX,n, Lägg på

I dagens artikel kommer vi att prata om hur man skyddar en IP PBX från obehörig åtkomst och ger några enkla tips, varefter du kan öka säkerheten för din telefonväxel avsevärt. Exemplen som kommer att ges i denna artikel hänvisar till Asterisk-baserade IP-växel, men många av dem gäller alla VoIP-växeln utan undantag.

Till att börja med, låt oss ta reda på vilka "säkerhetshål" som hotar och vilka konsekvenser som hotar ett företag om en angripare får tillgång till en IP-växel.

Hotet om hackning

Till skillnad från hacking personlig dator eller e-post, hacka växeln - det här är gratissamtal för hackaren, som ägaren till växeln måste betala för. Det finns många fall då hackare spenderade kolossala summor efter att ha spenderat bara några timmar på en hackad PBX.

Som regel blir IP-PBX:er, som är tillgängliga från ett offentligt nätverk, måltavlor för inkräktare. Med hjälp av olika SIP-skannrar och undersöker systemets sårbarheter väljer de platser att attackera. Standardlösenord, öppna SIP-portar, en felaktig eller saknad brandvägg kan alla orsaka obehörig åtkomst.

Lyckligtvis kan alla dessa sårbarheter elimineras och helt gratis.

Enkla steg för att förbättra säkerheten

Som du kan se är det inte så svårt att skydda IP-PBX från externa intrång, genom att följa de föreslagna tipsen kan du på allvar öka systemets säkerhet och tillförlitlighet.