Está en la página 1de 44

GUIA METODOLGICA PARA LA GESTIN

CENTRALIZADA DE LOGS DE SEGURIDAD


Orientado a pymes

TABLA DE CONTENIDO

1. INTRODUCCIN

1.1. ALCANCE

2. DESARROLLO DE LA GUA METODOLGICA

2.1. SINCRONIZACIN DE LOS RELOJES DE TIEMPO.


4
2.1.1. INFRAESTRUCTURA DE NTP
4
2.1.2. INSTALACIN Y CONFIGURACIN DEL SERVIDOR
4
2.1.3. INSTALACIN Y CONFIGURACIN DE CLIENTES.
6
2.2. TRANSPORTE DE EVENTOS.
8
2.2.1. INFRAESTRUCTURA DE LA CENTRALIZACIN
8
2.3. CREACIN DEL TNEL DE SSH
9
2.3.1. INSTALACIN Y CONFIGURACIN DEL SERVIDOR SSH
9
2.3.2. CREACIN DEL TNEL DESDE LOS CLIENTES SSH
11
2.4. INSTALACION Y CREACIN DEL REPOSITORIO DE DATOS
26
2.4.1. INSTALACIN DE MYSQL
26
2.4.2. CREACIN DE LA BD DE LOGS
27
2.4.3. CONFIGURACIN DE PIPE CON EL QUE SYSLOG-NG SE COMUNICARA CON MYSQL
29
2.5. INSTALACION Y CONFIGURACION DE HERRAMIENTAS DE ENVIO DE
EVENTOS
29
2.5.1. CONFIGURACIN DEL SERVIDOR
29
2.5.2. CONFIGURACIN DE SERVIDOR SYSLOG-NG
32
2.5.3. CONFIGURACIN DE CLIENTE WINDOWS.
34
2.5.4. CONFIGURACIN DE DISPOSITIVOS DE RED
42
2.6. DEFINICION DE PROCEDIMIENTO COPIAS DE RESPALDO
44

1. INTRODUCCIN
Una de las labores primordiales de la seguridad informtica, es la
administracin de los registros de eventos o logs. El hecho de que estos estn
distribuidos en los diferentes equipos de la organizacin hace que la labor de
revisarlos y analizarlos requiera de mucho esfuerzo, por lo que son muy pocas
personas las que lo hacen.
Esta gua pretende llevar a una administrador de red, con conocimientos
bsicos en manejo de sistemas operativos UNIX-like, y con conocimientos de
administracin en Windows, en el proceso de implantar una infraestructura
centralizada de logs con software de cdigo abierto y tambin con software
propietario pero de libre distribucin. Esto para permitirle tener en un punto
central los logs y hacer menos costosa en tiempo y ms eficaz la revisin y
anlisis de los mismos.
Otro aporte de esta gua es el enfoque forense que se les da a los logs por lo
que se busca mantener las caractersticas de la evidencia digital como
Autenticidad, Confiabilidad e Integridad, a travs del transporte de los eventos.
Cabe anotar que todos los comandos y acciones sobre los sistemas operativos
usados, se deben realizar bajo permisos de administrador.

1.1.

ALCANCE

En esta gua se pretenden dar indicaciones tcnicas a cerca del proceso de


implantacin de la infraestructura que permite centralizar los logs, mas no
acoge el proceso previo de creacin de polticas que rijan la administracin de
la informacin de la organizacin dentro de la que estn los logs.
Tampoco es parte de esta gua la definicin de procedimientos para plasmar
las polticas, a pesar de que es una base sobre la cual se pueden crear y
complementar otros procedimientos.
Esta gua esta orientada a pymes donde se considera que por su escala el
impacto del trfico de red no es muy importante gracias a su tamao, por lo que
no es parte de esta gua optimizar el manejo del trfico de eventos.
Esta gua busca lograr la centralizacin de los registros de eventos de una red
de una pyme, sin embargo, no se encuentra comprendido en el alacance de
esta, la centralizacin de logs generados por herramientas o dispositivos que
no tengan soporte a syslog.

2. DESARROLLO DE LA GUA METODOLGICA


2.1.

SINCRONIZACIN DE LOS RELOJES DE TIEMPO.

Una parte importante a la hora de manejar eventos dispersos en varios


sistemas, es el hecho de sincronizar los relojes de estos, pues en base a estos
se identifica el tiempo (fecha y hora) en que sucedi un evento.
2.1.1. Infraestructura de NTP
Para este fin se utilizar el protocolo NTP, el cual es jerrquico y permite que
una serie de clientes se sincronicen con la hora de un servidor y a su vez, estos
se comporten como servidores de menos jerarqua.
Para este caso se usar un solo servidor NTP dentro de la organizacin que se
sincronizar con servidores pblicos en Internet. En caso de ser una red
aislada de Internet se tomar como referencia el reloj de sus sistema,
sincronizando a los dems equipos con este.
2.1.2. Instalacin y configuracin del servidor
El servidor de NTP, el cual ser el mismo servidor de logs, esta diseado para
ser un Linux Red Hat y tendr instalado NTPd, un demonio que cumple con los
requerimientos del protocolo NTP tanto como cliente as como servidor.
2.1.2.1.

Configuracin de zona horaria del servidor

Para configurar la zona horaria del servidor y en general de los equipos UNIX
like, existe un link simblico llamado /etc/localtime. Para cambiar la zona
horaria simplemente se debe cambiar ese link simblico y apuntarlo al archivo
en /usr/share/zoneinfo/, correspondiente. Por ejemplo para configurar la zona
horaria de Bogot:
[root@m4_e4 Desktop]# ln sf /usr/share/zoneinfo/America/Bogota /etc/localtime

