
SentryPeer v4.0.5
वितरित SIP हनीपॉट जो VoIP हमलों पर धोखाधड़ी डेटा का पता लगाता और साझा करता है। पीयर-टू-पीयर नेटवर्क के माध्यम से बुरे अभिनेता के IP और फ़ोन नंबर एकत्र करता है, वास्तविक समय खतरे की खुफिया जानकारी के लिए REST API और WebHook एकीकरण के साथ।
अपने SIP सर्वर को दुर्भावनापूर्ण अभिनेताओं से सुरक्षित रखें
विशेष धन्यवाद Deutsche Telekom Security GmbH को हमें प्रायोजित करने के लिए! बहुत दयालु!
हमें एक स्टार क्यों नहीं देते और Twitter पर फॉलो करें!
विषय सूची
- परिचय
- अवलोकन
- विशेषताएं
- वार्ताएं
- अपनाना
- डिज़ाइन
- Docker
- स्थापना
- SentryPeer चलाना
- WebHook
- RESTful API
- Syslog और Fail2ban
- JSON लॉग प्रारूप
- कमांड लाइन विकल्प
- IPv6 मल्टीकास्ट पता
- लाइसेंस
- योगदान देना
- प्रोजेक्ट वेबसाइट
- ट्रेडमार्क
- प्रश्न, बग रिपोर्ट, सुविधा अनुरोध
- विशेष धन्यवाद
- प्रायोजन
परिचय
SentryPeer® एक धोखाधड़ी पहचान उपकरण है। यह दुर्भावनापूर्ण अभिनेताओं को फोन कॉल करने का प्रयास करने देता है और उनके आने वाले IP पते और उनके द्वारा कॉल करने का प्रयास किए गए नंबर को सहेजता है। उन विवरणों का उपयोग सेवा प्रदाता नेटवर्क पर सूचनाएं उठाने के लिए किया जा सकता है और अगली बार जब कोई उपयोगकर्ता/ग्राहक एकत्रित नंबर पर कॉल करने का प्रयास करता है, तो आप अपनी इच्छानुसार कार्य कर सकते हैं।
उदाहरण के लिए:
मान लीजिए कि आप साइट पर अपना स्वयं का VoIP PBX चला रहे हैं। SentryPeer आपको इस संदर्भ में क्या करने देगा, जब आपके उपयोगकर्ता आउटबाउंड कॉल कर रहे हों तो फोन नंबरों की सूची में (RESTful API का उपयोग करके) झांकना है। यदि आपको कोई हिट मिलता है, तो आपको एक सिर-अप मिलेगा कि संभावित रूप से आपके नेटवर्क के भीतर कोई उपकरण ज्ञात प्रोबिंग फोन नंबरों को कॉल करने का प्रयास कर रहा है जो या तो:
- SentryPeer नोड्स द्वारा एकत्रित नंबर जो आप स्वयं चला रहे हैं
- अन्य SentryPeer नोड्स द्वारा देखे गए नंबर जो पीयर-टू-पीयर नेटवर्क के माध्यम से आपके नोड पर प्रतिकृति किए गए हैं
यह आपको अपनी निगरानी प्रणालियों से एक सूचना उत्पन्न करने की अनुमति देगा, इससे पहले कि आप किसी भी महंगी कॉल को बढ़ा दें या कुछ और बुरा हो।
इस परिदृश्य को क्या जन्म देगा?
- संभावित वॉइसमेल धोखाधड़ी। ऐसा हो सकता है यदि आप वॉइसमेल सिस्टम तक पहुंचने के लिए एक इनबाउंड नंबर (आपका DID/DDI) पर कॉल करने की अनुमति देते हैं, फिर PIN के लिए संकेत दें। यह PIN कमजोर है और वॉइसमेल सिस्टम आपको कॉलर ID पर कॉल बैक करने के लिए '*' दबाने की अनुमति देता है जिसने वॉइसमेल छोड़ा है। हमलावर ने वॉइसमेल छोड़ा है, और फिर वे आपके PIN का अनुमान लगाते हैं और इसे वापस कॉल करते हैं। CLI एक ज्ञात नंबर है जिसे SentryPeer ने देखा है। आप इस पर अलर्ट कर सकते हैं।
- एक उपकरण अपहरण कर लिया गया है और/या एक सॉफ्टफोन या इसी तरह का उपकरण फोन के GUI से चुराए गए क्रेडेंशियल्स का उपयोग कर रहा है और आपके सिस्टम में रजिस्टर करने और SentryPeer द्वारा देखे गए नंबर पर कॉल करने का प्रयास कर रहा है।
- एक निर्दोष उपयोगकर्ता एक फिशिंग नंबर या ज्ञात महंगा नंबर आदि पर कॉल कर रहा है जिसे SentryPeer ने पहले देखा है।
परंपरागत रूप से, यह डेटा एक केंद्रीय स्थान पर भेजा जाता है, ताकि आप अपने द्वारा एकत्रित डेटा के मालिक न हों। यह परियोजना उस डेटा के पीयर-टू-पीयर साझाकरण के बारे में है। उपयोगकर्ता द्वारा डेटा का स्वामित्व और डेटा के विभिन्न सेवा प्रदाता/नेटवर्क प्रदाता संबंधित फ़ीड मेरे लिए महत्वपूर्ण हिस्सा है। मैं उन सभी सेवाओं से बीमार हूं जो इसे रखती हैं और बेचती हैं। यदि आपने इसे एकत्र किया है, तो आपके पास इसे रखने और/या p2p विधियों के माध्यम से अन्य SentryPeer समुदाय सदस्यों के साथ साझा करने का विकल्प होना चाहिए।
अवलोकन
SentryPeer नोड
यहां हम Mermaid Sequence diagrams का उपयोग कर रहे हैं 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 Node से 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 Node और 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
🚧 विशेषताएं
- सभी कोड Free/Libre and Open Source Software
- तेज़
- उपयोगकर्ता अपने डेटा का मालिक है
- उपयोगकर्ता चाहे तो अपना डेटा सबमिट कर सकता है (आपको p2p मोड सक्षम करना होगा -
-p) - उपयोगकर्ता अन्य उपयोगकर्ताओं का डेटा केवल तभी प्राप्त करता है जब वे पूल में अपना डेटा सबमिट करने का विकल्प चुनते हैं
- एम्बेडेड वितरित हैश तालिका (DHT) नोड OpenDHT का उपयोग कर (
-pcli विकल्प) - एकत्रित bad_actors का पीयर-टू-पीयर साझाकरण OpenDHT का उपयोग कर (डिफ़ॉल्ट बंद)
- एकत्रित bad_actors को प्राप्त करने के लिए पीयर-टू-पीयर डेटा प्रतिकृति OpenDHT का उपयोग कर (डिफ़ॉल्ट बंद)
- अपना स्वयं का DHT बूटस्ट्रैप नोड सेट करें (
-bcli विकल्प) - मल्टीथ्रेडेड
- UDP ट्रांसपोर्ट
- TCP ट्रांसपोर्ट
- TLS ट्रांसपोर्ट
- एक फ़ाइल में JSON लॉगिंग
- SIP मोड को अक्षम किया जा सकता है। इससे आप SentryPeer को केवल API मोड या DHT मोड आदि में चला सकते हैं, यानी हनीपॉट के रूप में नहीं, बल्कि SentryPeer समुदाय में एक नोड के रूप में या केवल प्रतिकृति डेटा प्रदान करने के लिए
- डेटा एकत्र करने के लिए SIP रिस्पॉन्सिव मोड सक्षम किया जा सकता है - cli / env फ़्लैग
- तेज़ पहुंच के लिए स्थानीय डेटा प्रतिलिपि - cli / env db स्थान फ़्लैग
- तेज़ पहुंच के लिए स्थानीय API - cli / env फ़्लैग
- एक केंद्रीय स्थान पर bad actor json पोस्ट करने के लिए WebHook - cli / env फ़्लैग
- SentryPeerHQ के साथ OAuth2 बियरर टोकन के माध्यम से एकीकरण
- bad actors के IP पतों के लिए क्वेरी API
- bad actors के IPSET के लिए क्वेरी API
- एक विशिष्ट bad actor के IP पते के लिए क्वेरी API
- bad actors द्वारा कॉल किए गए प्रयासित फ़ोन नंबरों के लिए क्वेरी API
- एक bad actor द्वारा कॉल किए गए एक प्रयासित फ़ोन नंबर के लिए क्वेरी API
- Fail2Ban समर्थन
syslogके माध्यम से feature request के अनुसार - स्थानीय sqlite डेटाबेस - feature / cli फ़्लैग
- Analytics - ऑप्ट इन
- बाहरी पहुंच के लिए SDKs/libs - शुरुआत में CGRateS या nftables के साथ हमारा अपना फ़ायरवॉल
- IoT उपयोग के लिए छोटा बाइनरी आकार
- क्रॉस-प्लेटफ़ॉर्म
- रीयल टाइम में वितरित डेटा का उपयोग करने के लिए फ़ायरवॉल विकल्प
- नवीनतम बिल्ड के लिए Docker Hub पर कंटेनर
- एकत्रित IP पतों को ब्लैकहोल करने के लिए पीयर करने हेतु BGP एजेंट (Team Cymru Bogon Router Server Project के समान)
- SIP रीडायरेक्ट के लिए 404 या डिफ़ॉल्ट गंतव्य लौटाने हेतु SIP एजेंट
वार्ताएं
- 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 - The All In One Honeypot Platform v22 से आगे
डिज़ाइन
मैंने यह शुरू किया क्योंकि मैं C network programming करना चाहता था, क्योंकि मेरे द्वारा प्रतिदिन उपयोग किए जाने वाले सभी प्रोजेक्ट 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 के साथ 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 cli विकल्प से बदल सकते हैं।
TLS कॉन्फ़िगरेशन
अपने स्वयं के प्रमाणपत्रों का उपयोग करने के लिए, आप या तो उपयुक्त ENV चर, cli तर्क सेट कर सकते हैं या कॉन्फ़िगरेशन फ़ाइल का उपयोग कर सकते हैं। उदाहरण के लिए:``` 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"
यदि आप इन्हें सेट नहीं करते हैं, तो localhost के लिए एक प्रमाणपत्र स्वचालित रूप से उस निर्देशिका में उत्पन्न होगा जहाँ से sentrypeer चलाया जाता है, जिससे `cert.pem` और `key.pem` फ़ाइल बनती है।
### स्थापना
Debian या Fedora पैकेज हमेशा SentryPeer के वर्तमान संस्करण के लिए रिलीज़ पृष्ठ से उपलब्ध हैं:
https://github.com/SentryPeer/SentryPeer/releases
#### Homebrew (macOS या 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 पैकेज
आप SentryPeer को [हमारे Ubuntu PPD](https://launchpad.net/~gavinhenry/+archive/ubuntu/sentrypeer) से स्थापित कर सकते हैं, जो वर्तमान में 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
#### स्रोत से निर्माण
स्रोत से स्थापना के लिए आपके पास दो विकल्प हैं। 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` और `autoconf-archive` (Debian/Ubuntu)
- `libtool`, `rustc` और `cargo` (Fedora)
- `libosip2-dev` (Debian/Ubuntu) या `libosip2-devel` (Fedora)
- `libsqlite3-dev` (Debian/Ubuntu) या `sqlite-devel` (Fedora)
- `uuid-dev` (Debian/Ubuntu) या `libuuid-devel` (Fedora)
- `libmicrohttpd-dev` (Debian/Ubuntu) या `libmicrohttpd-devel` (Fedora)
- `libjansson-dev` (Debian/Ubuntu) या `jansson-devel` (Fedora)
- `libpcre2-dev` (Debian/Ubuntu) या `pcre2-devel` (Fedora)
- `libcurl-dev` (Debian/Ubuntu) या `libcurl-devel` (Fedora)
- `libcmocka-dev` (Debian/Ubuntu) या `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
### SentryPeer चलाना
निर्माण के बाद, आप **डीबग मोड** में प्रारंभ करने, SIP प्रोब का **उत्तर** देने, **RESTful API** सक्षम करने, WebHooks सक्षम करने और syslog लॉगिंग सक्षम करने के लिए इसे इस प्रकार चला सकते हैं (यदि आप [systemd](https://www.freedesktop.org/wiki/Software/systemd/) चाहते हैं तो [एक पैकेज](https://github.com/SentryPeer/SentryPeer/releases) का उपयोग करें):
./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
वेबहुक
एक वेबहुक है जो JSON लॉग फ़ॉर्मेट पेलोड को SentryPeerHQ या आपके अपने वेबहुक एंडपॉइंट पर POST करता है। वेबहुक डिफ़ॉल्ट रूप से सक्षम नहीं है। आप -w के माध्यम से वेबहुक URL कॉन्फ़िगर कर सकते हैं या SENTRYPEER_WEBHOOK_URL env वेरिएबल सेट कर सकते हैं।
यदि SentryPeer SaaS का उपयोग कर रहे हैं तो आपको डैशबोर्ड से अपना क्लाइंट आईडी और क्लाइंट सीक्रेट प्राप्त करना होगा और SENTRYPEER_OAUTH2_CLIENT_ID और SENTRYPEER_OAUTH2_CLIENT_SECRET env वेरिएबल्स सेट करने होंगे या -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
उन सभी IP पतों की सूची बनाएं जिन्हें 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}
एक एकल 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
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"
},
....
एंडपॉइंट /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 को पार्स करते हैं और बुरे अभिनेता के IP पते को ब्लॉक करने के लिए Fail2Ban का उपयोग करते हैं:```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 मल्टीकास्ट पता
इस परियोजना के पास SentryPeer पीयर के बीच संदेश भेजने के उद्देश्य से एक IANA IPv6 मल्टीकास्ट पता है।
Addresses: FF0X:0:0:0:0:0:0:172
Description: SentryPeer
Contact: Gavin Henry <ghenry at sentrypeer.org>
Registration Date: 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 एक पंजीकृत ट्रेडमार्क है गेविन हेनरी का
प्रश्न, बग रिपोर्ट, फीचर अनुरोध
नए मुद्दे यहाँ उठाए जा सकते हैं:
https://github.com/SentryPeer/SentryPeer/issues
प्रश्न पूछने के लिए मुद्दा उठाना ठीक है।
विशेष धन्यवाद
विशेष धन्यवाद:
- Deutsche Telekom Security GmbH हमें प्रायोजित करने के लिए!
- psanders Routr परियोजना से इस README.md फ़ाइल को पुनः काम करने के सुझावों के लिए।
- Fly.io अपने इन्फ्रास्ट्रक्चर पर SentryPeer HQ वेब ऐप की होस्टिंग का श्रेय SentryPeer खाते को देने के लिए
- AppSignal SentryPeer HQ वेब ऐप में एप्लिकेशन प्रदर्शन निगरानी प्रायोजन के लिए
- David Miller SentryPeer Web GUI थीम और लोगो के डिज़ाइन के लिए। आपका बहुत बड़ा धन्यवाद!
- @garymiller syslog और Fail2ban की फीचर अनुरोध के लिए जैसा कि Fail2ban इंटीग्रेशन syslog के माध्यम से #6 में है
- @joejag के लिए Pull Request Terraform recipes to launch SentryPeer on different cloud providers #12 की शुरुआत के लिए
प्रायोजन
विशेष धन्यवाद Deutsche Telekom Security GmbH को हमें प्रायोजित करने के लिए! बहुत दयालुता!