Torna agli aggiornamenti
New releaseJul 27, 2026

SentryPeer v4.0.5

Distributed SIP honeypot che rileva e condivide dati sulle frodi negli attacchi VoIP. Raccoglie IP malintenzionati e numeri di telefono tramite rete peer-to-peer, con integrazione REST API e WebHook per intelligence sulle minacce in tempo reale.

Condividi

Proteggi i tuoi server SIP dagli attori malintenzionati

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

Un ringraziamento speciale a Deutsche Telekom Security GmbH per averci sponsorizzato! Molto gentili!

Perché non darci una stella e seguirci su Twitter!

Indice

Introduzione

SentryPeer® è uno strumento di rilevamento delle frodi. Consente agli attori malintenzionati di tentare di effettuare chiamate telefoniche e salva l'indirizzo IP da cui provengono e il numero che hanno provato a chiamare. Questi dettagli possono poi essere utilizzati per generare notifiche nella rete del fornitore di servizi e la prossima volta che un utente/cliente tenta di chiamare un numero raccolto, puoi agire come ritieni opportuno.

Ad esempio:

Supponiamo che tu stia gestendo il tuo PBX VoIP in sede. Ciò che SentryPeer ti permetterà di fare in questo contesto è di consultare l'elenco dei numeri di telefono (tramite l'API REST) quando i tuoi utenti effettuano chiamate in uscita. Se ottieni un riscontro, riceverai un avviso che potenzialmente un dispositivo nella tua rete sta tentando di chiamare numeri telefonici di prova noti che sono stati:

  1. Numeri raccolti dai nodi SentryPeer che stai eseguendo tu stesso
  2. Numeri visti da altri nodi SentryPeer che sono stati replicati sul tuo nodo tramite la rete peer-to-peer

Questo ti permetterebbe di generare una notifica dai tuoi sistemi di monitoraggio prima di accumulare chiamate costose o che accada qualcosa di peggio.

Cosa potrebbe portare a questo scenario?

  1. Potenziale frode della segreteria telefonica. Ciò può accadere se permetti di chiamare un numero in entrata (il tuo DID/DDI) per accedere alla tua segreteria telefonica, quindi viene richiesto un PIN. Se questo PIN è debole e il sistema di segreteria ti permette di premere '*' per richiamare il Caller ID che ha lasciato un messaggio, l'attaccante ha lasciato un messaggio, indovina il tuo PIN e lo richiama. Il CLI è un numero noto che SentryPeer ha visto. Puoi ricevere un avviso.
  2. Un dispositivo è stato dirottato e/o un softphone o simile sta utilizzando le credenziali rubate dall'interfaccia del telefono e sta tentando di registrarsi al tuo sistema e chiamare un numero visto da SentryPeer.
  3. Un utente innocente sta chiamando un numero di phishing o un numero costoso noto, ecc., che SentryPeer ha già visto.

Tradizionalmente, questi dati vengono inviati a un luogo centralizzato, quindi non possiedi i dati che hai raccolto. Questo progetto si basa sulla condivisione peer-to-peer di tali dati. L'utente che possiede i dati e i vari feed correlati al fornitore di servizi / fornitore di rete sono l'elemento chiave per me. Sono stanco di tutti quei servizi che li conservano e li vendono. Se li hai raccolti, dovresti avere la scelta di conservarli e/o di acconsentire a condividerli con altri membri della comunità SentryPeer tramite metodi p2p.

Panoramica

Nodo SentryPeer

Qui stiamo utilizzando diagrammi di sequenza Mermaid per mostrare il flusso dei dati da un nodo SentryPeer a 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@

#### SentryPeer Node a 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@

Utilizzo del nodo SentryPeer e dell'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

#### Integrazione con i tuoi sistemi```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

