Voltar às atualizações
New releaseJul 27, 2026

SentryPeer v4.0.5

Honeypot SIP distribuído que detecta e compartilha dados de fraude em ataques VoIP. Coleta IPs de atores maliciosos e números de telefone via rede ponto a ponto, com integração REST API e WebHook para inteligência de ameaças em tempo real.

Compartilhar

Proteja seus servidores SIP de agentes mal-intencionados

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

Agradecimentos especiais à Deutsche Telekom Security GmbH por nos patrocinar! Muito gentil!

Por que não nos dar uma estrela e nos seguir no Twitter!

Índice

Introdução

O SentryPeer® é uma ferramenta de detecção de fraude. Ela permite que agentes mal-intencionados tentem fazer chamadas telefônicas e salva o endereço IP de onde vieram e o número que tentaram chamar. Esses detalhes podem então ser usados para gerar notificações na rede do provedor de serviços e, na próxima vez que um usuário/cliente tentar chamar um número coletado, você pode agir da maneira que achar melhor.

Por exemplo:

Digamos que você esteja executando seu próprio PABX VoIP no local. O que o SentryPeer permitirá que você faça neste contexto é consultar a lista de números de telefone (usando a API RESTful) quando seus usuários estiverem fazendo chamadas de saída. Se houver uma correspondência, você receberá um aviso de que potencialmente um dispositivo dentro de sua rede está tentando ligar para números de telefone de sondagem conhecidos que podem ter sido:

  1. Números coletados por nós SentryPeer que você mesmo está executando
  2. Números vistos por outros nós SentryPeer que foram replicados para o seu nó através da rede ponto a ponto

Isso permitiria que você gerasse uma notificação de seus sistemas de monitoramento antes de acumular chamadas caras ou algo pior acontecer.

O que levaria a esse cenário?

  1. Potencial fraude de correio de voz. Isso pode acontecer se você permitir ligar para um número de entrada (seu DID/DDI) para acessar seu sistema de correio de voz e, em seguida, solicitar um PIN. Este PIN é fraco e o sistema de correio de voz permite que você pressione '*' para retornar a chamada do identificador de chamadas que deixou um correio de voz. O atacante deixou um correio de voz, e então adivinha seu PIN e retorna a chamada. O CLI é um número conhecido que o SentryPeer já viu. Você pode alertar sobre isso.
  2. Um dispositivo foi sequestrado e/ou um softphone ou similar está usando as credenciais que roubaram da interface gráfica do telefone e está tentando se registrar em seu sistema e fazer chamadas para um número visto pelo SentryPeer.
  3. Um usuário inocente está ligando para um número de phishing ou número caro conhecido, etc., que o SentryPeer já viu antes.

Tradicionalmente, esses dados são enviados para um local central, então você não possui os dados que coletou. Este projeto é todo sobre compartilhamento ponto a ponto desses dados. O usuário possuir os dados e vários feeds relacionados a provedores de serviços/provedores de rede é a parte chave para mim. Estou cansado de todos os serviços por aí que mantêm e vendem esses dados. Se você os coletou, deve ter a opção de mantê-los e/ou optar por compartilhá-los com outros membros da comunidade SentryPeer por meio de métodos ponto a ponto.

Visão Geral

Nó SentryPeer

Aqui estamos usando Diagramas de Sequência Mermaid para mostrar o fluxo de dados de um nó SentryPeer para o 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 para 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@

Usando o SentryPeer Node e a 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

#### Integrando com seus próprios sistemas```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

