/hips

Primary LanguagePython


Logo

Sistema de prevencion y deteccion de intrusos

Tabla de contenido
  1. Acerca del proyecto
  2. Comenzando
  3. Uso
  4. Contacto

Acerca del proyecto

Este sistema fue creado para la asignatura "Sistema Operativos 2", con el fin de adquirir conocimientos sobre la importancia de tener un servidor seguro para evitar perder informacion importante.

En nuestro sistema de deteccion y prevencion de intrusos cubrimos ciertas partes de un sistema que podrian ser vulneradas por una persona. Citando algunas funciones que tiene nuestro sistema:

  • Verificar las modificaciones realizadas en el archivo /etc/passwd y /etc/shadow.
  • Verificar los usuarios conectados y su ip.
  • Chequear sniffers.
  • Examinar algunos archivos log.
  • Verificar el tamanho de la cola mails del equipo.
  • Verificar el consumo de recursos por parte de los procesos.
  • Verificar directorio /tmp de archivos sospechos como scripts.
  • Controlar ataques DDOS.
  • Examinar archivos que estan ejecutandose como cron.
  • Verificar intentos de accesos no validos.

Construido con

Comenzando

Para ejecutar el sistema debemos seguir una serie de pasos, para que el sistema funcione correctamente.

Pre requisitos

  • Estar logeado como usuario root o usuario con privilegios sudo
  • Correr en un sistema de Centos 8
  • Utilizar Python3 (no otras versiones)

Para la instalacion del sistema necesitamos instalar varias herramientas

python3

sudo yum install python3

Si python3 no les trae incluido pip3

pip3

sudo yum install python3-pip

PostgreSQL

Para la base de datos de nuestro sistema, necesitamos instalar y configurar postgresql

sudo yum install postgresql
sudo yum install postgresql-server

Creamos un nuevo cluster de la base de datos PostgreSQL

sudo postgresql-setup --initdb

Inciamos el servicio de postgres y habilitamos:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Crontab

Instalamos cron

sudo yum install cronie

Instalacion

Necesitamos instalar algunos modulos y hacer algunas configuraciones en nuestro sistema.

Instalar Modulos de python3:

  • flask
    pip3 install --user flask
  • dotenv
    pip3 install --user python-dotenv
  • flask-bootstrap
    pip3 install --user flask_bootstrap
  • flask-wtf
    pip3 install --user flask_wtf
  • flask_sqlalchemy
    pip3 install --user flask_sqlalchemy
  • flask-login
    pip3 install --user flask_login
  • psycopg2
    pip3 install --user psycopg2

Base de datos PostgreSQL

  • Cambiamos a la cuenta de postgres, para hacer algunas configuraciones

    sudo -i -u postgres
  • Creamos un nuevo rol para root

    create user root with password '<BD_ROOT_PASSWORD>';
  • Le asignamos los permisos necesario a root

    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO root;
  • Creamos una nueva base de datos llamada hips2021

    createdb hips2021
  • Cambiamos el duenho de hips2021 a root

    alter database hips2021 owner to root

Configuracion iptables

  • Paramos el servicio de firewalld service
    sudo systemctl stop firewalld
  • Deshabilitamos el servicio de firewalld
    sudo systemctl disable firewalld
  • 'Maskeamos' el servicio de firewalld para que otro programa no lo invoque
    sudo systemctl mask --now firewalld
  • Instalamos iptables
    sudo yum install iptables-services -y
  • Comenzamos el servicio iptables
    sudo systemctl start iptables 
    sudo systemctl start ip6tables
  • Habilitamos el servicio para empezar
    sudo systemctl enable iptables
    sudo systemctl enable ip6tables
  • Chequeamos el estado del servicio iptables
    sudo systemctl status iptables 
    sudo systemctl status ip6tables

Variable de entorno

  • Necesitamos crear un archivo .env en el directorio de nuestro proyecto hips, para esconder nuestras contrasenhas de la base de datos, nuestro email de hips, el email del administrador, etc

    [root@localhost hips] vi .env

    Y Adjuntamos estos Valores

    BD_PASSWORD=<La_contrasenha_de_root>
    BD_USER=root
    SECRET_KEY=<Cualquier_palabra_podes_escribir_aca_es_solo_para_alg_de_flask>
    MY_HIPS_EMAIL=<gmail_del_hips>
    MY_HIPS_EMAIL_PASSWORD=<contrasenha_del_gmail_del_hips>
    MAIL_HIPS_ADMIN=<email_del_administrador_de_hips>

    guardamos el archivo.

    Cambiamos los permisos del archivo, para que solo root pueda usar

    [root@localhost hips] chmod 700 .env

Generar contrasenha hash para el administrador del hips

  • Ejecutamos una vez el servidor de hips (solo para que se cree automaticamente las tablas en la base de datos hips)

    [root@localhost hips] python3 server.py

    y apagamos el server

    control + c

    Corremos con python3 el archivo borrar.py que se encuentra en el directorio del proyecto para generar una contrasenha encriptada para un usuario del hips

    [root@localhost hips] python3 borrar.py

    Ingresas la contrasenha del administrador que va a usar el hips, dale a enter y copiamos la contrasenha encriptada que imprime en consola

    Pasamos a cargar el administrador de hips en la base de datos:

    • Entramos de nuevo al usuario de postgres y abrimos postgres
      psql
    • Seleccionamos la base de datos hips2021
      postgres=$ \c hips2021
    • Insertamos el usuario/administrador en la tabla de users el administrador que va a ingresar al sistema hips2021
      hips2021=$ INSERT INTO users (username, password) values ('<username_admin>', '<contrasenha_encriptada_que_copiamos>');

Crear Carpetas necesarias

  • En el directorio del projecto hips, necesitamos crear varias carpetas que se usan para almacenar resultados, estos resultados se leen y se borran una vez mostrado en la pagina web.

      [root@localhost hips] mkdir ./resultados
      [root@localhost hips] mkdir ./resultados/base_de_datos
      [root@localhost hips] mkdir ./resultados/cola_correo
      [root@localhost hips] mkdir ./resultados/sniffers
      [root@localhost hips] mkdir ./resultados/usuarios
      [root@localhost hips] mkdir ./resultados/verificar_logs
      [root@localhost hips] mkdir ./resultados/verificar_procesos
      [root@localhost hips] mkdir ./resultados/verificar_tmp

    Creamos directorios para guardar los archivos a cuarentena

    mkdir /cuarentena
    mkdir /cuarentena/sniffer_tools
    mkdir /cuarentena/tmp_scripts

Crear directorios para archivos log

  • Para guardar los registros de alarmas y prevenciones debemos primero crear los directorios donde se almacenaran estos mismos.

    Creamos el directorio

      mkdir /var/log/hips

    Creamos los archivos dentro de /var/log/hips

      touch /var/log/hips/alarmas.log
      touch /var/log/hips/prevencion.log

Uso

  • Pagina de logeo

Logo

  • Pagina de herramientras

Logo

Contacto

Annia Levko - annialevko@hotmail.com

Erik Wasmosy - erikwasmosy98@gmail.com

Project Link: https://github.com/AnniaLevko/hips