Zurück zu den Updates
New releaseJul 27, 2026

SentryPeer v4.0.5

Distributed SIP-Honeypot, der Betrugsdaten zu VoIP-Angriffen erkennt und teilt. Sammelt IP-Adressen und Telefonnummern böswilliger Akteure über ein Peer-to-Peer-Netzwerk, mit REST-API- und WebHook-Integration für Echtzeit-Bedrohungsinformationen.

Teilen

Schützen Sie Ihre SIP-Server vor böswilligen Akteuren

SentryPeer Logo

Stability: Active GitHub release (latest SemVer) Docker Hub Coverity Scan Build Status Build and Test CodeQL Clang Static Analysis CII Best Practices gitleaks

Besonderer Dank geht an die Deutsche Telekom Security GmbH für die Unterstützung! Sehr nett!

Warum geben Sie uns nicht einen Stern und folgen uns auf Twitter!

Inhaltsverzeichnis

Einleitung

SentryPeer® ist ein Tool zur Betrugserkennung. Es lässt böswillige Akteure versuchen, Telefonanrufe zu tätigen, und speichert die IP-Adresse, von der sie kamen, sowie die Nummer, die sie zu erreichen versuchten. Diese Details können dann genutzt werden, um Benachrichtigungen im Netzwerk des Dienstanbieters auszulösen, und wenn ein Benutzer/Kunde das nächste Mal versucht, eine gesammelte Nummer anzurufen, können Sie nach eigenem Ermessen handeln.

Zum Beispiel:

Angenommen, Sie betreiben vor Ort Ihre eigene VoIP-TK-Anlage. In diesem Zusammenhang ermöglicht Ihnen SentryPeer, in die Liste der Telefonnummern (mithilfe der RESTful-API) einzutauchen, wenn Ihre Benutzer ausgehende Anrufe tätigen. Wenn Sie einen Treffer erzielen, erhalten Sie einen Hinweis, dass möglicherweise ein Gerät in Ihrem Netzwerk versucht, bekannte Testrufnummern anzurufen, die entweder:

  1. Von SentryPeer-Knoten gesammelte Nummern, die Sie selbst betreiben
  2. Nummern, die von anderen SentryPeer-Knoten gesehen und über das Peer-to-Peer-Netzwerk auf Ihren Knoten repliziert wurden

Dies würde es Ihnen ermöglichen, eine Benachrichtigung von Ihren Überwachungssystemen zu generieren, bevor teure Anrufe anfallen oder etwas Schlimmeres passiert.

Was würde zu diesem Szenario führen?

  1. Potenzieller Voicemail-Betrug. Dies kann passieren, wenn Sie zulassen, dass eine eingehende Nummer (Ihre DID/DDI) Ihr Voicemail-System erreicht, und dann nach einer PIN gefragt wird. Diese PIN ist schwach und das Voicemail-System erlaubt es, '*' zu drücken, um die Rufnummer des Anrufers zurückzurufen, der eine Voicemail hinterlassen hat. Der Angreifer hat eine Voicemail hinterlassen, errät dann Ihre PIN und ruft sie zurück. Die CLI ist eine bekannte Nummer, die SentryPeer gesehen hat. Sie können einen Alarm darauf auslösen.
  2. Ein Gerät wurde gekapert und/oder ein Softphone oder Ähnliches verwendet die aus der GUI des Telefons gestohlenen Anmeldeinformationen und versucht, sich in Ihrem System zu registrieren und Anrufe zu einer von SentryPeer gesehenen Nummer zu tätigen.
  3. Ein ahnungsloser Benutzer ruft eine Phishing-Nummer oder eine bekannte teure Nummer usw. an, die SentryPeer bereits gesehen hat.

Traditionell werden diese Daten an einen zentralen Ort gesendet, sodass Sie die von Ihnen gesammelten Daten nicht besitzen. Bei diesem Projekt geht es um die Peer-to-Peer-Weitergabe dieser Daten. Der Benutzer besitzt die Daten und verschiedene Dienstanbieter-/Netzbetreiber-bezogene Datenfeeds sind für mich der entscheidende Punkt. Ich habe genug von all den Diensten da draußen, die sie behalten und verkaufen. Wenn Sie sie gesammelt haben, sollten Sie die Wahl haben, sie zu behalten und/oder sich dafür zu entscheiden, sie über p2p-Methoden mit anderen SentryPeer-Community-Mitgliedern zu teilen.

