Sitio para la difusión de conocimiento informático. 

Twitter RSS

Prelude SIEM en RedHat RHEL

Instalando Prelude SIEM en RedHat RHEL

En internet hay varios ejemplos de como llevar a cabo la instalación de Prelude y sus plug-in. Este es solo un ejemplo más en el cual se muestra una instalación completa de Prelude. En este ejemplo se asume que ya se encuentra configurado y colectando información el proceso Syslog-ng o rSyslog, y SNMPtrapd (más adelante publicaremos posts para indicar como configurar el servicio syslog, y snmptrapd).
.

Indice
.
1.1 Preparamos el Sistema Op. en el que instalaremos Prelude
1.2 Descargamos Prelude
1.3 Instalamos Prelude
1.4 Configurar Mysql
1.5 Configuramos Prewikka
1.6 Configuración de Prelude-Manager
1.7 Configuración de Prelude-lml
1.8 Configuración de Prelude-Correlator
2.1 Finalizando la Instalación
.
.
1.1 Preparamos el Sistema Op. en el que instalaremos Prelude
.
.  Instalar:
.    snmptrapd
.    Apache
.    Mysql – Servidor, Cliente, Devel.
.    Perl
.    PHP – módulo de PHP para Mysql y Apache.
.    Python – Devel, módulo de Python para HTTPD
.    Ruby
.    PCRE
.    Rsyslog
.    NTP
.    mod_ssl.i686
.
. Configurar:
.   Servicio NTP.
.   Servicio Rsyslog: para los dispositivos de red que enviaran eventos a Prelude.
.   Logrotate.d: para rotar y comprimir los logs del paso anterior.
.   Snmptrapd: con las siguientes opciones de inicio «-Ls 20 -Osq».
.   Registrar el servidor en RedHat y actualizarlo.
.
.
.
1.2 Descargamos Prelude
.
.  Para instalar Prelude en RedHat RHEL debemos descargar los SRC RPMs del link: «http://rpm.pbone.net/»:
.
.    libprelude-1.0.0-11.fc17.src.rpm
.    prelude-lml-1.0.0-6.fc18.src.rpm
.    prewikka-1.0.0-4.fc17.src.rpm
.    libpreludedb-1.0.0-10.fc17.src.rpm
.    prelude-correlator-1.0.0-4.fc17.src.rpm
.    prelude-manager-1.0.1-3.fc17.src.rpm
.    mod_python-2.7.6-1.src.rpm
.
.
.
1.3 Instalamos Prelude
.
.  Pasamos a copilar los RPMs. Durante este proceso nos devolverá error en los caso que tengamos dependecias sin cumplir. Para el .   caso del paquete «prelude-manager», requiere tener instaladas las librerías de prelude.
.
.        rpmbuild –rebuild «nombre.src.rpm»
.
.  Finalizada la creación de los paquetes RPMs, los mismos quedaran en la carpeta «/root/rpmbuild/RPMS/$arquitectura/» y procedemos  a instalar los mimos. En caso de haber dependencias sin cumplir, nos desplegará la dependencias faltante y procedemos a instalarla con yum. Para instalar cada RPM generado ejecutamos el siguiente comando:
.
.        rpm -ivh «nombre.rpm».
.
.
1.4 Configurar Mysql
.
.  Nos logueamos como root a mysql: «mysql -u root -p».
.
.     Creamos los usuarios, las bases y asignamos los permisos:
.        CREATE USER ‘prelude’@’localhost’ IDENTIFIED BY ‘password’;
.        CREATE USER ‘prewikka’@’localhost’ IDENTIFIED BY ‘password’;
.        create database prelude;
.        create database prewikka;
.        GRANT ALL PRIVILEGES ON prelude.* TO ‘prelude’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
.        GRANT ALL PRIVILEGES ON prewikka.* TO ‘prewikka’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
.        SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
.
.    Modificamos/Agregamos las siguientes líneas en el archivo de configuración de MySQL, para no tener problemas con el crecimiento de la base de datos de prelude. Los datos utilizados en las siguientes líneas es a modo de ejemplo:
.        innodb_data_home_dir=/var/lib/mysql/
.        innodb_data_file_path=ibdata1:1024M;ibdata2:1024M;ibdata3:1024M;ibdata4:1024M;ibdata5:5M:autoextend
.        innodb_table_locks=0
.        innodb_file_per_table=1
.        innodb_buffer_pool_size=1GB # USE ALL MEMORY AVAILABLE
.        innodb_log_buffer_size=8M # Lowered from 32M according to [[MySQL]]
.        innodb_additional_mem_pool_size=20M
.
.
.    Importamos las bases de datos:
.
.        mysql -u root -p prewikka < /usr/share/prewikka/database/mysql.sql
.        mysql -u root -p prelude < /usr/share/libpreludedb/classic/mysql.sql
.
.        Convertimos todas las tablas a InnoDB para poder liberar espacio cuando borremos elementos viejos. Para esto usamos el comando «ALTER TABLE TABLE_NAME ENGINE=InnoDB;» o podemos usar el sigueinte for en cli:
.        for i in $(mysql -u root -pPASSWORD -e «use prelude; show tables;» | tr -d «|» | grep -v «Tables_in_prelude»); do mysql -u root -pPASSWORD -e «use prelude; ALTER TABLE $i ENGINE=InnoDB;»; done
.
.    Agendamos la tarea para la depuración de la base (en este ejemplo es de un mes), primero creamos el siguiente scritp:
.
.        «vi /etc/prelude-manager/prelude-delete.sh»
.        #!/bin/sh
.        DATE=$(date -d «last week» +»%Y-%m-%d»)
.        preludedb-admin delete alert «type=mysql name=prelude user=prelude pass=password» –criteria «alert.create_time < $DATE»
.        preludedb-admin delete heartbeat –criteria «heartbeat.create_time <= $DATE» «type=mysql name=prelude user=prelude pass=password»
.
.    Le damos permisos de ejecución:
.        chmod 755 /etc/prelude-manager/prelude-delete.sh
.
.
.    Lo agregamos al Crontab del usuario root:
.        crontab -e
.        0 0 * * * /etc/prelude-manager/prelude-delete.sh
.        0 6 * * * /usr/bin/mysqlcheck –all-databases –optimize -uroot -ppassword
.
.
.    Agregamos el Usuario/Contraseña, tipo y nombre de la base de datos para Prelude y Prewikka en cada archivo
.    de configuración:
.        Prewikka: editamos el siguiente archivo «/etc/prewikka/prewikka.conf» y agregamos:
.
.            dns_max_delay: -1  #(que no nombres)
.            [interface]
.            software: Prewikka
.            place: «Nombre de la Empresa»
.            title: «Nombre de la Consola».
.
.            [idmef_database]
.            type: mysql
.            host: localhost
.            user: prelude
.            pass: password
.            name: prelude
.
.            [database]
.            type: mysql
.            host: localhost
.            user: prewikka
.            pass: password
.            name: prewikka
.
.        Prelude: editamos el siguiente archivo «/etc/prelude-manager/prelude-manager.conf» y agregamos:
.            [db]
.            type = mysql
.            host = localhost
.            port = 3306
.            name = prelude
.            user = prelude
.            pass = password
.
.
.
1.5 Configuramos Prewikka
.
.
. Editar el archivo de configuración de Apache /etc/httpd/conf.d/ssl.conf, y agregamos lo siguiente:
.
.            ServerName prelude-siem
.            EnableSendfile off
.
.            DocumentRoot /var/www/html
.            <Directory />
.                    Options FollowSymLinks
.                    AllowOverride None
.            </Directory>
.            <Directory /var/www/html>
.                    Options Indexes FollowSymLinks MultiViews
.                    AllowOverride None
.                    Order allow,deny
.                    allow from all
.            </Directory>
.
.            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
.            <Directory «/usr/lib/cgi-bin»>
.                    AllowOverride None
.                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
.                    Order allow,deny
.                    Allow from all
.            </Directory>
.
.            ErrorLog /var/log/httpd/error.log
.            LogLevel warn
.            CustomLog /var/log/httpd/access.log combined
.
.            <Location «/prelude»>
.                    SetHandler mod_python
.                    PythonHandler prewikka.ModPythonHandler
.                    PythonOption PrewikkaConfig /etc/prewikka/prewikka.conf
.            </Location>
.
.            <Location «/prewikka»>
.                    SetHandler None
.            </Location>
.
.    Alias /prewikka/ /usr/share/prewikka/htdocs/
.    ScriptAlias /prewikka /usr/share/prewikka/cgi-bin/prewikka.cgi
.
.
.
.  Editar el archivo de configuración de Apache /etc/httpd/conf/httpd.conf, y agregamos lo siguiente:
.
.    ServerName «Nombre del Servidor»
.
.
.  Instalar librería de Python para Apache:
.
. Creamos el archivo de configuración para el repositorio:
. vi /etc/yum.repos.d/naulinux-school.repo
.
. Agregamos el siguiente contenido:
. [naulinux-school]
. name=NauLinux School
. baseurl=http://downloads.naulinux.ru/pub/NauLinux/6.2/$basearch/sites/School/RPMS/
. enabled=0
. gpgcheck=1
. gpgkey=http://downloads.naulinux.ru/pub/NauLinux/RPM-GPG-KEY-linux-ink
.
. Instalamos el paquete rpm mod_python:
. yum –enablerepo=naulinux-school install mod_python
.
.
.
.  Reiniciamos Apache: /etc/init.d/httpd restart
.
.
.  Editamos el siguiente archivo «/etc/prewikka/prewikka.conf» y verificamos el ususario admin por defecto
.
.        [auth loginpassword]
.        initial_admin_user: admin
.        initial_admin_pass: admin
.
.  Probamos de ingresar a Prewikka: https://ip_servidor_prelude/prelude
.
.
.  Una vez que nos logueamos con el usuario por defecto vamos a «Settings -> User listing» y creamos un
.    nuevo usuario administrador. Verificamos el acceso con dicho usuario y luego cometamos las líneas
.    que hacer referencia al usuario «admin» en el archivo de configuración de prewikka.
.
.
.  Debemos otorgar permisos de escritura para el usuario que corre Apache en el sigueinte directorio para
.    las estadísticas de Prewikka: /usr/share/prewikka/htdocs/generated_images/.
.    Es probable que haya que crear la política en SELINUX
.
.
.
.
1.6 Configuración de Prelude-Manager
.
.  Creamos el perfíl de Prelude-Manager y luego lo iniciamos:
.         prelude-admin add «prelude-manager» –uid 0 –gid 0
.         /etc/init.d/prelude-manager start
.
.
.  Comenzamos a registrar prelude-lml y prelude-correlator.
.    Prelude-lml:
.    Debemos abrir dos terminal:
.        Termianl A: prelude-admin registration-server prelude-manager
.        Terminal B: prelude-admin register “prelude-lml” “idmef:w” 127.0.0.1 –uid 0 –gid 0
.
.    Demorará varios minustos durante la generación de las claves. Luego ingresamos la contraseña generada
.    en el terminal A, en el B, y aceptamos el acceso en el terminal A.
.
.    Prelude-Correlator:
.    Debemos abrir dos terminal:
.        Termianl A: prelude-admin registration-server prelude-manager
.        Terminal B: prelude-admin register “prelude-correlator” “idmef:rw” 127.0.0.1 –uid 0 –gid 0
.
.    Demorará varios minustos durante la generación de las claves. Luego ingresamos la contraseña generada
.    en el terminal A, en el B, y aceptamos el acceso en el terminal A.
.
.
.
1.7 Configuración de Prelude-lml
.
.  Editamos el archivo de confgiguración de prelude-lml (/etc/prelude-lml/prelude-lml.conf) y agregamos los logs
.    del los dispositivos de red que nos enviarán eventos y ya configuramos previamente en Rsyslog bajo la sección
.    [format=syslog] agrego la siguiente línea: «file = /var/log/security/*.log»
.
.
.
1.8 Configuración de Prelude-Correlator
.
.
.  Debemos crear un script para descarga la base de fimas de IPs en listas negras:
.
.        link: http://www.dshield.org/ipsascii.html?limit=10000
.        archivo: /var/lib/prelude-correlator/dshield.dat
.
.        link: http://list.iblocklist.com/?list=sh_drop&fileformat=dat&archiveformat=txt
.        archivo: /var/lib/prelude-correlator/spamhaus_drop.dat
.
.        Creo el siguiente archivo: /etc/prelude-correlator/download_drop_databases.sh
.
.            #!/bin/bash
.
.            cd /var/lib/prelude-correlator/
.            export http_proxy=»http://ip_proxy:puerto»
.
.                    #Download Dshield database:
.                    wget -O /tmp/dshield.dat -q http://www.dshield.org/ipsascii.html?limit=10000
.                    if [ -f /tmp/dshield.dat ] && [ -s /tmp/dshield.dat ];
.                            then
.                                    mv /tmp/dshield.dat /var/lib/prelude-correlator/dshield.dat
.                                    echo «OK» > /tmp/Download-DSHIELD
.                            else
.                                    echo «ALARM» > /tmp/Download-DSHIELD
.                    fi
.
.                    #Download Spamhaus database:
.                    wget -O /tmp/spamhaus_drop.dat -q http://www.spamhaus.org/drop/drop.lasso
.                    if [ -f /tmp/spamhaus_drop.dat ] && [ -s /tmp/spamhaus_drop.dat ];
.                            then
.                                    mv /tmp/spamhaus_drop.dat /var/lib/prelude-correlator/spamhaus_drop.dat
.                                    echo «OK» > /tmp/Download-SPAMHAUS
.                            else
.                                    echo «ALARM» > /tmp/Download-SPAMHAUS
.                    fi
.
.
.        Le doy permisos de ejecución y lo agrego al crontab del usuario root para que corra cada una hora:
.            chmod 777 /etc/prelude-correlator/download_drop_databases.sh
.            0 * * * * /etc/prelude-correlator/download_drop_databases.sh
.
.
.  En el archivo de configuración verificamos que estén habilitados dichos plugins: /etc/prelude-correlator/prelude-correlator.conf
.
.
.
.  Para habilitar la información geográfica por ip seguir estos pasos:
.
.        Descargamos los paquetes python-GeoIP-1.2.5-0.2.20090931cvs.el6.src.rpm, y GeoIP-1.4.7-3.1.2.src.rpm de este link .»http://rpm.pbone.net/».
.        Lo copilamos «rpmbuild –rebuild GeoIP-1.4.7-3.1.2.src.rpm »
.        Nos creará los archivos RPMs en el directorio /root/rpmbuild/RPMS/$arquitectura/
.
.        Los instalamos: rpm -ivh «nombredelpaquete.rpm»
.
.
.        wget http://www.dotlike.net/ddl//prj_count.php?d=2 -O portscangeoipinfo.tar.gz
.        gunzip portscangeoipinfo.tar.gz
.        tar -xvf portscangeoipinfo.tar
.        cd portscangeoinfo/
.
.        python setup.py build
.        python setup.py install
.
.        agregamos lo siguiente en el archivo de configruación:
.             [PortscanGeoinfoPlugin]
.              disable = false
.
.        mkdir -p /usr/share/GeoIP
.        cd /usr/share/GeoIP/
.
.        Descarga e instalación base datos GeoLiteCity:
.            wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
.
.        y descomprimimos gunzip GeoLiteCity.dat.gz
.
.
.
.  Iniciamos Prelude-Correlator: /etc/init.d/prelude-correlator start
.
.
.  Creamos el siguiente script para luego ejecutarlo una vez al mes:
.
.        #!/bin/bash
.
.        cd /var/lib/prelude-correlator/
.        export http_proxy=»http://ip_proxy:puerto»
.
.                #Download GeoIP.dat:
.                wget -O /tmp/GeoIP.dat.gz -q www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
.                if [ -f /tmp/GeoIP.dat.gz ] && [ -s /tmp/GeoIP.dat.gz ];
.                        then
.                                gunzip /tmp/GeoIP.dat.gz
.                                mv /tmp/GeoIP.dat /usr/share/GeoIP/GeoIP.dat
.                                echo «OK» > /tmp/Download-GeoIP
.                        else
.                                echo «ALARM» > /tmp/Download-GeoIP
.                fi
.
.                #Download GeoLiteCity:
.                wget -O /tmp/GeoLiteCity.dat.gz -q www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
.                if [ -f /tmp/GeoLiteCity.dat.gz ] && [ -s /tmp/GeoLiteCity.dat.gz ];
.                        then
.                                mv /tmp/GeoLiteCity.dat /usr/share/GeoIP/GeoLiteCity.dat
.                                echo «OK» > /tmp/Download-GeoLiteCity
.                        else
.                                echo «ALARM» > /tmp/Download-GeoLiteCity
.                fi
.
.         chmod 777 /etc/prelude-correlator/download_drop_GeoIP.sh
.         Crontab: 0 * 10 * * /etc/prelude-correlator/download_drop_GeoIP.sh
.
.
.
2.1 Finalizando la Instalación
.
.  Agregamos al inicio del sistema los servicios de Prelude, NTP, HTTPD, y Mysql:
.        chkconfig «nombre_del_servicio» on
.
.  Reiniciamos y verificamos que inicie correctamente Prelude y los demás servicios.

 
Home Linux OS Prelude SIEM Prelude SIEM en RedHat RHEL