🚧 Funzionalità

  • Tutto il codice Software Libero/Libre e Open Source
  • VELOCE
  • L'utente possiede i propri dati
  • L'utente può inviare i propri dati se lo desidera (è necessario abilitare la modalità p2p - -p)
  • L'utente riceve i dati degli altri utenti SOLO SE accetta di inviare i propri dati al pool
  • Nodo DHT (Tabella Hash Distribuita) integrato tramite OpenDHT (opzione cli -p)
  • Condivisione Peer to Peer dei bad_actors raccolti tramite OpenDHT (disattivata per impostazione predefinita)
  • Replica Peer to Peer per ricevere i bad_actors raccolti tramite OpenDHT (disattivata per impostazione predefinita)
  • Imposta il tuo nodo di bootstrap DHT (opzione cli -b)
  • Multithread
  • Trasporto UDP
  • Trasporto TCP
  • Trasporto TLS
  • Registrazione JSON su file
  • La modalità SIP può essere disabilitata. Ciò consente di eseguire SentryPeer in modalità API o DHT, ecc., cioè non come honeypot, ma come nodo nella community di SentryPeer o semplicemente per servire dati replicati
  • La modalità SIP reattiva può essere abilitata per raccogliere dati - flag cli / env
  • Copia locale dei dati per accesso veloce - flag cli / env per posizione db
  • API locale per accesso veloce - flag cli / env
  • WebHook per inviare in POST il json dei bad actor a una posizione centrale - flag cli / env
  • Integrazione con SentryPeerHQ tramite token bearer OAuth2
  • API di query per indirizzi IP di bad actor
  • API di query per IPSET di bad actor
  • API di query per un indirizzo IP specifico di un bad actor
  • API di query per numeri di telefono tentati da bad actor
  • API di query per un numero di telefono tentato da un bad actor
  • Supporto Fail2Ban tramite syslog come da richiesta di funzionalità
  • Database sqlite locale - funzione / flag cli
  • Analisi - opt-in
  • SDK/libs per accesso esterno - CGRateS per iniziare o il nostro firewall con nftables
  • Dimensione binaria ridotta per uso IoT
  • Multipiattaforma
  • Opzioni firewall per utilizzare i dati distribuiti in tempo reale
  • Contenitore su Docker Hub per l'ultima build
  • Agente BGP per il peering per il blackholing degli indirizzi IP raccolti (simile a Progetto Server Router Bogon Team Cymru)
  • Agente SIP per restituire 404 o destinazione predefinita per i reindirizzamenti SIP

Talk

Adozione

Matrix slack SentryPeer su Twitter

Design

