Heim / Den PC beherrschen / Asterisk vor unbefugten Verbindungen schützen. Fail2ban konfigurieren, um Asterisk zu sichern. Legen Sie eingeschränkte Berechtigungen für Verzeichnisse fest

Asterisk vor unbefugten Verbindungen schützen. Fail2ban konfigurieren, um Asterisk zu sichern. Legen Sie eingeschränkte Berechtigungen für Verzeichnisse fest

Datum: 09:56 28.07.2018

Im Internet kursieren viele Geschichten über Asterisk-Hacks und anschließende Bestrafung durch den Betreiber. Irgendwo gab es eine Geschichte über eine kleine Firma in Australien, die es schaffte, für 15.000 bis 20.000 Dollar einzufliegen. Ich glaube nicht, dass jemand in dieser Situation sein möchte. Es ist viel besser, ohne auf Probleme zu warten, einige Maßnahmen durchzuführen, die die Anzahl der Hacking-Optionen erheblich reduzieren und die Gefahr minimieren.

Nicht-Standard-Port anstelle von 5060

Wenn es eine technische Möglichkeit gibt - ändern Sie IMMER den Standardport 5060 auf einen anderen. Je mehr es sich vom Standard unterscheidet, desto besser. Angreifer finden Ihren Asterisk sehr schnell, indem sie einfach Ports über eine Reihe von Adressen scannen. Das geht sehr schnell - die ersten Versuche, ein Passwort zu erraten, wurden bei mir bereits 3 Tage, nachdem asterisk ins Internet gestellt wurde, entdeckt.
Der Port wird in der Datei sip.conf im Abschnitt konfiguriert:

bindport=5060 => bindport=5172

Nach solchen Aktionen sinkt die Anzahl der Kommissionierer auf fast Null.

Einrichten einer Firewall

Wir verbieten, sich von außen mit dem Asterisk-Port zu verbinden - dies wird die Möglichkeit, Passwörter zu erraten, unterbrechen. Einige SIP-Telefonieanbieter funktionieren jedoch nicht, wenn sie Ihren Port 5060 nicht selbst erreichen können – in diesem Fall müssen Sie den Zugriff auf diesen Port vom Server dieses Anbieters zulassen. Eines Tages dachte ich mehrere Tage lang nach, warum es keine Verbindung mit Beeline gab, dann öffnete ich ihren IP-Zugang zu meinem Port 5060 und die Verbindung erschien.

Deaktivieren Sie Gastanrufe

Wenn Sie ohne Registrierung keine Anrufe entgegennehmen möchten, schalten Sie unbedingt die folgende Option in der sip.conf aus:
Allowguest=yes => Allowguest=no ; Gastanrufe zulassen oder ablehnen (Standard ist ja)

Kennwortwarnung deaktivieren

Fast jeder hat Sternchenkonten wie 100, 200, 700 usw. Standardmäßig gibt Sternchen einen falschen Kennwortfehler für ein vorhandenes Konto und einen weiteren für ein nicht vorhandenes Konto aus. Mit Hilfe spezieller Software zum Knacken von Passwörtern, kann ein Angreifer schnell alle Kurznummern sortieren und Passwörter nur für bestehende Konten erraten, die mit „falsches Passwort“ geantwortet haben. Um dies zu verhindern, ändern wir die Option in der sip.conf:
alwaysauthreject = nein => alwaysauthreject = ja
Nach einer solchen Einstellung gibt der Stern den gleichen Rückprall für alle falschen Autorisierungen.

Wir verwenden komplexe Passwörter für Konten

Jedes Passwort kann erraten werden, die Frage ist nur die Zeit. Da SIP-Geräte einmal und für lange Zeit konfiguriert werden, sollten Sie nicht mit komplexen Passwörtern sparen. Für mich selbst verwende ich lange Passwörter mit Kombinationen aus Groß- und Kleinbuchstaben + Zahlen wie folgt: secret=f64GCD74ssdZ42

Entfernen Sie IMMER alle Passwörter, die mit Logins übereinstimmen. Dies sind die ersten Passwörter, die für Passwörter verwendet werden.

Verweigern/Zulassen für Konten verwenden

Pflichtmoment! Geben Sie die folgenden Zeilen für alle Konten an, die keine Verbindung aus dem Internet implizieren:

Verweigern=0.0.0.0/0.0.0.0 Erlaubnis=10.1.1.1/24 Erlaubnis=10.1.2.1/24

Wobei 10.1.1.1,10.1.2.1 die Bereiche lokaler Adressen sind, von denen aus die Verbindung hergestellt wird. Verbindungen von anderen Adressen werden von asterisk nicht akzeptiert.

Festlegen eines Anruflimits

Call-Limit=1

Verwenden Sie die Standarderweiterung nicht unnötigerweise

Wir brauchen es nicht Alles, was in Verzug sein sollte:

Exten => _X.,1,Auflegen

Wir machen keine universelle Regel für alle Anrufe

Sag nein zu den Regeln des Formulars:

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

Wir schreiben alle notwendigen Zahlenkombinationen, die an den Betreiber übermittelt werden, übersichtlich auf. Wenn keine Verwendung erforderlich ist internationale Kommunikation- beschreibe die Regeln für sie überhaupt nicht. Fast alle Fälle von Hacking werden für Anrufe ins Ausland genutzt.

