dnstap introduction and status update
play

dnstap: introduction and status update Robert Edmonds - PowerPoint PPT Presentation

dnstap: introduction and status update Robert Edmonds (edmonds@fsi.io) Farsight Security, Inc. URL http://dnstap.info Documentation Presentations Tutorials Mailing list Downloads Code repositories dnstap Slide 2 of


  1. dnstap: introduction and status update Robert Edmonds (edmonds@fsi.io) Farsight Security, Inc.

  2. URL  http://dnstap.info – Documentation – Presentations – Tutorials – Mailing list – Downloads – Code repositories dnstap Slide 2 of 18

  3. Introduction  It's Protocol Buffers logging for DNS software.  Schema file located here: https://github.com/dnstap/dnstap.pb/blob/master/dnstap.proto – dnstap Slide 3 of 18

  4. Protocol Buffers  Natural fit for DNS data. – Binary clean. – Efficient encoding. – Extendable.  Implementations available for many programming languages. – C, C++, Java, Python, Go, etc. dnstap Slide 4 of 18

  5. Schema  Top-level Dnstap container message with fields: – identity : “NSID” analog. – version : “version.bind” analog. – extra : arbitrary annotation. – type : type of the contained message. – One of the following: ● message : wire-format DNS message + metadata. ● More possibilities to come. dnstap Slide 5 of 18

  6. Schema  Message type encapsulates DNS wire-format messages. – type : AUTH_QUERY, AUTH_RESPONSE, RESOLVER_QUERY, RESOLVER_RESPONSE, ..., TOOL_QUERY, TOOL_RESPONSE – socket_family : INET, INET6 – socket_protocol : UDP, TCP – query_address, query_port – response_address, response_port – query_time_sec, query_time_nsec – query_message – query_zone – response_time_sec, response_time_nsec – response_message dnstap Slide 6 of 18

  7. Framing  Protobuf packs one payload at a time.  How to pack a stream of many payloads?  Solution: “Frame Streams”. – Write the payload length (32-bit integer). – Write the actual payload (variable length). – Repeat. dnstap Slide 7 of 18

  8. “Frame Streams”  Lightweight protocol for streaming data frames. – Stream over a socket. – Or, read/write a file.  Doesn't need to know how the data frames are encoded.  Reference libfstrm implementation in C.  Easy to parse. Python decoder is ~50 lines, no external dependencies. dnstap Slide 8 of 18

  9. Use cases  These can all be accomplished with the dnstap/Message schema: – Interchange format for tools. – Passive DNS replication. – Query logging. dnstap Slide 9 of 18

  10. Interchange format  Many tools send/receive DNS messages. – dig/delv(e), drill, kdig – looking glasses  Immediately converted from DNS wire format to some other format. – Traditional “dig style” – JSON – ??? dnstap Slide 10 of 18

  11. Interchange format  Save a copy of the original DNS messages. – Display the message trace now or later. – Be able to refer to the original verbatim wire message, instead of whatever the tool printed to stdout.  Looking glasses can communicate the exact response as received, rather than transcoding into, e.g. JSON. dnstap Slide 11 of 18

  12. Passive DNS replication  Usually done by logging of authoritative responses to resolver initiated queries.  Actually, instead of capturing the responses , the packets containing the responses are captured. – UDP responses may be spoofed. – IP fragments, TCP segments, UDP checksums... dnstap Slide 12 of 18

  13. Passive DNS replication  Because packet capture occurs outside of the DNS server, a critical piece of information is missing: the bailiwick of the transaction. – Must be laboriously reconstructed in order to avoid poisoning: “passive DNS bailiwick algorithm”.  dnstap alternative: the DNS server can just log the needed information. dnstap Slide 13 of 18

  14. Query logging  Log the queries the server receives.  Metadata that would be nice to have: – Recursive case: whether the query hit a cache. – Authoritative case: which zone a query was served from. dnstap Slide 14 of 18

  15. dnstap Slide 15 of 18

  16. dnstap components  Flexible, structured log format for DNS software. – dnstap.pb  Helper libraries for adding support to DNS software. – libfstrm, libprotobuf-c  Patch sets that integrate dnstap support into existing DNS software. – Unbound, Knot  Capture tools for receiving dnstap messages from dnstap-enabled software. dnstap Slide 16 of 18

  17. Status update  fstrm library under heavy development  protobuf-c 1.0.0 release candidate  Unbound patchset rebased against 1.4.22, almost complete  Work on Knot/kdig patchset begun dnstap Slide 17 of 18

  18. URL  http://dnstap.info – Documentation – Presentations – Tutorials – Mailing list – Downloads – Code repositories dnstap Slide 18 of 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend