Casa / Padroneggiare il PC / Protezione dell'asterisco da connessioni non autorizzate. Configurazione di fail2ban per proteggere l'asterisco. Imposta autorizzazioni limitate sulle directory

Protezione dell'asterisco da connessioni non autorizzate. Configurazione di fail2ban per proteggere l'asterisco. Imposta autorizzazioni limitate sulle directory

Data: 09:56 28/07/2018

Ci sono molte storie su Internet sugli hack di asterisco e sulla successiva punizione dell'operatore. Da qualche parte c'era una storia su una piccola compagnia in Australia che riuscì a volare per $ 15.000-20.000. Penso che nessuno voglia trovarsi in quella situazione. È molto meglio, senza aspettare problemi, eseguire alcune serie di misure che ridurranno significativamente il numero di opzioni di hacking e minimizzeranno il pericolo.

Porta non standard invece di 5060

Se esiste una possibilità tecnica, cambiare SEMPRE la porta standard 5060 con un'altra. Più è diverso dallo standard, meglio è. Gli aggressori troveranno molto rapidamente il tuo asterisco semplicemente scansionando le porte su un intervallo di indirizzi. Ciò accadrà molto rapidamente: i primi tentativi di indovinare una password sono stati scoperti in me già 3 giorni dopo che l'asterisco è stato inserito in Internet.
La porta è configurata nel file sip.conf nella sezione:

bindport=5060 => bindport=5172

Dopo tali azioni, il numero di raccoglitori diminuirà quasi a zero.

Configurazione di un firewall

Vietiamo la connessione alla porta Asterisk dall'esterno: ciò interromperà la possibilità di indovinare le password. Tuttavia, alcuni provider di telefonia SIP non funzionano se non riescono a raggiungere la tua porta 5060 da soli: in questo caso, devi consentire l'accesso a questa porta dal server di questo provider. Quindi un giorno ho pensato per diversi giorni al motivo per cui non c'era connessione con Beeline, quindi ho aperto il loro accesso IP alla mia porta 5060 e la connessione è apparsa.

Disattiva le chiamate degli ospiti

