Avoid ARP requests RHEL/CentOS/SL

Avoid ARP requests RHEL/CentOS/SL

To avoid send or receive arp request we can use arptables, this tool is very similar to iptables

Install arptables

yum install -y arptables

Avoid send ARP requests to specific host

As iptables in arptables you can use -d flag to determine destination.

And if we want to create a rule for the arp packages we send, we must use OUTPUT chain

Example, to avoid sending request to 192.178.1.1:

arptables -A OUTPUT -d 192.178.1.1 -j DROP

Avoid receive ARP requests from specific host

As iptables in arptables you can use -s flag to determine source.

An if we want to create a rule for the arp packages we receive, we must use INPUT chain

Example, to avoid receive request to 192.178.1.1:

arptables -A INPUT -s 192.178.1.1 -j DROP

To make those changes persistents, we must save configuration:

arptables-save  > /etc/sysconfig/arptables

then start and enable arptables service

service arptables start
 
chkconfig arptables on

Configurar Logstash para que obtenga datos de una base de datos SQL

Configurar Logstash para que obtenga datos de una base de datos SQL

En caso de que necesitemos que nuestro logstash obtenga datos de una base de datos lo podemos hacer utilizando el plugin logstash-input-jdbc para establecer la conexión y ejecutar las consultas directamente desde nuestro logstash

El plugin logstash-input-jdbc

Este plugin nos permite configurar como input de logstash cualquier fuente a la que se puede acceder con Java JDBC

En este tutorial configuraremos logstash para que acceda a una base de datos MySQL/MariaDB, luego ejecute una consulta SQL, una vez que reciba los datos los mismos pueden ser tratados con cualquier filtro que tengamos definido en nuestro logstash

Este turorial esta basado en:

S.O. : CentOS 7.2
Logstash : 5.0

Obtener el driver JDBC

Lo primero que tenemos que hacer es obtener el driver JDBC a utilizar, en este caso lo podemos descargar de https://dev.mysql.com/downloads/connector/j/, una vez que descarguemos el .zip debemos copiar el .jar que se encuentra dentro del mismo a nuestro servidor logstash a la ruta /etc/logstash/jdbc/mysql-connector-java.jar

mkdir /etc/logstash/jdbc
chown -R logstash /etc/logstash/jdbc
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.40.zip
unzip mysql-connector-java-5.1.40.zip
mv mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /etc/logstash/jdbc/mysql-connector-java.jar

Con esto tendremos listo nuestro driver JDBC, ahora podemos comenzar a configurar el logstash

Instalar y configurar el plugin logstash-input-jdbc

Para instalar el plugin debemos ejecutar el siguiente comando:

/usr/share/logstash/bin/logstash-plugin install logstash-input-jdbc

Una vez instalado el plugin debemos configurar el input de logstash, para esto creamos el archivo /etc/logstash/conf.d/01-mysql-jdbc.conf

vi /etc/logstash/conf.d/01-mysql-jdbc.conf
input {
   jdbc {
    # Ruta del driver JDBC que utilizaremos
    jdbc_driver_library => "/etc/logstash/jdbc/mysql-connector-java.jar"
    # Clase a utilizar (consultar documentacion del driver)
    jdbc_driver_class => "com.mysql.jdbc.Driver"            
    # URl de la conexion a base de datos, deben reemplazar el host y el nombre de la BD
    jdbc_connection_string => "jdbc:mysql://host:3306/basededatos"
    # Usuario con el cual se conectara a la BD
    jdbc_user => "user"
    # Password del usuario
    jdbc_password => "pass"
    # Activa la opcion para utilizar el nombre de las columnas como nombre del campo
    use_column_value => "true"
    # Define que columna se utilizara para hacer el seguimiento de las consultas
    tracking_column => "fecha"
    # Se activa la opcion de registrar la última consulta
    record_last_run => "true"
    # Ruta donde se guardara un registro de la última consulta
    last_run_metadata_path => "/etc/logstash/jdbc/registro_volmap_last_run"
    # Consulta SQL, la variable :sql_last_value se reemplaza por el ultimo valor obtenido de la columna que se definio en tracking_column
    # con esto evitamos que logstash reciba datos repetidos, debido a que filtra los valores que se crearon luego de la última vez que
    # el consulto
    statement => "SELECT fecha, monto FROM ventas WHERE fecha > :sql_last_value"  
    # Desactiva la opcion de ejecutar una consulta como si fuese la primera vez siempre
    clean_run => "false"
    # Podemos definir los tags que tendran los datos recolectados
    tags => "mysql-jdbc"
    # Agendamos la ejecucion en formato crontab
    # Para que se ejecute cada 1 minuto: * * * * *
    schedule => "* * * * *"
   }
}

Una vez que guardamos en caso de que tengamos configurado nuestro logstash con autoreload veríamos en unos minutos que se ejecuta la consulta en el log /var/log/logstash/logstash-plain.log

C