parent
45e9037e9b
commit
7bf821d22e
79
README.md
79
README.md
|
@ -1,12 +1,14 @@
|
||||||
# analyzer-d4-passivedns
|
# analyzer-d4-passivedns
|
||||||
|
|
||||||
analyzer-d4-passivedns is an analyzer for a D4 network sensor. The analyser can process data produced by D4 sensors (in [passivedns](https://github.com/gamelinux/passivedns) CSV format (more to come)) and
|
analyzer-d4-passivedns is an analyzer for a D4 network sensor including a complete Passive DNS server. The analyser can process data produced by D4 sensors (in [passivedns](https://github.com/gamelinux/passivedns) CSV format (more to come)) or independently from D4 using [COF websocket](https://datatracker.ietf.org/doc/html/draft-dulaunoy-dnsop-passive-dns-cof) streams.
|
||||||
ingest these into a Passive DNS server which can be queried later to search for the Passive DNS records.
|
|
||||||
|
The package include a Passive DNS server which can be queried later to search for the Passive DNS records.
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
- A D4 analyzer which can be plugged to one or more [D4 servers](https://github.com/D4-project/d4-core) to get a stream of DNS records
|
- [Input stream] - A D4 analyzer which can be plugged to one or more [D4 servers](https://github.com/D4-project/d4-core) to get a stream of DNS records
|
||||||
- A compliant [Passive DNS ReST server compliant to Common Output Format](https://tools.ietf.org/html/draft-dulaunoy-dnsop-passive-dns-cof-04)
|
- [Input Stream] - A websocket stream (or a file stream) in NDJSON [COF format](https://datatracker.ietf.org/doc/html/draft-dulaunoy-dnsop-passive-dns-cof)
|
||||||
|
- [Output API] A compliant [Passive DNS ReST server compliant to Common Output Format](https://tools.ietf.org/html/draft-dulaunoy-dnsop-passive-dns-cof)
|
||||||
- A flexible and simple analyser which can be configured to collect the required records from DNS records
|
- A flexible and simple analyser which can be configured to collect the required records from DNS records
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
@ -14,21 +16,31 @@ ingest these into a Passive DNS server which can be queried later to search for
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Python 3
|
- Python 3
|
||||||
- Redis >5.0
|
- Redis >5.0 or [kvrocks](https://github.com/apache/incubator-kvrocks)
|
||||||
- Tornado
|
- Tornado
|
||||||
- iptools
|
- iptools
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
### Redis
|
||||||
|
|
||||||
~~~~
|
~~~~
|
||||||
./install_server.sh
|
./install_server.sh
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
All the Python 3 code will be installed in a virtualenv (PDNSENV).
|
All the Python 3 code will be installed in a virtualenv (PDNSENV).
|
||||||
|
|
||||||
|
### Kvrocks
|
||||||
|
|
||||||
|
~~~
|
||||||
|
./install_server_kvrocks.sh
|
||||||
|
~~~
|
||||||
|
|
||||||
|
All the Python 3 code will be installed in a virtualenv (PDNSENV).
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
### Start the redis server
|
### Start the redis server or kvrocks server
|
||||||
|
|
||||||
Don't forget to set the DB directory in the redis.conf configuration. By default, the redis for Passive DNS is running on TCP port 6400
|
Don't forget to set the DB directory in the redis.conf configuration. By default, the redis for Passive DNS is running on TCP port 6400
|
||||||
|
|
||||||
|
@ -36,6 +48,12 @@ Don't forget to set the DB directory in the redis.conf configuration. By default
|
||||||
./redis/src/redis-server ./etc/redis.conf
|
./redis/src/redis-server ./etc/redis.conf
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
~~~~
|
||||||
|
./kvrocks/src/kvrocks -c ./etc/kvrocks.conf
|
||||||
|
~~~~
|
||||||
|
|
||||||
### Start the Passive DNS COF server
|
### Start the Passive DNS COF server
|
||||||
|
|
||||||
~~~~
|
~~~~
|
||||||
|
@ -44,7 +62,17 @@ cd ./bin/
|
||||||
python3 ./pdns-cof-server.py
|
python3 ./pdns-cof-server.py
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
### Configure and start the D4 analyzer
|
## Feeding the Passive DNS server
|
||||||
|
|
||||||
|
You have two ways to feed the Passive DNS server. You can combine multiple streams. A sample public COF stream is available from CIRCL with the newly seen IPv6 addresses and DNS records.
|
||||||
|
|
||||||
|
### (via COF websocket stream) start the importer
|
||||||
|
|
||||||
|
~~~~
|
||||||
|
python3 pdns-import-cof.py --websocket ws://crh.circl.lu:8888
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
### (via D4) Configure and start the D4 analyzer
|
||||||
|
|
||||||
~~~~
|
~~~~
|
||||||
cd ./etc
|
cd ./etc
|
||||||
|
@ -70,6 +98,43 @@ cd ./bin/
|
||||||
python3 pdns-ingestion.py
|
python3 pdns-ingestion.py
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Querying the server
|
||||||
|
|
||||||
|
~~~~shell
|
||||||
|
adulau@kolmogorov ~/git/analyzer-d4-passivedns (master)$ curl -s http://127.0.0.1:8400/query/xn--ihuvudetpevap-xfb.se | jq .
|
||||||
|
{
|
||||||
|
"time_first": 1657878272,
|
||||||
|
"time_last": 1657878272,
|
||||||
|
"count": 1,
|
||||||
|
"rrtype": "AAAA",
|
||||||
|
"rrname": "xn--ihuvudetpevap-xfb.se",
|
||||||
|
"rdata": "2a02:250:0:8::53",
|
||||||
|
"origin": "origin not configured"
|
||||||
|
}
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
~~~~shell
|
||||||
|
curl -s http://127.0.0.1:8400/query/2a02:250:0:8::53
|
||||||
|
{"time_first": 1657878141, "time_last": 1657878141, "count": 1, "rrtype": "AAAA", "rrname": "media.vastporten.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878929, "time_last": 1657878929, "count": 1, "rrtype": "AAAA", "rrname": "www.folkinitiativetarjeplog.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878272, "time_last": 1657878272, "count": 1, "rrtype": "AAAA", "rrname": "xn--ihuvudetpevap-xfb.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878189, "time_last": 1657878189, "count": 1, "rrtype": "AAAA", "rrname": "media.primesteps.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878986, "time_last": 1657878986, "count": 1, "rrtype": "AAAA", "rrname": "media.skellefteaadventurepark.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657874940, "time_last": 1657874940, "count": 1, "rrtype": "AAAA", "rrname": "galleri.torsaspaintball.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657874205, "time_last": 1657874205, "count": 1, "rrtype": "AAAA", "rrname": "www.media1.harlaut.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878165, "time_last": 1657878165, "count": 1, "rrtype": "AAAA", "rrname": "www.sd-nekretnine.rs", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878678, "time_last": 1657878678, "count": 1, "rrtype": "AAAA", "rrname": "www.www2.resultat-balans.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657874288, "time_last": 1657874288, "count": 1, "rrtype": "AAAA", "rrname": "www.assistanshemtjanst.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878943, "time_last": 1657878943, "count": 1, "rrtype": "AAAA", "rrname": "kafekultur.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878141, "time_last": 1657878141, "count": 1, "rrtype": "AAAA", "rrname": "media1.rlab.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878997, "time_last": 1657878997, "count": 1, "rrtype": "AAAA", "rrname": "serbiagreenbuildingexpo.com", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657879064, "time_last": 1657879064, "count": 1, "rrtype": "AAAA", "rrname": "www.framtro.nu", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657874285, "time_last": 1657874285, "count": 1, "rrtype": "AAAA", "rrname": "www.twotheartist.com", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
{"time_first": 1657878774, "time_last": 1657878774, "count": 1, "rrtype": "AAAA", "rrname": "media.narkesten.se", "rdata": "2a02:250:0:8::53", "origin": "origin not configured"}
|
||||||
|
~~~~
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
The software is free software/open source released under the GNU Affero General Public License version 3.
|
The software is free software/open source released under the GNU Affero General Public License version 3.
|
||||||
|
|
Loading…
Reference in New Issue