🚧 Funcionalidades

  • Todo o código é Software Livre e de Código Aberto
  • RÁPIDO
  • Utilizador possui os seus dados
  • Utilizador pode submeter os seus próprios dados se quiser (é necessário ativar o modo p2p - -p)
  • Utilizador obtém dados de outros utilizadores APENAS SE optar por submeter os seus dados ao conjunto
  • Nó de Tabela Hash Distribuída (DHT) embutido usando OpenDHT (opção cli -p)
  • Compartilhamento Ponto a Ponto de bad_actors coletados usando OpenDHT (desativado por predefinição)
  • Replicação de dados ponto a ponto para receber bad_actors coletados usando OpenDHT (desativado por predefinição)
  • Definir o seu próprio nó de bootstrap DHT (opção cli -b)
  • Multithread
  • Transporte UDP
  • Transporte TCP
  • Transporte TLS
  • Registo em JSON para um ficheiro
  • O modo SIP pode ser desativado. Isto permite executar o SentryPeer em modo API ou apenas modo DHT, etc., ou seja, não como honeypot, mas como um nó na comunidade SentryPeer ou apenas para servir dados replicados
  • O modo responsivo SIP pode ser ativado para coletar dados – flag cli / env
  • Cópia local de dados para acesso rápido – flag de localização da base de dados cli / env
  • API local para acesso rápido – flag cli / env
  • WebHook para POST do json do bad actor para uma localização central – flag cli / env
  • Integração com SentryPeerHQ através de token portador OAuth2
  • API de consulta para endereços IP de bad actors
  • API de consulta para IPSET de bad actors
  • API de consulta para um endereço IP específico de um bad actor
  • API de consulta para números de telefone tentados por bad actors
  • API de consulta para um número de telefone tentado por um bad actor
  • Suporte Fail2Ban via syslog conforme pedido de funcionalidade
  • Base de dados local sqlite – funcionalidade / flag cli
  • Analíticas – opt-in
  • SDKs/bibliotecas para acesso externo – CGRateS para começar ou a nossa própria firewall com nftables
  • Tamanho pequeno do binário para uso em IoT
  • Multiplataforma
  • Opções de firewall para usar dados distribuídos em tempo real
  • Contentor no Docker Hub para a versão mais recente
  • Agente BGP para peer para blackholing de endereços IP coletados (semelhante ao Team Cymru Bogon Router Server Project)
  • Agente SIP para retornar 404 ou destino predefinido para redirecionamentos SIP

Apresentações

Adoção

Matrix slack SentryPeer no Twitter

Design

Comecei isto porque queria fazer programação de rede em C já que todos os projetos que uso diariamente são em C, como PostgreSQL, OpenLDAP, FreeSWITCH, OpenSIPS, Asterisk etc. Veja Episode 414: Jens Gustedt on Modern C para saber por que C é uma boa escolha. Para os interessados, veja a minha lista completa de episódios de podcast (https://www.se-radio.net/team/gavin-henry/) do Software Engineering Radio

Docker

Pode executar a versão mais recente do SentryPeer com Docker. A versão mais recente está disponível no Docker Hub. Ou crie você mesmo:

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

Depois pode verificar em http://localhost:8082/ip-addresses e http://localhost:8082/health-check para ver se está a funcionar.

Variáveis de 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

Pode definir estas variáveis no Dockerfile, no ficheiro Dockerfile.env ou no comando docker run.

Definir qualquer uma destas para 0 também ativará a funcionalidade. Não nos importa o valor que define, apenas que esteja definido.

Ficheiro de Configuração

Também pode usar um ficheiro de configuração para definir certas coisas. Principalmente a configuração TLS abaixo. A localização predefinida é ~/.config/sentrypeer/default-config.toml, mas pode alterá-la com a variável de ambiente SENTRYPEER_CONFIG_FILE ou a opção cli -g.

Configuração TLS

Para usar os seus próprios certificados, pode definir as variáveis de ambiente apropriadas, argumentos cli ou usar o ficheiro de configuração. Por exemplo:``` 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 você não definir estes, um certificado para localhost será gerado automaticamente no diretório onde sentrypeer é executado, criando um arquivo `cert.pem` e um arquivo `key.pem`.

### Instalação

Pacotes Debian ou Fedora estão sempre disponíveis na página de lançamento da versão atual do SentryPeer:

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

#### Homebrew (macOS ou Linux):

Temos um [Homebrew Tap para este projeto](https://github.com/SentryPeer/homebrew-sentrypeer) (até nos tornarmos mais populares):

    brew tap sentrypeer/sentrypeer
    brew install sentrypeer

#### Alpine Linux:

O SentryPeer está em [teste no Alpine Linux](https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/sentrypeer), então você pode instalá-lo com o seguinte comando:

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

#### Pacote Ubuntu

Você pode instalar o SentryPeer a partir do [nosso PPD Ubuntu](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) que atualmente é para Ubuntu 20 LTS (Focal Fossa):

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

Este PPA pode ser adicionado manualmente ao seu sistema copiando as linhas abaixo e adicionando-as às fontes de software do seu sistema:

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

Em seguida, você pode instalar o SentryPeer:

    sudo apt-get install sentrypeer

#### Compilando a partir do código-fonte

Você tem duas opções para instalação a partir do código-fonte: CMake ou autotools. O autotools é recomendado no momento. Um lançamento é uma compilação autotools.

Se você é um usuário Fedora, pode instalar isto via [Fedora copr](https://copr.fedorainfracloud.org/coprs/):

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

Se você vai compilar a partir deste repositório, precisará ter o seguinte instalado:

  - `git`, `autoconf`, `automake` e `autoconf-archive` (Debian/Ubuntu)
  - `libtool`, `rustc` e `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) - para testes unitários

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

então (make check é altamente recomendado):

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

### Executando o SentryPeer

Uma vez compilado, você pode executá-lo assim para iniciar em **modo debug**, **responder** a sondas SIP, habilitar a **API RESTful**, habilitar WebHooks e habilitar o log via syslog ([use um pacote](https://github.com/SentryPeer/SentryPeer/releases) se quiser [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 você receber uma solicitação de sonda, poderá ver algo como o seguinte no 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

Você pode ver os dados no banco de dados sqlite3 chamado sentrypeer.db usando sqlitebrowser ou a ferramenta de linha de comando sqlite3.

Aqui está uma captura de tela do banco de dados aberto usando sqlitebrowser (é grande, então vou apenas linkar para a imagem):

sqlitebrowser explorando o sentrypeer.db

WebHook

Existe um WebHook para enviar (POST) um payload no Formato de Log JSON para o SentryPeerHQ ou para seu próprio endpoint WebHook. O WebHook não está habilitado por padrão. Você pode configurar a URL do WebHook via -w ou definir a variável de ambiente SENTRYPEER_WEBHOOK_URL.

Se estiver usando o SentryPeer SaaS você precisa obter seu client id e client secret no Dashboard e definir as variáveis de ambiente SENTRYPEER_OAUTH2_CLIENT_ID e SENTRYPEER_OAUTH2_CLIENT_SECRET ou usar as flags -i e -c.

API RESTful

A API RESTful está completa para os casos de uso atuais. Por favor, clique no botão Watch para ser notificado quando mais coisas forem lançadas :-)

Endpoint /health-check

Consulte a API para ver se está ativa:```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

Listar todos os endereços IP que foram vistos pelo 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}

Consulta um único endereço 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 

Lista todos os números chamados que foram vistos pelo 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}

Consultar um número de telefone que um ator malicioso tentou chamar com prefixo + opcional:```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

Com `sentrypeer -s`, você analisa o syslog e usa o Fail2Ban para bloquear o endereço IP do ator malicioso:```syslog
Nov 30 21:32:16 localhost.localdomain sentrypeer[303741]: Source IP: 144.21.55.36, Method: OPTIONS, Agent: sipsak 0.9.7

Formato de Log JSON

Com sentrypeer -j, você pode produzir um arquivo de log JSON do endereço IP do ator malicioso e do número de telefone que ele tentou chamar, além de outros metadados (defina um local personalizado para o arquivo de log com -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" }

### Opções de Linha de 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

Endereço Multicast IPv6

O projeto possui um endereço multicast IPv6 da IANA para enviar mensagens entre os peers do SentryPeer.

Endereços: FF0X:0:0:0:0:0:0:172
Descrição: SentryPeer
Contato: Gavin Henry <ghenry at sentrypeer.org>
Data de Registro: 2022-01-26

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

O endereço de escopo variável atribuído — que também pode ser listado como "FF0X::172" para abreviar — o "X" denota qualquer escopo possível.

Licença

Ótima leitura - Como escolher uma licença para seu próprio trabalho

Este trabalho é dual-licenciado sob GPL 2.0 e GPL 3.0.

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

Contribuindo

Veja CONTRIBUTING

Site do Projeto

https://sentrypeer.org

Marca Registrada

SENTRYPEER é uma marca registrada de Gavin Henry

Perguntas, Relatórios de Bugs, Solicitações de Funcionalidades

Novas issues podem ser abertas em:

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

Não tem problema abrir uma issue para fazer uma pergunta.

Agradecimentos Especiais

Agradecimentos especiais para:

Patrocínio

Agradecimentos especiais para Deutsche Telekom Security GmbH por nos patrocinar! Muito gentil!

Categorias