Giuseppe Parrello

 

Come installare un server Syslog su un router


In questa pagina descriverò come installare un server Syslog aggiuntivo su un router (Asus RT-AC56U) - useremo alcuni pacchetti di Entware, pertanto fate riferimento a questa pagina su come installare Entware su un router.
Partiamo dalla premessa che ci sono alcuni dispositivi di rete, come ad esempio i telefoni VOIP, che non possiedono un LOG interno, ma si affidano ad un server Syslog remoto. Su un router come il Asus RT-AC56U, è possibile installare un server Syslog aggiuntivo in modo tale da poter essere utilizzato con qualunque dispositivo di rete. Da notare che dovremo installare un "syslog" aggiuntivo, poiché non dovremo toccare il server "syslog" del router. Useremo quindi il pacchetto Entware denominato "syslog-ng".


Come installare il pacchetto "syslog-ng"

Allo scopo di installare il daemon "syslog-ng" con i pacchetti Entware, dobbiamo eseguire il seguente comando :
opkg install syslog-ng
Il suddetto pacchetto contiene parecchi file, i più importanti sono il daemon "/opt/sbin/syslog-ng", il file di configurazione "/opt/etc/syslog-ng.conf" e lo script di avvio/arresto "/opt/etc/init.d/S01syslog-ng". Creiamo una copia di riserva del file di configurazione "/opt/etc/syslog-ng.conf".
Ciò che segue è il contenuto di esempio del suddetto file di configurazione "/opt/etc/syslog-ng.conf" :

@version:3.9

options {
    chain_hostnames(no);
    create_dirs(yes);
    flush_lines(0);
    keep_hostname(yes);
    log_fifo_size(256);
    log_msg_size(1024);
    stats_freq(0);
    flush_lines(0);
    use_fqdn(no);
};

source src {
    internal();
    unix-dgram("/dev/log");
};

source net {
    udp(ip(0.0.0.0) port(514));
};

source kernel {
        file("/proc/kmsg" program_override("kernel"));
};

destination messages {
    file("/opt/var/log/messages");
};

log {
    source(src);
    source(net);
        source(kernel);
    destination(messages);
};

# put any customization files in this directory
@include "/opt/etc/syslog-ng.d/"

Fare riferimento a questa pagina per ulteriori dettagli sul file di configurazione "syslog-ng.conf". Il suddetto esempio serve più che altro a sostituire il daemon "syslog" del router, mentre a noi serve un "syslog" aggiuntivo, senza dover toccare il "syslog" nativo del router. Pertanto andremo a creare un altro file di configurazione.


Come impostare il file di configurazione del daemon "syslog-ng"

Quello che segue è un altro file di configurazione "syslog-ng.conf" che ci permette di avere un server LOG remoto per uno switch Cisco di tipo gestito.

@version:3.9

options {
    chain_hostnames(no);
    create_dirs(yes);
    flush_lines(0);
    keep_hostname(yes);
    log_fifo_size(256);
    log_msg_size(1024);
    stats_freq(0);
    flush_lines(0);
    use_fqdn(no);
## additional options
    dir-owner(nobody);
    dir-group(nobody);
    owner(nobody);
    group(nobody);
    perm(0666);
    keep-timestamp(yes);
    time-zone("Europe/Rome");
};

source src_cisco {
        udp(ip(0.0.0.0) port(25000));
};

destination log_cisco {
        file("/opt/var/log/cisco.log");
};

log {
    source(src_cisco);
    destination(log_cisco);
};

# put any customization files in this directory
@include "/opt/etc/syslog-ng.d/"

Nel suddetto file di configurazione abbiamo passato dei parametri al daemon "syslog-ng" in modo tale da "ascoltare" una porta del router e tutto ciò che arriva su tale porta lo scriviamo su un file LOG. Nello specifico abbiamo:

Nella sezione "options" sono inserite le opzioni aggiuntive dedicate al daemon "syslog-ng", nello specifico:

Nel suddetto file di configurazione gli identificatori "src_cisco" e "log_cisco" sono univoci e vanno usati per un solo dispositivo mittente. Ovviamente possiamo gestire più dispositivi mittenti, usando più identificatori, come nel seguente esempio di file di configurazione in cui abbiamo inserito, oltre agli identificatori per il suddetto switch Cisco, anche gli identificatori per due telefoni VOIP:

@version:3.9

options {
    chain_hostnames(no);
    create_dirs(yes);
    flush_lines(0);
    keep_hostname(yes);
    log_fifo_size(256);
    log_msg_size(1024);
    stats_freq(0);
    flush_lines(0);
    use_fqdn(no);
## additional options
    dir-owner(nobody);
    dir-group(nobody);
    owner(nobody);
    group(nobody);
    perm(0666);
    keep-timestamp(yes);
    time-zone("Europe/Rome");
};

source src_cisco {
        udp(ip(0.0.0.0) port(25000));
};

destination log_cisco {
        file("/opt/var/log/cisco.log");
};

log {
    source(src_cisco);
    destination(log_cisco);
};

source src_voip1 {
        udp(ip(0.0.0.0) port(25005));
};

destination log_voip1 {
        file("/opt/var/log/voip1.log");
};

log {
    source(src_voip1);
    destination(log_voip1);
};

source src_voip2 {
        udp(ip(0.0.0.0) port(25010));
};

destination log_voip2 {
        file("/opt/var/log/voip2.log");
};

log {
    source(src_voip2);
    destination(log_voip2);
};

# put any customization files in this directory
@include "/opt/etc/syslog-ng.d/"

Come eseguire il daemon "syslog-ng"

Per eseguire il daemon "syslog-ng" basta eseguire il comando "/opt/etc/init.d/S01syslog-ng start".


Come configurare il daemon "syslog-ng" remoto sui dispositivi di rete

Sui dispositivi di rete è sufficiente andare nella scheda "syslog", spesso denominata "Remote Log Servers" (o qualcosa di simile), e impostare l'indirizzo IP del Router, dove è installato il daemon "syslog-ng", e la porta UDP usata nel file di configurazione del daemon "syslog-ng" nella sezione "source".


Come gestire il file LOG creato dal daemon "syslog-ng"

Bisogna tenere presente che il file LOG creato dal daemon "syslog-ng" può raggiungere dimensioni ragguardevoli. Per una corretta gestione del file LOG, si rimanda alla pagina "Come gestire i file LOG su un router" su questo sito, tenendo presente che il percorso del file LOG è quello impostato sul file di configurazione del daemon "syslog-ng" nella sezione "destination".