>
> 1. Problem Description
>
> On Linux, most services do not log informational or error messages
> to their own files, but use the system log daemon, syslogd, for this.
>
> Unfortunately, the current syslogd has a problem by which any
> user on the local host can mount a denial of service attack that
> effectively stops all logging. Since all programs that want to send
> logging information to syslogd block until they're able to establish
> a connection to syslogd, this will make programs such as login, su,
> sendmail, telnetd, etc hang indefinitely.
This fix (and all the fixes released by distributions in the last couple of
days) switches to using SOCK_DGRAM style sockets from using SOCK_STREAM
ones, which may not be the best solution. It can result in arbitrarily
dropped messages.
I think using a limit on incoming connections, rejecting a connection if the
limit is reached, and logging such rejected attempts would be better, since
the system administrator is notified about the event.
The next version of syslog-ng will contain the latter option. (The first
solution is already supported, since it contains a unix-dgram driver):
To use the fix issued by distributors (e.g. switching to unix-dgram) with
syslog-ng, change your source statement:
from: source src { unix-stream("/dev/log"); };
to: source src{ unix-dgram("/dev/log"); };
of course you'll need to apply your local changes.
--
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1
url: http://www.balabit.hu/pgpkey.txt
PGP signature