Sådan opbygges en logserver ved hjælp af syslog-ng

Indlæg af Hanne Mølgaard Plasc

 

1.

1) Installer syslog-ng på syslog-serveren

Vi skal downloade syslog-ng herfra ...
http: / / /www.balabit.com/network-security/syslog-ng/opensource-logging-system/
RedHat EL 5 i386 RPM (server)
http://www.balabit.com/downloads/files /syslog-ng/open-source-edition/3.0.4/setups/rhel-5-i386/syslog-ng-3.0.4-1.rhel5.i386.rpm
RedHat EL 5 i386 RPM (klient)
http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.0.4/setups/rhel-5-i386/syslog-ng-client-3.0.4- 1.rhel5.i386.rpm

[root @ syslogserver ~] rpm -i syslog-ng-3.0.4-1.rhel5.i386.rpm

2.

2) Konfigurer syslog-ng til at gemme sine data i en MySQL-database placeret på syslog-serveren

De fleste Linux-installationer har MySQL installeret allerede, så jeg vil ikke dække det i denne vejledning. < br />
Nu vil vi opsætte MySQL-databasen, som syslog-ng skal bruge.
Vi bruger kommandolinjen ( SQL-sætninger til opsætning af databasen).

[root @ syslogserver ~] # mysql
Velkommen til MySQL-skærmen. Kommandoer slutter med; eller \ g.
Din MySQL-forbindelse id er 92 til server version: 5.0.22

Skriv 'hjælp;' eller '\ h' for hjælp. Skriv '\ c' for at rydde bufferen.

mysql> CREATE DATABASE php\_syslog\_ng;

/ * MySQL-brugere skal være 16 tegn eller mindre * /
mysql u0026 gt; GIVE ALL ON php\_syslog\_ng TIL 'php\_syslog\_ng' @ 'localhost' IDENTIFIED AF 'sngPassword';

/ * Fortæl MySQL for at opdatere det's bruger privilegier cache * /
mysql u0026 gt; FLUSH PRIVILEGES; < br />
mysql> QUIT

Test brugerens privilegier ...
[root @ syslogserver ~] # mysql -D php\_syslog\_ng\_test -u php\_ng -p
Indtast adgangskode:
Velkommen til MySQL-skærmen. Kommandoer slutter med; eller \ g.
Din MySQL-forbindelse id er 92 til server version: 5.0.22

Skriv 'hjælp;' eller '\ h' for at få hjælp. Skriv '\ c' for at rydde bufferen.

mysql u0026 gt; quit

3.

3) Nu vil vi rediger syslog-ng konfigurationsfilen. Jeg har medtaget min konfigurationsfil
med kommentarer, der forklarer hvad og hvorfor det er konfigureret på den måde.

[root @ syslogserver ~] # vi /etc/syslog-ng.conf
-------------------- SNIP ----- ---------------
@version: 3.0
#
# For en beskrivelse af syslog-ng konfigurationsdirektiver, læs venligst
# den syslog-ng Administrators vejledning på:
#
# http://www.balabit.com/dl/html/syslog-ng-admin-guide\_da.html/bk01-toc.html
#

# Forskellige tweaks for, hvordan syslog-ng gør det s job.
muligheder {
ts\_format (iso);
time\_sleep (30) ;
time\_reap (30);
mark\_freq (30);
dns\_cache (ja);
use\_fqdn (nej);
keep\_hostname (ja);
chain\_hostnames (no);
use\_dns (ja);
dns\_cache\_size (250000);
dns\_cache\_expire (300);
dns\_cache\_expire\_failed (300);
stats\_freq (3600);
};

######
# Opret kildevariabler.
######

# Fortsætter med at logge information fra vores syslog-server (ikke bare eksterne logfiler).
source s\_local {
# meddelelse genereret af Syslog-NG
intern ();
# standard Linux logkilde (dette er standardstedet for syslog ()
# funktionen for at sende logfiler til)
unix-stream ('dev / log');
# meddelelser fra kernen
fil ('/ proc / kmsg' program\_override (u0026 quot; kernel: u0026 quot;));

};

# Indstil hvilke porte syslogserveren modtager logger på.
kilde s\_network {< syslog (ip (0.0.0.0) port (2010) max-forbindelser (300));
syslog (ip (0.0.0.0) port (514) max-forbindelser (300));
syslog (ip (0.0.0.0) port (601) max-forbindelser (300));
udp ();
};

5.

######
# Opret destinationsvariabler.
######

# Send også informationen til en logfil som backup.
destination d\_messages {
fil ('/ var / log / messages');
};