Se non hai bisogno di ricevere chiamate senza registrazione, assicurati di disattivare la seguente opzione in sip.conf:
allowguest=sì => allowguest=no ; Consenti o rifiuta le chiamate degli ospiti (l'impostazione predefinita è sì)

Disattiva avviso password

Quasi tutti hanno conti con asterisco come 100, 200, 700, ecc. Per impostazione predefinita, l'asterisco fornisce un errore di password errata per un account esistente e un altro per un account inesistente. Con l'aiuto di speciali software di cracking delle password, un utente malintenzionato può ordinare rapidamente tutti i numeri brevi e indovinare le password solo per gli account esistenti che hanno risposto "password errata". Per evitare ciò, cambiamo l'opzione in sip.conf:
sempreauthreject = no => sempreauthreject = sì
Dopo tale impostazione, l'asterisco darà lo stesso rimbalzo per eventuali autorizzazioni errate.

Usiamo password complesse per gli account

Qualsiasi password può essere indovinata, l'unica domanda è il tempo. Poiché i dispositivi sip sono configurati una volta e per molto tempo, non lesinare password complesse. Per quanto mi riguarda, utilizzo password lunghe con combinazioni di lettere maiuscole e minuscole + numeri come questo: secret=f64GCD74ssdZ42

Rimuovi SEMPRE tutte le password che corrispondono agli accessi. Queste sono le prime password utilizzate per le password.

Utilizzo di negazione/autorizzazione per gli account

Momento obbligatorio! Specificare le seguenti righe per tutti gli account che non implicano una connessione da Internet:

Nega=0.0.0.0/0.0.0.0 permesso=10.1.1.1/24 permesso=10.1.2.1/24

Dove 10.1.1.1,10.1.2.1 sono gli intervalli di indirizzi locali da cui verrà effettuata la connessione. I collegamenti da altri indirizzi non saranno accettati da asterisco.

Impostazione di un limite di chiamate

Limite di chiamata=1

Non utilizzare l'estensione predefinita inutilmente

Non ne abbiamo bisogno Tutto ciò che dovrebbe essere di default:

Estendi => _X.,1,Riaggancia

Non facciamo una regola universale per tutte le chiamate

Dì no alle regole del modulo:

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

Annotiamo chiaramente tutte le combinazioni di numeri necessarie trasmesse all'operatore. Se non è necessario utilizzarlo comunicazione internazionale- non descriverle affatto le regole. Quasi tutti i casi di hacking vengono utilizzati per le chiamate all'estero.

;Servizi di emergenza exten => _0X,1, Dial(SIP/$(EXTEN)@operatore) exten => _0X,n, Hangup ;Mosca exten => _8495XXXXXXX,1, Dial(SIP/$(EXTEN)@operatore) exten => _8495XXXXXXX,n, Riaggancia exten => _8499XXXXXXX,1, Componi(SIP/$(EXTEN)@operatore) exten => _8499XXXXXXX,n, Riaggancia exten => _XXXXXXX,1, Componi(SIP/$(EXTEN)@operatore ) exten => _XXXXXXXX,n, Riaggancia

Ora molto spesso si ha a che fare con vari tipi di attacchi Asterisco e analoghi. Errata configurazione e ignoranza regole semplici comportano perdite finanziarie per l'impresa che utilizza Asterisco del centralino.

In questo articolo, esamineremo i meccanismi di sicurezza iniziali Asterisco 13 dopo l'installazione e non prenderà in considerazione i meccanismi di sicurezza di Linux. Ecco alcune regole che ti aiuteranno a proteggere il tuo sistema:

1. Password e accessi resistenti agli hacker su tutti i dispositivi di rete (Asterisk, telefoni IP, gateway VoIP).

Password per account SIP, amministratori, gestori Asterisk e dispositivi di rete deve essere composto da almeno 13 caratteri (lettere, numeri, caratteri speciali, cambio maiuscolo). Non utilizzare accessi nel sistema come amministratore, amministratore, gestore eccetera.

2. Corretta configurazione SIP in Asterisk - sip.conf.

Per proteggersi dagli scanner, è necessario modificare la porta SIP standard, disabilitare le chiamate e le registrazioni degli ospiti, le sovrapposizioni, iscriversi alle informazioni sullo stato del canale, ecc. Descrizione completa parametri sip.conf generale descritto nell'articolo. Di seguito è riportato il sip.conf che ho configurato per il server Asterisk con i commenti:
context=default ;Per impostazione predefinita, assegna un contesto non utilizzato per le chiamate in uscita allowguest=no ;Disabilita connessioni guest (senza autenticazione) match_auth_username=no ;Disabilita l'uso del campo "nome utente" invece di "da" allowoverlap=no ;Disabilita una cifra dialing;allowtransfer= no ;Disabilita l'uso di forwarding realm=CUCM11.5(1)SU3 ;Usa il nostro Nome del dominio server (nascondendo quell'asterisco) ;domainsasrealm=no ;recordonfeature=automixmon bindport=9050 ;Cambia porta di segnalazione SIP udpbindaddr=0.0.0.0 ;Indirizzo UDP predefinito tcpenable=yes ;Abilita supporto TCP (all'improvviso hai Avaya) tcpbindaddr=0.0 .0.0 ; Indirizzo TCP predefinito;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ;tcpauthlimit = 100 ;websocket_enabled = true ;websocket_write_timeout = 100 transport=udp ;Trasporto predefinito srvlookup=yes ;Nomi DNS;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 ;maxexpiry=3600 ;minexpiry=60 ;defaultexpiry= 120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry= 3600 ;maxforwards=70 qualificafreq=60 ;Imposta il controllo della disponibilità dell'host a 60 secondi;qualifygap=100 ;qualifypeers=1 ;keepalive=60 ;notifymimetype=text/plain ;buggymwi=no ;mwi_from=asterisk ;vmexten=voicemail ;preferred_codec_only=yes disallow=all ;Disabilita tutti i codec allow=a law ;Consenti Alaw allow=ulaw ;Consenti Ulaw ;autoframing=yes ;mohinterpret=default ;mohsuggest=default ;parkinglot=plaza language=ru ;Imposta la lingua russa nel sistema per impostazione predefinita tonezone=ru ;Definisci tonezone globale in Ru relaxdtmf=yes ; Abilita il riconoscimento di segnali DTMF mal riconosciuti;trustrpid = no ;sendrpid = yes rpid_update=yes ;Notifica immediata del server opposto sulle modifiche allo stato della linea;trust_id_outbound = no ;prematuremedia=no ;progressinband=no callerid=CUCM11.5(1)SU3 ;Se non abbiamo CallerID impostato da qualche parte, lo rendiamo simbolico useragent=Cisco-SIPGateway/IOS-12.x ;E come PBX abbiamo Cisco-SIPGateway ;promiscredir = no ;usereqphone = no dtmfmode=rfc2833 ;Imposta il pulsante tono di pressione sul telefono;compactheaders = sì videosupport=yes ;Abilita supporto videochiamate;textsupport=no maxcallbitrate=2048 ;Massimo bitrate videochiamata authfailureevents=yes ;Imposta stato Peer se non riesce ad accedere=rifiutato sempreauthr eject=yes ;Se la richiesta di autenticazione è stata rifiutata, la risposta NON indicherà che l'utente è stato inserito in modo errato, protezione dell'enumerazione dei nomi utente auth_options_requests=yes ;Richiediamo l'autorizzazione per l'invio di OPTION e INVITE ;accept_outofcall_message = no ;outofcall_message_context = messaggi auth_message_requests =yes ;Abilita l'autenticazione della richiesta MESSAGGIO ;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=yes ;Se la qualità è abilitata per un peer e cade, * uccide questa estensione da regcontext ; legacy_useroption_parsing=yes ;send_diversion=no ;shrinkcallerid=yes ;use_q850_reason = no ;refer_addheaders=yes autocreatepeer=no ;Disabilita la registrazione UAC senza autenticazione t1min=200 ;Ritardo minimo per i messaggi da e verso l'host;timert1=500 ;timerb= 32000 rtptimeout= 600 ;Annulla la chiamata se non è presente alcuna attività di flusso multimediale RTP dopo 600 secondi rtpholdtimeout=300 ;Interrompe la chiamata se non è presente alcuna attività di flusso multimediale RTP in modalità Attesa dopo 300 secondi;rtpkeepalive= ;timers-sessione=originate ; session-expires=600 ;session-minse=90 ;session-refresher=uac ;sipdebug = yes ;recordhistory=yes ;dumphistory=yes ;allowsubscribe=no ;subscribecontext = default ;notifyringing = no ;notifyhold = yes ;notifycid = yes callcounter =sì ;Abilita contatori alle chiamate t38pt_udptl=yes ;Abilita supporto per T.38 con correzione errori FEC faxdetect=yes ;Abilita rilevamento CNG e T.38 nat=auto_force_rport,auto_commedia ;Troviamo Nat automaticamente e dati multimediali sulla porta da cui Asterisk li ha ricevuti e non cosa è stato ricevuto in SDP ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Traffico RTP diretto direttamente tra peer, bypassando Asterisk ;directrtpsetup=yes ;directmediadeny=0.0.0.0/0 ;directmediapermit=172.16.0.0 /16 ;directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=Chiamata SIP ;Cambia il nome della sessione SDP sdpowner=CiscoSystemsSIP-GW-UserAgent ;Cambia i campi utente nella stringa del proprietario SDP ;encryption=no ;encryption_taglen=80 ;avpf=yes ;force_avp=yes ;rtcachefriends= yes ;rtsavesysname=yes ;rtupdate=yes ;rtautoclear=yes ;ignoreregexpire=yes ;domain=customer.com,customer-context ;allowexternaldomains=no ;allowexternaldomains=no ;fromdomain=mydomain.tld ;snom_aoc_enabled = yes jbenable= sì ;Abilita l'uso jbforce = no jbmaxsize=200 ;Imposta la dimensione massima del buffer RTP a 200 ms;jbresyncthreshold = 1000 ;jbimpl = fisso ;jbtargetextra = 40 ;jblog = no

3. Usiamo una porta IAX non standard.

Per questo nel file /etc/asterisco/iax.conf nella sezione modificare il parametro bindport=4569 per parametro bindport=9069

4. Asterisk deve essere eseguito come utente diverso (non root). Come farlo è scritto nell'articolo.

5. Impostare gli indirizzi IP o le reti consentiti per gli interni SIP.

negare=0.0.0.0/0.0.0.0 ; Nega tutto permit=10.0.0.0/255.0.0.0 ; Consenti permesso noto=172.20.0.0/255.255.0.0 ; Consenti permesso noto=192.168.0.0/16 ; Consenti permesso noto

6. Impostare il limite di chiamate simultanee.

call-limit=2 ;Imposta il valore su 2 in modo che l'utente possa effettuare un trasferimento

7. Impostare diverse regole di instradamento in uscita per ciascun utente.

È necessario rimuovere tutti i percorsi utilizzati di default e assegnare i propri con una distinzione ai contesti:

  • Insiemi locali
  • Chiamate locali
  • Chiamate di zona
  • Chiamate interurbane
  • Chiamate internazionali
Un elenco completo dei codici ABC, DEF può essere preso dalla risorsa ufficiale di Rossvyaz.
Per il percorso predefinito fare exten => _X.,1,Riaggancia()

8. Usa IPtables

9. Usa Fail2Ban

10. Mostriamo tutti i dispositivi telefonici in una VLAN vocale separata. Qui è necessario sforzare i networker.

11. Prestiamo particolare attenzione alla direzione internazionale 8-10.

Impostiamo solo le indicazioni utilizzate nell'organizzazione e le aggiungiamo (espandiamo) se necessario. Effettuiamo inoltre una notifica via email se un utente o un aggressore ha utilizzato una destinazione internazionale sconosciuta e fissiamo un limite su ogni connessione e sul numero simultaneo di chiamate. Una soluzione pronta per la protezione della direzione 8-10 è descritta nell'articolo.

12. Disattiva i canali e i servizi non utilizzati.

Ad esempio, se non si utilizza il protocollo MGCP o magro, disabilita questi moduli nel file /etc/asterisco/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_pjsip .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;======================= = = ==== ; PBX -- noload => pbx_ael.so ; Canali -- 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. quindi noload => chan_alsa.so noload => chan_oss.so ; Codec -- noload => codec_lpc10.so ; Formati -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; Applicazioni -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Limitare l'accesso remoto all'IP-PBX tramite Firewall.

Se hai intenzione di fornire accesso remoto per i dipendenti autorizzati, è meglio organizzarlo utilizzando Server VPN(es. OpenVPN).

Come sapete, asterisk è un'applicazione (server) per la telefonia IP. Cioè, consente ai clienti ad esso collegati di chiamarsi tra loro e con il mondo esterno utilizzando (tra le altre cose) le linee comunicazione telefonica. Ciò comporta i seguenti rischi:

  1. i client sono identificati da login/password e (di solito) da indirizzo IP. Allo stesso tempo è possibile prelevare una password (prima o dopo, a seconda della sua complessità, ma in ogni caso è possibile), e molto spesso le restrizioni sugli indirizzi IP sono ben lungi dall'essere così rigide come vorremmo (idealmente, ogni client dovrebbe avere il proprio indirizzo IP univoco)
  2. chiamate in arrivo da Internet (ad esempio, da altri server asterisco). Con queste connessioni è tutto più complicato, poiché l'asterisco (nella configurazione base) non prevede la visualizzazione degli indirizzi IP da cui viene effettuata la connessione.

Il programma fail2ban in combinazione con un firewall (ad esempio, iptables) e un asterisco opportunamente configurato (che visualizza tutte le informazioni nei registri, inclusi gli indirizzi IP dei client e di altri server) possono bloccare efficacemente i tentativi di connessione e l'ipotesi di password.

Prima di iniziare la configurazione, è necessario installare iptables e fail2ban. Inoltre, iptables deve essere già configurato (e consentire le connessioni con un asterisco) prima che fail2ban possa essere configurato! Puoi leggere come configurare iptables qui: Configurazione di iptables affinché asterisco funzioni. Puoi anche installare fail2ban prima di installare asterisk stesso, nel qual caso (almeno in teoria) durante l'installazione ultime versioni asterisk rileva fail2ban installato e configuralo automaticamente. Tuttavia:

  1. Il problema della sicurezza della telefonia IP non viene sempre considerato prima di installare l'asterisco. Cioè, molto probabilmente, vuoi installare fail2ban su un sistema con un asterisco già installato (e configurato).
  2. Non in tutti i casi la configurazione automatica funziona, per non parlare del funzionamento corretto (e inizia a bloccare tutti gli attacchi contro l'asterisco).

Impostazione della registrazione dell'asterisco

Prima di tutto, ha senso impostare la registrazione con asterisco in modo che le informazioni inizino immediatamente a essere raccolte nel formato e nella forma di cui abbiamo bisogno. Per fare ciò, nella directory di configurazione dell'asterisco (di default è /etc/asterisk) trova il file logger.conf e apporta le seguenti modifiche: decommenta (rimuove il punto e virgola all'inizio della riga):

Formato data=%F %T ; Formato data ISO 8601

Ciò è necessario affinché l'asterisco scriva la data nei log nel formato corretto:
anno-mese-giorno ore:minuti:secondi

A partire dalla versione 10 di asterisk, puoi abilitare Asterisk Security Framework. Per fare ciò, nel file logger.conf, trova e decommenta (o aggiungi) la riga:

sicurezza => sicurezza

Questa riga sul lato sinistro della freccia indica il nome del file in cui verranno salvati gli eventi e sul lato destro i livelli (tipi di eventi) che verranno salvati. A questo esempio gli eventi relativi al livello di sicurezza (e solo loro) verranno salvati in un file chiamato sicurezza nella cartella di registro dell'asterisco.
Naturalmente, dopo aver apportato le modifiche, è necessario che l'asterisco rilegga la configurazione. Per fare ciò, puoi ricaricare il servizio asterisk o solo la configurazione del log (ricarica logger da asterisk CLI).

Successivamente, un file chiamato security. Non dimenticare di impostare la rotazione del registro per questo file (come per altri registri con asterisco)!

Impostazione delle regole di filtraggio

Ora dobbiamo creare un filtro che estragga gli eventi potenzialmente pericolosi dal flusso di messaggi generali dell'asterisco (nome utente/password errati, tentativo di accesso da un indirizzo IP non autorizzato, ecc., ecc.). Allo stesso tempo, dobbiamo non solo rilevare tali eventi potenzialmente pericolosi, ma anche isolare da lì l'indirizzo IP da cui è stata eseguita l'azione. Cioè, non stiamo solo cercando alcune righe nei file di eventi dell'asterisco, ma stiamo impostando regole di filtro.
Le regole di filtraggio possono essere scritte nel file /etc/fail2ban/filter.d/asterisk.conf. Ecco un esempio del contenuto di questo file:

# File di configurazione Fail2Ban # # # $Revisione: $250 # # Leggi i prefissi comuni. Se sono disponibili personalizzazioni -- leggile da # common.local #before = common.conf #_daemon = asterisk # Opzione: failregex # Note.: regex in modo che corrisponda ai messaggi di errore della password nel file di registro. L'host # deve essere abbinato a un gruppo denominato "host". Il tag " " può # essere utilizzato per la corrispondenza standard di IP/nome host ed è solo un alias per # (?:::f(4,6):)?(?P \S+) # Valori: TESTO # # L'asterisco 1.8 usa Host: formato porta che si riflette qui failregex = AVVISO.* .*: registrazione da ".*" non riuscita per " :.*" - Password errata AVVISO.* .*: registrazione da ".*" non riuscita per " :.* " - Nessun peer corrispondente trovato AVVISO.* .*: Registrazione da ".*" non riuscita per " :.*" - Nome utente/nome di autenticazione non corrispondente AVVISO.* .*: Registrazione da ".*" fallita per " :.*" - Il dispositivo non corrisponde all'AVVISO ACL.* .*: registrazione da ".*" non riuscita per " :.*" - Non è un dominio locale AVVISO.* .*: registrazione da ".*" non riuscita per " :.*" - Il peer non deve registrare AVVISO.* .*: Registrazione da ".*" non riuscita per " :.*" - Errore ACL (autorizzazione/negazione) AVVISO.* .*: Registrazione da ".*" non riuscita per " " - Password errata AVVISO.* .*: Registrazione da ".*" fallita per " " - Nessun peer corrispondente trovato AVVISO.* .*: Registrazione da ".*" fallita per " " - Nome utente/nome di autenticazione non corrispondente AVVISO E.* .*: Registrazione da ".*" non riuscita per " " - Il dispositivo non corrisponde ACL AVVISO.* .*: Registrazione da ".*" non riuscita per " " - Non un dominio locale AVVISO.* .*: Registrazione da ".*" non riuscito per " " - Il peer non deve registrare AVVISO.* .*: registrazione da ".*" non riuscita per " " - Errore ACL (autorizza/rifiuta) AVVISO.* .*: registrazione da "\ ".*\".*" non riuscito per " :.*" - Nessun peer corrispondente trovato AVVISO.* .*: registrazione da "\".*\".*" non riuscito per " :.*" - Password errata AVVISO. * .*: Nessuna registrazione per il peer ".*" \(da \) AVVISO.* .*: L'host ha fallito l'autenticazione MD5 per ".*" (.*) AVVISO.* .*: Impossibile autenticare l'utente .*@ . * AVVISO.* Impossibile autenticarsi come ".*"$ AVVISO.* .*: invio di un falso rifiuto di autenticazione per il dispositivo .*\<.>

Nella versione e precedenti vengono utilizzate stringhe come avi sopra la stringa, poiché a partire dalla versione appariva nei log informazioni sul numero di porta, che non è presente nella variante sopra, tiene conto sia della vecchia che della nuova versione, quindi non è necessario modificare nulla al suo interno

Per la versione e successive, se hai abilitato o abilitato la registrazione, non dimenticare di impostare le regole di filtro per questi log

Le regole di filtraggio possono essere scritte in un file Ecco un esempio del contenuto di questo file

Installazione di isolatori per

Ora dobbiamo creare descrizioni dei cosiddetti isolanti per quelli che associano i nostri filtri per spiegare in quali file queste righe dovrebbero essere cercate e poi cosa fare

Per fare ciò, apri il file

  1. Assicurati che non ci siano o non siano incluse altre regole relative a Per quest'anno, è sufficiente fare una ricerca sul file per nome senza virgolette controlli per assicurarsi che se tali regole esistono per ognuna di esse, la proprietà è impostata
  2. Se la versione è più piccola o non vuoi usare i log, l'utilizzo dei log è altamente raccomandato, allora dovrai creare una sola regola, altrimenti dovrai creare le regole

Regola n.

Questa regola deve essere creata per tutte le versioni.Puoi creare una nuova regola o modificare quelle esistenti ma disabilita la nuova regola, poiché nel nostro esempio verrà utilizzata insieme a verrà chiamata e verrà applicata al file in cui vengono salvati tutti i principali tipi di eventi di asterisco.

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

Regola n.

Questa regola funzionerà solo se la versione o più recente e anche se il logging è abilitato, vedi sopra.Puoi anche creare una nuova regola o modificare una qualsiasi di quelle esistenti ma disabilita la nuova regola, poiché nel nostro esempio è usata insieme a will essere chiamato e questa regola verrà utilizzata per l'analisi da un file nella directory del registro principale del rischio

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

lancio

Ora è necessario avviare o riavviare e se è necessario, ad esempio, non è ancora stato avviato

Per eseguirlo, devi prima eseguirlo, esegui il comando seguente

Per riavviare, eseguire il comando seguente

Per verificare che sia stato avviato correttamente e che le regole siano state caricate, eseguire il comando seguente

e se c'è una seconda regola

Per visualizzare l'elenco delle regole, eseguire il comando seguente

Nel caso in cui tu abbia appena installato o non dimenticare di assicurarti che siano configurati per l'avvio automatico all'avvio del sistema

Controllo del lavoro

La cosa principale nel processo di verifica è avere a portata di mano un altro computer o l'accesso locale al server in modo che nel caso in cui il tuo indirizzo sia bloccato, tu possa connetterti e rimuovere questo blocco

È necessario verificare il funzionamento del collegamento, perché anche se hai configurato o copiato tutto correttamente, potrebbero esserci molte combinazioni di eventi a causa delle quali i blocchi che hai configurato non funzioneranno

La sequenza di azioni per controllare il funzionamento del collegamento

  1. Assicurati di avere gli avviamenti configurati all'avvio del computer
  2. Se hai configurato delle regole per esso, ti consigliamo vivamente di testare il funzionamento di ciascuna di esse individualmente. Per fare ciò, disabilita una delle regole, ad esempio
  3. riavvia i computer controllalo
    1. i servizi sono in esecuzione
    2. una delle regole è abilitata e l'altra è disabilitata

      In questo caso, per la regola disabilitata, apparirà un messaggio

      e per un messaggio incluso nel modulo

  4. Avviare il client senza il server stesso da un altro computer e specificare i dati errati per l'autorizzazione. L'indirizzo di connessione deve essere l'indirizzo del server. Provare ad accedere una o più volte. Il numero di autorizzazioni dopo le quali l'indirizzo viene bloccato è specificato nella parametro per ciascuna regola separatamente.
  5. Se hai avviato il client sullo stesso computer su cui ti sei connesso al server e se è stato configurato correttamente, il tuo indirizzo è bloccato e non puoi connetterti al server da questo computer, controlla questo, connettiti a un altro computer o localmente e continua l'esecuzione i comandi
  6. Esegui commandview

    per la regola abilitata e assicurarsi che l'indirizzo a cui si è connesso il client sia nell'elenco dei bloccati

  7. Ora, per analogia con le azioni del paragrafo, sblocca la seconda regola, ad esempio, e blocca la prima
  8. Segui i passaggi da punto a punto solo invece di riavviare il computer, cosa che puoi fare anche per riavviare il servizio, dopodiché l'indirizzo del computer su cui hai avviato il client può essere sbloccato immediatamente, ma è necessario avviare sempre nel punto per verificare il funzionamento della seconda regola.
  9. Dopo aver testato entrambe le regole separatamente, non dimenticare di abilitarle sia per il parametro for che per. Dopodiché, ovviamente, non dimenticare di ricaricare il servizio
  10. E l'ultimo punto, se hai completato o i punti precedenti abbastanza velocemente per qualche minuto, allora può sembrare che dopo aver abilitato entrambe le regole, al successivo riavvio, sarai nuovamente bloccato dall'indirizzo del client che è stato lanciato
    Stai attento

gestione delle regole

Disattiva temporaneamente il blocco degli indirizzi

Per fare ciò è necessario utilizzare il servizio, prima visualizzeremo un elenco di regole sulla console e poi selezioneremo quelle necessarie per rimuoverle dal ban

Per visualizzare un elenco di regole, immettere il comando

Vedrai un messaggio come questo

Ci interessa rimuovere dal ban l'indirizzo che, come possiamo vedere, è nella catena delle regole sotto il nome digitiamo il comando

In caso di corretta esecuzione del comando, non verrà visualizzato alcun messaggio e se ora eseguiamo nuovamente il comando

vedremo che l'indirizzo è scomparso dal blocco, anche se rimane nel blocco Allo stesso tempo, possiamo nuovamente connetterci al server

Disattiva definitivamente il blocco degli indirizzi

Per non bloccare un determinato indirizzo o più indirizzi, indipendentemente da quanti tentativi falliti di indovinare la password e altre azioni illegali hanno commesso o è necessario effettuare impostazioni aggiuntive nel file

Ogni regola di file può contenere un parametro che specifica un elenco di indirizzi inclusi nella lista bianca per questa regola. Poiché possono esserci due regole, tieni presente che la tua deve essere scritta in entrambe le regole

Il parametro ha la forma seguente

Cioè, puoi prescrivere sia le sottoreti che i singoli indirizzi in questo caso, la lista bianca cade e

Sblocco dell'indirizzo testato

Durante la verifica della correttezza delle impostazioni, esegui ripetutamente il client per testare il lavoro per bloccare futuri attacchi su Internet e, nel corso del lavoro successivo, potresti anche dover eseguire azioni di volta in volta, le conseguenze di che potrebbe bloccarsi lateralmente.

Ci sono modi per risolvere questo problema

  1. Inserisci l'indirizzo nelle regole nell'elenco Ma a volte potrebbe non essere desiderabile, ad esempio, eseguire test periodici del lavoro
  2. ОбычновремяэтодлительностьинтервалавсекундахзакотороесобытиеатакаподборпаролядолжноповторитьсяразпослечегобанвступитвсилунамногоменьшечемэтовремябанавсекундахпоистечениикоторогоадресудаляетсяизсписказаблокированныхНапримервыставляетсявминутачасЛибочасаденьилидажебольшеИтакдалееПоэтомуимеетсмыслсделатьпаузудлительностьюнеменеечемсмоментапоследнеготестированияизабаниванияВашегоадресапослечегоперезагрузитьсервисПриперезагрузкесервисавсеблокировкианнулируютсяОднакоприпоследующейзагрузкелогианализируютсясноваиесливлогахвтечениебылонеудачныхпопытокподключениясодногоэтотбудетсновазабаненсразупослезапуска

Test di configurazione

È possibile verificare come verrà applicato il filtro all'uno o all'altro registro.A tale scopo, è possibile eseguire il comando

Dov'è questo file di percorso di esempio con i log che verranno filtrati come filtro stesso che contiene gli snippet del messaggio di errore che dovrebbe essere nel log per vietare gli indirizzi degli aggressori

E infine, invece di riavviare con, puoi eseguire il comando seguente

Collegamenti a fonti

I materiali sono presi in particolare dal sito ufficiale della regexp e le regole per l'asterisco sono tratte dalla sezione

La telefonia può essere economica
e funzionale!

La società ITCUBE fornisce vasta gamma servizi di installazione, integrazione e configurazione di telefonia IP

I servizi IT possono essere di alta qualità!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

La configurazione dell'APF è in /etc/apf/conf.apf

Per iniziare a modificare un file, utilizzare il comando seguente:

nano /etc/apf/conf.ap f

Impostare IFACE_IN e IFACE_OUT su interfaccia di rete guardando Internet. Per un'interfaccia di rete che guarda rete locale, imposta IFACE_TRUSTED.

SET_TRIM="0"

APF ha la capacità di supportare QoS. Per SIP e IAX, è necessario impostare quanto segue:

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

Se modifichi la porta SSH, devi modificare il file conf.apf in modo che corrisponda a questa nuova porta.

HELPER_SSH_PORT="2222"

Assicurati di sostituire 2222 con il numero di porta corretto su cui scegli di gestire SSH.

Il filtraggio del traffico in entrata viene utilizzato per aprire le porte per l'accesso; TCP e UDP hanno impostazioni separate. Per Asterisk (Trixbox), le seguenti porte devono essere aperte; e sono elencati TCP e UDP. Se non stai usando TFTP, non aprire la porta 69. Non dimenticare di cambiare la porta SSH. In caso contrario, non potrai accedere; qui stiamo usando la porta 2222 dal nostro ultimo esempio. Non abbiamo incluso le porte IAX in questa configurazione. Esiste un modo semplice per garantire che solo determinati host possano utilizzare IAX, di cui parleremo in seguito. Ciò è utile se si utilizza IAX per richiamare trunk tra uffici invisibili al mondo esterno.

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

Non utilizzo il filtro in uscita, quindi non è trattato in questo articolo. È impostato su EGF="0", disabilitato per impostazione predefinita.

Per visualizzare un elenco di opzioni riga di comando, esegui apf senza flag.

#apf
apf(3402): registro di stato (glob) non trovato, creato
APF versione 9.6< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Copyright (C) 1999-2007, Reti R-fx< 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. >
Questo programma può essere ridistribuito liberamente secondo i termini della GNU GPL
utilizzo /usr/local/sbin/apf
-s|--start ................................carica tutte le regole del firewall
-r|--restart ............................. interrompere (svuotare) e ricaricare le regole del firewall
-f|--stop........ ............. interrompe (svuota) tutte le regole del firewall
-l|--list .........................elenca tutte le regole del firewall
-t|--status ............................. output del registro dello stato del firewall
-e|--refresh ....................... aggiorna e risolve i nomi DNS in modo attendibile
regole
-a HOST CMT|--consenti HOST COMMENT ... aggiungi host (IP/FQDN) a
allow_hosts.rules e carica immediatamente la nuova regola nel firewall
-d HOST CMT|--deny HOST COMMENT .... aggiungi host (IP/FQDN) a
nega_hosts.rules e carica immediatamente la nuova regola nel firewall
-u|--rimuovi HOST ...................rimuovi host da
*_hosts.rules e rimuovere immediatamente la regola dal firewall
-o|--ovars ............................. genera tutte le opzioni di configurazione

Per avviare APF utilizziamo i seguenti comandi:

# apf -s
apf(3445): (glob) attivazione del firewall
apf(3489): (glob) determinato (IFACE_IN) eth0 ha l'indirizzo 192.168.1.31
apf(3489): (glob) determinato (IFACE_OUT) eth0 ha l'indirizzo 192.168.1.31
apf(3489): (glob) caricamento di 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) analizza drop.lasso in /etc/apf/sdrop_hosts.rules
apf(3489): (sdrop) caricamento di sdrop_hosts.rules
apf(3489): (glob) caricamento di porte di rilascio comuni
...........rifilato per questo documento.........
apf(3489): caduta di input (glob) predefinita (ingresso).
apf(3445): firewall (glob) inizializzato
apf(3445): (glob) !!MODALITÀ SVILUPPO ABILITATA!! - il firewall si svuota
ogni 5 minuti.

