//
you're reading...
System Administration, Ubuntu

Syslog Server con Ubuntu Server 11.10 e Ubuntu Server 12.04LTS

Una delle cose che mi piace nel mio lavoro, è sapere in ogni istante cosa stia succedendo ad ognuno dei sistemi della LAN.

Sapere se un utente ha una sessione SSH su un server, se un visitatore sta navigando sui nostri Web Server, se un apparato di networking ritiene di essere sotto attacco, è essenziale per conoscere la situazione della propria infrastruttura.

Per aiutarci in questo compito, i sistemi hanno un sistema di logging che tiene traccia di ciò che ritengono importante (eventualmente personalizzabile).

Tuttavia, qualunque attività di logging ciascun sistema esegua, lo esegue su se stesso! Tenere quindi sotto osservazione tutti i log di tutti i sistemi, diventa troppo impegnativo, se non impossibile.

Inoltre, sfortunatamente, se un hacker riesce ad introdursi in un nostro sistema, la prima cosa che farà sarà coprire tutte le tracce registrate nel sistema di logging del sistema attaccato, rendendolo di fatto inutile.

Per tali motivi, è sempre bene avere un Syslog Server nella propria infrastruttura, verso il quale ridirigere tutti i log di tutti i sistemi… avremo così risolto entrambe i problemi ai quali accennavo prima: avremo sempre tutti i log in un unico posto (molto più facile da tenere sotto controllo) e in un sistema protetto diverso dal sistema attaccato (complicando un po’ di più la vita dell’hacker).

Questo articolo descrive come realizzare un Syslog Server basandosi su Linux Ubuntu Server 11.10, utilizzando MySQL come database per memorizzare i log.

Nota

Diamo per scontato che abbiate installato il sistema operativo e che lo abbiate configurato correttamente. Nel presente articolo, farò riferimento a un server che ho chiamato ubuntu e che si trova nel dominio example.com. Adattate i nomi al vostro caso.

MySQL

Cominciamo dapprima a configurare il database dove memorizzeremo i log provenienti dai vari sistemi. Verifichiamo che il server MySQL sia installato sul server Ubuntu tramite il comando:

administrator@ubuntu:~$ sudo mysql -V

altrimenti procediamo alla sua installazione con il comando:

administrator@ubuntu:~$ sudo apt-get install mysql-server

A questo punto, siamo pronti per installare il software di gestione del Server Syslog.

Rsyslog

Installato il server MySQL, possiamo procedere a configurare Rsyslog. Rsyslog è installato di default nei server Ubuntu 11.10, ma manca della componente “rsyslog-mysql”, che consente di salvare i log su un database MySQL.

Installiamo il package utilizzando il solito comando apt-get, come di seguito specificato:

administrator@ubuntu:~$ sudo apt-get install rsyslog-mysql

Durante l’installazione del package, vi viene chiesto se utilizzare il tool dbconfig-common di Ubuntu per eseguire la prima configurazione: rispondete di sì, vi agevolerà!

Subito dopo, vi verrà chiesta la password dell’utente root che avete configurato durante l’installazione di MySQL: inseritela, perché serve al wizard per creare un nuovo utente di database (con username rsyslog), del quale vi verrà chiesta una nuova password nella schermata successiva: segnatevela! Vi servirà nella fase di configurazione. Nel caso non rispondiate, verrà generata una password casuale. Utilizzate il comando SQL SET PASSWORD FOR rsyslog= PASSWORD("YOUR_PASSWORD"); dalla console di MySQL, se volete modificarla.

A questo punto il tool dbconfig-common di Ubuntu creerà per voi un nuovo database di nome Syslog, all’interno del quale verranno create due tabelle SystemEvents and SystemEventsProperties.

A questo punto, modifichiamo il file di configurazione /etc/rsyslog.conf tramite il comando (o con l’editor che preferite):

administrator@ubuntu:~$ sudo vim /etc/rsyslog.conf