Übersicht

SentryPeer-Knoten

Hier verwenden wir Mermaid-Sequenzdiagramme, um den Datenfluss von einem SentryPeer-Knoten zu SentryPeerHQ darzustellen.```mermaid sequenceDiagram actor A as Attacker participant S as SentryPeer Node participant DS as Data Store participant W as WebHook
Endpoint Note over DS: sqlite/json log/syslog
(if enabled) Note over W: if enabled A->>S: SIP probe OPTIONS/REGISTER/etc S->>DS: Save event S->>W: Send event W->>S: 200 OK S->>A: 200 OK A->>S: INVITE sip:00046500729221@

#### SentryPeer Node zu SentryPeerHQ```mermaid
sequenceDiagram
    actor A as Attacker
    participant S as SentryPeer Node
    participant DS as Data Store
    participant HQ as SentryPeerHQ
    Note over DS: sqlite/json log/syslog (if enabled)
    Note over HQ: OAuth2 creds required.<br/> if using https://sentrypeer.com
    A->>S: SIP probe OPTIONS/REGISTER/etc
    S->>DS: Save event
    S->>HQ: Send event
    HQ->>S: 201 Created
    S->>A: 200 OK
    A->>S: INVITE sip:00046500729221@

Verwendung des SentryPeer Node und der SentryPeerHQ API```mermaid

sequenceDiagram Actor U as User participant S as SentryPeer Node/HQ API Note over S: if enabled U->>S: GET /numbers S->>U: 200 OK Return all Phone numbers seen in database

#### Integration mit eigenen Systemen```mermaid
sequenceDiagram
    participant D as Device
    participant P as PBX/ITSP/Carrier
    participant HQ as SentryPeer Node/HQ API
    participant N as NOC
    Note over P: Integration with <br/>SentryPeer needed
    Note over N: Consumes alerts
    Note over HQ: OAuth2 creds required<br/> if using SentryPeerHQ
    Note over P,HQ: API rate limiting if using SentryPeerHQ
    D->>P: SIP INVITE
    P->>HQ: Have you seen attackers call this number?
    HQ->>P: Yes, this has been seen on SentryPeer Nodes
    HQ->>N: WebHook/Email/Slack
    Note over HQ,N: Only if using SentryPeerHQ
    P->>D: I'm blocking this call. Sorry

🚧 Funktionen

  • Der gesamte Code ist Freie/Libre und Open Source Software
  • SCHNELL
  • Der Benutzer besitzt seine Daten
  • Der Benutzer kann seine eigenen Daten einreichen, wenn er möchte (dazu muss der p2p-Modus aktiviert werden - -p)
  • Der Benutzer erhält die Daten anderer Benutzer NUR DANN, wenn er sich dafür entscheidet, seine Daten in den Pool einzubringen
  • Eingebetteter Distributed-Hash-Table (DHT)-Knoten unter Verwendung von OpenDHT (-p CLI-Option)
  • Peer-to-Peer-Freigabe gesammelter böswilliger Akteure unter Verwendung von OpenDHT (standardmäßig deaktiviert)
  • Peer-to-Peer-Datenreplikation zum Empfangen gesammelter böswilliger Akteure unter Verwendung von OpenDHT (standardmäßig deaktiviert)
  • Eigener DHT-Bootstrap-Knoten einstellbar (-b CLI-Option)
  • Multithreading
  • UDP-Transport
  • TCP-Transport
  • TLS-Transport
  • JSON-Protokollierung in eine Datei
  • SIP-Modus kann deaktiviert werden. Dies erlaubt es, SentryPeer im API-Modus oder DHT-Modus usw. zu betreiben, d.h. nicht als Honigtopf, sondern als Knoten in der SentryPeer-Community oder um nur replizierte Daten bereitzustellen
  • SIP-Responsive-Modus kann aktiviert werden, um Daten zu sammeln – CLI/Umgebungs-Flag
  • Lokale Datenkopie für schnellen Zugriff – CLI/Umgebungs-DB-Standort-Flag
  • Lokale API für schnellen Zugriff – CLI/Umgebungs-Flag
  • WebHook zum POSTEN von böswilliger-Akteur-JSON an einen zentralen Ort – CLI/Umgebungs-Flag
  • Integration mit SentryPeerHQ über OAuth2-Bearer-Token
  • Abfrage-API für IP-Adressen böswilliger Akteure
  • Abfrage-API für IPSET böswilliger Akteure
  • Abfrage-API für eine bestimmte IP-Adresse eines böswilligen Akteurs
  • Abfrage-API für versuchte, von böswilligen Akteuren angerufene Telefonnummern
  • Abfrage-API für eine versuchte, von einem böswilligen Akteur angerufene Telefonnummer
  • Fail2Ban-Unterstützung über syslog gemäß Feature-Anfrage
  • Lokale sqlite-Datenbank – Feature/CLI-Flag
  • Analyse – opt-in
  • SDKs/Bibliotheken für externen Zugriff – zunächst CGRateS oder eine eigene Firewall mit nftables
  • Kleine Binärgröße für IoT-Nutzung
  • Plattformübergreifend
  • Firewall-Optionen zur Nutzung verteilter Daten in Echtzeit
  • Container auf Docker Hub für den aktuellen Build
  • BGP-Agent zur Peering für Blackholing gesammelter IP-Adressen (ähnlich dem Team Cymru Bogon Router Server Project)
  • SIP-Agent zur Rückgabe von 404 oder Standardziel für SIP-Weiterleitungen

Vorträge

Verbreitung

Matrix slack SentryPeer auf Twitter

Design