;Notrufnummer => _0X,1, Wählen(SIP/$(EXTEN)@operator) Durchwahl => _0X,n, Auflegen ;Moskau durchwahl => _8495XXXXXXX,1, Wählen(SIP/$(EXTEN)@operator) Durchwahl => _8495XXXXXXX,n, Auflegen Nebenstelle => _8499XXXXXXX,1, Wählen(SIP/$(EXTEN)@Operator) Nebenstelle => _8499XXXXXXX,n, Auflegen Exten => _XXXXXXX,1, Wählen(SIP/$(EXTEN)@Operator ) exten => _XXXXXXX,n, Auflegen

Nun muss man sich sehr oft mit verschiedenen Arten von Angriffen auseinandersetzen Sternchen und Analoga. Fehlkonfiguration und Ignoranz einfache Regeln zu finanziellen Einbußen für das nutzende Unternehmen führen PBX-Asterisk.

In diesem Artikel werden wir uns die anfänglichen Sicherheitsmechanismen ansehen Sternchen 13 nach der Installation und berücksichtigt keine Linux-Sicherheitsmechanismen. Hier sind ein paar Regeln, die dabei helfen, Ihr System sicher zu halten:

1. Hack-resistente Passwörter und Logins auf allen Netzwerkgeräten (Asterisk, IP-Telefone, VoIP-Gateways).

Passwörter für SIP-Accounts, Administratoren, Asterisk-Manager u Netzwerkgeräte muss aus mindestens 13 Zeichen bestehen (Buchstaben, Ziffern, Sonderzeichen, Groß-/Kleinschreibung). Verwenden Sie keine Logins im System wie z Administrator, Administrator, Manager usw.

2. Korrekte SIP-Konfiguration in Asterisk - sip.conf.

Zum Schutz vor Scannern sollten Sie den Standard-SIP-Port ändern, Gastanrufe und Registrierungen deaktivieren, Overlap-Sets deaktivieren, Kanalstatusinformationen abonnieren usw. Gesamte Beschreibung Parameter allgemeine sip.conf im Artikel beschrieben. Unten ist die sip.conf, die ich für den Asterisk-Server mit Kommentaren konfiguriert habe:
context=default ;Standardmäßig ungenutzten Kontext für ausgehende Anrufe zuweisen allowguest=no ;Gastverbindungen (ohne Authentifizierung) nicht zulassen match_auth_username=no ;Verwendung des Felds „username“ anstelle von „from“ nicht zulassen allowoverlap=no ;einstellige Zeichen nicht zulassen dialing;allowtransfer= no ;Verwendung der Weiterleitung deaktivieren realm=CUCM11.5(1)SU3 ;Eigene verwenden Domänenname Server (versteckt diesen Asterisk) ;domainsasrealm=no ;recordonfeature=automixmon bindport=9050 ;SIP-Signalisierungsport ändern udpbindaddr=0.0.0.0 ;Standard-UDP-Adresse tcpenable=yes ;TCP-Unterstützung aktivieren (plötzlich haben Sie Avaya) tcpbindaddr=0.0 .0.0 ; Standard-TCP-Adresse;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ;tcpauthlimit = 100 ;websocket_enabled = true ;websocket_write_timeout = 100 transport=udp ;Standardtransport srvlookup=yes ;DNS-Namen;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=70qualififreq=60 ;Hostverfügbarkeitsprüfung auf 60 Sekunden setzen;qualifygap=100 ;qualifypeers=1 ;keepalive=60 ;notifymimetype=text/plain ;buggymwi=no ;mwi_from=asterisk ;vmexten=voicemail ;preferred_codec_only=yes disallow=all ;Alle Codecs deaktivieren allow=a law ;Allow Alaw allow=ulaw ;Allow Ulaw ;autoframing=yes ;mohinterpret=default ;mohsuggest=default ;parkinglot=plaza language=ru ;Russische Sprache im System als Standard festlegen Erkennung schlecht erkannter DTMF-Signale aktivieren;trustrpid = nein ;sendrpid = ja rpid_update=yes ;Sofortige Benachrichtigung des Servers der Gegenstelle über Leitungszustandsänderungen;trust_id_outbound = nein ;prematuremedia=no ;progressinband=no callerid=CUCM11.5(1)SU3 ;Wenn wir CallerID nicht irgendwo gesetzt haben - machen wir es symbolisch useragent=Cisco-SIPGateway/IOS-12.x ;Und als PBX haben wir Cisco-SIPGateway ;promiscredir = no ;usereqphone = no dtmfmode=rfc2833 ;Schaltfläche setzen Ton am Telefon drücken;compactheaders = ja videosupport=yes ;Unterstützung für Videoanrufe aktivieren;textsupport=no maxcallbitrate=2048 ;Maximale Bitrate für Videoanrufe authfailureevents=yes ;Peer-Status festlegen, wenn er sich nicht anmelden kann=immer abgelehnt eject=yes ;Wenn die Authentifizierungsanfrage abgelehnt wurde, dann wird die Antwort NICHT sagen, dass der Benutzer falsch eingegeben wurde, Schutz der Aufzählung von Benutzernamen auth_options_requests=yes ;Wir benötigen Autorisierung beim Senden von OPTION und INVITE ;accept_outofcall_message = nein ;outofcall_message_context = Nachrichten auth_message_requests =ja ;MESSAGE-Anforderungsauthentifizierung aktivieren ;g726nonstandard = ja ;outboundproxy=proxy.provider.domain:8080 ;supportpath=ja ;rtsavepath=ja ;matchexternaddrlocally = ja ;dynamic_exclude_static = ja ;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 ;Wenn Qualität für einen Peer aktiviert ist und es ausfällt, beendet * diese Erweiterung regcontext ; legacy_useroption_parsing=yes ;send_diversion=no ;shrinkcallerid=yes ;use_q850_reason = no ;refer_addheaders=yes autocreatepeer=no ;UAC-Registrierung ohne Authentifizierung deaktivieren t1min=200 ;Mindestverzögerung für Nachrichten an und vom Host;timert1=500 ;timerb= 32000 rtptimeout= 600 ;Anruf abbrechen, wenn nach 600 Sekunden keine RTP-Medienstromaktivität vorhanden ist rtpholdtimeout=300 ;Anruf abbrechen, wenn nach 300 Sekunden keine RTP-Medienstromaktivität im Haltemodus vorhanden ist;rtpkeepalive= ;session-timers=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 =ja ;Zähler aktivieren to calls t38pt_udptl=yes ;Unterstützung für T.38 mit FEC-Fehlerkorrektur aktivieren faxdetect=yes ;CNG- und T.38-Erkennung aktivieren nat=auto_force_rport,auto_comedia ;Wir finden Nat automatisch und Mediendaten auf dem Port, von dem Asterisk sie erhalten hat und nicht was in SDP empfangen wurde ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Direkter RTP-Verkehr direkt zwischen Peers unter Umgehung von Asterisk ;directrtpsetup=yes ;directmediadeny=0.0.0.0/0 ;directmediapermit=172.16.0.0 /16 ; directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=SIP-Anruf ;SDP-Sitzungsnamen ändern sdpowner=CiscoSystemsSIP-GW-UserAgent ;Benutzerfelder in der SDP-Eigentümerzeichenfolge ändern ;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= ja ;Verwendung aktivieren jbforce = nein jbmaxsize=200 ;Maximale RTP-Puffergröße auf 200ms setzen;jbresyncthreshold = 1000 ;jbimpl = behoben ;jbtargetextra = 40 ;jblog = nein