# Destinationsindstillingen fortæller syslog-ng, hvor og hvad du vil sende loginformationen.
# Delen af ​​kolonner, værdier og indekser opsætter databasearkitekturen til opbevaring af
# de syslog-oplysninger, du ønsker.
destination d\_mysql {
sql (type (mysql )
host ('127.0.0.1') brugernavn ('php\_syslog\_ng') kodeord ('sngPassword')
database ('php\_syslog\_ng')
tabel ('logs')
kolonner ('vært', 'facilitet', 'prioritet', 'niveau', 'tag', 'datetime', 'program', 'pid', 'msg')
værdier ('$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$ÅR- $Måned- $DAY $HOUR: $MIN: $SEC', '$PROGRAM '$PID', '$MSG') indekser ('vært (255)', 'facilitet (255)', 'prioritet (255)', 'niveau ) ',' tag (255) ',' program (255) ',' pid (255) ',' msg (255) '));
};

6.

######
# Brug kilde / destinationsvariabler.
######

# Send lokal logning til den lokale logfil.
log {
kilde (s\_local);
destination (d\_messages);
};

# Send lokal logning og fjernlogning til databasen.
log {
kilde (s\_local);
kilde (s\_network);
destination (d\_mysql);
};
-------------------- SNIP -------------------- < br />
# Genstart syslog-ng-serveren (som også opretter database tabeller, indekser osv.)
[root @ syslogserver ~] # /etc/init.d/syslog-ng genstart < /p>

7.

4) Opsæt klientmaskiner til at sende data til syslog-serveren

[root @ syslogclient ~] # rpm -i syslog-ng-client -3.0.4-1.rhel5.i386.rpm

Jeg har gemt en generisk klient syslog-ng.conf på vores SAN, så jeg kan symlink til det fra mine klienter for at spare tid.
Klientkonfigurationsfilen har lignende koncepter / kommandoer som serverkonfigurationen.
Sørg for at konfigurere dine klienter på en måde, der ikke overbelaster din syslog-ng-server (databehandling og / eller databasestørrelse).

[root @ syslogclient ~] # vi /etc/syslog-ng.conf
-------------------- SNIP --------------------
@version: 3.0 < br /> #Default konfigurationsfil til syslog-ng.
#
# For en beskrivelse af syslog-ng konfigurationsdirektiver, læs venligst
# syslog-ng Administrators vejledning på: /> # Forskellige tweaks for hvordan syslog-ng gør det s job.
muligheder {
log\_fifo\_size (4096);

keep\_hostname (ja);
chain\_hostnames ( nej);

bad\_hostname ('gconfd');

ts\_format (iso);
time\_sleep (30);
mark\_freq (30);
dns\_cache (10000);
};

8.

######
# Opret kildevariabler.
######

source s\_local {
# meddelelse genereret af Syslog-NG
intern ();
# standard Linux logkilde (dette er standardstedet for syslog ()
# funktionen for at sende logfiler til)
unix-stream ('dev / log');
# meddelelser fra kernen
fil ('/ proc / kmsg' program\_override ('kernel:'));

}