2.1.2.2.

Instalacin de NTPd

Para instalar NTPd a partir de las fuentes descargamos el archivo


ntp-4.2.2p3.tar.gz de la pagina ww.ntp.org
Para descomprimirlo:
[root@m4_e4 Desktop]# tar -xvf ntp-4.2.2p3.tar.gz -C .
ntp-4.2.2p3/

ntp-4.2.2p3/util/timetrim.c

La instalacin se hace de esta manera


[root@m4_e4 ntp-4.2.2p3]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
...
config.status: executing depfiles commands

[root@m4_e4 ntp-4.2.2p3]# make


cd . && \
./scripts/genver version.m4
Compiling with GCC now generates lots of new warnings.
Don't be concerned. They're just warnings.
...
make[1]: Leaving directory `/XXX/ntp-4.2.2p3'
[root@m4_e4 ntp-4.2.2p3]# make install
cd . && \
...
make[1]: Leaving directory `/XXX/ntp-4.2.2p3'

2.1.2.3.

Configuracin de NTPd

NTPd en el servidor debe ser configurado para arrancar con el sistema


operativo, por lo que crearemos un script con este fin.
/etc/init.d/ntpd
#!/bin/bash
case "$1" in
start)
echo "Iniciando ntpd"
/usr/local/bin/ntpd -A
stop)
echo "Terminando ntpd..."
killall ntpd
;;
*)
echo "Uso: $0 {start|stop}"
exit 1
;;
esac
Ahora se deben cambiar los permisos de este archivo para que sea ejecutable.
[root@ServidorLogs redhat]# chmod 700 /etc/init.d/ntpd

Se configura el servidor para que se sincronice con el servidor pblico


200.91.231.199. Simultneamente se pueden tomar varias fuentes, lo que har
mas preciso nuestro servidor. Para cada fuente se agrega una lnea:
server [IP del servidor].
Existen varios servidores NTP Pblicos en Internet que se podra utilizar con
estos fines.
/etc/ntp.conf
server 200.91.231.199
server x.x.x.x
server y.y.y.y

server 127.127.1.1
fudge 127.127.1.1 stratum 10
driftfile /etc/ntp.drift
logfile /var/log/ntpd.log
El ltimo servidor (127.127.1.1), corresponde al reloj interno del sistema. Este
se toma como servidor de respaldo si ninguno de los otros responde, aunque
es menos preciso. Dado que no es tan preciso, con la lnea:
fudge 127.127.1.1 stratum 10
se considera en numero del stratum como 10 que es un stratum mayor al de los
otros servidores, por lo que si estos responden, este no se tomar en cuenta.
Si la red es una red aislada, el servidor de tiempo tomara como referencia el
reloj de su sistema. Esto no es tan preciso como estar sincronizado con un reloj
externo, pero permitir que internamente los relojes estn sincronizados entre
si.
Para que el servidor de NTP tome esta referencia, se usa el siguiente archivo
de configuracin:
/etc/ntp.conf
server 127.127.1.1
logfile /var/log/ntpd.log
Para que NTPd arranque automticamente, se debe crear un enlace simblico
en /etc/rcX.d/, donde X es el nivel de ejecucin en el que queremos que
arranque.
Por ejemplo si queremos que arranque en el nivel de ejecucin 5:
[root@ServidorLogs redhat]# ln -s /etc/init.d/ntpd /etc/rc5.d/S15ntpd

Y procedemos a arrancar el servicio manualmente


[root@ServidorLogs redhat]# /etc/init.d/ntpd start

2.1.3. Instalacin y configuracin de clientes.


2.1.3.1.

UNIX-like

Lo primero que se tiene que configurar en los clientes con sistema operativo
Unix Like es la zona horaria.
Esto se hace igual que el servidor como fue explicado en la seccin 2.1.2.1

Para configurar un cliente UNIX-like de manera que se sincronice con nuestro


servidor de tiempo con direccin IP x.x.x.x, es necesario instalar NTPd de la
misma manera que en el servidor (seccin 2.1.2.2). Luego de esto se utilizar
la herramienta ntpdate provista por NTPd para sincronizar el reloj, y se
configurar con crontab, la periodicidad con la que se llamar a ntpdate.
Para editar el los trabajos programados con crontab:
[root@ServidorLogs redhat]#crontab e
@reboot /usr/local/bin/ntpdate x.x.x.x

De esta manera se esta programando la ejecucin cada vez que inicia el


sistema operativo del comando /usr/local/bin/ntpdate x.x.x.x
@reboot podria ser remplazado por @hourly, @daily u otras opciones mas
especificas que provee crontab. Para mayor detalle de estas opciones se
puede consultar el manual de crontab con el comando:
[root@ServidorLogs redhat]#man crontab

2.1.3.2.

Windows XP

En Panel de Control/Fecha y Hora, existe una pestaa que permite configurar


un servidor NTP con el cual el sistema operativo peridicamente se actualiza.

En esta ventana se puede tanto configurar la zona horaria en la segunda


pestaa, como configurar el cliente ntp en la tercera.

2.1.3.3.

Router Cisco

Para configurar un router Cisco como cliente NTP, se debe entrar en modo
privilegiado y entrar en modo de configuracin:
Router#configure terminal

Lo primero que se tiene que hacer es definir la zona horaria en la que est el
router.
Router(config)#clock timezone COL -5

El tercer campo (COL) corresponde al nombre que le asignaremos a esa zona


horaria para q sea la que el router muestre. El ultimo campo es la diferencia
con la hora UTC.
Luego de estos, con el comando ntp server se define el servidor NTP que se
usar
Router(config)#ntp server 129.237.32.2