3. Wir verwenden einen nicht standardmäßigen IAX-Port.

Dazu in der Datei /etc/asterisk/iax.conf im Abschnitt Parameter ändern bindport=4569 pro Parameter bindport=9069

4. Asterisk muss unter einem anderen Benutzer (nicht root) ausgeführt werden. Wie das geht, steht im Artikel.

5. Legen Sie zulässige IP-Adressen oder Netzwerke für SIP-Nebenstellen fest.

deny=0.0.0.0/0.0.0.0 ; alles verweigern permission=10.0.0.0/255.0.0.0 ; bekannte Erlaubnis zulassen=172.20.0.0/255.255.0.0 ; bekannte Erlaubnis zulassen=192.168.0.0/16 ; bekannte zulassen

6. Legen Sie das Limit für gleichzeitige Anrufe fest.

call-limit=2 ;Stellen Sie den Wert auf 2, damit der Benutzer eine Überweisung durchführen kann

7. Richten Sie für jeden Benutzer unterschiedliche ausgehende Routing-Regeln ein.

Es ist notwendig, alle standardmäßig verwendeten Routen zu entfernen und Ihre eigenen mit einer Unterscheidung nach Kontexten zuzuweisen:

  • Lokale Sätze
  • Ortsgespräche
  • Zonenanrufe
  • Ferngespräche
  • Internationale Anrufe
Eine vollständige Liste der ABC-, DEF-Codes kann der offiziellen Ressource von Rossvyaz entnommen werden.
Für die Standardroute tun exten => _X.,1,Auflegen()

8. Verwenden Sie IPtables

9. Verwenden Sie Fail2Ban

10. Wir zeigen alle Telefongeräte in einem separaten Voice-VLAN an. Hier gilt es, Netzwerker zu strapazieren.

11. Wir achten besonders auf die internationale Richtung 8-10.

Wir legen nur die in der Organisation verwendeten Richtungen fest und ergänzen (erweitern) sie bei Bedarf. Wir benachrichtigen Sie auch per E-Mail, wenn ein Benutzer oder Angreifer ein unbekanntes internationales Ziel verwendet hat, und legen ein Limit für jede Verbindung und die gleichzeitige Anzahl von Anrufen fest. Eine fertige Lösung für die Schutzrichtung 8-10 ist im Artikel beschrieben.

12. Deaktivieren Sie ungenutzte Kanäle und Dienste.

Zum Beispiel, wenn Sie das Protokoll nicht verwenden MGCP oder schlank, deaktivieren Sie diese Module in der Datei /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_pjsip .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;====================== = ==== ; PBX - noload => pbx_ael.so; Kanäle -- 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. so noload => chan_alsa.so noload => chan_oss.so ; Codecs - 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 ; Anwendungen – noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Beschränken Sie den Fernzugriff auf die IP-PBX mithilfe der Firewall.

Wenn Sie planen, bereitzustellen Fernzugriff Für autorisierte Mitarbeiter ist es am besten, es mit zu organisieren VPN-Server(zB OpenVPN).