Ich habe dies begonnen, weil ich C-Netzwerkprogrammierung machen wollte, da alle Projekte, die ich täglich nutze, in C geschrieben sind, wie PostgreSQL, OpenLDAP, FreeSWITCH, OpenSIPS, Asterisk usw. Siehe Episode 414: Jens Gustedt on Modern C für Gründe, warum C eine gute Wahl ist. Für Interessierte: Meine vollständige Podcast-Showliste (https://www.se-radio.net/team/gavin-henry/) von Software Engineering Radio

Docker

Sie können die neueste Version von SentryPeer mit Docker ausführen. Die neueste Version ist auf Docker Hub verfügbar. Oder selbst bauen:

sudo docker build --no-cache -t sentrypeer .
sudo docker run -d -p 5060:5060/tcp -p 5061:5061/tcp -p 5060:5060/udp -p 8082:8082 -p 4222:4222/udp sentrypeer:latest

Dann können Sie unter http://localhost:8082/ip-addresses und http://localhost:8082/health-check prüfen, ob es läuft.

Umgebungsvariablen

ENV SENTRYPEER_CONFIG_FILE=/my/location/sentrypeer.toml
ENV SENTRYPEER_DB_FILE=/my/location/sentrypeer.db
ENV SENTRYPEER_API=1
ENV SENTRYPEER_WEBHOOK=1
ENV SENTRYPEER_WEBHOOK_URL=https://my.webhook.url/events
ENV SENTRYPEER_OAUTH2_CLIENT_ID=1234567890
ENV SENTRYPEER_OAUTH2_CLIENT_SECRET=1234567890
ENV SENTRYPEER_SIP_RESPONSIVE=1
ENV SENTRYPEER_SIP_DISABLE=1
ENV SENTRYPEER_SYSLOG=1
ENV SENTRYPEER_PEER_TO_PEER=1
ENV SENTRYPEER_BOOTSTRAP_NODE=mybootstrapnode.com
ENV SENTRYPEER_JSON_LOG=1
ENV SENTRYPEER_JSON_LOG_FILE=/my/location/sentrypeer_json.log
ENV SENTRYPEER_VERBOSE=1
ENV SENTRYPEER_DEBUG=1
ENV SENTRYPEER_CERT=/my/location/sentrypeer-crt.pem
ENV SENTRYPEER_KEY=/my/location/sentrypeer-key.pem
ENV SENTRYPEER_TLS_LISTEN_ADDRESS=0.0.0.0:5061

Setzen Sie diese entweder in der Dockerfile oder in Ihrer Dockerfile.env-Datei oder im docker run-Befehl.

Das Setzen einer dieser Variablen auf 0 wird die Funktion ebenfalls aktivieren. Es ist egal, worauf Sie sie setzen, Hauptsache sie ist gesetzt.

Konfigurationsdatei

Sie können auch eine Konfigurationsdatei verwenden, um bestimmte Dinge einzustellen. Hauptsächlich die TLS-Konfiguration unten. Der Standardpfad ist ~/.config/sentrypeer/default-config.toml, kann aber mit der Umgebungsvariablen SENTRYPEER_CONFIG_FILE oder der CLI-Option -g geändert werden.

TLS-Konfiguration

Um Ihre eigenen Zertifikate zu verwenden, können Sie entweder die entsprechenden ENV-Variablen setzen, CLI-Argumente verwenden oder die Konfigurationsdatei nutzen. Beispiel:``` cat ~/.config/sentrypeer/default-config.toml cert = "tests/unit_tests/127.0.0.1.pem" key = "tests/unit_tests/127.0.0.1-key.pem" tls_listen_address = "0.0.0.0:5061"

Wenn Sie diese nicht setzen, wird automatisch ein Zertifikat für localhost in dem Verzeichnis erstellt, aus dem sentrypeer ausgeführt wird, und es werden eine `cert.pem`- und eine `key.pem`-Datei erstellt.

### Installation

Debian- oder Fedora-Pakete sind immer auf der Release-Seite für die aktuelle Version von SentryPeer verfügbar:

   https://github.com/SentryPeer/SentryPeer/releases

#### Homebrew (macOS oder Linux):

Wir haben einen [Homebrew Tap für dieses Projekt](https://github.com/SentryPeer/homebrew-sentrypeer) (bis wir beliebter werden):

    brew tap sentrypeer/sentrypeer
    brew install sentrypeer

#### Alpine Linux:

SentryPeer befindet sich in [Testing auf Alpine Linux](https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/sentrypeer), daher können Sie es mit folgendem Befehl installieren:

    apk -U add --no-cache -X https://dl-cdn.alpinelinux.org/alpine/edge/testing sentrypeer

#### Ubuntu-Paket

Sie können SentryPeer aus [unserem Ubuntu-PPA](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) installieren, das derzeit für Ubuntu 20 LTS (Focal Fossa) verfügbar ist:

    sudo apt install software-properties-common
    sudo add-apt-repository ppa:gavinhenry/sentrypeer
    sudo apt-get update

Dieses PPA kann manuell zu Ihrem System hinzugefügt werden, indem Sie die folgenden Zeilen kopieren und zu Ihren Systemquellen hinzufügen:

    deb https://ppa.launchpadcontent.net/gavinhenry/sentrypeer/ubuntu focal main 
    deb-src https://ppa.launchpadcontent.net/gavinhenry/sentrypeer/ubuntu focal main

Dann können Sie SentryPeer installieren:

    sudo apt-get install sentrypeer

#### Aus dem Quellcode erstellen

Sie haben zwei Optionen für die Installation aus dem Quellcode: CMake oder Autotools. Autotools wird derzeit empfohlen. Ein Release ist ein Autotools-Build.

Wenn Sie ein Fedora-Benutzer sind, können Sie dies über [Fedora copr](https://copr.fedorainfracloud.org/coprs/) installieren:

[https://copr.fedorainfracloud.org/coprs/ghenry/SentryPeer/](https://copr.fedorainfracloud.org/coprs/ghenry/SentryPeer/)

Wenn Sie aus diesem Repository erstellen möchten, müssen Sie Folgendes installiert haben:

  - `git`, `autoconf`, `automake` und `autoconf-archive` (Debian/Ubuntu)
  - `libtool`, `rustc` und `cargo` (Fedora)
  - `libosip2-dev` (Debian/Ubuntu) oder `libosip2-devel` (Fedora)
  - `libsqlite3-dev` (Debian/Ubuntu) oder `sqlite-devel` (Fedora)
  - `uuid-dev` (Debian/Ubuntu) oder `libuuid-devel` (Fedora)
  - `libmicrohttpd-dev` (Debian/Ubuntu) oder `libmicrohttpd-devel` (Fedora)
  - `libjansson-dev` (Debian/Ubuntu) oder `jansson-devel` (Fedora)
  - `libpcre2-dev` (Debian/Ubuntu) oder `pcre2-devel` (Fedora)
  - `libcurl-dev` (Debian/Ubuntu) oder `libcurl-devel` (Fedora)
  - `libcmocka-dev` (Debian/Ubuntu) oder `libcmocka-devel` (Fedora) – für Unit-Tests

Debian/Ubuntu:

    sudo apt-get install git build-essential clang autoconf-archive autoconf \
    automake libtool cmake libosip2-dev libsqlite3-dev libcmocka-dev uuid-dev \
    libcurl4-openssl-dev libpcre2-dev libjansson-dev libmicrohttpd-dev libclang-dev

Fedora:

    sudo dnf install git clang pkg-config autoconf automake autoconf-archive \ 
    libtool libosip2-devel libsqlite3-devel libcmocka-devel libuuid-devel \
    libmicrohttpd-devel jansson-devel libcurl-devel pcre2-devel cmake \
    clang-libs clang

macOS:

    brew install git libtool autoconf automake autoconf-archive libosip cmocka \
    libmicrohttpd jansson curl pcre2 pkg-config opendht ossp-uuid cmake 

Rust:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

dann (make check wird dringend empfohlen):

    ./bootstrap.sh
    ./configure
    make
    make check
    make install

CMake:

    cmake -S . -B build -DUNIT_TESTING=ON
    cmake --build build
    ctest --test-dir build
    cmake --install build

### SentryPeer ausführen

Nach dem Erstellen können Sie es wie folgt ausführen, um im **Debug-Modus** zu starten, auf SIP-Probes zu **antworten**, die **RESTful API** zu aktivieren, WebHooks zu aktivieren und die Syslog-Protokollierung zu aktivieren ([verwenden Sie ein Paket](https://github.com/SentryPeer/SentryPeer/releases), wenn Sie [systemd](https://www.freedesktop.org/wiki/Software/systemd/) wünschen):

    ./sentrypeer -draps
    SentryPeer node id: e5ac3a88-3d52-4e84-b70c-b2ce83992d02
    Starting sentrypeer...
    API mode enabled, starting http daemon...
    SIP mode enabled...
    Peer to Peer DHT mode enabled...
    Starting peer to peer DHT mode using OpenDHT-C lib version '2.4.0'...
    Configuring local address...
    Creating sockets...
    Binding sockets to local address...
    Listening for incoming UDP connections...
    SIP responsive mode enabled. Will reply to SIP probes...
    Listening for incoming TCP connections...
    Peer to peer DHT mode started.
    DHT InfoHash for key 'bad_actors' is: 14d30143330e2e0e922ed4028a60ff96a59800ad
    Bootstrapping the DHT
    Waiting 5 seconds for bootstrapping to bootstrap.sentrypeer.org...
    Listening for changes to the bad_actors DHT key

Wenn Sie eine Probe-Anfrage erhalten, sehen Sie im Terminal etwa Folgendes:```bash
Received (411 bytes): OPTIONS sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 91.223.3.152:5173;branch=z9hG4bK-515761064;rport
Content-Length: 0
From: "sipvicious"<sip:[email protected]>;tag=6434396633623535313363340131363131333837383137
Accept: application/sdp
User-Agent: friendly-scanner
To: "sipvicious"<sip:[email protected]>
Contact: sip:[email protected]:5173
CSeq: 1 OPTIONS
Call-ID: 679894155883566215079442
Max-Forwards: 70


read_packet_buf size is: 1024: 
read_packet_buf length is: 468: 
bytes_received size is: 411: 

Bad Actor is:
Event Timestamp: 2021-11-23 20:13:36.427515810
Event UUID: fac3fa20-8c2c-445b-8661-50a70fa9e873
SIP Message: OPTIONS sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 91.223.3.152:5173;branch=z9hG4bK-515761064;rport
From: "sipvicious" <sip:[email protected]>;tag=6434396633623535313363340131363131333837383137
To: "sipvicious" <sip:[email protected]>
Call-ID: 679894155883566215079442
CSeq: 1 OPTIONS
Contact: <sip:[email protected]:5173>
Accept: application/sdp
User-agent: friendly-scanner
Max-forwards: 70
Content-Length: 0


Source IP: 193.107.216.27
Called Number: 100
SIP Method: OPTIONS
Transport Type: UDP
User Agent: friendly-scanner
Collected Method: responsive
Created by Node Id: fac3fa20-8c2c-445b-8661-50a70fa9e873
SentryPeer db file location is: sentrypeer.db
Destination IP address of UDP packet is: xx.xx.xx.xx

Sie können die Daten in der sqlite3-Datenbank namens sentrypeer.db mit sqlitebrowser oder dem sqlite3-Befehlszeilentool anzeigen.

Hier ist ein Screenshot der Datenbank, geöffnet mit sqlitebrowser (es ist groß, daher verlinke ich nur auf das Bild):

sqlitebrowser beim Erkunden der sentrypeer.db

WebHook

Es gibt einen WebHook, um eine Nutzlast im JSON-Log-Format an SentryPeerHQ oder Ihren eigenen WebHook-Endpunkt zu POSTEN. Der WebHook ist standardmäßig nicht aktiviert. Sie können die WebHook-URL über -w konfigurieren oder die Umgebungsvariable SENTRYPEER_WEBHOOK_URL setzen.

Wenn Sie SentryPeer SaaS verwenden, müssen Sie Ihre Client-ID und Ihr Client-Geheimnis aus dem Dashboard abrufen und die Umgebungsvariablen SENTRYPEER_OAUTH2_CLIENT_ID und SENTRYPEER_OAUTH2_CLIENT_SECRET setzen oder die Flags -i und -c verwenden.

RESTful API

Die RESTful-API ist für die aktuellen Anwendungsfälle vollständig. Bitte klicken Sie auf die Schaltfläche „Watch“, um benachrichtigt zu werden, wenn weitere Dinge herauskommen :-)

Endpunkt /health-check

Abfragen der API, um zu sehen, ob sie aktiv ist:```bash curl -v -H "Content-Type: application/json" http://localhost:8082/health-check

  • Connected to localhost (127.0.0.1) port 8082 (#0)

GET /health-check HTTP/1.1 Host: localhost:8082 User-Agent: curl/7.79.1 Accept: / Content-Type: application/json

  • Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Date: Mon, 24 Apr 2022 11:16:25 GMT < Content-Type: application/json < Access-Control-Allow-Origin: * < X-Powered-By: SentryPeer < X-SentryPeer-Version: 1.4.0 < Content-Length: 81 < { "status": "OK", "message": "Hello from SentryPeer!", "version": "1.0.0" }
#### Endpoint /ip-addresses

Liste alle IP-Adressen auf, die von SentryPeer gesehen wurden:```bash
curl -v -H "Content-Type: application/json" http://localhost:8082/ip-addresses

* Connected to localhost (127.0.0.1) port 8082 (#0)
> GET /ip-addresses HTTP/1.1
> Host: localhost:8082
> User-Agent: curl/7.79.1
> Accept: */*
> Content-Type: application/json
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 24 Jan 2022 11:17:05 GMT
< Content-Type: application/json
< Access-Control-Allow-Origin: *
< X-Powered-By: SentryPeer
< X-SentryPeer-Version: 1.0.0
< Content-Length: 50175
< 
{
  "ip_addresses_total": 396,
  "ip_addresses": [
    {
      "ip_address": "193.107.216.27",
      "seen_last": "2022-01-11 13:30:48.703603359",
      "seen_count":	"1263"
    },
    {
      "ip_address": "193.46.255.152"
      "seen_last": "2022-01-11 13:28:27.348926406",
      "seen_count": "3220"      
    }
    ...
  ]
}

Endpunkt /ip-addresses/{ip-address}

Abfrage einer einzelnen IP-Adresse:```bash curl -v -H "Content-Type: application/json" http://localhost:8082/ip-addresses/8.8.8.8

  • Connected to localhost (127.0.0.1) port 8082 (#0)

GET /ip-addresses/8.8.8.8 HTTP/1.1 Host: localhost:8082 User-Agent: curl/7.79.1 Accept: / Content-Type: application/json

  • Mark bundle as not supporting multiuse < HTTP/1.1 404 Not Found < Date: Mon, 24 Jan 2022 11:17:57 GMT < Content-Type: application/json < Access-Control-Allow-Origin: * < X-Powered-By: SentryPeer < X-SentryPeer-Version: 1.0.0 < Content-Length: 33 <
  • Connection #0 to host localhost left intact { "message": "No bad actor found" }
#### Endpoint /numbers 

Liste alle angerufenen Nummern auf, die von SentryPeer gesehen wurden:```bash
curl -v -H "Content-Type: application/json" http://localhost:8082/numbers

* Connected to localhost (127.0.0.1) port 8082 (#0)
> GET /numbers HTTP/1.1
> Host: localhost:8082
> User-Agent: curl/8.0.1
> Accept: */*
> Content-Type: application/json
< Date: Thu, 27 Jul 2023 11:10:35 GMT
< Content-Type: application/json
< Access-Control-Allow-Origin: *
< X-Powered-By: SentryPeer
< X-SentryPeer-Version: 4.0.0
< Content-Length: 31746258


 {
  "called_numbers_total": 244850,
  "called_numbers": [
    {
      "called_number": "981046500729221",
      "seen_last": "2023-07-27 12:06:59.388055505",
      "seen_count": "451"
    },
    {
      "called_number": "81046500729221",
      "seen_last": "2023-07-27 12:05:19.206442003",
      "seen_count": "453"
    },
    {
      "called_number": "100",
      "seen_last": "2023-07-27 11:59:57.679798597",
      "seen_count": "17335"
    },
    ....

Endpunkt /numbers/{phone-number}

Fragen Sie eine Telefonnummer ab, die ein Angreifer versucht hat anzurufen, mit optionalem +-Präfix:```bash curl -v -H "Content-Type: application/json" http://localhost:8082/numbers/8784946812410967

  • Connected to localhost (127.0.0.1) port 8082 (#0)

GET /numbers/8784946812410967 HTTP/1.1 Host: localhost:8082 User-Agent: curl/7.79.1 Accept: / Content-Type: application/json

< HTTP/1.1 200 OK < Date: Mon, 24 Jan 2022 11:19:53 GMT < Content-Type: application/json < Access-Control-Allow-Origin: * < X-Powered-By: SentryPeer < X-SentryPeer-Version: 1.0.0 < Content-Length: 46 < { "phone_number_found": "8784946812410967" }

### Syslog und Fail2ban

Mit `sentrypeer -s` analysieren Sie das Syslog und nutzen Fail2Ban, um die IP-Adresse des Angreifers zu blockieren:```syslog
Nov 30 21:32:16 localhost.localdomain sentrypeer[303741]: Source IP: 144.21.55.36, Method: OPTIONS, Agent: sipsak 0.9.7

JSON-Protokollformat

Mit sentrypeer -j können Sie eine JSON-Protokolldatei der IP-Adresse des Angreifers und der Telefonnummer, die er zu erreichen versuchte, sowie anderer Metadaten erstellen (legen Sie einen benutzerdefinierten Speicherort für die Protokolldatei mit -l fest):```json { "app_name":"sentrypeer", "app_version":"v1.4.0", "event_timestamp":"2022-02-22 11:19:15.848934346", "event_uuid":"4503cc92-26cb-4b3e-bb33-69a83fa09321", "created_by_node_id":"4503cc92-26cb-4b3e-bb33-69a83fa09321", "collected_method":"responsive", "transport_type":"UDP", "source_ip":"45.134.144.128", "destination_ip":"XX.XX.XX.XX", "called_number":"0046812118532", "sip_method":"OPTIONS", "sip_user_agent":"friendly-scanner", "sip_message":"full SIP message" }

### Befehlszeilenoptionen```bash
./sentrypeer -h
Protect your SIP Servers from bad actors at https://sentrypeer.com

Usage: sentrypeer [OPTIONS]

Options:
  -f <DB_FILE>                 Set 'sentrypeer.db' location or use SENTRYPEER_DB_FILE env
  -j                           Enable json logging or use SENTRYPEER_JSON_LOG env
  -p                           Enable Peer to Peer mode or use SENTRYPEER_PEER_TO_PEER env
  -b <BOOTSTRAP_NODE>          Set Peer to Peer bootstrap node or use SENTRYPEER_BOOTSTRAP_NODE env
  -i <CLIENT_ID>               Set OAuth 2 client ID or use SENTRYPEER_OAUTH2_CLIENT_ID env to get a Bearer token for WebHook
  -c <CLIENT_SECRET>           Set OAuth 2 client secret or use SENTRYPEER_OAUTH2_CLIENT_SECRET env to get a Bearer token for WebHook
  -a                           Enable RESTful API mode or use SENTRYPEER_API env
  -w <WEBHOOK_URL>             Set WebHook URL for bad actor json POSTs or use SENTRYPEER_WEBHOOK_URL env
  -r                           Enable SIP responsive mode or use SENTRYPEER_SIP_RESPONSIVE env
  -R                           Disable SIP mode completely or use SENTRYPEER_SIP_DISABLE env
  -l <JSON_LOG_FILE>           Set JSON logfile (default './sentrypeer_json.log') location or use SENTRYPEER_JSON_LOG_FILE env
  -N                           Disable Rust powered TCP, UDP and TLS or use SENTRYPEER_TLS_DISABLE env
  -t <TLS_CERT_FILE>           Set TLS cert location (default './cert.pem') or use SENTRYPEER_CERT env
  -k <TLS_KEY_FILE>            Set TLS key location (default './key.pem') or use SENTRYPEER_KEY env
  -z <TLS_LISTEN_ADDRESS>      Set TLS listen address (default '0.0.0.0:5061') or use SENTRYPEER_TLS_LISTEN_ADDRESS env
  -g <CONFIG_FILE>             Set config file location or use SENTRYPEER_CONFIG_FILE env
  -s                           Enable syslog logging or use SENTRYPEER_SYSLOG env
  -v                           Enable verbose logging or use SENTRYPEER_VERBOSE env
  -d                           Enable debug mode or use SENTRYPEER_DEBUG env
  -h, --help                   Print help
  -V, --version                Print version

IPv6-Multicast-Adresse

Das Projekt hat eine IANA-IPv6-Multicast-Adresse für den Zweck des Sendens von Nachrichten zwischen SentryPeer-Peers.

Adressen: FF0X:0:0:0:0:0:0:172
Beschreibung: SentryPeer
Kontakt: Gavin Henry <ghenry at sentrypeer.org>
Registrierungsdatum: 2022-01-26

Bitte siehe http://www.iana.org/assignments/ipv6-multicast-addresses

Die zugewiesene Variable-Scope-Adresse – die auch kurz als „FF0X::172“ aufgeführt werden kann – das „X“ bezeichnet jeden möglichen Bereich.

Lizenz

Tolle Lektüre – Wie Sie eine Lizenz für Ihre eigene Arbeit auswählen

Diese Arbeit ist dual-lizenziert unter GPL 2.0 und GPL 3.0.

SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only

Mitwirken

Siehe CONTRIBUTING

Projekt-Website

https://sentrypeer.org

Markenzeichen

SENTRYPEER ist ein eingetragenes Markenzeichen von Gavin Henry

Fragen, Fehlerberichte, Funktionsanfragen

Neue Issues können erstellt werden unter:

https://github.com/SentryPeer/SentryPeer/issues

Es ist in Ordnung, ein Issue zu erstellen, um eine Frage zu stellen.

Besonderer Dank

Besonderer Dank an:

Sponsoring

Besonderer Dank an Deutsche Telekom Security GmbH für das Sponsoring! Sehr nett!

Kategorien