Possiamo vedere che APF è attivo e funzionante, scaricando alcune regole da dshield.org e spamhaus.org. Ora testiamo l'accesso al server Asterisk (Trixbox) tramite SSH per assicurarci di aver configurato tutto correttamente. Se non riesci a connetterti, devi attendere 5 minuti e poi APF rilascerà il blocco. Una volta che sei sicuro di poter entrare in SSH, possiamo cambiare DEVEL_MODE = "1" in DEVEL_MODE = "0" in conf.apf e riavviare APF. APF si avvierà e non emetterà un avviso che è in DEVELOPMETN_MODE.

APF: accordatura aggiuntiva

Questa non è la fine della configurazione se desideri connettere i tuoi server Asterisk (Trixbox) su IAX. Per fare ciò, dovrai aggiungere le porte IAX a conf.apf. Questa opzione funzionerà con IP statici o DynDNS. Il comando apf -a consente l'accesso a un indirizzo IP specifico. Ciò consentirà globalmente all'host di connettersi ad Asterisk (Trixbox) bypassando le regole del firewall.

apf -a 192.168.1.216

Ciò consentirà al sistema 192.168.1.216 di connettersi a qualsiasi porta sul server con firewall, aggirando così le regole del firewall. Se stai eseguendo APF su entrambi Asterisk (Trixbox), assicurati di fare la stessa cosa sull'altro host usando l'indirizzo IP corretto.