kilde s\_all\_logs {
fil ('/var/log/boot.logu0026quot; follow\_freq (30));
fil ('/ var / log / cron' follow\_freq (30));
fil ('/ var / log / cups / access\_log' follow\_freq (30)); < br /> fil ('/ var / log / cups / error\_log' follow\_freq (30));
fil ('/ var / log / faillog' follow\_freq (30));
fil ; / var / log / lastlog 'follow\_freq (30));
fil (' / var / log / rpmpkgs 'follow\_freq (30));
fil (' / var / log / secure u0026 quot; follow\_freq (30));
fil ('/ var / log / spooler' follow\_freq (30));
fil ('/ var / log / vmware-tools-guestd' follow\_freq );
fil ('/var/log/yum.logu0026quot; follow\_freq (30));

fil (' /var/log/mysqld.logu0026quot; follow\_freq (30) );

fil ('/ var / log / httpd / * fejl * log' follow\_fr eq (30));

fil ('/var/log/php/php\_errors.logu0026quot; follow\_freq (30));

fil ('/var/log/vsftpd.logu0026quot; follow\_freq (30));
};

kilde s\_samba\_logs {
fil ('/var/log/samba/smbd.logu0026quot; follow\_freq (30));
fil (' /var/log/samba/nmbd.logu0026quot; follow\_freq (30));
fil ('/var/log/samba/0.0.0.0.logu0026quot; follow\_freq (30));
};

kilde s\_httpd\_logs {
fil ( u0026 quot; /var/log/httpd/example.com-error.logu0026quot; follow\_freq (30));
};

9.

##### #
# Opret destinationsvariabler.
# og Brug kilde / destinationsvariabler.
######

destination d\_messages {
fil (u0026 quot; ; / var / log / messages ');
};

log {
kilde (s\_local);
destination (d\_messages);
};

destination d\_syslog\_tcp {
syslog ('10.0.40.75' transport ('tcp') port (2010))
};

log {
kilde (s\_local);
kilde (s\_all\_logs);
destination (d\_syslog\_tcp);
};
< b / r samba ', værdi (' PROGRAM '));
indstillet (' ', værdi (' PID '));
};

log {
kilde (s\_samba\_logs);
omskriv (r\_samba\_log);
destination (d\_syslog\_tcp);
};

omskrive r\_httpd\_log {
subst (u0026 quot; ^ ',' ${PID}: ', værdi (' MESSAGE '));
sæt (' ', værdi (' PID '));
sæt ; httpd '; værdi (' PROGRAM '));
};

log {
kilde (s\_httpd\_logs);
omskriv (r\_httpd\_log);
destination (d\_syslog\_tcp);
};
----------- --------- SNIP --------------------

# Genstart syslog-ng klienten
[ root @ syslogclient ~] # /etc/init.d/syslog-ng genstart

10.

5) Opsætning php-syslog-ng

Download den nyeste php-syslog-ng-kode

[root @ syslogserver ~] # cd / var / www / html
[root @ syslogserver ~] # wget http: // php-syslog- ng.googlecode.com/files/php-syslog-ng-2.9.8m.tar.gz
[root @ syslogserver ~] # tjære zxf php-syslog-ng-2.9.8m.tar.gz

[root @ syslogserver ~] # mv html php-syslog-ng
[root @ syslogserver ~] # cd php-syslog-ng / config
[root @ syslogserver ~] # rm -vf config.php
[root @ syslogserver ~] # cp -pr config.php.dist config.php

Rediger php-syslog-ng config filen til dit specifikke websted

[root @ syslogserver ~] # vi config.php
-------------------- SNIP -------- definere ('VERSION', '2.9.8m');
definere ('COUNT\_ROWS', TRUE);
defin e ('DEFAULTLOGTABLE', 'logs');
definere ('MERGELOGTABLE', 'all\_logs');
definere ('USETABLE', DEFAULTLOGTABLE); // Dette fortæller hovedsiden for at beregne værtsantalet baseret på 'all\_logs u0026 quot;
definere ('DBUSER', 'sysloguser');
definere ('DBUSERPW', 'sysloguserpw');
definere ('DBADMINPW', 'syslogadminpw');
definere ('DBNAME', 'php\_syslog\_ng');
definere
definere ('REQUIRE\_AUTH', TRUE);
definere ('AUTHTABLENAME', 'brugere');
definere ('DBPORT', '3306');
definere ('REQUIRE\_AUTH' ;
definere ('RENEW\_SESSION\_ON\_EACH\_PAGE', TRUE);
definere ('SESSION\_EXP\_TIME', '3600');
definere ('TAIL\_REFRESH\_SECONDS', '25');
definere 'USE\_ACL', TRUE);
definere ('USER\_ACCESS\_TABLE', 'user\_access');
definere ('ACTION\_TABLE', 'actions');
definere ('USE\_CACHE', TRUE);
definere ('CACHETABLENAME', 'search\_cache');
definere ('SITEADMIN', 'admin');
definere ('SITENAME', 'example.com Php-Syslog-NG Site
definere ('ADMINEMAIL', 'syslogadmin@example.com.com');
definere ('CEMDB', 'ON');
definere ('CISCO\_TAG\_PARSE', SAND );
define ('CISCO\_ERROR\_TABLE', 'cemdb');
definere ('DEBUG', FALSE);
definere ('SITEURL', 'http://syslogserver.example.com/php-syslog-ng / ');
-------------------- SNIP -------------------- < /p>

11.

[root@syslogserver ~] # cd / var / www / html / php-syslog-ng
[root @ syslogserver ~] # chmod -R 666 config
[root @ syslogserver ~] # chmod -R 666 jpcache

Med standardindstillingerne i Apache skal du ikke tilføje en virtuel vært eller noget.

Men hvis du ikke har apache i øjeblikket, skal du til følgende to ting.
1) [root @ syslogserver ~] # /etc/init.d/httpd genstart
2) [root @syslogserver ~] # chkconfig httpd på

I en webbrowser skal du gå til ...
http://syslogserver.example.com/php-syslog-ng/
< br /> Jeg håber dette hjælper dig med at få en vellykket installation igangsat, og at det hjælper med at gøre dine fejlfindingsdage meget nemmere. Hvis du har problemer eller forslag, skal du bare kommentere denne artikel, og jeg vil komme tilbage til dig så snart jeg kan.

En logingsserver modtager logfiloplysninger fra klientservere og kombinerer disse logs til et sted for lettere fejlfinding. Php-syslog-ng hjælper med at søge den kombinerede logfil til specifikke oplysninger eller bare hale informationen som om den var en stor logfil.

Denne vejledning dækker, hvordan man installerer Open Source-versionen af ​​syslog- ng og php-syslog-ng på RedHat Enterprise Linux 5