Retour aux mises à jour
New releaseJul 27, 2026

SentryPeer v4.0.5

Pot de miel SIP distribué qui détecte et partage les données de fraude sur les attaques VoIP. Collecte les IP des acteurs malveillants et les numéros de téléphone via un réseau peer-to-peer, avec intégration REST API et WebHook pour une intelligence des menaces en temps réel.

Partager

Protégez vos serveurs SIP des acteurs malveillants

Logo SentryPeer

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

Remerciements spéciaux à Deutsche Telekom Security GmbH pour nous avoir sponsorisés ! Très gentil !

Pourquoi ne pas nous donner une star et nous suivre sur Twitter !

Table des matières

Introduction

SentryPeer® est un outil de détection des fraudes. Il laisse les acteurs malveillants essayer de passer des appels téléphoniques et enregistre l'adresse IP d'où ils viennent et le numéro qu'ils ont essayé d'appeler. Ces détails peuvent ensuite être utilisés pour déclencher des notifications sur le réseau du fournisseur de services et la prochaine fois qu'un utilisateur/client essaie d'appeler un numéro collecté, vous pouvez agir comme bon vous semble.

Par exemple :

Supposons que vous exploitiez votre propre PBX VoIP sur site. Ce que SentryPeer vous permettra de faire dans ce contexte, c'est de consulter la liste des numéros de téléphone (en utilisant l'API RESTful) lorsque vos utilisateurs passent des appels sortants. Si vous obtenez une correspondance, vous serez averti qu'un appareil de votre réseau tente potentiellement d'appeler des numéros de sondage connus qui ont été :

  1. Numéros collectés par les nœuds SentryPeer que vous exécutez vous-même
  2. Numéros vus par d'autres nœuds SentryPeer qui ont été répliqués sur votre nœud via le réseau pair à pair

Cela vous permettrait de générer une notification depuis vos systèmes de surveillance avant de cumuler des appels coûteux ou qu'une situation plus grave ne se produise.

Qu'est-ce qui pourrait mener à ce scénario ?

  1. Fraude potentielle sur la messagerie vocale. Cela peut se produire si vous autorisez l'appel d'un numéro entrant (votre DID/DDI) pour accéder à votre système de messagerie vocale, puis demandez un code PIN. Ce code PIN est faible et le système de messagerie vocale vous permet d'appuyer sur '*' pour rappeler l'ID de l'appelant qui a laissé un message vocal. L'attaquant a laissé un message vocal, puis devine votre code PIN et le rappelle. Le CLI est un numéro connu que SentryPeer a vu. Vous pouvez alerter dessus.
  2. Un appareil a été piraté et/ou un softphone ou similaire utilise les identifiants qu'il a volés sur l'interface graphique du téléphone et tente de s'enregistrer sur votre système et de passer des appels vers un numéro vu par SentryPeer.
  3. Un utilisateur innocent appelle un numéro de phishing ou un numéro connu coûteux, etc., que SentryPeer a déjà vu.

Traditionnellement, ces données sont envoyées vers un endroit central, de sorte que vous ne possédez pas les données que vous avez collectées. Ce projet repose entièrement sur le partage pair à pair de ces données. L'utilisateur possédant les données et divers flux liés aux fournisseurs de services / réseaux de ces données est l'élément clé pour moi. J'en ai assez de tous les services qui les conservent et les vendent. Si vous les avez collectées, vous devriez avoir le choix de les conserver et/ou de choisir de les partager avec d'autres membres de la communauté SentryPeer via des méthodes p2p.

Aperçu

Nœud SentryPeer

Ici, nous utilisons les diagrammes de séquence Mermaid pour montrer le flux de données d'un nœud SentryPeer vers SentryPeerHQ.```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@

#### Nœud SentryPeer vers 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@

Utilisation du SentryPeer Node et de l'API SentryPeerHQ```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

