HIPS desarrollado con Python y Flask para SO2 - 2021. Desarrollado por Adrian Ramirez.
Funcionalidades:
- Determinar cambios en los archivos /etc/passwd y /etc/shadow a traves de md5sum.
- Revisar usuarios conectados en el servidor.
- Revisar si el servidor se encuentra en modo promiscuo.
- Determinar errores de autenticacion en el directorio /var/log/secure.
- Determinar errores de acceso indebido desde el servidor web.
- Revisar el directorio /tmp en busca de scripts y shells.
- Revisar errores de ingreso de conexion via SSH.
- Revisar archivos que se encuentran en cron.
Como medidas preventivas cuenta con:
- Enviar archivos a cuarentena.
- Bloquear IP's.
- Forzar cierre de procesos (kill).
Cuando ocurre una alerta o se realiza una medida preventiva se avisa al administrador via email y tambien se registran en los logs alarmas.log y prevencion.log
Para que funcione el HIPS se necesitan de algunas librerias y configuraciones previas. Este proceso se realizo en una distribucion Linux - CentOS 8.
En la consola ejecutamos el comando: sudo yum install python3 -y
En la consola ejecutamos el comando: sudo yum install python3-pip -y
En la consola ejecutamos los siguientes comandos, en el mismo orden:
sudo dnf install -y <https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm>
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql13-server
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13Para instalar: https://linuxize.com/post/how-to-install-iptables-on-centos-7/
Para este trabajo creamos un entorno virtual en la cual instalamos las librerias Python utilizadas, para hacerlo: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-centos-8-es
Asegurarse de tener activado el entorno virtual, luego para instalar una libreria : python pip install [libreria]
Las siguientes librerias necesitan ser instaladas:
- psycopg2
- flask
- flask-login
- flask_sqlalchemy
Para esto realizar los siguientes comandos:
sudo su postgres
psqlALTER USER "postgres" WITH password '[constrasena_nueva];Para que funcione nuestro HIPS la base de datos debe estar configurada de antemano, asi como las tablas, para ello dentro del psql ejecutamos los siguientes comandos:
CREATE DATABASE hipso2;
\c hipso2
CREATE TABLE md5sum (file varchar, num_hash varchar);
CREATE TABLE login (id integer, username varchar(30), password varchar(30));
CREATE TABLE sniffer (name varchar(30));Cargamos los datos relacionados al usuario y los programas peligrosos (lista abajo):
- solarwinds
- prtg
- manageengine
- omnipeek
- tcpdump
- windump
- wireshark
- fiddler
- netresec
- capsa
- ethereal
INSERT INTO login (id, username, password) VALUES (num_id, 'username', 'password')
INSERT INTO sniffer (name) VALUES ('solarwinds'),('prtg'),('manageengine'),('omnipeek'),('tcpdump'),('windump'),('wireshark'),('fiddler'),('netresec'),('capsa'),('ethereal');Para que funcione correctamente debemos cambiar el metodo de autenticacion a MD5, para ello ejecutamos los siguientes comandos:
sudo su postgres
nano /var/lib/pgsql/13/data/pg_hba.conf
Realizamos los siguientes cambios:
- local all all peer -> local all all md5
volvemos a root: exit y reiniciamos el servidor de PostgreSQL: sudo systemctl restart postgresql-13.service
En la consola, accedemos al entorno y ejecutamos el archivo pre_config.py, que contiene configuraciones previas que son necesarias para que funcione el HIPS:
python pre_config.py
En el archivo secret.ini.example se tiene una plantilla para completar con informacion sensible de la base de datos y del administrador, asegurese de que el archivo se llame secret.ini ya que el mismo esta listado en el .gitignore
Por ultimo asegurese que estan corriendo los servicios httpd y SSH, en caso de con contar con httpd:
sudo yum install httpd
sudo systemctl start httpd
sudo systemctl start ssh
Asegurarse de encontrarse en el usuario root, en caso contrario ejecute el siguiente comando:
su root
Por ultimo, en la consola, estando dentro del entorno virtual ejecute el programa server.py y en el navegador escriba localhost:5000 y ya encontraria su HIPS funcionando, apareciendo el login.