Glenn,

very interesting approach with the timestamp. I think your ideas can be
the key to maintaining a lot of backwards compatibility by still
retaining new functionality.

First some bad news: I am not sure if by "BSD syslog" you are refering
to RFC 3164 or a specific distribution of BSD. I have created a small
script to test out your recommendation. I used FreeBSD stock syslogd as
the receiver.

It did NOT work as expected. There are two reasons

a) (that) BSD syslogd takes the sender always from the system that send
it
b) even worse, when relaying, it puts "Forwarded from <hostname>: " into

   the hostname part (yes, with all that spaces)

So while the idea sounds excellent, it does not work with stock FreeBSD
syslogd. I am not sure about other BSD variants, nor have I checked the
sysklogd package. I believe it will have less issues in this regard.
   
This was the message I sent (via perl script):

"<148>Oct 11 22:14:15 mymachine.example.com 1 ID47 2003T.003Z  'su root'
failed for lonvick on /dev/pts/8"

this was the raw message received after being relayed once by FreeBSD
stock syslogd:

"<148>Oct 11 22:14:15 Forwarded from 172.19.2.7: mymachine.example.com 1
ID47 2003T.003Z  'su root' failed for lonvick on /dev/pts/8"

As you can see, the message is somewhat distorted - definitely enough
for digital signatures to be broken. [Implementor's side-note: This can
be fixed on a syslog-application layer level, far beyond the IETF scope.
It's straightforward and easy to do, so it will probably happen.]

Even though this actual sample seems not to work, it paves the way to a
very elegant compatibility solution. The key is to add the extra
information (e.g. Timestamp) in a different place. At least I was so
focussed on fields at whole that I did not notice this possibility. I
have experiemented a bit more with Glenn's proposal, shuffeling some
fields. The result was this:

<PRI>BSD_syslog_timestamp FQDN TAG "@#"VERSION MSGID Remainder_Timestamp
[SD-ID]s MSG

or in an actual sample:

"<148>Oct 11 22:14:15 mymachine.example.com su[4711]: @#1 ID47
2003T.003Z [SD-IDs] 'su root' failed for lonvick on /dev/pts/8"

I have used the BSD timestamp and FAQN as Glenn suggested. Then, I have
added the "TAG" again. If we think in the spirit of my mail this morning
on syslog & non-IETF standards, it would not really hurt if we
standardize TAG instead of two fields. If I would like to retain the
APP-NAME and PROCESSID, I could do the following ABNF:

TAG = APP-NAME ["[" PROCESSID "]"] ":"

The side-effect of this is that almost all syslog-messages currently
emited comply with that format. So I suggest that we strongly consider
joining these two again. Out of the sudden, we have the "old" header,
but it is parsable by a hyptothetical new syslogd. Next, I have used a
trick from syslog-sign. I have changed the VERSION from a number to a
number plus a cookie. The version would now be "@#1". I do not care if
the cookie is "@#" or something else. The key point is that it, together
with the version should be very unlikely to exist at that place in
old-style syslog. That would allow a "new" receiver to differentiate
between old and new style syslog messages. The rest of the message is
just applying Glenn's proposal again: it has the MSG, the missing parts
of the timestamp, SD-IDs and MSG. The Remainder_Timestamp looks strange.
We might like it, we might like something else. That's easy to change
and discuss. It's the concept that matters right now, not the exact
format.

If we take the outlined route, we would be able to extend the syslog
protocol with as much backward compatibility as is possible in a
not-yet-standardized world. I find this very desirable. I think we even
have good chances that many existing "old" syslogds would relay such
messages without changing them, thus keeping digital signatures intact.
The required text changes for syslog-protocol should be moderate.

I strongly propose we go in that direction.

Rainer
> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Glenn 
> Mansfield Keeni
> Sent: Wednesday, November 23, 2005 1:39 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [Syslog] New direction and proposed charter
> 
> Chris/Rainer,
> 
> > we continue to use <PRI>... at the start of syslog 
> messages.  This will
> > allow current receivers to continue to receive messages and 
> put them in
> > the right bins.  Does anyone disagree with this?
> 
> Complete agreement.
> > 
> > 
> > The WG has agreed to use the timestamp Rainer has in the current
> > syslog-protocol.
> In principle I agree with the timestamp format. It is good.
> I may have missed the discussion on this matter,  in that case please
> accept my apologies and ignore the rest of the mail.
> 
> To get existing BSD syslog devices specifically relays into 
> the compatibility
> fold it WILL be good idea to keep the timestamp in two parts
> 
>        RainerTimestamp =  BSD_syslog_timestamp  + RemainderTimestamp
> 
> > One possibility would be to assemble a syslog message as:
> > 
> > <PRI>TIMESTAMP FQDN VERSION MSGID [SD-ID]s MSG
> 
> In the context of what has been said above about the 
> timestamp. I would
> suggest
>   <PRI>BSD_syslog_timestamp FQDN VERSION MSGID 
> Remainder_Timestamp [SD-ID]s MSG
> 
> That would allow existing BSD-syslog relays to handle the new 
> syslog protocol
> in a transparent manner. Everything from VERSION to the end 
> is treated as "message".
> 
> We do not lose information.
>      The Remainder_timestamp carries it - in a slightly less 
> convenient place
>      though.
> 
> On the other hand if we insist on using RainerTimestamp, 
> existing BSD_syslog
> relays will relay the message as
> 
> <PRI>BSD_syslog_timestamp FQDN RainerTimestamp FQDN VERSION 
> MSGID [SD-ID]s MSG
> 
> The message does get distorted to some extent.
> 
> > If we can agree to this then I suspect that we can have a working
> > document within Rainer's timeframe.  I'll propose the 
> following charter
> > to keep us focused.
> > 
> > -------- Proposed Charter  --------------
> > 
> > Syslog is a de-facto standard for logging system events.  
> However, the
> > protocol component of this event logging system has not 
> been formally
> > documented.  While the protocol has been very useful and 
> scalable, it
> > has some known security problems which were documented in RFC 3164.
> > 
> > The goal of this working group is to address the security and
> > integrity problems of the existing syslog mechanism while 
> not breaking
> > backwards compatibility.  The most obvious problems that need to be
> > addressed in the syslog protocol are the timestamp, which has not
> > formally included a means to indicate the year, and the 
> identification
> > of the source which has been a hostname without a qualified domain
> > name.  Additionally, a version, some type of message 
> indicator, and a
> > means to convey structured data will be included in the protocol.
> > 
> > syslog has traditionally been transported over UDP and this WG has
> > already defined RFC 3195 for the reliable transport for the syslog
> > messages.  The WG will separate the UDP transport from the 
> protocol so
> > that others may define additional transports in the future.
> > 
> > - A standard will be produced that formally documents the syslog
> > protocol.  A mechanism will also be defined in this specification
> > that will provide a means to convey structured data.
> > 
> > - A standard will be produced that documents the UDP transport for
> > syslog.
> > 
> > - A standard will be produced that documents a mechanism to sign
> > syslog messages to provide integrity checking and source
> > authentication.
> > 
> > - A MIB definition for syslog will be produced.
> > 
> > -------------------------------------------
> > 
> > 
> > PLEASE review this and respond.
> > 
> 
> Glenn
> 
> 
> _______________________________________________
> Syslog mailing list
> Syslog@lists.ietf.org
> https://www1.ietf.org/mailman/listinfo/syslog
> 

_______________________________________________
Syslog mailing list
Syslog@lists.ietf.org
https://www1.ietf.org/mailman/listinfo/syslog

Reply via email to