#### Intégration avec vos propres systèmes```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

🚧 Fonctionnalités

  • Tout le code Free/Libre and Open Source Software
  • RAPIDE
  • L'utilisateur possède ses données
  • L'utilisateur peut soumettre ses propres données s'il le souhaite (vous devez activer le mode p2p - -p)
  • L'utilisateur reçoit les données des autres utilisateurs UNIQUEMENT SI il accepte de soumettre ses données au pool
  • Nœud de table de hachage distribuée (DHT) intégré utilisant OpenDHT (option cli -p)
  • Partage pair à pair des bad_actors collectés en utilisant OpenDHT (désactivé par défaut)
  • Réplication pair à pair pour recevoir les bad_actors collectés en utilisant OpenDHT (désactivé par défaut)
  • Définir votre propre nœud d'amorçage DHT (option cli -b)
  • Multithreaded
  • Transport UDP
  • Transport TCP
  • Transport TLS
  • Journalisation JSON dans un fichier
  • Le mode SIP peut être désactivé. Cela vous permet d'exécuter SentryPeer en mode API ou en mode DHT uniquement, etc., c'est-à-dire pas comme un honeypot, mais comme un nœud dans la communauté SentryPeer ou simplement pour servir des données répliquées
  • Le mode SIP réactif peut être activé pour collecter des données - indicateur cli / env
  • Copie de données locale pour un accès rapide - indicateur d'emplacement de base de données cli / env
  • API locale pour un accès rapide - indicateur cli / env
  • WebHook pour POSTer le json des bad actors vers un emplacement central - indicateur cli / env
  • Intégration avec SentryPeerHQ via un jeton porteur OAuth2
  • API de requête pour les adresses IP des bad actors
  • API de requête pour l'IPSET des bad actors
  • API de requête pour une adresse IP particulière d'un bad actor
  • API de requête pour les numéros de téléphone tentés par les bad actors
  • API de requête pour un numéro de téléphone tenté par un bad actor
  • Support de Fail2Ban via syslog selon demande de fonctionnalité
  • Base de données sqlite locale - fonctionnalité / indicateur cli
  • Analytiques - opt in
  • SDKs/bibliothèques pour accès externe - CGRateS pour commencer ou notre propre pare-feu avec nftables
  • Taille binaire réduite pour une utilisation IoT
  • Multi-plateforme
  • Options de pare-feu pour utiliser les données distribuées en temps réel
  • Conteneur sur Docker Hub pour la dernière version
  • Agent BGP pour le peering afin de blackholer les adresses IP collectées (similaire au Projet Team Cymru Bogon Router Server)
  • Agent SIP pour retourner 404 ou une destination par défaut pour les redirections SIP

Présentations

Adoption

Matrix slack SentryPeer on Twitter

Conception

J'ai commencé ce projet parce que je voulais faire de la programmation réseau en C car tous les projets que j'utilise quotidiennement sont en C comme PostgreSQL, OpenLDAP, FreeSWITCH, OpenSIPS, Asterisk etc. Voir Épisode 414 : Jens Gustedt sur le C moderne pour comprendre pourquoi C est un bon choix. Pour les intéressés, consultez ma liste complète d'épisodes de podcast (https://www.se-radio.net/team/gavin-henry/) pour Software Engineering Radio

Docker

Vous pouvez exécuter la dernière version de SentryPeer avec Docker. La dernière version est disponible sur Docker Hub. Ou construisez-la vous-même :

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

Vous pouvez ensuite vérifier à http://localhost:8082/ip-addresses et http://localhost:8082/health-check pour voir s'il fonctionne.

Variables d'environnement

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

Définissez-les soit dans le Dockerfile, soit dans votre fichier Dockerfile.env, soit dans la commande docker run.

Définir l'un de ces éléments à 0 activera également la fonctionnalité. Nous ne nous soucions pas de la valeur que vous définissez, seulement qu'elle soit définie.