Aggiungiamo quindi la seguente riga nella sezione MODULES:


$ModLoad ommysql

ed eliminiamo i commenti nelle righe seguenti:


$ModLoad imtcp
$InputTCPServerRun 514
$ModLoad imudp
$UDPServerRun 514

che abilitano la ricezione di messaggi di log sia TCP che UDP sulla porta standard 514.

Per il noto problema delle porte private (<1024), è necessario fare una piccola correzione commentando le due righe:


#$PrivDropToUser syslog
#$PrivDropToGroup syslog

In questo modo il processo rsyslog viene eseguito come root e può eseguire il bind sulle porte TCP/514 e UDP/514. Sta a voi eventualmente decidere (per motivi di sicurezza) se eseguire il processo di rsyslog come utente syslog e modificare le porte TCP e UDP sulle quali eseguire il bind. In quest’ultimo caso, dovrete modificare le due righe:


$InputTCPServerRun 514
$UDPServerRun 514

ad esempio,in:


$InputTCPServerRun 10514
$UDPServerRun 10514

A questo punto, mettiamo un po’ di sicurezze. Aggiungiamo in fondo al file di configurazione /etc/rsyslog.conf le seguenti linee, ovviamente adeguandole al vostro caso:


$AllowedSender UDP, 127.0.0.1, 192.168.1.0/24, 10.1.1.0/24
$AllowedSender TCP, 127.0.0.1, 192.168.1.0/24, 10.1.1.0/24

Bene, visto che ora siamo in grado di accettare connessioni dalle sottoreti specificate e scrivere i log su un database MySQL, specifichiamo su quale database dovrà essere scritta ciascuna entry, modificando il solito file di configurazione /etc/rsyslog.conf, aggiungendo le seguenti righe:


*.* :ommysql:127.0.0.1, Syslog, rsyslog, YOUR_PASSWORD

dove Syslog è il nome del database che è stato specificato durante l’installazione del package rsyslog-mysql e rsyslog è l’utente (ve l’eravate segnata la password, vero?!). OK… Ci siamo! Salviamo ed usciamo dall’editor del file /etc/rsyslog.conf ed eseguiamo il reload del file di configurazione:

administrator@ubuntu:~$ sudo service rsyslog reload

Per verificare che sia andato tutto bene, possiamo collegarci all’istanza di MySQL sul Server Ubuntu tramite il comando:

administrator@ubuntu:~$ mysql -u rsyslog -p

ed eseguire i comandi SQL seguenti per verificare che i log siano scritti nella tabella:

mysql> USE Syslog;
mysql> SELECT * FROM SystemEvents;

Se il risultato della query non ritorna una tabella vuota, tutto sta funzionando regolarmente!

LogAnalyzer

A questo punto, possiamo decidere di recuperare i dati dal database in diversi modi. Tramite un client creato appositamente, tramite un client MySQL ed eseguendo le query a mano (andando a verificare la struttura della tabella), oppure appoggiandoci a un prodotto già esistente. Voi cosa fareste?!

Siccome il tempo è denaro, posso dirvi che un buon prodotto è LogAnalyzer, che trovate qui: http://loganalyzer.adiscon.com/

Vediamo come configurarlo.

Eseguiamo dapprima il download (al momento in cui scrivo è disponibile come versione stabile la 3.4.1) sul nostro Server Ubuntu tramite il solito comando wget:

administrator@ubuntu:~$ wget http://download.adiscon.com/loganalyzer/loganalyzer-3.4.1.tar.gz

reperibile anche dalla pagina di download di LogAnalyzer.

Dobbiamo ora installare il servizio apache2, comprensivo dell’interprete PHP, nel caso il vostro Server Ubuntu non sia già un Web Server tipo LAMP. Per fare questo, date il seguente comando:

administrator@ubuntu:~$ sudo apt-get install apache2 php5 php5-mysql

Scompattiamo il file loganalyzer-3.4.1.tar.gz tramite il comando:

administrator@ubuntu:~$ tar -xvzf loganalyzer-3.4.1.tar.gz

A questo punto, creiamo un alias del nostro Web Server. Prepariamo una cartella per ospitare lo script PHP con i comandi seguenti:

administrator@ubuntu:~$ sudo mkdir -p /opt/www/loganalyzer-3.4.1
administrator@ubuntu:~$ cd loganalyzer-3.4.1
administrator@ubuntu:~$ sudo cp -R src/* /opt/www/loganalyzer-3.4.1/
administrator@ubuntu:~$ sudo cp -R contrib/* /opt/www/loganalyzer-3.4.1/
administrator@ubuntu:~$ cd /opt/www/loganalyzer-3.4.1
administrator@ubuntu:~$ sudo chmod u+x configure.sh
administrator@ubuntu:~$ sudo chmod u+x secure.sh

Eseguiamo lo script configure.sh che preparerà il file di configurazione config.php, tramite il comando seguente, tenendo presente che lo script non genera alcun output, per cui niente paura…:

administrator@ubuntu:~$ sudo ./configure.sh

Per controllare che tutto sia andato bene, semplicemente eseguiamo un ls per verificare che lo script abbia creato il fileconfig.php

Bene… creiamo ora l’alias loganalyzer nell’istanza di Apache installata sul nostro Server Ubuntu. Ci spostiamo nella sottocartella /etc/apache2/conf.d e creiamo il file loganalyzer.conf con i comandi seguenti:

administrator@ubuntu:~$ cd /etc/apache2/conf.d
administrator@ubuntu:~$ sudo vi loganalyzer.conf

il contenuto del file appena creato sarà qualcosa del tipo:


# Define /loganalyzer alias, this is the default
    Alias /loganalyzer "/opt/www/loganalyzer-3.6.1"

Per rendere operative le modifiche, ricarichiamo la configurazione del servizio Apache con il classico comando di reload, come segue:

administrator@ubuntu:~$ sudo service apache2 reload

Digitando sul browser della vostra workstation l’URL http://ubuntu.example.com/loganalyzer (dove ovviamente voi dovrete utilizzare i nomi dati al vostro server Ubuntu e del vostro dominio) vi comparirà una schermata come la seguente:

Cliccate quindi su here per continuare (l’errore è dovuto al fatto che l’installazione deve essere effettuata via Web). Vi comparirà una schermata come la seguente:

Cliccate su “Next”: il processo di installazione verificherà per voi se il file di configurazione creato prima con lo script config.sh è effettivamente modificabile dal processo di installazione. Se vi viene restituito un errore, eliminate il file e rieseguite lo script come spiegato precedentemente.

Dovrebbe essere andato tutto bene, per cui vi ritroverete con la schermata seguente:

Cliccate nuovamente su “Next”: si presenterà la schermata seguente:

Clicchiamo sul radio-button “Yes” della voce “Enable User Database”: la pagina si espande in modo da poter specificare una serie di informazioni per il login a Loganalyzer, come segue:

Ora creiamo un utente sul DB, per memorizzare gli account degli utenti che potranno autenticarsi e vedere i log. Nota che questa operazione non è necessaria se non hai necessità di avere più di un utente oppure non hai bisogno di proteggere le pagine di loganalyzer.

Attiviamo una shell MySQL con il classico comando:

administrator@ubuntu:~$ mysql -u root -p

dando poi i seguenti comandi SQL per creare il database degli utenti di Loganalyzer:

mysql> CREATE DATABASE Loganalyzer;
mysql> GRANT ALL PRIVILEGES ON Loganalyzer.* TO 'loganalyzer'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
mysql> FLUSH PRIVILEGES;

Dopo aver creato il database, completiamo quindi le informazioni come da figura seguente:

e clicchiamo su “Next”. Vi comparirà un messaggio che vi spiega che verrà creata una serie di tabelle per gestire gli account:

Clicchiamo nuovamente su “Next”, che ci darà il riepilogo dell’attività svolta:

Clicchiamo ancora “Next”. Avremo una schermata in cui potremo creare il primo utente con diritti di amministratore di Loganalyzer. Compilate il form come da figura seguente e cliccate su “Next”:

Nella schermata successiva, dovremo fornire tutte le informazioni per accedere al database di Rsyslog creato nel paragrafo precedente. Compiliamo quindi la form con i dati corretti, come da figura seguente:

Clicchiamo su “Next” e…

Finish! :)

Adesso potete accedere al server per consultare i log, cliccando su “here”!

Update 08/05/2013 09:54

  1. Ho testato la configurazione anche su Linux Ubuntu Server 12.04LTS e funziona correttamente.
Annunci

Discussione

17 pensieri su “Syslog Server con Ubuntu Server 11.10 e Ubuntu Server 12.04LTS

  1. Guida utilissima. Una domanda.
    Perchè il server mi restituisce questo errore?

    Forbidden

    You don’t have permission to access /loganalyzer/ on this server.

    Pubblicato da alessandro | 25/08/2012, 12:26
    • A proposito sto usando ubuntu server 12.04

      Pubblicato da alessandro | 25/08/2012, 12:27
    • Di solito quell’errore compare quando il file di configurazione di apache non riesce a riconoscere la direttiva Alias… probabilmente nella guida mi è sfuggito qualcosa che ho dato per scontato.
      Sicuramente l’errore risiede nella configurazione di apache: prova a mandarmi il file loganalyzer.conf presente in /etc/apache2/conf.d e il file httpd.conf in /etc/apache2/conf/…

      Pubblicato da gieffe1971 | 29/08/2012, 15:23
      • ciao se ti da il forbidden è perché nel percorso non trova file index.php (o .html ecc) e hai la direttiva impostata in apache che vieta il browsing della cartella via browser. assicurati di avere impostato correttamente la DocumentRoot in apache che sia conforme con il path dove hai i file.

        Pubblicato da Alexandro Ghettini | 30/05/2013, 09:59
  2. Ciao,
    ho verificato e quell’errore usciva anche a me. Ho semplicemente spostato (dato che avevo copiato il tutto in maniera errata) l’Alias da /opt/www/loganalyzer-version in /opt/www/loganalyzer-version/src .

    P.S.: Fantastica guida, unico consiglio occhio al “case sensitive” delle tabelle e del db… sempre MOLTO rischioso!

    Pubblicato da Manlio | 29/09/2012, 02:13
    • Verificherò la sequenza dei comandi seguente:

      administrator@ubuntu:~$ sudo mkdir -p /opt/www/loganalyzer-3.4.1
      administrator@ubuntu:~$ cd loganalyzer-3.4.1
      administrator@ubuntu:~$ sudo cp -R src/ /opt/www/loganalyzer-3.4.1/
      administrator@ubuntu:~$ cd ../contrib
      administrator@ubuntu:~$ sudo cp * /opt/www/loganalyzer-3.4.1/
      administrator@ubuntu:~$ cd /opt/www/loganalyzer-3.4.1
      administrator@ubuntu:~$ sudo chmod u+x configure.sh
      administrator@ubuntu:~$ sudo chmod u+x secure.sh

      Credo ci sia qualcosa che non va, se in due avete avuto lo stesso problema…
      Grazie per i commenti, sempre molto utili per migliorare…

      Pubblicato da gieffe1971 | 29/09/2012, 10:12
      • Ho corretto l’errore, riscrivendo i comandi da eseguire. L’errore stava nell’aver copiato l’intera directory src, quando doveva esserne copiato solo il contenuto. Ecco la nuova sequenza di comandi:

        administrator@ubuntu:~$ sudo mkdir -p /opt/www/loganalyzer-3.4.1
        administrator@ubuntu:~$ cd loganalyzer-3.4.1
        administrator@ubuntu:~$ sudo cp -R src/* /opt/www/loganalyzer-3.4.1/
        administrator@ubuntu:~$ sudo cp -R contrib/* /opt/www/loganalyzer-3.4.1/
        administrator@ubuntu:~$ cd /opt/www/loganalyzer-3.4.1
        administrator@ubuntu:~$ sudo chmod u+x configure.sh
        administrator@ubuntu:~$ sudo chmod u+x secure.sh

        Pubblicato da gieffe1971 | 07/01/2013, 15:12
  3. Dopo aver seguito la guida senza aver ricevuto errori ho questo quando lancio il loganalyzer, non riesco a capire dove ho sbagliato, non sono molto ferrato di ambiente linux e di mysql… ho installato phpmyadmin e vedo che il database è stato regolarmente creato… credo sia un problema di permessi ma non sò dove guardare…

    “Connection to the database server failed

    Extra Error Details:
    mysql_connect(): Access denied for user ‘loganalyzer’@’localhost’ (using password: YES)”

    Pubblicato da Paolo | 01/03/2013, 10:24
    • Ho corretto l’articolo.
      La riga corretta del comando SQL da dare per la creazione dell’utente è la seguente:

      mysql> GRANT ALL PRIVILEGES ON Loganalyzer.* TO 'loganalyzer'@'localhost' IDENTIFIED BY 'YOUR PASSWORD';

      Questo risolve l’errore che hai incontrato.

      Pubblicato da gieffe1971 | 08/05/2013, 10:00
  4. Grande guida, magari puoi implementare 2 istruzioni su come configurare i servizi principali di altri server (es apache o postfix o ftp ecc) affinche logghino remotamente sul server appena creato

    Pubblicato da Alexandro Ghettini | 30/05/2013, 10:04
  5. Ciao, guida fantastica, l’ho seguita tutta senza nessun errore ma quando provo a loggarmi via web a Loganalyzer mi da:
    “Could not find the configured database”

    Strano…

    Pubblicato da Ale | 20/06/2013, 16:41
  6. Eppure se da mysql do:
    mysql> show databases;
    +——————–+
    | Database |
    +——————–+
    | information_schema |
    | Loganalyzer |
    | Syslog |
    | mysql |
    | performance_schema |
    | test |

    il database c’è, e il nome è giusto..

    Pubblicato da Ale | 20/06/2013, 16:49
  7. Questo invece il mio file config.php:

    $CFG[‘UserDBEnabled’] = true;
    $CFG[‘UserDBServer’] = ‘localhost’;
    $CFG[‘UserDBPort’] = 3306;
    $CFG[‘UserDBName’] = ‘Loganalyzer’;
    $CFG[‘UserDBPref’] = ‘logcon_’;
    $CFG[‘UserDBUser’] = ‘loganalyzer’;

    Mi sembra tutto giusto…

    Pubblicato da Ale | 20/06/2013, 17:06
    • Anche a me…
      Sicuro che sia abilitato correttamente per una connessione via porta TCP/IP?

      Prova ad eseguire un comando (tipo netstat -nopt) per verificare che la connessione sia possibile via TCP/IP…

      Pubblicato da gieffe1971 | 27/07/2013, 17:46
  8. Sto installando su UBUNTU Server 16.04 LTS e, a parte qualche cambio directory dovuta alla nuova versione di apache2, giungo sino allo Step 3 di http://ubuntu.example.com/loganalyzer , ma non accedo allo step 4 e non ottengo alcuna informazione di errore. Qualche suggerimento ?

    Pubblicato da Matheus | 14/11/2016, 14:44
    • Se la pagina dello Step 3 rimane in attesa, vuol dire che loganalyzer non riesce ad accedere al DB per creare le proprie tabelle. Ti direi di verificare l’accesso a MySQL, eventualmente creando una pagina PHP di prova.

      Pubblicato da gieffe1971 | 03/06/2017, 14:08

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

Archivio

Annunci
%d blogger hanno fatto clic su Mi Piace per questo: