home       inleiding       sysadmin       services       links       bash       werk       nothing      

Rsyslog

 
We gebruiken twee ubuntu 14.04 servers.
Op de rsyslog server passen we straks het bestand /etc/rsyslog.conf aan, op de andere machine (in mijn geval een apache-server) die fungeert als rsyslog-client passen we straks het bestand /etc/rsyslog.d/50-default.conf aan.
 

  1. rsyslog server
     
    Zoek in het bestand  /etc/rsyslog.conf de volgende regels:
    # provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514
     
    # provides TCP syslog reception
    $ModLoad imtcp
    $InputTCPServerRun 514

    ... en verwijder de # van de hogere 4 configuratie regels
     
    Herstart daarna de syslog server als volgt:
     
    $ sudo service rsyslog restart
     
    je kan dan de service poort testen met een
    $ netstat -vatn

    tcp   0   0.0.0.0:514   0.0.0.0:*     LISTEN

    en dan zou je de hogere regel met poort 514 (van syslog) moeten zien staan ....
      
    in ubuntu 20.04 hebben we de volgende config gebruikt:

    # /etc/rsyslog.conf configuration file for rsyslog
    #
    # For more information install rsyslog-doc and see
    # /usr/share/doc/rsyslog-doc/html/configuration/index.html
    #
    # Default logging rules can be found in /etc/rsyslog.d/50-default.conf
    #################
    #### MODULES ####
    #################
    module(load="imuxsock") # provides support for local system logging
    #module(load="immark")  # provides --MARK-- message capability
    # provides UDP syslog reception
    module(load="imudp")
    input(type="imudp" port="514")
    # provides TCP syslog reception
    module(load="imtcp")
    input(type="imtcp" port="514")
    # provides kernel logging support and enable non-kernel klog messages
    module(load="imklog" permitnonkernelfacility="on")
    $template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
    *.* ?remote-incoming-logs
    ###########################
    #### GLOBAL DIRECTIVES ####
    ###########################
    #
    # Use traditional timestamp format.
    # To enable high precision timestamps, comment out the following line.
    #
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    # Filter duplicated messages
    $RepeatedMsgReduction on
    #
    # Set the default permissions for all log files.
    #
    $FileOwner syslog
    $FileGroup adm
    $FileCreateMode 0640
    $DirCreateMode 0755
    $Umask 0022
    $PrivDropToUser syslog
    $PrivDropToGroup syslog
    #
    # Where to place spool and state files
    #
    $WorkDirectory /var/spool/rsyslog
    #
    # Include all config files in /etc/rsyslog.d/
    #
    $IncludeConfig /etc/rsyslog.d/*.conf

     

  2. rsyslog client
     
    Zet in het bestand   /etc/rsyslog.d/50-default.conf het volgende, ergens bovenaan (zelf toevoegen):
     
    *.* @<your-syslog-server-ip>:514
     
    voorbeeld:
    #  Default rules for rsyslog.
    #
    #           For more information see rsyslog.conf(5) and /etc/rsyslog.conf
     
    # RSYSLOG to 10.104.201.10
    *.*                         @10.104.201.10:514
     
    #
    # First some standard log files.  Log by facility.
    #
    auth,authpriv.*         /var/log/auth.log
    *.*;auth,authpriv.none      -/var/log/syslog
    ... 

     
    Vergeet ook niet /etc/hostname en /etc/hosts goed te zetten:
     
    voorbeeld:

    bert@apache-bert:~$ cat /etc/hostname
    apache-bert
    bert@apache-bert:~$ cat /etc/hosts
    127.0.0.1   apache-bert localhost
    127.0.1.1   ub14.3  ub14

    zorg er voor dat localhost in de /etc/hosts file niet op de eerste plaats staat.
     

  3. testen
     
    a) op de server tik je het volgende commando in:
     
    $ tail -f /var/log/auth.log | grep <client-host-name>
     
    (vervang <client-host-name> door de hostname van de syslog-client)
     
    voorbeeld:
    $ tail -f /var/log/syslog | grep apa
     
    b) op de client kun je nu een service herstarten. Dit komt enkele seconden (soms een minuut later) terecht op de server:
    bert@apache-bert:~$ date
    Tue Oct 25 10:14:46 CEST 2016
    bert@apache-bert:~$ sudo service apache2 restart
    [sudo] password for bert: 
    * Restarting web server apache2                                                             AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

     
    en op de rsyslog-server zie ik nu het volgende:

    Every 2.0s: grep apa /var/log/auth.log  Tue Oct 25 10:20:54 2016
     
    Oct 25 09:53:37 apache-bert sudo: pam_unix(sudo:session): session opened for user root by bert(uid=0)
    Oct 25 09:53:38 apache-bert sudo: pam_unix(sudo:session): session closed for user root
    Oct 25 10:14:51 apache-bert sudo:     bert : TTY=pts/0 ; PWD=/home/bert ; USER=root ; COMMAND=/usr/sbin/service apache2 restart
    Oct 25 10:14:51 apache-bert sudo: pam_unix(sudo:session): session opened for user root by bert(uid=0)
    Oct 25 10:14:52 apache-bert sudo: pam_unix(sudo:session): session closed for user root
    Oct 25 10:17:01 apache-bert CRON[1574]: pam_unix(cron:session): session opened for user root by (uid=0)
    Oct 25 10:17:01 apache-bert CRON[1574]: pam_unix(cron:session): session closed for user root
    Oct 25 10:17:19 apache-bert sudo:     bert : TTY=pts/0 ; PWD=/home/bert ; USER=root ; COMMAND=/usr/sbin/service apache2 restart
    Oct 25 10:17:19 apache-bert sudo: pam_unix(sudo:session): session opened for user root by bert(uid=0)
    Oct 25 10:17:22 apache-bert sudo: pam_unix(sudo:session): session closed for user root