Fichier de configuration

Vous pouvez également utiliser un fichier de configuration pour définir certaines choses. Principalement la configuration TLS ci-dessous. L'emplacement par défaut est ~/.config/sentrypeer/default-config.toml, mais vous pouvez le modifier avec la variable d'environnement SENTRYPEER_CONFIG_FILE ou l'option cli -g.

Configuration TLS

Pour utiliser vos propres certificats, vous pouvez définir les variables d'environnement appropriées, les arguments cli ou utiliser le fichier de configuration. Par exemple :``` 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"

Si vous ne les définissez pas, un certificat pour localhost sera automatiquement 
généré dans le répertoire à partir duquel sentrypeer est exécuté, créant un fichier `cert.pem` et
un fichier `key.pem`.

### Installation

Les paquets Debian ou Fedora sont toujours disponibles depuis la page des versions pour la version actuelle de SentryPeer :

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

#### Homebrew (macOS ou Linux) :

Nous avons un [Homebrew Tap pour ce projet](https://github.com/SentryPeer/homebrew-sentrypeer) (jusqu'à ce que nous devenions plus populaires) :

    brew tap sentrypeer/sentrypeer
    brew install sentrypeer

#### Alpine Linux :

SentryPeer est en [test sur Alpine Linux](https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/sentrypeer), vous pouvez donc l'installer avec la commande suivante :

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

#### Package Ubuntu

Vous pouvez installer SentryPeer depuis [notre PPA Ubuntu](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) qui
est actuellement pour Ubuntu 20 LTS (Focal Fossa) :

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

Ce PPA peut être ajouté manuellement à votre système en copiant les lignes ci-dessous et en les ajoutant à vos sources de logiciels
:

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

Ensuite, vous pouvez installer SentryPeer :

    sudo apt-get install sentrypeer

#### Compilation à partir des sources

Vous avez deux options pour l'installation à partir des sources. CMake ou autotools. Autotools est recommandé pour le moment. Une version est une construction autotools.

Si vous êtes un utilisateur Fedora, vous pouvez l'installer via [Fedora copr](https://copr.fedorainfracloud.org/coprs/) :

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

Si vous allez compiler à partir de ce dépôt, vous aurez besoin d'installer ce qui suit :

  - `git`, `autoconf`, `automake` et `autoconf-archive` (Debian/Ubuntu)
  - `libtool`, `rustc` et `cargo` (Fedora)
  - `libosip2-dev` (Debian/Ubuntu) ou `libosip2-devel` (Fedora)
  - `libsqlite3-dev` (Debian/Ubuntu) ou `sqlite-devel` (Fedora)
  - `uuid-dev` (Debian/Ubuntu) ou `libuuid-devel` (Fedora)
  - `libmicrohttpd-dev` (Debian/Ubuntu) ou `libmicrohttpd-devel` (Fedora)
  - `libjansson-dev` (Debian/Ubuntu) ou `jansson-devel` (Fedora)
  - `libpcre2-dev` (Debian/Ubuntu) ou `pcre2-devel` (Fedora)
  - `libcurl-dev` (Debian/Ubuntu) ou `libcurl-devel` (Fedora)
  - `libcmocka-dev` (Debian/Ubuntu) ou `libcmocka-devel` (Fedora) - pour les tests unitaires

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

puis (make check est fortement recommandé) :

    ./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

### Exécution de SentryPeer

Une fois compilé, vous pouvez l'exécuter comme suit pour démarrer en **mode debug**, **répondre** aux sondes SIP, activer l'**API RESTful**,
activer les WebHooks et activer la journalisation syslog ([utilisez un paquet](https://github.com/SentryPeer/SentryPeer/releases) si vous voulez [systemd](https://www.freedesktop.org/wiki/Software/systemd/)) :

    ./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

lorsque vous recevez une demande de sonde, vous pouvez voir quelque chose comme ceci dans le terminal :```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

Vous pouvez voir les données dans la base de données sqlite3 appelée sentrypeer.db en utilisant sqlitebrowser ou l'outil en ligne de commande sqlite3.

Voici une capture d'écran de la base de données ouverte avec sqlitebrowser (c'est grand, donc je vais simplement lier l'image) :

sqlitebrowser exploring the sentrypeer.db

WebHook

Il y a un WebHook pour POSTER une charge utile au Format JSON de Log vers SentryPeerHQ ou votre propre point de terminaison WebHook. Le WebHook n'est pas activé par défaut. Vous pouvez configurer l'URL du WebHook via -w ou définir la variable d'environnement SENTRYPEER_WEBHOOK_URL.

Si vous utilisez SentryPeer SaaS, vous devez obtenir votre identifiant client et votre secret client depuis le tableau de bord et définir les variables d'environnement SENTRYPEER_OAUTH2_CLIENT_ID et SENTRYPEER_OAUTH2_CLIENT_SECRET ou utiliser les options -i et -c.

RESTful API

L'API RESTful est complète pour les cas d'utilisation actuels. Veuillez cliquer sur le bouton Watch pour être notifié lorsque de nouvelles fonctionnalités sortiront :-)

Endpoint /health-check

Interrogez l'API pour voir si elle est en vie :```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

Lister toutes les adresses IP qui ont été vues par SentryPeer :```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"      
    }
    ...
  ]
}

Endpoint /ip-addresses/{ip-address}

Interroger une seule adresse IP :```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" }
#### Point de terminaison /numbers 

Liste tous les numéros appelés qui ont été vus par SentryPeer :```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"
    },
    ....

Endpoint /numbers/{phone-number}

Interrogez un numéro de téléphone qu'un acteur malveillant a tenté d'appeler avec un préfixe + facultatif :```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 et Fail2ban

Avec `sentrypeer -s`, vous analysez les logs syslog et utilisez Fail2Ban pour bloquer l'adresse IP de l'acteur malveillant :```syslog
Nov 30 21:32:16 localhost.localdomain sentrypeer[303741]: Source IP: 144.21.55.36, Method: OPTIONS, Agent: sipsak 0.9.7

Format du journal JSON

Avec sentrypeer -j, vous pouvez produire un fichier de journal JSON de l'adresse IP de l'acteur malveillant et du numéro de téléphone qu'ils ont essayé d'appeler, ainsi que d'autres métadonnées (définissez un emplacement de fichier journal personnalisé avec -l) :```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" }

### Options de ligne de commande```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

Adresse de multidiffusion IPv6

Le projet dispose d'une adresse de multidiffusion IPv6 de l'IANA pour envoyer des messages entre les pairs SentryPeer.

Addresses: FF0X:0:0:0:0:0:0:172
Description: SentryPeer
Contact: Gavin Henry <ghenry at sentrypeer.org>
Registration Date: 2022-01-26

Veuillez consulter http://www.iana.org/assignments/ipv6-multicast-addresses

L'adresse de portée variable attribuée — qui peut également être listée comme « FF0X::172 » en abrégé — le « X » désigne n'importe quelle portée possible.

Licence

Bonne lecture - Comment choisir une licence pour votre propre travail

Ce travail est sous double licence GPL 2.0 et GPL 3.0.

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

Contribuer

Voir CONTRIBUTING

Site Web du projet

https://sentrypeer.org

Marque déposée

SENTRYPEER est une marque déposée de Gavin Henry

Questions, signalements de bogues, demandes de fonctionnalités

De nouveaux problèmes peuvent être soumis à :

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

Il est acceptable de soumettre un problème pour poser une question.

Remerciements spéciaux

Remerciements spéciaux à :

Parrainage

Remerciements spéciaux à Deutsche Telekom Security GmbH pour nous avoir sponsorisés ! Très gentil !

Catégories