NetBSD syslogd with IETF Syslog Protocols

1,046 views
986 views

Published on

Summary of my Google Summer of Code project working on NetBSD's syslogd
(Presentation at EuroBSDCon 2008).

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,046
On SlideShare
0
From Embeds
0
Number of Embeds
242
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

NetBSD syslogd with IETF Syslog Protocols

  1. 1. NetBSD syslogd/IETF Syslog Protocols – Final Report Martin Schütte 18 October 2008
  2. 2. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Project Overview Google Summer of Code project: Improve NetBSD’s syslogd Deliverables: • TLS network transport • New message format • Digital Signatures Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 2 / 40
  3. 3. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 3 / 40
  4. 4. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Using Log Data • Debugging • Statistics/Planning • Accountability for user actions • Detect ongoing attacks • Examine security incidents Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 4 / 40
  5. 5. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future BSD Syslog • primarily designed for programming/debugging • simple, uniform, easy to use and configure • easy remote logging using UDP • de facto standard for logging on Unix Combination of: • API • message format • daemon • IPC protocol Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 5 / 40
  6. 6. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future API SYSLOG(3) NetBSD Library Functions Manual SYSLOG(3) NAME syslog, vsyslog, openlog, closelog, setlogmask -- control system log LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <syslog.h> void syslog(int priority, const char *message, ...); void openlog(const char *ident, int logopt, int facility); void closelog(void); int setlogmask(int maskpri); Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 6 / 40
  7. 7. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog Message Format <38>Mar 17 21:57:57 frodo sshd[701]: Connection from 211.74.5.81 port 5991 <52>Mar 17 13:54:30 192.168.0.42 printer: paper out • Priority • Header By convention: • Timestamp • Priority not written to logfile • Hostname • only printable ASCII • Message • up to 1024 characters • Tag • Content Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 7 / 40
  8. 8. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog Message Format <38>Mar 17 21:57:57 frodo sshd[701]: Connection from 211.74.5.81 port 5991 <52>Mar 17 13:54:30 192.168.0.42 printer: paper out • Priority • Header By convention: • Timestamp • Priority not written to logfile • Hostname • only printable ASCII • Message • up to 1024 characters • Tag • Content Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 7 / 40
  9. 9. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog Message Format <38>Mar 17 21:57:57 frodo sshd[701]: Connection from 211.74.5.81 port 5991 <52>Mar 17 13:54:30 192.168.0.42 printer: paper out • Priority • Header By convention: • Timestamp • Priority not written to logfile • Hostname • only printable ASCII • Message • up to 1024 characters • Tag • Content Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 7 / 40
  10. 10. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog Message Format <38>Mar 17 21:57:57 frodo sshd[701]: Connection from 211.74.5.81 port 5991 <52>Mar 17 13:54:30 192.168.0.42 printer: paper out • Priority • Header By convention: • Timestamp • Priority not written to logfile • Hostname • only printable ASCII • Message • up to 1024 characters • Tag • Content Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 7 / 40
  11. 11. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog Message Format <38>Mar 17 21:57:57 frodo sshd[701]: Connection from 211.74.5.81 port 5991 <52>Mar 17 13:54:30 192.168.0.42 printer: paper out • Priority • Header By convention: • Timestamp • Priority not written to logfile • Hostname • only printable ASCII • Message • up to 1024 characters • Tag • Content Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 7 / 40
  12. 12. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future daemon: syslogd • collects messages from kernel, applications, and network • filters by priority • writes to files, programs, terminals, or network (UDP) • newer implementations/versions with additional features: • filter by host/program/regexp • different message and timestamp formats • memory buffers, TCP, or SQL servers as destinations Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 8 / 40
  13. 13. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future “Transport Protocol“ Input from • local applications: socket(AF_UNIX, SOCK_DGRAM, 0); • network: socket(AF_INET, SOCK_DGRAM, 0); • kernel: open("/dev/klog", O_RDONLY, 0); (file interface to ring buffer) ⇒ One message per recvfrom()/read(). Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 9 / 40
  14. 14. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Problems with UDP Advantage: • simple and efficient (usable for embedded devices) Problems: • possible packet loss • no sender authentication from man syslogd: The ability to log messages received in UDP packets is equivalent to an unauthenticated remote disk-filling service. . . ⇒ move to TCP transport, optionally tunneled over SSL/TLS Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 10 / 40
  15. 15. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future IETF Working Group “Security Issues in Network Event Logging” • RFC 3164: The BSD Syslog Protocol (informational) • RFC 3195: Reliable Delivery for Syslog • current Drafts: • The Syslog Protocol • UDP transport mapping for Syslog • TLS transport mapping for Syslog • Signed Syslog Messages • Syslog Management Information Base Current status: syslog-protocol, transport-udp, transport-tls in RFC-Editor’s Queue, syslog-sign in IESG/AD evaluation, next draft in preparation Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 11 / 40
  16. 16. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future TLS Overview Internet Draft • point-to-point encryption, integrity, and authentication • requires server and client certificates • authenticate by CA or certificate/subject/fingerprint • datagram encapsulation with length prefix, is transparent but not self-synchronizing: APPLICATION - DATA = 1* SYSLOG - FRAME SYSLOG - FRAME = MSG - LEN SP SYSLOG - MSG MSG - LEN = NONZERO - DIGIT * DIGIT • message length: 2048 octets MUST, 8192 octets SHOULD be supported, no upper limit Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 12 / 40
  17. 17. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future TLS Overview Implementation • uses OpenSSL library • accepts arbitrary message sizes • buffers messages on connection loss • implements draft-ietf-syslog-transport-tls-13 • still misses draft-14 requirements: internationalized hostnames and wildcard matching in subjectAltName/dNSName Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 13 / 40
  18. 18. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Problems introduced with TLS • many new settings in syslog.conf ⇒ keyword=value configuration • a send can fail ⇒ message buffers • concurrency from non-blocking sockets, events, timeouts ⇒ connection states Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 14 / 40
  19. 19. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future syslog.conf: extended options for TLS tls_ca ="/ etc / my . cacert " tls_cadir ="/ etc / openssl / CA " tls_cert ="/ etc / localhost . crt " tls_key ="/ etc / localhost . key " tls_gen_cert = on tls_verify = off tls_server = on tls_bindhost ="192.168.1.2" tls_bindport =" syslog - tls " t l s_ a l lo w_f in ge rp r i n t s = sha -1: E4 : E1 : A6 :1 C :... t l s _a ll o w_c lien tce r t s ="/ etc / somehost . crt " Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 15 / 40
  20. 20. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future syslog.conf: TLS destinations mark ,*.* @ [ somehost ]( ← cert ="/ etc / somehost . crt ") mail .* @ [ logserver ]:1514( ← fingerprint =" MD5 :00: A2 :...:27") user .* @ [ fe80 ::211:9 ff : fe41 : be53 ]:1234( ← verify =" off ") *. alert @ [10.1.2.3]: syslog - tls ( ← subject =" logserver . example . org ") Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 16 / 40
  21. 21. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Buffer Queue • every message is passed as a struct buf_msg • every destination has a STAILQ of unsent buffers • only one instance for every message, counts references • unreliable transports: send a buffer and forget it • reliable transports: append, send, then remove from STAILQ • count number and size of messages per queue to control memory usage Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 17 / 40
  22. 22. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Outgoing Connection States Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 18 / 40
  23. 23. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Incoming Connection States Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 19 / 40
  24. 24. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Draft: The Syslog Protocol New Message Format • keeps plain text format • full ISO timestamps and FQDNs • message IDs (like Windows Eventlog) • structured data fields with namespaces (derived from SNMP Private Enterprise Codes) • allows UTF-8 for data fields and messages • message length: MUST accept 480 octets, SHOULD accept 2048 octets, MAY receive larger messages (if larger: SHOULD truncate the payload, MAY discard the message) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 20 / 40
  25. 25. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  26. 26. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  27. 27. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  28. 28. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  29. 29. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  30. 30. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  31. 31. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Syslog-protocol message format <165>1 2003-10-11T22:14:15.003Z frodo.example.com prog - ID47← [exampleSDID@17660 iut="3" eventID="1011" eventSource="Application"]← BOM Une entré du journal des événements . . . • Header • Priority • Version (new) • Timestamp (extended) • Hostname • Application Name • Process ID • Message ID (new) • Structured Data (new) • Message text (UTF-8) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 21 / 40
  32. 32. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Format Conversion in syslogd • on input detect and parse • message only (from kernel), • BSD Syslog (RFC3164), or • Syslog-Protocol • work with struct buf_msg • on output format as • BSD Syslog (-o rfc3164) or • Syslog-Protocol (-o syslog, default) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 22 / 40
  33. 33. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Changes to syslog(3) • API unchanged • Syslog-Protocol from library to syslogd: • ISO timestamp • FQDN • new fields (MSGID and SD) remain empty Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 23 / 40
  34. 34. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future new function: syslogp(3) • minimal extension to include MSGID and SD ≈ syslog(3) with three format strings void syslogp ( int priority , const char * msgid , ← const char * sdfmt , const char * message , ...); void vsyslogp ( int priority , const char * msgid , ← const char * sdfmt , const char * message , va_list args ); syslog ( LOG_INFO , " foobar error : % m "); syslogp ( LOG_INFO , NULL , NULL , " foobar error : % m "); syslogp ( LOG_INFO , " ID % d " , "[ meta language =" en - US "]" , ← " event : % s " , 42 , E v e n t D e s c r i p t i o n ); Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 24 / 40
  35. 35. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Draft: Signed syslog Messages Overview • adds detached, in-band signatures • end-to-end authentication, integrity, sequencing, and lost message detection • design elements: • allow several ”streams“ with Signature Groups • send public key first • translate sequence of messages into enumerated sequence of hash values • sign all control messages with keys and hashes Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 25 / 40
  36. 36. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Groups Problem 2008-10-03T03:16:06.453358+02:00 host.example.org /netbsd - - - wd1e: error reading 2008-10-03T03:16:07.006246+02:00 host.example.org /netbsd - - - wd1: soft error (corrected) 2008-10-03T03:30:00.719082+02:00 host.example.org cron 24634 - - (root) CMD START (atrun) 2008-10-03T03:30:01.033121+02:00 host.example.org cron 2613 - - (root) CMD FINISH (atrun) 2008-10-03T03:32:15.035432+02:00 host.example.org postfix/pickup 3251 - - EBE21FE99: . . . 2008-10-03T03:32:15.228748+02:00 host.example.org postfix/local 23858 - - EBE21FE99: . . . 2008-10-03T03:32:15.234989+02:00 host.example.org postfix/qmgr 666 - - EBE21FE99: removed 2008-10-03T03:40:00.977562+02:00 host.example.org cron 2289 - - (root) CMD START (atrun) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 26 / 40
  37. 37. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Groups Problem 2008-10-03T03:16:06.453358+02:00 host.example.org /netbsd - - - wd1e: error reading 2008-10-03T03:16:07.006246+02:00 host.example.org /netbsd - - - wd1: soft error (corrected) 2008-10-03T03:30:00.719082+02:00 host.example.org cron 24634 - - (root) CMD START (atrun) 2008-10-03T03:30:01.033121+02:00 host.example.org cron 2613 - - (root) CMD FINISH (atrun) 2008-10-03T03:32:15.035432+02:00 host.example.org postfix/pickup 3251 - - EBE21FE99: . . . 2008-10-03T03:32:15.228748+02:00 host.example.org postfix/local 23858 - - EBE21FE99: . . . 2008-10-03T03:32:15.234989+02:00 host.example.org postfix/qmgr 666 - - EBE21FE99: removed 2008-10-03T03:40:00.977562+02:00 host.example.org cron 2289 - - (root) CMD START (atrun) Problem: Different message destinations Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 26 / 40
  38. 38. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Groups Problem 2008-10-03T03:16:06.453358+02:00 host.example.org /netbsd - - - wd1e: error reading 2008-10-03T03:16:07.006246+02:00 host.example.org /netbsd - - - wd1: soft error (corrected) 2008-10-03T03:30:00.719082+02:00 host.example.org cron 24634 - - (root) CMD START (atrun) 2008-10-03T03:30:01.033121+02:00 host.example.org cron 2613 - - (root) CMD FINISH (atrun) 2008-10-03T03:32:15.035432+02:00 host.example.org postfix/pickup 3251 - - EBE21FE99: . . . 2008-10-03T03:32:15.228748+02:00 host.example.org postfix/local 23858 - - EBE21FE99: . . . 2008-10-03T03:32:15.234989+02:00 host.example.org postfix/qmgr 666 - - EBE21FE99: removed 2008-10-03T03:40:00.977562+02:00 host.example.org cron 2289 - - (root) CMD START (atrun) Problem: Different message destinations ⇒ Signature Groups to partition messages Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 26 / 40
  39. 39. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Groups Concepts Signature Groups distinguished by message attributes. Basic concepts and relations: Originator := (HOSTNAME, APP-NAME, PROCID) Reboot Session := (Originator, VER, RSID) Signature Group := (Reboot Session, SG, SPRI) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 27 / 40
  40. 40. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Groups SG/SPRI and Schemata three predefined schemata/SG values: • one global Signature Group (SG="0" SPRI="0") • 192 Signature Groups, one per PRI value (SG="1" SPRI="PRI ") • Signature Groups for ranges of sequential PRI values (SG="2" SPRI="X") and one implementation-defined value: • in syslogd: one Signature Group per destination (SG="3" SPRI="fd ") Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 28 / 40
  41. 41. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Payload Blocks Send Public Key <110>1 2008-08-02T01:09:27.773505+02:00 host.example.org syslogd - - ← [ssign-cert VER="0111" RSID="1217632162" SG="3" SPRI="0" TBPL="1059"← INDEX="1" FLEN="1059" FRAG="2008-08-02T01:09:27.773464+02:00 C← MIIC+jCCArmgAwIBAwIBA. . . YA==" SIGN="MC0CFFEHx8UX32vEW. . . k+o="] sent on startup, contains: • Signature Group (VER, RSID, SG, SPRI) • fragmentation info (TBPL, INDEX, FLEN) • Payload Block (FRAG) with • timestamp • key type • key blob (base64) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 29 / 40
  42. 42. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Payload Blocks Send Public Key <110>1 2008-08-02T01:09:27.773505+02:00 host.example.org syslogd - - ← [ssign-cert VER="0111" RSID="1217632162" SG="3" SPRI="0" TBPL="1059"← INDEX="1" FLEN="1059" FRAG="2008-08-02T01:09:27.773464+02:00 C← MIIC+jCCArmgAwIBAwIBA. . . YA==" SIGN="MC0CFFEHx8UX32vEW. . . k+o="] sent on startup, contains: • Signature Group (VER, RSID, SG, SPRI) • fragmentation info (TBPL, INDEX, FLEN) • Payload Block (FRAG) with • timestamp • key type • key blob (base64) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 29 / 40
  43. 43. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Payload Blocks Send Public Key <110>1 2008-08-02T01:09:27.773505+02:00 host.example.org syslogd - - ← [ssign-cert VER="0111" RSID="1217632162" SG="3" SPRI="0" TBPL="1059"← INDEX="1" FLEN="1059" FRAG="2008-08-02T01:09:27.773464+02:00 C← MIIC+jCCArmgAwIBAwIBA. . . YA==" SIGN="MC0CFFEHx8UX32vEW. . . k+o="] sent on startup, contains: • Signature Group (VER, RSID, SG, SPRI) • fragmentation info (TBPL, INDEX, FLEN) • Payload Block (FRAG) with • timestamp • key type • key blob (base64) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 29 / 40
  44. 44. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Payload Blocks Send Public Key <110>1 2008-08-02T01:09:27.773505+02:00 host.example.org syslogd - - ← [ssign-cert VER="0111" RSID="1217632162" SG="3" SPRI="0" TBPL="1059"← INDEX="1" FLEN="1059" FRAG="2008-08-02T01:09:27.773464+02:00 C← MIIC+jCCArmgAwIBAwIBA. . . YA==" SIGN="MC0CFFEHx8UX32vEW. . . k+o="] sent on startup, contains: • Signature Group (VER, RSID, SG, SPRI) • fragmentation info (TBPL, INDEX, FLEN) • Payload Block (FRAG) with • timestamp • key type • key blob (base64) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 29 / 40
  45. 45. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Payload Blocks Send Public Key <110>1 2008-08-02T01:09:27.773505+02:00 host.example.org syslogd - - ← [ssign-cert VER="0111" RSID="1217632162" SG="3" SPRI="0" TBPL="1059"← INDEX="1" FLEN="1059" FRAG="2008-08-02T01:09:27.773464+02:00 C← MIIC+jCCArmgAwIBAwIBA. . . YA==" SIGN="MC0CFFEHx8UX32vEW. . . k+o="] sent on startup, contains: • Signature Group (VER, RSID, SG, SPRI) • fragmentation info (TBPL, INDEX, FLEN) • Payload Block (FRAG) with • timestamp • key type • key blob (base64) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 29 / 40
  46. 46. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  47. 47. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 siUJM358eYFHOS2K0MTlveWeH/U= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  48. 48. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  49. 49. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  50. 50. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  51. 51. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4= RNDFNCo7hiCsK/EKumsPBbFHNZA= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  52. 52. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 ... siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4= RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= ... Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  53. 53. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Collect SHA-1 Hashes <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg0 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg1 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg2 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg3 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg4 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg5 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg6 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg7 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg8 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg9 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg10 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg11 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg12 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg13 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg14 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg15 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg16 <15>1 2008-08-02T02:09:27+02:00 host.example.org test 6255 - - msg17 siUJM358eYFHOS2K0MTlveWeH/U= zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4= RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU= Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg= dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI= XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k= lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 30 / 40
  54. 54. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  55. 55. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  56. 56. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  57. 57. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  58. 58. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  59. 59. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Signature Blocks Send Signature Block Message <110>1 2008-08-02T01:09:32.399406+02:00 host.example.org syslogd - - [ssign VER="0111"← RSID="1217632162" SG="3" SPRI="0" GBC="4" FMN="1" CNT="20" HB="siUJM358eYFHOS2K0MTlveWeH/U=← zTxfthW8WqmtFhOG4k/+ZxkirTA= j9dubU1GNVp7qWShwph/w32nD08= XQDLZ/NuwirmLdMORtm84r9kIW4=← RNDFNCo7hiCsK/EKumsPBbFHNZA= ANiE3KbY948J6cEB640fAtWXuO4= e2M/OqjHDfxLVUSPt1CsNJHm9wU=← Y+racQst7F1gR8eEUh8O7o+M53s= JAMULRxjMPbOO5EhhKbsUkAwbl0= pd+N5kmlnyQ0BoItELd/KWQrcMg=← dsMQSzPHIS6S3Vaa23/t7U8JAJ4= i4rE3x7N4qyQGTkmaWHsWDFP9SY= qgTqV4EgfUFd3uZXNPvJ25erzBI=← XW0YrME5kQEh+fxhg1fetnWxfIc= 7YPcRHsDwXWnQuGRWaJtFWw9hus= PIvLm0mh+he5+PDihG1p7sQlx8k=← lPzUvx0I1VwSGWV7yKF9W//Yb2U= X+PWYcx5AXnsDVSNAHLZUGk5ioY= okXY88MGG4QybrYMf8HJN23WO1Y=← HcaPyHfQ2s1SuSciTKw4woYWuMg=" SIGN="MCwCFFr0i6taT1vWowR7yc5bEQxFfY7/Ah. . . IQ=="] sent as syslog message, contains: • Signature Group (VER, RSID, SG, SPRI) • Global Block Counter (GBC, counts syslog-sign messages) • First Message Number (FMN, counts normal messages) • CNT Hash Blocks (HB) • DSA Signature (SIGN) Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 31 / 40
  60. 60. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Redundancy Implementation-dependent Syslog-Sign messages might be lost (with UDP), thus • Certificate Blocks are repeated several times • Hashes are sent using a sliding window: ssign: FMN="12" HB="#12 #13 #14 #15 #16 #17 #18 #19 #20" ssign: FMN="15" HB="#15 #16 #17 #18 #19 #20 #21 #22 #23" ssign: FMN="18" HB="#18 #19 #20 #21 #22 #23 #24 #25 #26" ssign: FMN="21" HB="#21 #22 #23 #24 #25 #26 #27 #28 #29" ssign: FMN="24" HB="#24 #25 #26 #27 #28 #29 #30 #31 #32" Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 32 / 40
  61. 61. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Redundancy Implementation-dependent Syslog-Sign messages might be lost (with UDP), thus • Certificate Blocks are repeated several times • Hashes are sent using a sliding window: ssign: FMN="12" HB="#12 #13 #14 #15 #16 #17 #18 #19 #20" ssign: FMN="15" HB="#15 #16 #17 #18 #19 #20 #21 #22 #23" ssign: FMN="18" HB="#18 #19 #20 #21 #22 #23 #24 #25 #26" ssign: FMN="21" HB="#21 #22 #23 #24 #25 #26 #27 #28 #29" ssign: FMN="24" HB="#24 #25 #26 #27 #28 #29 #30 #31 #32" Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 32 / 40
  62. 62. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Configuration not variable • not configurable: hash and key type • always VER="0111" (currently only SHA-1) • PKIX if TLS key is of type DSA, otherwise public key (sent in DER encoding) • at compile time: redundancy and message length • #define SIGN_RESENDCOUNT_CERTBLOCK 2 • #define SIGN_RESENDCOUNT_HASHES 3 • #define SIGN_MAX_LENGTH 2048 Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 33 / 40
  63. 63. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Configuration syslog.conf • configurable: Signature Groups • sign_sg=2 • sign_delim_sg2=15 31 • configurable: write priority and version *.* +/ var / log / signed . log mail .* + -/ var / log / signed - mail . log *. alert +|/ usr / local / sbin / monitor Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 34 / 40
  64. 64. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Offline Verification 1. split input into Certificate Blocks, Signature Blocks, normal messsages 2. index normal messsages by hash value 3. sort Certificate Blocks and Signature Blocks 4. reassemble and verify Certificate Blocks ⇒ yields public keys for all Signature Groups 5. verify Signature Blocks 6. build enumerated sequence of hashes (with FMN) 7. match received messages against hashes ⇒ yields verified message sequence, including gaps Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 35 / 40
  65. 65. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future verify.pl $ perl verify . pl -i test . log reading input ... processing CBs ... decoding SGs ... got PKIX DSA key verifying CBs ... verified CB and got key for SG : ( host . example . org ,1217632162 ,0111 ,3 ,0) , ← start : 2008 -08 -02 T01 : 0 9 : 2 7 . 7 7 3 4 6 4 + 0 2 : 0 0 now process SBs signed messages : ... host . example . org ,1217632162 ,0111 ,3 ,0 ,11 <15 >1 ... test 6255 - - msg10 host . example . org ,1217632162 ,0111 ,3 ,0 ,12 <15 >1 ... test 6255 - - msg11 host . example . org ,1217632162 ,0111 ,3 ,0 ,13 **** msg lost host . example . org ,1217632162 ,0111 ,3 ,0 ,14 <15 >1 ... test 6255 - - msg13 host . example . org ,1217632162 ,0111 ,3 ,0 ,15 <15 >1 ... test 6255 - - msg14 host . example . org ,1217632162 ,0111 ,3 ,0 ,16 <15 >1 ... test 6255 - - msg15 ... messages without signature : <15 >1 2008 -08 -02 T02 :09:27+02:00 host . example . org test 6255 - - modified msg12 Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 36 / 40
  66. 66. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future ToDo List • implement missing parts of transport-tls-14 • implement online signature verification • implement alternative configuration file format • port to other systems • agree on syslogp(3) (or similar) • upgrade log infrastructure • use structured data • wait for RFCs Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 37 / 40
  67. 67. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future possible alternative syslog.conf • too many new settings for old syslog.conf • especially for per-destination settings • new format wanted • proposed: *. info / var / log / messages mail .* { tls host " server . example . net " port 1234 fingerprint " SHA1 : e4e1 : a61c : d431 : d7d4 :9 bb8 : dcdf :..." } { *. debug app - id postfix } { udp host " host . example . net " port 1514 } Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 38 / 40
  68. 68. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Portability • uses OpenSSL • uses libevent to hide kqueue(2) • wallmsg() is system-dependend • differences in libc/syslog(3) • small differences in stdlibs Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 39 / 40
  69. 69. BSD Syslog IETF TLS Protocol & API Syslog-Sign Future Conclusion • working implementation of transport-tls • receive/send syslog-protocol in syslogd(8) • send syslog-protocol from syslog(3) • add extended function syslogp(3) • implement syslog-sign to sign in syslogd(8) • “Proof of Concept” implementation to verify syslog-sign Martin Schütte syslogd with IETF protocols EuroBSDCon 2008 40 / 40

×