2.2.

TRANSPORTE DE EVENTOS.

2.2.1. Infraestructura de la centralizacin


La infraestructura que permitir el transporte seguro de los eventos, se muestra
en la figura siguiente.

2.3.

CREACIN DEL TNEL DE SSH

El mecanismo con el que se le dar cifrado, autenticacin e integridad a los


mensajes syslog, ser un tnel ssh. Para la creacin de este tnel se usa un
servidor ssh (En este caso OpenSSH) en el servidor de logs, y clientes ssh en
los equipos que vayan a transmitir sus eventos.
2.3.1. Instalacin y configuracin del Servidor SSH
En el servidor se instalar OpenSSH cono servidor ssh. Para la conexin desde
los clientes, se usar un usuario creado para este fin llamado syslog.
2.3.1.1.

Creacin del usuario syslog y sshd

Es necesario crear un usuario llamado syslog con el cual se har la conexin


ssh. Para esto como usuario root se ejecuta el siguiente comando:
[root@ServidorLogs redhat]# useradd -c 'Usuario syslog' -s /bin/false syslog
[root@ServidorLogs redhat]# passwd syslog

Aqu se le asigna un password al usuario syslog.


Tambien es necesario crear un usuario sshd

[root@ServidorLogs redhat]# groupadd sshd


[root@ServidorLogs redhat]# useradd -g sshd -c 'Usuario sshd' -s /bin/false sshd

2.3.1.2.

Instalacin del OpenSSH

La instalacin de OpenSSH depende de la instalacin previa de OpenSSL y la


librera Zlib. No esta dentro del alcance de esta gua instalar estos
requerimientos.
Luego de cumplir los requerimientos se necesita de este archivo:
[root@ServidorLogs SWCentr]# ls
openssh-4.5p1.tar.gz

Lo primero que se hace es descomprimirlo:


[root@ServidorLogs SWCentr]# tar -xvf openssh-4.5p1.tar.gz -C .
openssh-4.5p1

openssh-4.5p1/ssh_config.0
[root@ServidorLogs SWCentr]# cd openssh-4.5p1

Luego de esto se sigue el proceso estndar de instalacin


[root@ServidorLogs openssh-4.5p1]# ./configure
checking for gcc... gcc

Libraries: -lresolv -lcrypto -lutil -lz -lnsl -lcrypt


[root@ServidorLogs openssh-4.5p1]# make
conffile=`echo sshd_config.out | sed 's/.out$//'`; \

glob.o -L. -Lopenbsd-compat/ -lssh -lopenbsd-compat -lresolv -lcrypto -lutil -lz -lnsl -lcrypt
[root@ServidorLogs openssh-4.5p1]# make install
if test ! -z ""; then \
/usr/bin/perl5 ./fixprogs ssh_prng_cmds ; \
fi

/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config

2.3.1.3.

Configurar SSHd como un servicio

En el ejemplo estamos utilizando Mandrila 2006 que est basado en Red Hat,
por lo que utilizaremos el script que administra el servicio, provisto en el tar.gz.
[root@ServidorLogs openssh-4.5p1]# cd contrib/redhat/
[root@ServidorLogs redhat]# ls
gnome-ssh-askpass.csh gnome-ssh-askpass.sh openssh.spec sshd.init* sshd.init.old* sshd.pam sshd.pam.old
[root@ServidorLogs redhat]# cp sshd.init /etc/init.d/sshd

Luego de copiar este archivo, es necesario cambiar las rutas de los


ejecutables.
/etc/init.d/sshd

KEYGEN=/usr/local/bin/ssh-keygen
SSHD=/usr/local/sbin/sshd

RSA1_KEY=/usr/local/etc/ssh_host_key
RSA_KEY=/usr/local/etc/ssh_host_rsa_key
DSA_KEY=/usr/local/etc/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid

Ahora se deben cambiar los permisos de este archivo:


[root@ServidorLogs redhat]# chmod 700 /etc/init.d/sshd

Ahora hay que configurar en que niveles de ejecucin se quiere que arranque
el servicio automticamente. En el ejemplo nos interesa que el nivel de
ejecucin 5 arranque automticamente el servicio por lo que listamos el
contenido de /etc/rc5.d/, para saber que servicios ya estn configurados.
[root@ServidorLogs redhat]# ls /etc/rc5.d/
S04acpi@
S12syslog@ S15mdadm@ S24messagebus@ S30dm@
S56rawdevices@ S91smb@
S99local@
S05harddrake@ S13partmon@ S17alsa@ S25haldaemon@ S33nifd@
S75keytable@ S92httpd@
S10network@ S14acpid@ S18sound@ S25netfs@
S34mDNSResponder@ S80freshclam@ S92lisa@
S11portmap@ S14nfslock@ S20xfs@ S29numlock@ S40atd@
S90crond@
S95kheader@

Se busca que el servicio de ssh arranque despus de que portmap halla


arrancado por lo que podemos asignarle el mismo numero (11) ya que el
siguiente orden q se toma es el alfabtico por lo que Ssh arrancara luego de
Portmap.
[root@ServidorLogs redhat]# ln -s /etc/init.d/ /etc/rc5.d/S11sshd

Los clientes se conectarn utilizando autenticacin basada en llaves publicas y


privadas.
Para que ms adelante se puedan agregar las llaves pblicas de los clientes al
servidor es necesario crear en la carpeta home de syslog una carpeta llamada
.ssh y un archivo dentro de esta llamado authorized_keys
[root@ServidorLogs redhat]# mkdir ~syslog/.ssh/
[root@ServidorLogs redhat]# touch ~syslog/.ssh/authorized_keys