Wie Sie wissen, ist asterisk eine Anwendung (Server) für IP-Telefonie. Das heißt, es ermöglicht Clients, die damit verbunden sind, einander und die Außenwelt über (unter anderem) Leitungen anzurufen Telefonanschluss. Dies birgt folgende Risiken:

  1. Clients werden durch Login/Passwort und (normalerweise) durch IP-Adresse identifiziert. Gleichzeitig ist es möglich, ein Passwort abzugreifen (früher oder später, je nach Komplexität, aber in jedem Fall möglich), und sehr oft sind die Beschränkungen für IP-Adressen bei weitem nicht so streng, wie wir es uns wünschen (idealerweise sollte jeder Client seine eigene eindeutige IP-Adresse haben)
  2. eingehende Anrufe aus dem Internet (z. B. von anderen Asterisk-Servern). Bei diesen Verbindungen ist alles komplizierter, da asterisk (in der Grundkonfiguration) keine Anzeige der IP-Adressen vorsieht, von denen die Verbindung aufgebaut wird.

Das Programm fail2ban in Verbindung mit einer Firewall (z. B. iptables) und einem richtig konfigurierten Sternchen (das vollständige Informationen in den Protokollen anzeigt, einschließlich der IP-Adressen von Clients und anderen Servern) kann Verbindungsversuche und das Erraten von Passwörtern effektiv blockieren.

Bevor Sie mit der Konfiguration beginnen, müssen Sie iptables und fail2ban installieren. Außerdem müssen iptables bereits konfiguriert sein (und Verbindungen zu asterisk zulassen), bevor fail2ban konfiguriert werden kann! Wie Sie iptables einrichten, können Sie hier nachlesen: iptables einrichten, damit asterisk funktioniert. Sie können fail2ban auch installieren, bevor Sie Asterisk selbst installieren, in diesem Fall (zumindest theoretisch) während des Installationsprozesses letzte Version asterisk erkennt installiertes fail2ban und konfiguriert es automatisch. Jedoch:

  1. Das Thema IP-Telefoniesicherheit wird nicht immer vor der Installation von asterisk berücksichtigt. Das heißt, Sie möchten höchstwahrscheinlich fail2ban auf einem System installieren, auf dem bereits ein Sternchen installiert (und konfiguriert) ist.
  2. Nicht in allen Fällen funktioniert die automatische Konfiguration überhaupt, geschweige denn richtig (und fängt an, alle Angriffe gegen Asterisk zu blockieren).

Asterisk-Protokollierung einrichten

Zunächst einmal ist es sinnvoll, das Asterisk-Logging so einzurichten, dass Informationen sofort in dem von uns benötigten Format und in der Form gesammelt werden. Suchen Sie dazu im asterisk-Konfigurationsverzeichnis (standardmäßig ist es /etc/asterisk) die Datei logger.conf und nehmen Sie die folgenden Änderungen daran vor: unkommentieren (entfernen Sie das Semikolon am Anfang der Zeile):

Datumsformat=%F %T ; ISO 8601-Datumsformat

Dies ist notwendig, damit Asterisk das Datum im richtigen Format in die Logs schreibt:
Jahr-Monat-Tag Stunden:Minuten:Sekunden

Ab Version 10 von asterisk können Sie das Asterisk Security Framework aktivieren. Suchen Sie dazu in der Datei logger.conf die folgende Zeile und kommentieren Sie sie aus (oder fügen Sie sie hinzu):

Sicherheit => Sicherheit

Diese Zeile auf der linken Seite des Pfeils gibt den Namen der Datei an, in der die Ereignisse gespeichert werden, und auf der rechten Seite die Ebenen (Ereignistypen), die gespeichert werden. BEI dieses Beispiel Ereignisse, die sich auf die Sicherheitsstufe (und nur sie) beziehen, werden in einer Datei namens Sicherheit im Sternchen-Protokollordner gespeichert.
Natürlich ist es nach Änderungen notwendig, dass asterisk die Konfiguration neu einliest. Dazu können Sie entweder den asterisk-Dienst neu laden oder nur die Log-Konfiguration (Logger-Reload von der asterisk-CLI).

Danach wird eine Datei namens security. Vergessen Sie nicht, die Protokollrotation für diese Datei einzurichten (wie für andere Asterisk-Protokolle)!

Filterregeln einrichten

Jetzt müssen wir einen Filter erstellen, der potenziell gefährliche Ereignisse aus dem allgemeinen Nachrichtenstrom des Sternchens extrahiert (falscher Benutzername / Passwort, Anmeldeversuch von einer nicht autorisierten IP-Adresse usw. usw.). Gleichzeitig müssen wir solche potenziell gefährlichen Ereignisse nicht nur erkennen, sondern auch die IP-Adresse isolieren, von der aus die Aktion ausgeführt wurde. Das heißt, wir suchen nicht nur nach bestimmten Zeilen in den Sternchen-Ereignisdateien, sondern stellen Filterregeln auf.
Filterregeln können in die Datei /etc/fail2ban/filter.d/asterisk.conf geschrieben werden. Hier ist ein Beispiel für den Inhalt dieser Datei:

# Fail2Ban-Konfigurationsdatei # # # $Revision: $250 # # Allgemeine Präfixe lesen. Wenn Anpassungen verfügbar sind – lesen Sie sie aus # common.local #before = common.conf #_daemon = asterisk # Option: failregex # Notes.: regex, um die Meldungen zu Passwortfehlern in der Protokolldatei abzugleichen. Der # Host muss mit einer Gruppe namens „host“ übereinstimmen. Das Tag " " kann # für den Standard-IP/Hostnamen-Abgleich verwendet werden und ist nur ein Alias ​​für # (?:::f(4,6):)?(?P \S+) # Werte: TEXT # # Asterisk 1.8 verwendet Host:Port-Format, das hier widergespiegelt wird failregex = NOTICE.* .*: Registrierung von ".*" fehlgeschlagen für " :.*" - Falsches Passwort NOTICE.* .*: Registrierung von ".*" fehlgeschlagen für " :.* " - Kein übereinstimmender Peer gefunden HINWEIS.* .*: Registrierung von ".*" für " :.*" fehlgeschlagen - Benutzername/Authentifizierungsname stimmt nicht überein. HINWEIS.* .*: Registrierung von ".*" für " :.*" fehlgeschlagen - Gerät stimmt nicht mit ACL überein NOTICE.* .*: Registrierung von ".*" für " :.*" fehlgeschlagen - Keine lokale Domäne NOTICE.* .*: Registrierung von ".*" für " :.*" fehlgeschlagen - Peer soll sich nicht registrieren NOTICE.* .*: Registrierung von ".*" fehlgeschlagen für " :.*" - ACL-Fehler (permit/deny) NOTICE.* .*: Registrierung von ".*" fehlgeschlagen für " " - Falsches Passwort HINWEIS.* .*: Registrierung von „.*“ für „ “ fehlgeschlagen – Kein passender Peer gefunden HINWEIS.* .*: Registrierung von „.*“ für „ “ fehlgeschlagen – Benutzername/Authentifizierungsname stimmt nicht überein E.* .*: Registrierung von „.*“ für „ “ fehlgeschlagen – Gerät stimmt nicht mit ACL überein HINWEIS.* .*: Registrierung von „.*“ für „ “ fehlgeschlagen – Keine lokale Domäne HINWEIS.* .*: Registrierung from ".*" failed for " " - Peer soll sich nicht registrieren NOTICE.* .*: Registration from ".*" failed for " " - ACL error (permit/deny) NOTICE.* .*: Registration from "\ ".*\".*" fehlgeschlagen für " :.*" - Kein passender Peer gefunden HINWEIS.* .*: Anmeldung von "\".*\".*" fehlgeschlagen für " :.*" - Falsches Passwort HINWEIS. * .*: Keine Registrierung für Peer „.*“ \(von \) NOTICE.* .*: Host fehlgeschlagene MD5-Authentifizierung für „.*“ (.*) NOTICE.* .*: Benutzer .*@ konnte nicht authentifiziert werden. * NOTICE.* konnte sich nicht als „.*“ authentifizieren.<.>

In der Version und früher werden Zeichenfolgen wie avi über der Zeichenfolge verwendet, da ab der Version in den Protokollen Informationen zur Portnummer angezeigt wurden, die in der obigen Variante nicht vorhanden sind, berücksichtigt sie sowohl alte als auch neue Versionen. Sie müssen also nichts daran ändern

Wenn Sie die Protokollierung für Version und höher aktiviert oder aktiviert haben, vergessen Sie nicht, Filterregeln für diese Protokolle festzulegen

Filterregeln können in eine Datei geschrieben werden, hier ein Beispiel für den Inhalt dieser Datei

Einrichtung von Isolatoren für

Jetzt müssen wir Beschreibungen der sogenannten Isolatoren für diejenigen erstellen, die unsere Filter binden, um zu erklären, in welchen Dateien diese Zeilen gesucht werden sollen und was dann zu tun ist

Öffnen Sie dazu die Datei

  1. Stellen Sie sicher, dass keine oder keine anderen Regeln im Zusammenhang mit enthalten sind. Für dieses Jahr reicht es aus, die Datei nach Namen ohne Anführungszeichen zu durchsuchen, um sicherzustellen, dass die Eigenschaft festgelegt ist, wenn solche Regeln für jede von ihnen existieren
  2. Wenn die Version kleiner ist oder Sie die Protokolle nicht verwenden möchten, wird die Verwendung der Protokolle dringend empfohlen, dann müssen Sie nur eine Regel erstellen, andernfalls müssen Sie die Regeln erstellen

Regel Nr.

Diese Regel muss für alle Versionen erstellt werden. Sie können eine neue Regel erstellen oder eine der vorhandenen ändern, aber die neue Regel deaktivieren, da sie in unserem Beispiel in Verbindung mit aufgerufen und auf die Datei angewendet wird in dem alle Haupttypen von Sternereignissen gespeichert sind.

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

Regel Nr.

Diese Regel funktioniert nur, wenn die Version oder neuer ist und auch wenn die Protokollierung aktiviert ist, siehe oben. Sie können auch eine neue Regel erstellen oder eine der vorhandenen ändern, aber die neue Regel deaktivieren, da sie in unserem Beispiel in Verbindung mit will verwendet wird aufgerufen werden und diese Regel wird zur Analyse durch eine Datei im Risk Master Log-Verzeichnis verwendet

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

Start

Jetzt müssen Sie starten oder neu starten und wenn es notwendig ist, wurde zum Beispiel noch nicht gestartet

Um es auszuführen, müssen Sie es zuerst ausführen, führen Sie den folgenden Befehl aus

Führen Sie zum Neustart den folgenden Befehl aus

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob es erfolgreich gestartet und die Regeln geladen wurden

und wenn es eine zweite Regel gibt

Führen Sie den folgenden Befehl aus, um die Liste der Regeln anzuzeigen

Falls Sie gerade installiert haben oder vergessen Sie nicht, sicherzustellen, dass sie so konfiguriert sind, dass sie beim Systemstart automatisch gestartet werden

Arbeit prüfen

Die Hauptsache im Verifizierungsprozess ist, einen anderen Computer oder lokalen Zugriff auf den Server zur Hand zu haben, damit Sie im Falle einer Blockierung Ihrer Adresse eine Verbindung herstellen und diese Blockierung entfernen können