Ho iniziato questo progetto perché volevo fare programmazione di rete in C, dato che tutti i progetti che uso quotidianamente sono in C, come PostgreSQL, OpenLDAP, FreeSWITCH, OpenSIPS, Asterisk ecc. Vedi Episodio 414: Jens Gustedt su Modern C per capire perché C è una buona scelta. Per gli interessati, vedi la lista completa dei miei podcast (https://www.se-radio.net/team/gavin-henry/) su Software Engineering Radio

Docker

Puoi eseguire l'ultima versione di SentryPeer con Docker. L'ultima versione è disponibile su Docker Hub. Oppure compilalo da te:

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

Poi puoi controllare su http://localhost:8082/ip-addresses e http://localhost:8082/health-check per vedere se è in esecuzione.

Variabili d'ambiente

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

Imposta queste nel Dockerfile o nel file Dockerfile.env o nel comando docker run.

Impostare una qualsiasi di queste a 0 abiliterà comunque la funzionalità. Non ci interessa cosa imposti, solo che sia impostata.

File di configurazione

Puoi anche usare un file di configurazione per impostare alcune cose. Principalmente la configurazione TLS qui sotto. La posizione predefinita è ~/.config/sentrypeer/default-config.toml, ma puoi cambiarla con la variabile d'ambiente SENTRYPEER_CONFIG_FILE o con l'opzione cli -g.

Configurazione TLS

Per usare i tuoi certificati, puoi impostare le variabili d'ambiente appropriate, gli argomenti cli o utilizzare il file di configurazione. Ad esempio:``` 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"

Se non li imposti, un certificato per localhost verrà generato automaticamente nella directory da cui viene eseguito sentrypeer, creando un file `cert.pem` e un file `key.pem`.

### Installation
 
I pacchetti per Debian o Fedora sono sempre disponibili dalla pagina di rilascio per la versione corrente di SentryPeer:

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

#### Homebrew (macOS o Linux):

Abbiamo un [Homebrew Tap per questo progetto](https://github.com/SentryPeer/homebrew-sentrypeer) (finché non diventiamo più popolari):

    brew tap sentrypeer/sentrypeer
    brew install sentrypeer

#### Alpine Linux:

SentryPeer è in [test su Alpine Linux](https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/sentrypeer), quindi puoi installarlo con il seguente comando:

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

#### Pacchetto Ubuntu

Puoi installare SentryPeer dal [nostro PPA Ubuntu](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) che al momento è per Ubuntu 20 LTS (Focal Fossa):

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

Questo PPA può essere aggiunto manualmente al tuo sistema copiando le righe seguenti e aggiungendole alle origini del software del tuo sistema:

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

Poi puoi installare SentryPeer:

    sudo apt-get install sentrypeer

#### Compilazione da sorgente

Hai due opzioni per l'installazione da sorgente. CMake o autotools. Autotools è consigliato al momento. Un rilascio è una build autotools.

Se sei un utente Fedora, puoi installarlo tramite [Fedora copr](https://copr.fedorainfracloud.org/coprs/):

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

Se intendi compilare da questo repository, avrai bisogno di avere installato quanto segue:

  - `git`, `autoconf`, `automake` e `autoconf-archive` (Debian/Ubuntu)
  - `libtool`, `rustc` e `cargo` (Fedora)
  - `libosip2-dev` (Debian/Ubuntu) o `libosip2-devel` (Fedora)
  - `libsqlite3-dev` (Debian/Ubuntu) o `sqlite-devel` (Fedora)
  - `uuid-dev` (Debian/Ubuntu) o `libuuid-devel` (Fedora)
  - `libmicrohttpd-dev` (Debian/Ubuntu) o `libmicrohttpd-devel` (Fedora)
  - `libjansson-dev` (Debian/Ubuntu) o `jansson-devel` (Fedora)
  - `libpcre2-dev` (Debian/Ubuntu) o `pcre2-devel` (Fedora)
  - `libcurl-dev` (Debian/Ubuntu) o `libcurl-devel` (Fedora)
  - `libcmocka-dev` (Debian/Ubuntu) o `libcmocka-devel` (Fedora) - per i test unitari

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

poi (make check è altamente consigliato):

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

### Esecuzione di SentryPeer

Una volta compilato, puoi eseguire in questo modo per avviare in **modalità debug**, **rispondere** ai probe SIP, abilitare l'**API RESTful**, abilitare i WebHook e abilitare il logging syslog ([usa un pacchetto](https://github.com/SentryPeer/SentryPeer/releases) se vuoi [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

quando ricevi una richiesta di probe, puoi vedere qualcosa come il seguente nel terminale:```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

Puoi vedere i dati nel database sqlite3 chiamato sentrypeer.db usando sqlitebrowser o lo strumento da riga di comando sqlite3.

Ecco uno screenshot del database aperto con sqlitebrowser (è grande, quindi mi limito a collegare l'immagine):

sqlitebrowser exploring the sentrypeer.db

WebHook

C'è un WebHook per inviare tramite POST un payload in JSON Log Format a SentryPeerHQ o al tuo endpoint WebHook personale. Il WebHook non è abilitato per impostazione predefinita. Puoi configurare l'URL del WebHook tramite -w o impostare la variabile d'ambiente SENTRYPEER_WEBHOOK_URL.

Se utilizzi SentryPeer SaaS, devi ottenere il tuo client id e client secret dalla Dashboard e impostare le variabili d'ambiente SENTRYPEER_OAUTH2_CLIENT_ID e SENTRYPEER_OAUTH2_CLIENT_SECRET oppure usare i flag -i e -c.

RESTful API

L'API RESTful è completa per i casi d'uso attuali. Fai clic sul pulsante Watch per essere avvisato quando usciranno altre funzionalità :-)

Endpoint /health-check

Interroga l'API per verificare se è attiva:```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

Elenca tutti gli indirizzi IP che sono stati visti da 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}

Interroga un singolo indirizzo 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" }
#### Endpoint /numbers

Elenca tutti i numeri chiamati che sono stati visti da 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}

Interroga un numero di telefono che un attore malintenzionato ha tentato di chiamare con prefisso + facoltativo:```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 e Fail2ban

Con `sentrypeer -s`, analizzi il syslog e usi Fail2Ban per bloccare l'indirizzo IP dell'attore malintenzionato:```syslog
Nov 30 21:32:16 localhost.localdomain sentrypeer[303741]: Source IP: 144.21.55.36, Method: OPTIONS, Agent: sipsak 0.9.7

Formato log JSON

Con sentrypeer -j, è possibile produrre un file di log JSON dell'indirizzo IP dell'attore malintenzionato e del numero di telefono che hanno tentato di chiamare, oltre ad altri metadati (imposta una posizione personalizzata del file di log con -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" }

### Opzioni della riga di comando```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

Indirizzo Multicast IPv6

Il progetto ha un indirizzo multicast IPv6 IANA allo scopo di inviare messaggi tra i peer SentryPeer.

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

Si veda http://www.iana.org/assignments/ipv6-multicast-addresses

L'indirizzo a variabile di ambito assegnato — che può anche essere elencato come "FF0X::172" in breve — la "X" denota qualsiasi ambito possibile.

Licenza

Ottima lettura - Come scegliere una licenza per il tuo lavoro

Quest'opera è distribuita con doppia licenza GPL 2.0 e GPL 3.0.

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

Contribuire

Vedi CONTRIBUTING

Sito web del progetto

https://sentrypeer.org

Marchio registrato

SENTRYPEER è un marchio registrato di Gavin Henry

Domande, segnalazioni di bug, richieste di funzionalità

Nuove richieste possono essere create su:

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

È possibile aprire una richiesta per fare una domanda.

Ringraziamenti speciali

Un ringraziamento speciale a:

Sponsorizzazione

Un ringraziamento speciale a Deutsche Telekom Security GmbH per averci sponsorizzati! Molto gentili!

Categorie