
SentryPeer v4.0.5
分布式SIP蜜罐,检测并共享VoIP攻击中的欺诈数据。通过点对点网络收集恶意行为者的IP和电话号码,并集成REST API和WebHook以实现实时威胁情报。
Protect your SIP Servers from bad actors
特别感谢 Deutsche Telekom Security GmbH 对我们的赞助!非常友善!
何不给我们加颗星并在 Twitter 上关注我们!
目录
- 介绍
- 概述
- 功能
- 演讲
- 采用
- 设计
- Docker
- 安装
- 运行 SentryPeer
- WebHook
- RESTful API
- Syslog 和 Fail2ban
- JSON 日志格式
- 命令行选项
- IPv6 多播地址
- 许可证
- 贡献
- 项目网站
- 商标
- 问题、Bug 报告、功能请求
- 特别感谢
- 赞助
介绍
SentryPeer® 是一个欺诈检测工具。它允许恶意行为者尝试拨打电话,并保存他们来源的 IP 地址以及他们试图拨打的号码。然后,这些详细信息可用于在服务提供商网络发出通知,下一次用户/客户尝试拨打已收集的号码时,您可以采取任何您认为合适的措施。
例如:
假设您在本地运行自己的 VoIP PBX。在这种情境下,SentryPeer 允许您在用户进行出站呼叫时查询电话号码列表(使用 RESTful API)。如果匹配到,您将收到警报,提示您网络内的某个设备可能正在尝试拨打已知的探测电话号码,这些号码要么是:
- 由您自己运行的 SentryPeer 节点收集的号码
- 由其他 SentryPeer 节点看到的号码,并通过点对点网络复制到您的节点
这将允许您在进行任何昂贵的呼叫或其他更糟的事情发生之前,从您的监控系统生成通知。
什么会导致这种情况?
- 潜在的语音信箱欺诈。如果您允许拨打一个入站号码(您的 DID/DDI)进入您的语音信箱系统,然后提示输入 PIN 码,就可能发生这种情况。PIN 码很弱,语音信箱系统允许您按 '*' 回拨留下语音留言的呼叫者 ID。攻击者留下了一封语音邮件,然后他们猜测您的 PIN 码并回拨。CLI 是 SentryPeer 见过的已知号码。您可以针对此发出警报。
- 设备已被劫持,和/或一个软电话或类似设备正在使用从电话 GUI 窃取的凭证,尝试注册到您的系统并拨打 SentryPeer 见过的号码。
- 一个无辜用户正在拨打 SentryPeer 之前见过的钓鱼号码或已知的高收费号码等。
传统上,这些数据会被发送到一个中心位置,因此您并不拥有您收集的数据。这个项目完全致力于点对点共享这些数据。对我来说,用户拥有数据以及各种服务提供商/网络提供商相关的数据流是关键所在。我厌倦了所有那些保留并出售数据的服务。如果您收集了数据,您应该有权选择保留它和/或选择通过 p2p 方式与其他 SentryPeer 社区成员共享。
概述
SentryPeer 节点
这里我们使用 Mermaid 序列图 来展示数据从 SentryPeer 节点流向 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 节点到 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@
使用 SentryPeer 节点与 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
#### 与您自己的系统集成```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
🚧 功能特性
- 所有代码均为 自由/开源软件
- 快速
- 用户 拥有自己 的数据
- 用户可以自行提交自己的数据(需要启用 p2p 模式 -
-p) - 用户仅当选择提交自己的数据到池中时,才能获取其他用户的数据
- 使用 OpenDHT 嵌入分布式哈希表(DHT)节点(
-p命令行选项) - 使用 OpenDHT 进行点对点 共享 收集到的恶意行为者(默认关闭)
- 使用 OpenDHT 进行点对点数据复制以 接收 收集到的恶意行为者(默认关闭)
- 设置自己的 DHT 引导节点(
-b命令行选项) - 多线程
- UDP 传输
- TCP 传输
- TLS 传输
- JSON 日志记录 到文件
- SIP 模式可禁用。这允许你在 API 模式或仅 DHT 模式下运行 SentryPeer,即不作为蜜罐,而是作为 SentryPeer 社区的一个节点,或仅用于服务复制的数据
- SIP 响应模式可启用以收集数据 - 命令行/环境变量标志
- 本地 数据副本用于 快速访问 - 命令行/环境变量数据库位置标志
- 本地 API 用于 快速访问 - 命令行/环境变量标志
- 用于将恶意行为者 JSON 数据 POST 到中心位置的 WebHook - 命令行/环境变量标志
- 通过 OAuth2 承载令牌与 SentryPeerHQ 集成
- 查询 API 以获取恶意行为者的 IP 地址
- 查询 API 以获取恶意行为者的 IPSET
- 查询 API 以获取特定恶意行为者的 IP 地址
- 查询 API 以获取恶意行为者尝试呼叫的电话号码
- 查询 API 以获取恶意行为者尝试呼叫的特定电话号码
- 通过
syslog支持 Fail2Ban 根据 功能请求 - 本地 sqlite 数据库 - 功能/命令行标志
- 分析 - 可选加入
- 用于外部访问的 SDK/库 - 从 CGRateS 开始,或我们自己的带 nftables 的防火墙
- 适用于物联网场景的小体积二进制文件
- 跨平台
- 实时使用分布式数据的防火墙选项
- Docker Hub 上最新构建的容器
- 用于黑洞路由收集到的 IP 地址的 BGP 对等代理(类似于 Team Cymru Bogon 路由器服务器项目)
- 用于 SIP 重定向的 SIP 代理,返回 404 或默认目标
演讲
- ClueCon Weekly 2023 - https://www.youtube.com/watch?v=iuN_MtVfT6g
- UKNOF49 2022(演示文稿)- https://indico.uknof.org.uk/event/59/contributions/801/
- ClueCon Weekly 2022 - https://youtu.be/DFxGHJI_0Wg
- CommCon 2021 - https://2021.commcon.xyz/talks/sentrypeer-a-distributed-peer-to-peer-list-of-bad-ip-addresses-and-phone-numbers-collected-via-a-sip-honeypot
- TADSummit 2021 - https://blog.tadsummit.com/2021/11/17/sentrypeer/
采用情况
- Kali Linux
- 德国电信 T-Pot - 一体化蜜罐平台 自 v22 起
设计
我启动这个项目是因为我想进行 C 网络编程,因为我日常使用的所有项目都是用 C 编写的,比如 PostgreSQL、OpenLDAP、FreeSWITCH、OpenSIPS、Asterisk 等。参见 Episode 414: Jens Gustedt on Modern C 了解为什么 C 是一个好的选择。对于感兴趣的人,可以查看我在 Software Engineering Radio 的完整播客列表(https://www.se-radio.net/team/gavin-henry/)
Docker
你可以使用 Docker 运行最新版本的 SentryPeer。最新版本可从 Docker Hub 获取。或者自行构建:
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
然后你可以检查 http://localhost:8082/ip-addresses 和 http://localhost:8082/health-check 以查看是否运行。
环境变量
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
可以在 Dockerfile 或 Dockerfile.env 文件中设置,或者通过 docker run 命令设置。
将这些变量中的任何一个设置为 0 也会 启用 该功能。我们 不关心 你设置成什么值,只要设置了就行。
配置文件
你也可以使用配置文件来设置某些参数,主要是下面的 TLS 配置。默认位置是 ~/.config/sentrypeer/default-config.toml,但可以通过 SENTRYPEER_CONFIG_FILE 环境变量或 -g 命令行选项更改。
TLS 配置
要使用你自己的证书,可以设置相应的环境变量、命令行参数,或使用配置文件。例如:``` 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"
如果你不设置这些,sentrypeer 运行所在的目录将自动生成 localhost 的证书,创建 `cert.pem` 和 `key.pem` 文件。
### Installation
Debian 或 Fedora 软件包始终可从当前版本 SentryPeer 的发布页面获取:
https://github.com/SentryPeer/SentryPeer/releases
#### Homebrew (macOS or Linux):
我们有一个[此项目的 Homebrew Tap](https://github.com/SentryPeer/homebrew-sentrypeer)(在我们变得更流行之前):
brew tap sentrypeer/sentrypeer
brew install sentrypeer
#### Alpine Linux:
SentryPeer 在 [Alpine Linux 测试中](https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/sentrypeer),因此可以使用以下命令安装:
apk -U add --no-cache -X https://dl-cdn.alpinelinux.org/alpine/edge/testing sentrypeer
#### Ubuntu Package
你可以从[我们的 Ubuntu PPA](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) 安装 SentryPeer,该 PPA 目前适用于 Ubuntu 20 LTS(Focal Fossa):
sudo apt install software-properties-common
sudo add-apt-repository ppa:gavinhenry/sentrypeer
sudo apt-get update
此 PPA 可以通过复制以下行并将其添加到系统的软件源来手动添加:
deb https://ppa.launchpadcontent.net/gavinhenry/sentrypeer/ubuntu focal main
deb-src https://ppa.launchpadcontent.net/gavinhenry/sentrypeer/ubuntu focal main
然后你可以安装 SentryPeer:
sudo apt-get install sentrypeer
#### Building from source
从源码安装有两种选择:CMake 或 autotools。目前推荐使用 autotools。发布版本是 autotools 构建。
如果你是 Fedora 用户,可以通过 [Fedora copr](https://copr.fedorainfracloud.org/coprs/) 安装:
[https://copr.fedorainfracloud.org/coprs/ghenry/SentryPeer/](https://copr.fedorainfracloud.org/coprs/ghenry/SentryPeer/)
如果你要从这个仓库构建,需要安装以下依赖:
- `git`, `autoconf`, `automake` and `autoconf-archive` (Debian/Ubuntu)
- `libtool`, `rustc` and `cargo` (Fedora)
- `libosip2-dev` (Debian/Ubuntu) or `libosip2-devel` (Fedora)
- `libsqlite3-dev` (Debian/Ubuntu) or `sqlite-devel` (Fedora)
- `uuid-dev` (Debian/Ubuntu) or `libuuid-devel` (Fedora)
- `libmicrohttpd-dev` (Debian/Ubuntu) or `libmicrohttpd-devel` (Fedora)
- `libjansson-dev` (Debian/Ubuntu) or `jansson-devel` (Fedora)
- `libpcre2-dev` (Debian/Ubuntu) or `pcre2-devel` (Fedora)
- `libcurl-dev` (Debian/Ubuntu) or `libcurl-devel` (Fedora)
- `libcmocka-dev` (Debian/Ubuntu) or `libcmocka-devel` (Fedora) - 用于单元测试
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
然后(强烈建议执行 make check):
./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
### Running SentryPeer
构建完成后,你可以像这样运行,以启动**调试模式**、**响应** SIP 探测、启用 **RESTful API**、启用 WebHooks 和启用 syslog 日志([使用软件包](https://github.com/SentryPeer/SentryPeer/releases) 如果你想要 [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
当你收到探测请求时,可以在终端中看到类似以下内容:```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
您可以在名为sentrypeer.db的sqlite3数据库中查看数据,使用sqlitebrowser或sqlite3命令行工具。
以下是通过sqlitebrowser打开数据库的截图(图片较大,这里仅提供链接):
sqlitebrowser exploring the sentrypeer.db
WebHook
有一个WebHook,用于将JSON日志格式的负载POST到SentryPeerHQ或您自己的WebHook端点。WebHook默认不启用。您可以通过-w配置WebHook URL,或设置SENTRYPEER_WEBHOOK_URL环境变量。
如果使用SentryPeer SaaS,您需要从仪表板获取客户端ID和客户端密钥,并设置SENTRYPEER_OAUTH2_CLIENT_ID和SENTRYPEER_OAUTH2_CLIENT_SECRET环境变量,或使用-i和-c标志。
RESTful API
RESTful API已针对当前用例完成。请点击Watch按钮以获取更多功能更新的通知 :-)
端点 /health-check
查询API以检查其是否存活:```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" }
#### 端点 /ip-addresses
列出所有已被 SentryPeer 观察到的 IP 地址:```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"
}
...
]
}
端点 /ip-addresses/{ip-address}
查询单个 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" }
#### 端点 /numbers
列出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}
查询一个被不良行为者试图拨打的电话号码,可选 + 前缀:```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 与 Fail2ban
使用 `sentrypeer -s`,你可以解析 syslog 并使用 Fail2Ban 阻止恶意行为者的 IP 地址:```syslog
Nov 30 21:32:16 localhost.localdomain sentrypeer[303741]: Source IP: 144.21.55.36, Method: OPTIONS, Agent: sipsak 0.9.7
JSON 日志格式
使用 sentrypeer -j,你可以生成一个包含恶意行为者的IP地址、他们尝试拨打的电话号码以及其他元数据的JSON日志文件(使用 -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"
}
### 命令行选项```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 组播地址
该项目拥有一个 IANA IPv6 组播地址,用于在 SentryPeer 节点之间发送消息。
地址: FF0X:0:0:0:0:0:0:172
描述: SentryPeer
联系人: Gavin Henry <ghenry at sentrypeer.org>
注册日期: 2022-01-26
详情请参见 http://www.iana.org/assignments/ipv6-multicast-addresses
分配的变量作用域地址(也可简写为 FF0X::172)中,"X" 表示任何可能的作用域。
许可证
精彩阅读 - 如何为自己的作品选择许可证
本作品采用 GPL 2.0 和 GPL 3.0 双许可证。
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
贡献
参见 CONTRIBUTING
项目网站
商标
SENTRYPEER 是注册商标,归 Gavin Henry 所有
问题、错误报告、功能请求
新问题可在以下地址提出:
https://github.com/SentryPeer/SentryPeer/issues
提出问题时也可以询问问题。
特别感谢
特别感谢:
- Deutsche Telekom Security GmbH 对我们的赞助!
- psanders 来自 Routr 项目,感谢其 关于重新编写本 README.md 文件的建议
- Fly.io 为 SentryPeer 账户提供积分,用于在其基础设施上托管 SentryPeer HQ Web 应用
- AppSignal 为 SentryPeer HQ Web 应用 提供应用性能监控赞助
- David Miller 设计 SentryPeer Web GUI 主题 和 logo。非常感谢!
- @garymiller 提出 syslog 和 Fail2ban 的功能请求(参见 通过 syslog 集成 Fail2ban #6)
- @joejag 提交的 拉取请求,用于启动 Terraform 配方以在不同云提供商上部署 SentryPeer #12
赞助
特别感谢 Deutsche Telekom Security GmbH 对我们的赞助!非常感谢!