APF consente inoltre all'amministratore di sistema di bloccare un host o un'intera sottorete. Questo è utile se vedi qualcuno che tenta di connettersi alla tua macchina tramite FTP, Telnet, SSH e così via. Per bloccare un host specifico, utilizzare quanto segue: assicurarsi di utilizzare l'indirizzo IP che si desidera bloccare.

apf -d 192.168.1.216

Per bloccare una sottorete completa (CIDR):

apf -d 202.86.128.0/24

APF non supporta QoS per i pacchetti UDP. Solo TCP. C'è un modo semplice per risolvere questo problema. /etc/apf/internals ha un file functions.apf. Dobbiamo modificare questo file manualmente. Esistono diversi punti in cui è necessario aggiungere una singola riga. Stiamo cercando la sezione TOS_ nel file functions.apf. Sembrerà così:

Se[! "$TOS_0" == "" ]; poi
per i in `eco $TOS_0 | tr "," ""`; fare
i=`eco $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
fatto
fi

Questa riga aggiuntiva deve essere creata per tutti i bit TOS utilizzati.

BFD

Il rilevamento della forza bruta (attacco al dizionario) viene utilizzato per rintracciare i tentativi di accesso non autorizzati.

Il file di configurazione per BFD si trova in /usr/local/bfd e si chiama conf.bfd. Questo file, come per APF, contiene molti commenti. Esamineremo solo alcune delle opzioni di personalizzazione.

La prima variabile di configurazione che esamineremo è TRIG; questo è il numero di tentativi falliti prima che l'attaccante venga bloccato. Il valore predefinito è 15. Tieni presente che questo è il numero di tentativi non da un account, ma da un indirizzo IP. Quindi, se da 1 indirizzo IP deriva 15 tentativi falliti accedi utilizzando account diversi, sarà comunque bloccato.

BFD ha una bella caratteristica: invia e-mail quando viene rilevata una forza bruta. Per accendere questa opzione, imposta EMAIL_ALERTS su 1; non dimenticare di specificare l'indirizzo a cui desideri ricevere le notifiche - EMAIL_ADRESS.

BFD viene eseguito da cron ogni 3 minuti e si trova in /etc/cron.d.

Puoi ottenere un elenco di indirizzi IP vietati usando il comando:

Per avviare BFD utilizzare il seguente comando:

bfd -s

Riepilogo

Questo completa la revisione della sicurezza di Asterisk (Trixbox).

Questo articolo copre solo i principi di base della protezione di Asterisk (Trixbox). Naturalmente, la costruzione di sistemi VoIP sicuri non si limita a questo.

L'articolo originale lo trovate al link