Es ist notwendig, die Funktion des Links zu überprüfen, denn selbst wenn Sie alles richtig konfiguriert oder kopiert haben, kann es viele Kombinationen von Ereignissen geben, aufgrund derer die von Ihnen konfigurierten Sperren nicht funktionieren

Die Abfolge von Aktionen zur Überprüfung der Funktion des Links

  1. Stellen Sie sicher, dass Sie Startups beim Computerstart konfiguriert haben
  2. Wenn Sie dafür Regeln konfiguriert haben, empfehlen wir Ihnen dringend, die Funktionsweise jeder einzeln zu testen, indem Sie beispielsweise eine der Regeln deaktivieren
  3. Starten Sie Ihre Computer neu, überprüfen Sie das
    1. Dienste laufen
    2. Eine der Regeln ist aktiviert und die andere deaktiviert

      In diesem Fall wird für die deaktivierte Regel eine Meldung angezeigt

      und für eine enthaltene Nachricht des Formulars

  4. Starten Sie den Client ohne den Server selbst von einem anderen Computer und geben Sie falsche Daten für die Autorisierung an. Die Verbindungsadresse muss die Adresse des Servers sein. Versuchen Sie, sich ein- oder mehrmals anzumelden. Die Anzahl der Autorisierungen, nach denen die Adresse gesperrt wird, ist in angegeben Parameter für jede Regel separat.
  5. Wenn Sie den Client auf demselben Computer gestartet haben, den Sie mit dem Server verbunden haben, und wenn er korrekt konfiguriert wurde, dann ist Ihre Adresse blockiert und Sie können sich von diesem Computer aus nicht mit dem Server verbinden. Überprüfen Sie dies, verbinden Sie sich mit einem anderen Computer oder lokal und fahren Sie mit der Ausführung fort die Befehle
  6. Befehlsansicht ausführen

    für die aktivierte Regel und stellen Sie sicher, dass die Adresse, mit der der Client verbunden ist, in der Liste der blockierten ist

  7. Entsperren Sie nun analog zu den Aktionen aus dem Absatz z. B. die zweite Regel und sperren Sie die erste
  8. Befolgen Sie die Schritte nur von Punkt zu Punkt, anstatt den Computer neu zu starten, was Sie auch tun können, um den Dienst neu zu starten.Danach kann die Adresse des Computers, auf dem Sie den Client gestartet haben, sofort entsperrt werden, aber Sie müssen ihn starten wieder in dem Punkt, um die Funktion der zweiten Regel zu überprüfen.
  9. Nachdem Sie beide Regeln separat getestet haben, vergessen Sie nicht, sie sowohl für den for- als auch den for-Parameter zu aktivieren. Vergessen Sie danach natürlich nicht, den Dienst neu zu laden
  10. Und der letzte Punkt, wenn Sie abgeschlossen haben oder die vorherigen Punkte für einige Minuten schnell genug sind, kann es so aussehen, als würden Sie nach dem Aktivieren beider Regeln und dem anschließenden Neustart erneut von der Adresse des gestarteten Clients blockiert
    Seien Sie vorsichtig

Regelverwaltung

Deaktivieren Sie vorübergehend die Adressblockierung

Dazu müssen Sie den Dienst verwenden. Zuerst zeigen wir eine Liste von Regeln auf der Konsole an und wählen dann die erforderlichen aus, um sie aus dem Bann zu entfernen

Um eine Liste der Regeln anzuzeigen, geben Sie den Befehl ein

Sie werden eine Nachricht wie diese sehen

Wir sind daran interessiert, die Adresse aus dem Verbot zu entfernen, die sich, wie wir sehen können, in der Regelkette unter dem Namen befindet, den wir den Befehl eingeben

Bei erfolgreicher Ausführung des Befehls erscheinen keine Meldungen und wenn wir den Befehl jetzt erneut ausführen

wir sehen, dass die Adresse aus der Blockierung verschwunden ist, obwohl sie in der Blockierung bleibt, gleichzeitig können wir uns wieder mit dem Server verbinden

Deaktivieren Sie die Adressblockierung dauerhaft

Um eine bestimmte Adresse oder mehrere Adressen nicht zu sperren, unabhängig davon, wie viele erfolglose Versuche, das Passwort zu erraten, und andere illegale Aktionen, die sie begangen oder begangen haben, müssen zusätzliche Einstellungen in der Datei vorgenommen werden

Jede Dateiregel kann einen Parameter enthalten, der eine Liste von Adressen angibt, die in der weißen Liste für diese Regel enthalten sind.Da es zwei Regeln geben kann, beachten Sie, dass Ihre in beide Regeln geschrieben werden muss

Der Parameter hat die folgende Form

Das heißt, Sie können in diesem Fall sowohl Subnetze als auch einzelne Adressen vorgeben, die Whitelist fällt und

Entsperren der getesteten Adresse

Während der Überprüfung der Korrektheit der Einstellungen führen Sie den Client wiederholt aus, um die Arbeit zum Blockieren zukünftiger Angriffe auf das Internet zu testen, und im Laufe der nachfolgenden Arbeiten müssen Sie möglicherweise auch von Zeit zu Zeit Aktionen ausführen, um die Folgen zu berücksichtigen die möglicherweise von der Seite blockieren.

Es gibt Möglichkeiten, dieses Problem zu lösen

  1. Geben Sie die Adresse in die Regeln in der Liste ein. Manchmal ist es jedoch möglicherweise nicht wünschenswert, beispielsweise regelmäßige Arbeitsprüfungen durchzuführen
  2. ОбычновремяэтодлительностьинтервалавсекундахзакотороесобытиеатакаподборпаролядолжноповторитьсяразпослечегобанвступитвсилунамногоменьшечемэтовремябанавсекундахпоистечениикоторогоадресудаляетсяизсписказаблокированныхНапримервыставляетсявминутачасЛибочасаденьилидажебольшеИтакдалееПоэтомуимеетсмыслсделатьпаузудлительностьюнеменеечемсмоментапоследнеготестированияизабаниванияВашегоадресапослечегоперезагрузитьсервисПриперезагрузкесервисавсеблокировкианнулируютсяОднакоприпоследующейзагрузкелогианализируютсясноваиесливлогахвтечениебылонеудачныхпопытокподключениясодногоэтотбудетсновазабаненсразупослезапуска

Konfigurationstests

Sie können überprüfen, wie der Filter auf das eine oder andere Protokoll angewendet wird, indem Sie den Befehl ausführen

Wo ist diese Beispielpfaddatei mit Protokollen, die gefiltert werden, da der Filter selbst die Ausschnitte der Fehlermeldung enthält, die im Protokoll enthalten sein sollten, um die Adressen von Angreifern zu sperren

Und schließlich können Sie, anstatt mit neu zu starten, den folgenden Befehl ausführen

Links zu Quellen

Die Materialien stammen insbesondere von der offiziellen Website des Regexp und die Regeln für das Sternchen sind dem Abschnitt entnommen

Telefonieren kann billig sein
und funktional!

ITCUBE Unternehmen bietet große Auswahl Dienstleistungen für die Installation, Integration und Konfiguration von IP-Telefonie

IT-Services können qualitativ hochwertig sein!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

Die APF-Konfiguration befindet sich in /etc/apf/conf.apf

Verwenden Sie den folgenden Befehl, um mit der Bearbeitung einer Datei zu beginnen:

nano /etc/apf/conf.ap f

Setzen Sie IFACE_IN und IFACE_OUT auf Netzwerkschnittstelle im Internet schauen. Für eine Netzwerkschnittstelle suchen lokales Netzwerk, setzen Sie IFACE_TRUSTED.

SET_TRIM="0"

APF kann QoS unterstützen. Für SIP und IAX müssen Sie Folgendes einstellen:

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

Wenn Sie den SSH-Port ändern, müssen Sie die Datei conf.apf bearbeiten, damit sie mit diesem neuen Port übereinstimmt.

HELPER_SSH_PORT="2222"

Stellen Sie sicher, dass Sie 2222 durch die richtige Portnummer ersetzen, auf der Sie SSH verwalten möchten.

Die Filterung des eingehenden Datenverkehrs wird verwendet, um Ports für den Zugriff zu öffnen; TCP und UDP haben separate Einstellungen. Für Asterisk (Trixbox) müssen die folgenden Ports geöffnet sein; und TCP und UDP werden aufgelistet. Wenn Sie TFTP nicht verwenden, öffnen Sie Port 69 nicht. Vergessen Sie nicht, den SSH-Port zu ändern. Andernfalls können Sie nicht darauf zugreifen; hier verwenden wir Port 2222 aus unserem letzten Beispiel. Wir haben die IAX-Ports in diesem Setup nicht berücksichtigt. Es gibt eine einfache Möglichkeit sicherzustellen, dass nur bestimmte Hosts IAX verwenden können, was wir später behandeln werden. Dies ist nützlich, wenn Sie IAX verwenden, um Interoffice-Amtsleitungen aufzurufen, die für die Außenwelt unsichtbar sind.

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

Ich verwende keine ausgehende Filterung, daher wird sie in diesem Artikel nicht behandelt. Es ist standardmäßig auf EGF="0" gesetzt und deaktiviert.

Um eine Liste mit Optionen anzuzeigen Befehlszeile, führen Sie apf ohne Flags aus.

#apf
apf(3402): (glob) Statusprotokoll nicht gefunden, erstellt
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. >
Dieses Programm darf unter den Bedingungen der GNU GPL frei weitergegeben werden
Nutzung /usr/local/sbin/apf
-s|--start .........................alle Firewall-Regeln laden
-r|--restart ......................... Firewall-Regeln stoppen (leeren) und neu laden
-f|--stop........ ............. alle Firewall-Regeln stoppen (leeren).
-l|--list ......................... listet alle Firewall-Regeln auf
-t|--status ...................... Firewall-Statusprotokoll ausgeben
-e|--refresh ......................... aktualisieren und DNS-Namen vertrauensvoll auflösen
Regeln
-a HOST CMT|--allow HOST COMMENT ... Host (IP/FQDN) hinzufügen zu
allow_hosts.rules und laden Sie sofort eine neue Regel in die Firewall
-d HOST CMT|--deny HOST COMMENT .... Host (IP/FQDN) hinzufügen zu
deny_hosts.rules und laden Sie sofort eine neue Regel in die Firewall
-u|--remove HOST ...................Host entfernen von
*_hosts.rules und entfernen Sie die Regel sofort von der Firewall
-o|--ovars ........................ gibt alle Konfigurationsoptionen aus

Um APF zu starten, verwenden wir die folgenden Befehle:

# apf -s
apf(3445): (Glob) Firewall aktivieren
apf(3489): (glob) festgestellt (IFACE_IN) eth0 hat Adresse 192.168.1.31
apf(3489): (glob) ermittelt (IFACE_OUT) eth0 hat Adresse 192.168.1.31
apf(3489): (Glob) lädt 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) parst drop.lasso in /etc/apf/sdrop_hosts.rules
apf(3489): (sdrop) lädt sdrop_hosts.rules
apf(3489): (Glob) lädt gemeinsame Dropports
...........getrimmt für dieses Dokument.........
apf(3489): (Glob) Standard (Ingress) Input Drop
apf(3445): (Glob) Firewall initialisiert
apf(3445): (glob) !!ENTWICKLUNGSMODUS AKTIVIERT!! - Firewall wird gespült
alle 5 Minuten.

Wir können sehen, dass APF läuft und einige Regeln von dshield.org und spamhaus.org herunterlädt. Lassen Sie uns nun testen, ob Sie sich über SSH beim Asterisk (Trixbox)-Server anmelden, um sicherzustellen, dass Sie alles richtig konfiguriert haben. Wenn Sie keine Verbindung herstellen können, müssen Sie 5 Minuten warten und dann wird APF die Blockierung aufheben. Sobald Sie sicher sind, dass Sie SSH-in können, können wir DEVEL_MODE = "1" in DEVEL_MODE = "0" in conf.apf ändern und APF neu starten. APF startet und gibt keine Warnung aus, dass es sich im DEVELOPMETN_MODE befindet.

APF: zusätzliche Stimmung

Dies ist nicht das Ende der Einrichtung, wenn Sie Ihre Asterisk (Trixbox) Server über IAX verbinden möchten. Dazu müssen Sie die IAX-Ports zur conf.apf hinzufügen. Diese Option funktioniert mit statischen IPs oder DynDNS. Der Befehl apf -a ermöglicht den Zugriff auf eine bestimmte IP-Adresse. Dadurch kann sich der Host global mit Asterisk (Trixbox) verbinden und Firewall-Regeln umgehen.

apf-a 192.168.1.216

Dadurch kann sich System 192.168.1.216 mit jedem Port auf dem Firewall-Server verbinden und so die Firewall-Regeln umgehen. Wenn Sie APF auf beiden Asterisk (Trixbox) ausführen, stellen Sie sicher, dass Sie dasselbe auf dem anderen Host mit der richtigen IP-Adresse tun.

APF ermöglicht es dem Systemadministrator auch, einen Host oder ein ganzes Subnetz zu blockieren. Dies ist praktisch, wenn Sie sehen, dass jemand versucht, sich über FTP, Telnet, SSH usw. mit Ihrem Computer zu verbinden. Verwenden Sie Folgendes, um einen bestimmten Host zu blockieren: Stellen Sie sicher, dass Sie die IP-Adresse verwenden, die Sie blockieren möchten.

apf-d 192.168.1.216

So blockieren Sie ein vollständiges Subnetz (CIDR):

apf-d 202.86.128.0/24

APF unterstützt kein QoS für UDP-Pakete. Nur TCP. Es gibt eine einfache Möglichkeit, dies zu beheben. /etc/apf/internals hat eine functions.apf-Datei. Wir müssen diese Datei manuell bearbeiten. Es gibt mehrere Stellen, an denen wir eine einzelne Zeile hinzufügen müssen. Wir suchen den Abschnitt TOS_ in der Datei functions.apf. Es wird so aussehen:

wenn[! "$TOS_0" == "" ]; dann
für i in `echo $TOS_0 | tr "," ""`; tun
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
erledigt
fi

Diese zusätzliche Zeile muss für alle TOS-Bits erstellt werden, die Sie verwenden.

BFD

Brute-Force-Erkennung (Wörterbuchangriff) wird verwendet, um nicht autorisierte Anmeldeversuche aufzuspüren.

Die Konfigurationsdatei für BFD befindet sich in /usr/local/bfd und heißt conf.bfd. Diese Datei enthält, wie für APF, viele Kommentare. Wir werden uns nur einige der Anpassungsoptionen ansehen.

Die erste Konfigurationsvariable, die wir uns ansehen werden, ist TRIG; Dies ist die Anzahl der Fehlversuche, bevor der Angreifer blockiert wird. Der Standardwert ist 15. Beachten Sie, dass dies die Anzahl der Versuche nicht von einem Konto, sondern von einer IP-Adresse ist. Also, wenn aus 1 IP-Adresse 15 kommt fehlgeschlagene Versuche Melden Sie sich mit anderen Konten an, es wird immer noch gesperrt.

BFD hat eine nette Funktion - E-Mails senden, wenn eine Brute Force erkannt wird. Zum Einschalten diese Option, setze EMAIL_ALERTS auf 1; Vergessen Sie nicht, die Adresse anzugeben, an die Sie Benachrichtigungen erhalten möchten - EMAIL_ADRESS.

BFD wird alle 3 Minuten von cron ausgeführt und befindet sich in /etc/cron.d.

Sie können eine Liste gesperrter IP-Adressen mit dem folgenden Befehl abrufen:

Verwenden Sie zum Starten von BFD den folgenden Befehl:

bfd-s

Zusammenfassung

Damit ist die Sicherheitsüberprüfung von Asterisk (Trixbox) abgeschlossen.

Dieser Artikel behandelt nur die Grundprinzipien zum Schutz von Asterisk (Trixbox). Natürlich ist der Aufbau sicherer VoIP-Systeme nicht darauf beschränkt.

Den Originalartikel finden Sie unter dem Link