syslog-ng インストールメモ (2005/1/20)

(1) syslog-ngに必要なlibolをインストールする。
% cd /usr/local/src
% gunzip -cd libol-0.3.1x.tar.gz | tar xvf -
% cd libol-0.3.1x
% ./configure
% make

(2) syslog-ngをインストールする。
% cd /usr/local/src
% gunzip -cd syslog-ng-1.6.x.tar.gz | tar xvf -
% cd syslog-ng-1.6.x
% ./configure --with-libol=/usr/local/src/libol-0.3.1x
% make
# make install

デフォルトでインストールされる場所
/usr/local/sbin/syslog-ng

syslog-ngの設定
case RedHat Linux
    /usr/local/etc/syslog-ng/syslog-ng.conf
case Solaris
    /etc/syslog-ng/syslog-ng.conf
各OSごとのサンプルファイルは、
/usr/local/src/syslog-ng-1.6.x/contrib/にある。
起動スクリプトのサンプルもここにある。

confファイルのチェックは、
#syslog-ng -s
で行う。

syslog-ngの登録・起動
case RedHat Linux
    % cd /usr/local/src/syslog-ng-1.6.x
    # cp contrib/init.d.RedHat-7.3 /etc/init.d/syslog-ng
    # chmod +x /etc/init.d/syslog-ng
    # chkconfig --add syslog-ng
    
    ランレベルの確認
    # chkconfig --list syslog-ng
    syslog-ng 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    
    syslogdを停止して、syslog-ngを起動する。
    # service syslog stop
    # service syslog-ng start
    
    次回OS起動時にsyslogdが起動しないようにする。
    # chkconfig syslog off
    # chkconfig --level 2 syslog off
    # chkconfig --list syslog
    syslog    0:off  1:off  2:off  3:off  4:off  5:off  6:off

case Solaris8,9
    % cd /usr/local/src/syslog-ng-1.6.x
    # cp contrib/init.d.solaris /etc/init.d/syslog-ng
    # chmod 744 /etc/init.d/syslog-ng
    # ln /etc/init.d/syslog-ng /etc/rc0.d/K40syslog-ng
    # ln /etc/init.d/syslog-ng /etc/rc1.d/K40syslog-ng
    # ln /etc/init.d/syslog-ng /etc/rc2.d/S74syslog-ng
    # ln /etc/init.d/syslog-ng /etc/rcS.d/K40syslog-ng
    
    syslog-ngをroot以外で起動する場合、/etc/init.d/syslog-ngの
    OPTIONS="-u ユーザ名 -f /etc/syslog-ng/syslog-ng.conf"
    として編集する。
    
    syslogdを停止して、syslog-ngを起動する。
    # /etc/init.d/syslog stop
    # /etc/init.d/syslog-ng start
    
    次回OS起動時にsyslogdが起動しないようにする。
    # mv /etc/rc2.d/S74syslog /etc/rc2.d/disable.S74syslog

ログローテーションの設定変更
case RedHat Linux (RedHat:/etc/logrotate.conf)
case RHEL:/etc/logrotate.d/syslog-ng (/etc/logrotate.d/syslogをコピーして作るかそのままsyslogを編集する)
    ..
    postrotate
        /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` 2> /dev/null || true
    endscript
    ..

case Solaris9 (/etc/logadm.conf)
    /var/log/ログファイル名 -C 2 -a 'kill -HUP `cat /var/run/syslog-ng.pid`' -s 512k -t '$file.$N'


syslog-ngのチューニング(syslog-ng.conf)
options { sync (0);            // ログをファイルへ出力する前に、バッファに保持するメッセージ数(行数)。デフォルトは2048。
          dir_perm (0755);    // パーミッション(ディレクトリ)
          perm (0644);        // パーミッション(ファイル)
          owner (root);        // パーミッション(所有者)
          group (root);        // パーミッション(グループ)
          stats (3600);        // syslog-ngの状態ログの出力間隔
          long_hostnames (off);    // s_local@hostnameをhostnameのみにする場合off
          keep_hostname (yes);
          use_dns (no);
          use_fqdn (no);
          create_dirs (no);
};

それぞれのファイルごとのパーミッションは、
destination d_authlog { file("/var/log/authlog"); perm(0600); };
# RedHat Linuxでは、syntax errorになった。

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec09/unix_sec01.html
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec10/unix_sec01.html
http://www.balabit.com/products/syslog_ng/