Tabla de contenido
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.
Para ejecutar el sistema debemos seguir una serie de pasos, para que el sistema funcione correctamente.
- 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
sudo yum install python3
Si python3 no les trae incluido pip3
sudo yum install python3-pip
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
Instalamos cron
sudo yum install cronie
Necesitamos instalar algunos modulos y hacer algunas configuraciones en nuestro sistema.
- 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
-
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
- 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
-
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
-
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>');
- Entramos de nuevo al usuario de postgres y abrimos postgres
-
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
-
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
- Pagina de logeo
- Pagina de herramientras
Annia Levko - annialevko@hotmail.com
Erik Wasmosy - erikwasmosy98@gmail.com
Project Link: https://github.com/AnniaLevko/hips