2.3.2. Creacin del tnel desde los clientes SSH


2.3.2.1.

Con Openssh(Linux)

El cliente ssh que se utilizar en los equipos linux es el mismo OpenSSH, por lo
cuel se sigue el mismo proceso de intalacin explicado en la seccin 2.3.1.2
Al final del ultimpo comando, en los clientes se generar un error ya que no se
usar sshd. Se debe hacer caso omiso a este error.
Generacin de llaves
OpenSSH viene con una herramienta que permite generar el par de llaves
(privada y pblica), llamada ssh-keygen.
De laq siguiente manera se puede crear el par que quedar guardado en
/root/.ssh/id_rsa y /root/.ssh/id:rsa.pub en la mquina cliente.

[root@servidor_logs syslog-ng]# /usr/local/bin/ssh-keygen -t rsa


Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
da:2d:6f:5b:65:82:94:c5:b7:18:ad:3b:0b:50:5c:e1

Luego de esto la informacin de id_rsa.pub debe ser agregada al archivo


~syslog/.ssh/authorized_keys en el servidor, donde ~syslog es la carpeta home
del usuario syslog.
Se reinicia el demonio sshd en el servidor con el comando:
[root@servidor_logs ]# /etc/init.d/sshd restart

Creacin del tnel en inittab


Lo primero que se debe hacer es correr el comando correspondiente a la
creacin del tnel ssh con el usuario root, para que se guarde la huella del
servidor en cach y no se requiera interaccin del usuario en un futuro.
/etc/inittab es un archivo en el que se definen los niveles de ejecucin de Linux
y se corre antes de arrancar los mismos.
En este archivo podemos escribir un comando que cree el tnel ssh para que
este disponible en los niveles de ejecucin.
La lnea que se le agrega a este archivo es la siguiente
/etc/inittab

tssh:5:respawn:/usr/bin/ssh -i /root/.ssh/id_rsa -fNnq -L 5014:localhost:514


syslog@192.168.0.8
Aclaracin: Es una sola lnea. Por motivos de presentacin se dividi, pero se
debe mantener todo el comando en la misma lnea.
Tssh corresponde a la manera de idetificar este comando en inittab. 5 se refiere
al nivel de ejecucin en el que se quiere que se corra. P.E. si se quiere tambin
que se corra en el nivel de ejecucin 3, la linea comenzaria: tssh:35:resp..
2.3.2.2.

Con Plink (Windows)

Plink es un cliente SSH gratuito, que hace parte del paquete PUTTY, que se
puede descargar en http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Con esta herramienta se puede crear el tnel SSH desde Windows, con una
lnea de comandos.
Con la ayuda de srvany.exe se puede crear un servicio a partir de esta lnea de
comandos que arranque con el sistema operativo sin necesidad de que inicie
sesin un usuario (algo muy comn en los servidores).

Creacin de Usuario syslog


Para crear el usuario se ingresa en la consola de administracin dando clic
derecho en MiPC>Administrar

En el rbol se busca Usuario y se da clic derecho Usuario nuevo

Es necesario activar la opcin La contrasea nunca caduca.

Es importante que syslog tenga permisos de administrador para acceder al log


de seguridad de Windows.

Generacin de llaves con PUTTYGEN


El paquete PUTTY, tiene una herramienta de generacin de llaves llamada
PUTTYGEN, con la que se genera el par de llaves para la usar con Plink.

Al abrir la aplicacin se da clic en el botn Generate.

El generador solicita mover el Mouse en el rea vaca para generar la


aleatoriedad necesaria para generar las llaves.

El texto generado corresponde a la llave pblica y lo necesitaremos para


agregarlo al servidor, por lo que lo se guardar en un archivo.

Luego se debe guardar la llave privada con Save private key. Este archivo
debe estar bien protegido. Tambin es recomendable que la ruta completa del
archivo no tenga espacios ni caracteres especiales.

En
el
servidor
de
logs
se
debe
modificar
el
archivo
~syslog/.ssh/authorized_keys. ~syslog se refiere al directorio home del usuario
syslog. Normalmente ~syslog=/home/syslog/.
En este archivo al final pegamos el texto generado como llave pblica.
/home/syslog/.ssh/authorized_keys

ssh-rsa
AAAAB3NzaC1yc2EAAAABJQAAAIBR94AAyte1v//NcP3cWh69Qc8bQxE2+CR
o8nkZUoL2DSbf53zxMV+Bde2VKLW6grPftSEjFLopkdkXpesE3dqwhbbFtsEn3/
+7HIPBK0wVkPoJQwyp7e/LvGMC0T8TwrvZhBzgVoXwTzuMhqHPGP3vSUpi
Mv2HtEyRhiJXSN+jLw== rsa-key-20061206
Una vez se haya agregado la llave publica en el servidor, el demonio de sshd
en este se debe reiniciar.
Configuracin de servicio
Lo primero que se necesita es ubicar el ejecutable PLINK.exe, en la mquina.
Es recomendable que sea en una carpeta cuya ruta no sea muy larga, ni tenga
espacios o caracteres especiales (P.E. C:\PLINK\).

En esta misma carpeta pueden estar ubicados srvany.exe, instsrv.exe y la llave


privada y publica generadas anteriormente.
En este momento es necesario cerrar sesin con el usuario administrador e
iniciar sesin con syslog. Esto pues la creacin del tnel requiere la primera
vez que se realiza de la interaccin del usuario con el que se abrir.
Para hacer esto se debe crear el tnel manualmente desde una lnea de
comandos.
C:\Plink>c:\plink\plink N l syslog L 5014:localhost:514 i C:\Plink\PrivateKey.ppk IP.DEL.SERVIDOR.LOGS
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's key fingerprint is:
ssh-rsa 1024 e4:c9:51:50:61:63:e9:cd:73:2a:60:6b:f0:be:25:bf
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y
Using username "syslog".

Con esto queda guardada la huella del servidor en la cache de plink y de ahora
en adelante no se necesitar intervencin del usuario para abrir el tnel, por lo
que se puede ejecutar de fondo sin problemas.
Para probar esto se puede volver a escribir:
C:\Plink>plink N l syslog L 5014:localhost:514 i C:\Plink\PrivateKey.ppk IP.DEL.SERVIDOR.LOGS
Using username "syslog".

Ahora que se sabe que la linea


plink N l syslog L 5014:localhost:514 i C:\Plink\PrivateKey.ppk
192.168.0.5 funciona se puede crear el servicio con nombre tunelssh que la
corra al arrancar la maquina.
Esto se hace con ayuda de srvany.exe y de instsrv.exe descargables de
www.microsoft.com
C:\Plink>instsrv tunelssh c:\Plink\srvany.exe
The service was successfully added!
Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context.

Con esto se creo un servicio llamado tunelssh que ejecuta c:\Plink\srvany.exe


Para que srvany ejecute el comando necesario para crear el tunel es necesario
editar el registro:

Se busca la llave
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tunelssh

Aqu se crea una Clave Parameters y se ingresa a ella.

Adentro de parameters se crea un valor alfanumrico llamado Application, que


se edita y se le da como valor la lnea que ejecutamos anteriormente.

Ahora se configura el servicio para que inicie como el usuario syslog creado
anteriormente.

Aqu se proporcionan los datos (usuario y contrasea) de syslog, y en la


pestaa General se configura Tipo de Inicio como Automtico.
Ahora se puede iniciar el servicio con el botn correspondiente en la pestaa
General.

2.4.

INSTALACION Y CREACIN DEL REPOSITORIO DE


DATOS

2.4.1. Instalacin de Mysql


La instalacin de Mysql es mucho mas sencilla a partir de RPMs descargables
de www.mysql.com.
Los RPMs necesarios son los siguientes:
perl-DBI-1.48-1mdk.i586.rpm
MySQL-server-standard-5.0.27-0.rhel3.i386.rpm
MySQL-client-standard-5.0.27-0.rhel3.i386.rpm
La manera de instalarlos es la siguiente:
[root@ServidorLogs SWCentr]# urpmi perl-DBI-1.48-1mdk.i586.rpm
installing perl-DBI-1.48-1mdk.i586.rpm

Preparing...
1/1: perl-DBI

#############################################
#############################################

root@ServidorLogs SWCentr]# urpmi MySQL-server-standard-5.0.27-0.rhel3.i386.rpm


warning: MySQL-server-standard-5.0.27-0.rhel3.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
installing MySQL-server-standard-5.0.27-0.rhel3.i386.rpm
Preparing...
#############################################
1/1: MySQL-server-standard #############################################
/usr/sbin/mysqld: Can't read dir of '/root/tmp/' (Errcode: 13)
/usr/sbin/mysqld: Can't read dir of '/root/tmp/' (Errcode: 13)
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h ServidorLogs password 'new-password'
See the manual for more instructions.
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
Starting MySQL SUCCESS!
[root@ServidorLogs SWCentr]# urpmi MySQL-client-standard-5.0.27-0.rhel3.i386.rpm
warning: MySQL-client-standard-5.0.27-0.rhel3.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
installing MySQL-client-standard-5.0.27-0.rhel3.i386.rpm
Preparing...
#############################################
1/1: MySQL-client-standard #############################################

Luego se le debe asignar una contrasea al usuario root dentro de MySQL


[root@ServidorLogs SWCentr]# mysqladmin -u root password 'passwordpararoot'

2.4.2. Creacin de la BD de logs


Ahora se necesita el script que crea la base de datos y el usuario para
accederla:
./scriptBD.sql
CREATE DATABASE syslog;
USE syslog;
#crear tabla donde se almacenaran los logs
CREATE TABLE logs (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
datetime datetime default NULL,
program varchar(15) default NULL,
msg text,

seq bigint(20) unsigned NOT NULL auto_increment,


PRIMARY KEY (seq), KEY host (host),
KEY program (program), KEY datetime (datetime),
KEY priority (priority), KEY facility (facility)
) TYPE=MyISAM;
USE mysql;
# crear usuario con el que se insertaran los logs
INSERT INTO user (Host, User, Password) VALUES ('localhost','syslog',
password('passwordparasyslog'));
INSERT INTO db (Host, Db, User) VALUES ('localhost','syslog','syslog');
COMMIT;
FLUSH PRIVILEGES;
GRANT SELECT, INSERT, DELETE, CREATE,
ALTER, LOCK TABLES ON syslog.* TO syslog@localhost;
[root@ServidorLogs SWCentr]# mysql -p
Enter password:[passwordpararoot]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 5.0.27-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> source scriptBD.sql
Query OK, 1 row affected (0.08 sec)
Database changed
Query OK, 0 rows affected, 1 warning (0.07 sec)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Query OK, 1 row affected, 3 warnings (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)

2.4.3. Configuracin de pipe con el que syslog-ng se comunicar con


mysql
syslog-mysql-pipe.sh
#!/bin/bash
if [ -e /var/log/mysql.pipe ]; then
while [ -e /var/log/mysql.pipe ]
do
mysql -u syslog --password=passwordparasyslog syslog < /var/log/mysql.pipe
done
else
mkfifo /var/log/mysql.pipe
fi
[root@ServidorLogs redhat]# chmod 700 /root/syslog-mysql-pipe.sh

2.5.

INSTALACION Y CONFIGURACION DE HERRAMIENTAS


DE ENVIO DE EVENTOS

2.5.1. Configuracin del servidor


2.5.1.1.

Instalacin de syslog-ng

Para la instalacin de syslog-ng se necesitaran estos 2 archivos:


[root@servidor_logs syslog-ng]# ls
eventlog-0.2.5.tar.gz* syslog-ng-2.0rc3.tar.gz*

2.5.1.2.

Instalacion de Eventlog

Se debe descomprimir el archivo tar.gz.


[root@servidor_logs syslog-ng]# tar -xvf eventlog-0.2.5.tar.gz -C .
eventlog-0.2.5/

[root@servidor_logs syslog-ng]# cd eventlog-0.2.5

Luego se sigue el proceso estndar de instalacin a partir de sus fuentes:


[root@servidor_logs eventlog-0.2.5]# ./configure
checking for a BSD-compatible install... /usr/bin/install c

config.status: executing depfiles commands


[root@servidor_logs eventlog-0.2.5]# make
make all-recursive

make[1]: Leaving directory `/XXX/syslog-ng/eventlog-0.2.5'


[root@servidor_logs eventlog-0.2.5]# make install

Making install in src

Libraries have been installed in:


/usr/local/lib

make[1]: Leaving directory `/XXX/syslog-ng/eventlog-0.2.5'

Como se muestra en la salida, las libreras quedan instaladas en /usr/local/lib


Para verificarlo
[root@servidor_logs eventlog-0.2.5]# ls /usr/local/lib/libevtlog*
/usr/local/lib/libevtlog.a /usr/local/lib/libevtlog.so@ /usr/local/lib/libevtlog.so.0.0.0*
/usr/local/lib/libevtlog.la* /usr/local/lib/libevtlog.so.0@
[root@servidor_logs eventlog-0.2.5]# ls /usr/local/lib/pkgconfig/
eventlog.pc

2.5.1.3.

Instalacin de Syslog-ng

[root@servidor_logs eventlog-0.2.5]# cd ..

Se descomprime tambin el .tar.gz de syslog-ng


[root@servidor_logs syslog-ng]# tar -xvf syslog-ng-2.0rc3.tar.gz -C .
syslog-ng-2.0rc3/

syslog-ng-2.0rc3/contrib/relogger.pl
[root@servidor_logs syslog-ng]# cd syslog-ng-2.0rc3
[root@servidor_logs syslog-ng-2.0rc3]# export
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
[root@servidor_logs syslog-ng-2.0rc3]# ./configure --enable-dynamic-linking
checking for a BSD-compatible install... /usr/bin/install c

config.status: executing depfiles commands


[root@servidor_logs syslog-ng-2.0rc3]# make
make all-recursive

make[1]: Leaving directory `/XXX/syslog-ng-2.0rc3'


[root@servidor_logs syslog-ng-2.0rc3]# make install
Making install in src

make[1]: Leaving directory `/XXX/syslog-ng/syslog-ng-2.0rc3'

Se creara un archivo de configuracin el cual ms adelante se desarrollar.


[root@servidor_logs syslog-ng-2.0rc3]# touch /usr/local/etc/syslog-ng.conf

Syslog-ng qued instalado en /usr/local/sbin/. Ahora es necesario configurarlo


como un servicio.
2.5.1.4.

Configuracin de syslog-ng como un servicio en el


servidor

Syslog-ng trae un ejemplo de script de arranque para RedHat, as como para


otros sistemas operativos. Se copia este script en la carpeta /etc/init.d/
[root@servidor_logs syslog-ng-2.0rc3]# cp contrib/init.d.RedHat /etc/init.d/syslog-ng
[root@servidor_logs syslog-ng-2.0rc3]# chmod 700 /etc/init.d/syslog-ng

Y se edita el archivo /etc/init.d/syslog-ng, insertando luego de


PATH=/bin:/sbin:/usr/bin:/usr/sbin, el texto que aparece en negrita. Tambien
se configura la ruta en la que se instalo syslog-ng (por defecto es
/usr/local/sbin/syslog-ng)
/etc/init.d/syslog-ng
...
INIT_PROG="/usr/local/sbin/syslog-ng" # Full path to daemon
INIT_OPTS=""
# options passed to daemon
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/usr/local/lib/
export LD_LIBRARY_PATH
/root/syslog-mysql-pipe.sh &
INIT_NAME=`basename "$INIT_PROG"`
...
Ahora se decide en que niveles de ejecucin queremos que arranque el
servicio.
Para revisar que nivel utiliza el sistema operativo por defecto se abre el archivo
/etc/inittab, y se busca esta lnea,
/etc/inittab

id:X:initdefault:

donde X es el nivel que utiliza el sistema para arrancar.


Luego se crea un enlace simblico en el directorio /etc/rcX.d/. En ese ejemplo
se usar el nivel de ejecucin 5 por lo se crear el enlace en /etc/rc5.d/.
Primero se lista que enlaces existen.
[root@servidor_logs syslog-ng-2.0rc3]# ls /etc/rc5.d/
K55routed@
S03iptables@
S04acpi@
S05harddrake@
S10network@
S11mysql@
S11sshd@
S12portmap@
S12syslog@
S13partmon@
S14acpid@
S14nfslock@
S15mdadm@
S17alsa@

S18sound@
S20xfs@
S24messagebus@
S25haldaemon@
S25netfs@
S26mandi@
S29numlock@
S30dm@
S33nifd@
S34mDNSResponder@
S40atd@
S56rawdevices@
S60nfs@
S75keytable@
S80freshclam@
S80postfix@
S90crond@
S91smb@
S92httpd@
S92lisa@
S95kheader@
S98mailman@
S99local@

Los enlaces que comienzan con K se refieren a los servicios que se van a
detener cuando se cargue este nivel de ejecucin. Los que comienzan con S
los que se van a arrancar. El nmero que sigue a K o S y precede al nombre
del servicio se refiere al orden. Si existen 2 con el mismo nmero el orden
alfabtico es el que sigue el sistema operativo para arrancar.
El servicio de syslog-ng debe iniciar luego de que haya capacidades de
comunicacin o sea despus de que suba la red, despus de que haya subido
el servidor SSH(sshd) y luego de que la base de datos (mysql) haya arrancado.
Se le puede asignar en el ejemplo el numero 11 a syslog-ng, y se cumplirian
esas condiciones.
[root@servidor_logs syslog-ng-2.0rc3]#ln -sv /etc/init.d/syslog-ng /etc/rc5.d/S11syslog-ng

Adems es necesario borrar el enlace simblico de syslog, pues podra entrar


en conflicto con syslog-ng.
[root@servidor_logs syslog-ng-2.0rc3]#rm /etc/rc5.d/S12syslog

El proceso se repite para todos los niveles de ejecucin (/etc/rcX.d/), en los que
se necesite que arranque syslog-ng.
2.5.2. Configuracin de servidor syslog-ng
/usr/local/etc/syslog-ng.conf
options {
check_hostname(yes);
keep_hostname(yes);
chain_hostnames(no);
};

source entradaLocal {
internal();
unix-stream("/dev/log");
};
source entradaRemota {
tcp(max_connections(100) port(514));
};

destination archivos {
file("/logs/$HOST/$YEAR/$MONTH/$FACILITY.$YEAR$MONTH$DAY"
owner(root) group(root) perm(0600)
create_dirs(yes) dir_perm(0700));
};
destination archivosServidor {
file("/logs/192.168.0.5/$YEAR/$MONTH/$FACILITY.$YEAR$MONTH$D
AY"
owner(root) group(root) perm(0600)
create_dirs(yes) dir_perm(0700));
};
destination mysql {
pipe("/var/log/mysql.pipe" template("INSERT INTO logs (host, facility,
priority, level, tag, datetime,
program, msg) VALUES ( '$HOST',
'$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY
$HOUR:$MIN:$SEC',
'$PROGRAM', '$MSG' );\n")
template-escape(yes));
};
log { source(entradaRemota); destination(archivos); };
log { source(entradaRemota); destination(mysql); };
log { source(entradaLocal); destination(archivosServidor); };
log { source(entradaLocal); destination(mysql); };
2.5.2.1.

Configuracin de cliente Linux

Al igual que el servidor, los clientes Linux/UNIX usan syslog-ng como software
que recoge sus propios eventos. La diferencia en la configuracin radica
principalmente en las salidas, pues no son archivos ni bases de datos, sino una
conexin tcp.
El proceso de instalacin es exactamente el mismo que en el servidor descrito
en la Seccin 2.5.1.1
La nica diferencia radica en el orden de arranque de los servicios, pues en el
caso de los clientes solo depende de network.

2.5.2.2.

Configuracin de syslog-ng en clientes.

/usr/local/etc/syslog-ng.conf
options {
check_hostname(yes);
keep_hostname(yes);
chain_hostnames(no);
};
source entradas {
internal();
unix-stream("/dev/log");
};
destination remote {
tcp("127.0.0.1" port(5014); );
};
log { source(inputs); destination(remote); };
Debido al uso del tnel ssh, la direccin IP a la que se hace la conexin es
127.0.0.1, es decir el mismo cliente. Esta podra ser tambin la direccin IP
esttica del mismo.
2.5.2.3.

Configuracin de herramientas

Las herramientas diseadas para sistemas operativos UNIXlike, sueles tener la


posibilidad de reportar sus logs al sistema operativo (al demonio de syslog
corriendo en sistema operativo), esta es la opcin que se debe usar para
centralizar estos logs, pues una vez el demonio syslog (en este caso syslogng), reciba los eventos, estos se enviarn al servidor de logs.
2.5.3. Configuracin de cliente Windows.
Para el reenvo de eventos desde una mquina Windows al servidor syslog-ng
se
usa
la
herramienta
LogLogic
Lasso
descargable
en
http://sourceforge.net/projects/lassolog
Esta herramienta toma del Visor de Eventos, los eventos ocurridos en
Windows, los convierte a formato syslog y los enva va una conexin TCP a un
servidor que puede ser syslog-ng.
2.5.3.1.

Instalacin de Lasso

Lasso se instala mediante un wizard que permite que el proceso sea muy
sencillo.

La advertencia inicial se puede obviar De acuerdo con la documentacin, Lasso


sirve con Windows 2000 Server, 2000 Pro, XP y 2003 Server.

2.5.3.2.

Configuracin de Lasso

Luego de ser instalado Lasso es configurable mediante los archivos:


hostlist.ini y lasso.ini, ubicados en la carpeta de instalacin (por defecto
C:/Archivos de Programa/Lasso/)

El primer archivo corresponde a los equipos de los que Lasso va a extraer los
eventos, y que logs va a observar. En este caso se busca que cada mquina
tenga Lasso instalado y solo se monitoree a si misma por aspectos de
seguridad.
El primer campo corresponde al HOST luego sigue una coma , y la lista de
logs que queremos monitorear. Si los logs que queremos monitorear son los
logs estndar de Windows (Aplicacin, Seguridad, Sistema), la convencin *3
facilita el proceso.
En otras ocasiones Windows tiene por defecto 6 logs y se puede usar la
convencin *6.

C:\Archivos de Programa\Lasso\hostlist.ini
localhost,*3
Otra opcin podra ser:
192.168.22.14,Security,System,OracleLog
Si solo queremos monitorear los logs por defecto Security y Sistem, y adems
queremos monitorear un log definido llamado OracleLog.

El otro archivo de configuracin es lasso.ini, el cual define parmetros de


ejecucin de lasso.
Son de inters LogApplience que se refiere al equipo al que se enviarn los
eventos, y el puerto. As con en los clientes Linux, se esta usando el tnel ssh
por lo que la comunicacin se abre con la misma mquina cliente. Por esto la
direccin IP puede ser la esttica (en el ejemplo 192.168.0.25) del equipo o
127.0.0.1. El puerto debe ser el configurado en el tnel ssh (5014).

Tambin es de inters EventPollInterval, que configura el tiempo en segundos


que esperar Lasso para revisar si hay eventos nuevos en el Visor de Sucesos.
Es recomendable darle un valor de 1 para que la estampilla de tiempo que
Lasso le pone a los eventos en el formato syslog, sea la ms cercana a la hora
en la que el evento sucedi.
C:\Archivos de Programa\Lasso\ lasso.ini
LogAppliance,192.168.0.25,5014
DebugLevel,0
EventPollInterval,1
DllLoadInterval,3600
SpoolFileSize,1.0
HighWaterMarks,ON
WatermarkWriteInterval,1000
DebugHostFileSize,20
RepositoryPath,C:\LassoRepository\
SpoolPath,C:\LassoRepository\Spool\
Ahora se debe configurar el servicio de Lasso, que ya est instalado pero hace
falta configurar la dependencia con el tnel, y definir su arranque automtico al
arrancar el sistema.
Para configurar la dependencia se edita la llave de registro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lasso

agregndole el valor de cadena mltiple o si no existe el valor alfanumrico


llamado DependOnService y con valor tunelssh.

Ahora se modifican las propiedades del servicio dndole como Tipo de Inicio
Automtico y como Inicio de sesin, se configura el usuario syslog creado en
la seccin 0

En la pestaa General, se inicia el servicio


2.5.4. Configuracin de dispositivos de red
Centralizar los eventos de un dispositivo de red que normalmente soporta el
envi de eventos syslog, requiere de la instalacin de una red alterna entre el
dispositivo y un equipo con syslog-ng, que se llamara equipo puente.
Configuramos el dispositivo para enviar sus eventos syslog al equipo puente
que debe estar configurado para reenviar dentro del el esquema TCP sobre
SSH, los eventos hasta el servidor.
La configuracin del dispositivo depende de la maraca y el modelo.
Este es un ejemplo de cmo configurar un Router Cisco para enviar sus logs al
equipo puente que en la red alterna tiene una direccin IP a.b.c.d
Se debe estar en modo privilegiado y en configuracin:
Router#configure terminal
Router(config)#logging a.b.c.d

El equipo puente deber estar ubicado lo ms cerca posible al dispositivo lo


que fortalecer la seguridad en ese fragmento de red, en el que la seguridad
est basada en seguridad fsica.
Tambin es muy importante configurar un firewall de host en el equipo puente
para que la red alterna sea usada ESTRICTAMENTE para el envo de los
mensajes syslog de el(los) dispositivos, pues podria resultar esta red como un
hueco de seguridad por el cual se violen otras polticas de seguridad.
Ya que el equipo puente pasar a ser un equipo de la red, tambin es
necesario considerarlo como un cliente y recoger sus eventos tambin.
2.5.4.1.

Configuracin de equipo puente.

La configuracin del equipo puente que ingresa los logs de un dispositivo que
solo es capaz de enviar mensajes en formato UDP RFC 3164, es muy similar a
las de un equipo cliente Linux/UNIX
A continuacin se presenta el archivo de configuracin:
/usr/local/etc/syslog-ng.conf
options {
check_hostname(yes);
keep_hostname(yes);
chain_hostnames(no);
};
source entradas {
udp();
internal();
unix-stream("/dev/log");
};
destination remote {
tcp("127.0.0.1" port(5014); );
};
log { source(inputs); destination(remote); };
A diferencia del archivo de configuracin, el procedimiento de instalacin y
configuracin de este equipo es igual que el de un equipo cliente UNIXlike.

2.6.

DEFINICION DE PROCEDIMIENTO PARA COPIAS DE


RESPALDO

Es importante dentro de la organizacin la creacin de polticas que definan


responsables y dueos de la informacin recopilada a travs de esta
infraestructura.
Con fines forenses, la informacin recolectada en forma de registros de
eventos podra ser usada en un futuro, lo cual nos obliga a guardar respaldos
para la posteridad.
El diseo de los procedimientos que permitan llevar a cabo estas polticas
debera tener en cuenta la consulta de esta informacin pues en ocasiones se
guardan copias de respaldo pero no existen mecanismos que permitan la
recuperacin de estas copias de respaldo. Esto inhabilita el uso de ellas.

2.7.

AUDITORIAS A LA INFRAESTRUCTURA

Es necesario realizar auditorias muy bien documentadas que permitan validar


el buen funcionamiento del sistema generador de los registros de eventos. Esto
ayudar al fortalecimiento de pruebas a la hora de poder ser usadas como
evidencia.

También podría gustarte