Está en la página 1de 12

UNIVERSIDAD LUTERANA SALVADOREÑA 

FACULTAD DE CIENCIAS DEL HOMBRE Y LA NATURALEZA 


LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN 

Estudiantes:

Francisco Alberto Hernández Reyes - HR01135797


José Antonio Centeno Espinoza - CE01134981
Raul Ernesto Mendoza Herrera - MH011333312
Reynaldo Adolfo Tarrés Marroquín - TM01134497

Asignatura:
Seguridad informática.

Docente:
Ing. Eduardo Chachagua Alfaro.

Tema en desarrollo:
Investigación para la instalación y configuración de ModSecurity.

FECHA DE ENTREGA:
12 de mayo de 2023
Desarrollo.

El aumento en el uso de aplicaciones web ha llevado a un aumento en los ataques


malintencionados dirigidos a estas aplicaciones. Los ataques más comunes
incluyen inyecciones SQL, ataques de fuerza bruta y XSS. La falta de seguridad
adecuada en las aplicaciones web puede llevar a la pérdida de datos
confidenciales, la interrupción del servicio y la reputación de la empresa.
ModSecurity fue creado para abordar estos problemas y proporcionar una capa
adicional de seguridad para las aplicaciones web.
ModSecurity es un firewall de aplicaciones Web embebible que ejecuta como
módulo del servidor web Apache, provee protección contra diversos ataques hacia
aplicaciones Web y permite monitorizar tráfico HTTP, así como realizar análisis en
tiempo real sin necesidad de hacer cambios a la infraestructura existente. Este
módulo en el nivel de aplicación forma una capa de seguridad y en la
comunicación HTTP actúa como firewall. Al mismo tiempo analiza las peticiones
HTTP, puede ser en la propia URL o a su vez mediante el método POST que se
encarga de buscar los patrones que han sido definidos por el usuario, con el
objetivo de evitar ataques de inyección SQL

El módulo Modsecurity permite la colaboración de otros módulos de Apache con


el objetivo de fortalecer y reducir los ataques.

Fue desarrollado en 2002 por Ivan Ristic, un experto en seguridad informática. El


objetivo principal era crear un sistema de seguridad de aplicaciones web que
fuera eficiente y fácil de usar. En 2006, ModSecurity se convirtió en un proyecto
de código abierto y se incluyó como un módulo en Apache.

Los objetivos principales de ModSecurity son:


1. Proteger las aplicaciones web de ataques malintencionados como
inyecciones SQL, ataques de fuerza bruta, cross-site scripting (XSS), entre
otros.
2. Proporcionar una plataforma de seguridad flexible y fácil de configurar que
se integre con el servidor Apache.
3. Permitir la creación de reglas personalizadas para la detección de ataques
específicos.
4. Proporcionar información detallada sobre los ataques detectados para su
posterior análisis.
ModSecurity en Apache permite a los administradores de servidores web detectar
y prevenir ataques malintencionados de manera efectiva, sin necesidad de
modificar el código de las aplicaciones. Además, ofrece la flexibilidad necesaria
para adaptarse a diferentes necesidades de seguridad.
Para la realización de esta investigación es necesario la instalación de:

• Rocky Linux 9.
• Servidor Web Apache.
• Configuración de FQDN.
• Instalación del CMS wordpress.
• Configuración del modulo ModSecuriry

Es por eso que hemos tomado la decisión de elaborar una guía para la ejecución
del escenario necesario.

Guía para el procesos de instalación y configuración de todo el


escenario.

Partiremos del hecho de que la instalación de Rocky Linux ya esta realizada.

Instalación del servidor web apache.

1. Abre una terminal.

2. Actualiza los repositorios con el siguiente comando:

sudo dnf update

3. Instala Apache utilizando el siguiente comando:

sudo dnf install httpd

4. Inicia el servicio de Apache con el siguiente comando:

sudo systemctl start httpd

5. Verifica que el servicio se esté ejecutando correctamente con el siguiente


comando:

sudo systemctl status httpd

6. Habilita el servicio de Apache para que se inicie automáticamente al


arrancar el sistema con el siguiente comando:
sudo systemctl enable httpd
Instalación y configuración del CMS Wordpress

1. Verifica que tu servidor apache se encuentre corriendo.

Sudo systemctl status httpd

2. Agrega las reglas del firewall para el servicio httpd.

sudo firewall-cmd --add-service=http –permanent

sudo firewall-cmd –reload

3. Ahora vamos a instalar una pila LAMP que es un grupo de software de


código abierto que normalmente se instalan juntos para permitir que un
servidor aloje sitios web y aplicaciones web dinámicos.

sudo dnf install -y php php-zip php-intl php-mysqlnd php-dom php-


simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-
iconv php-json php-mbstring php-posix php-sockets php-tokenizer

4. Crearemos una base de datos y un usuario para la misma.

Instalamos mariadb con el siguiente comando:

sudo dnf -y install mariadb-server

5. Habilitamos el servicio de mariadb.

sudo systemctl enable mariadb.service

6. Iniciciamos el servicio de mariadb

sudo systemctl start mariadb

7. Vamos a crear una base de datos un usuario y contraseña para wordpress


en MariaDB. Ingresamos a MariaDB:

Seguimos los siguientes pasos.

MariaDB [(none)]> CREATE DATABASE mywordpress_db;


MariaDB [(none)]> CREATE USER 'wp_foc'@'localhost' IDENTIFIED BY
'Pp123456';

MariaDB [(none)]> GRANT ALL ON mywordpress_db.* TO


'wp_foc'@'localhost';

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> exit;

8. Vamos a descargar y a extraer wordpress.

Con el siguiente comando vamos a instalar wget y unzip

sudo dnf install wget unzip -y

9. Descargamos Wordpress con wget.

Sudo wget https://wordpress.org/latest.zip

10. Descomprimimos el archivo descargado.

Sudo unzip latest.zip

11. movemos el directorio Wordpress a /var/www/html/

sudo mv wordpress /var/www/html/

12. Ahora vamos a autorizamos los directorios de wordpress.

sudo chown -R apache:apache /var/www/html/wordpress

sudo chmod -R 775 /var/www/html/wordpress

13. vamos a configurar el contexto de SELinux para el directorio y su contenido

sudo semanage fcontext -a -t httpd_sys_rw_content_t


"/var/www/html/wordpress(/.*)?"

sudo restorecon -Rv /var/www/html/wordpress


14. vamos a renombrar el wp-config-sample.php a wp-config.php

sudo mv /var/www/html/wordpress/wp-config-sample.php
/var/www/html/wordpress/wp-config.php

15. Ahora ingresamo al archivo wp-config y hacemos los siguientes cambios.

sudo gedit /var/www/html/wordpress/wp-config.php

define( 'DB_NAME', 'mywordpress_db' );

/** Database username */


define( 'DB_USER', 'wp_foc' );

/** Database password */


define( 'DB_PASSWORD', 'Pp123456' );

16. finalmante reiniciamos el servicio de apache.

sudo systemctl restart httpd

17. Ahora hay que comenzar al instalar Wordpress.

Digita en el navegador tu FQDN.

www.FQDN/wordpress/wp-admin/install.php

18. Ingresa la información solicitada.


19. Anotá tu usuario y contraseña.
20. Ingresa tu usuario y contraseña.
Configurar el Fully Qualified Domain Name (FQDN).

1. Abre una terminal asegúrate de tener permisos de administrador.


Sudo su
2. Ingresa al archivo /etc/hosts y vefifica que esté configurado correctamente
para que el sistema pueda resolver el nombre de dominio.
Sudo gedit etc/hosts
Para hacer esto, agrega una entrada en el archivo con el nombre de dominio
completamente calificado de tu servidor y la dirección IP asignada al
servidor. Por ejemplo:
192.168.0.1 example.com

3. Edita el archivo de configuración de Apache.


Sudo gedit etc/httpd/conf/httpd.conf
Busca la directiva ServerName y asegúrate de que esté configurada con el
FQDN de tu servidor. Si la directiva no existe, agrégala al archivo.
Por ejemplo: ServerName example.com
4. Guarda los cambios y reinicia Apache para que los cambios surtan efecto.
Sudo systemctl restart httpd

Instalación de ModSecurity.

1. Abre una terminal en Rocky Linux.

2. Asegúrate de que los paquetes de Apache estén instalados y actualizados.

sudo dnf install httpd

sudo dnf update httpd

3. Instala el módulo de Apache mod_security y su paquete de herramientas


mod_security_crs con el siguiente comando:

sudo dnf install mod_security mod_security_crs


Después de la instalación, deberías encontrar dos archivos de configuración
nuevos en la ruta /etc/httpd/conf.d:
/etc/httpd/conf.d/mod_security.conf
/etc/httpd/conf.d/mod_security_crs.conf

Estos archivos son donde se define la configuración de ModSecurity.


Por defecto, el módulo ModSecurity está desactivado. Para activarlo, agrega las
siguientes líneas al archivo de configuración de Apache /etc/httpd/conf/httpd.conf:
LoadModule security2_module modules/mod_security2.so
IncludeOptional conf.d/*.conf
4. Guarda y cierra el archivo de configuración de Apache.
5. Reinicia el servicio de Apache para que los cambios surtan efecto:
sudo systemctl restart httpd

6. Una vez que se haya reiniciado Apache, puedes verificar que ModSecurity esté
activo con el siguiente comando:

sudo httpd -M | grep security2_module

7. Finalmente, verifica que ModSecurity esté funcionando correctamente al visitar


un sitio web en tu servidor de Apache y revisar los registros de ModSecurity. Los
registros se encuentran en el archivo /var/log/httpd/modsec_audit.log.

Configurar ModSecurity con el FQDN que configuramos


previamente.

1. Abriremos el archivo de configuración principal de ModSecurity, en


/etc/httpd/conf.d/mod_security.conf

Agregamos las siguientes líneas al archivo para habilitar el soporte para FQDN:

SecRule SERVER_NAME "@endswith www.uls.com" \


"id:1,phase:1,deny,status:403, \
msg:'Access denied - FQDN not allowed'"
Esto configura una regla que deniega el acceso a cualquier solicitud que no
termine con ".example.com".

2. Guarde el archivo de configuración y reinicie el servicio de ModSecurity para


que se apliquen los cambios.

systemctl restart modsecurity

Ahora, ModSecurity denegará el acceso a cualquier solicitud que no coincida con


el FQDN especificado en la regla. Tenga en cuenta que puede ajustar la regla para
que coincida con su FQDN específico. Por ejemplo, si su FQDN es
"www.example.com", la regla sería:

SecRule SERVER_NAME "@endswith .www.example.com" \


"id:1,phase:1,deny,status:403, \
msg:'Access denied - FQDN not allowed'"

Configurar en el ModSecurity ips para que tengan acceso al


sitio web y bloque de ips que no tengan acceso.

Siguiremos los siguientes pasos para configurar la autorización de acceso para un


conjunto de direcciones IP y bloquear el acceso para otro conjunto de direcciones.

1. Abrimos el archivo de configuración de ModSecurity


sudo gedit /etc/httpd/modsecurity.d/modsecurity.conf

Para permitir el acceso a un conjunto de direcciones IP, agrega la siguiente


directiva SecRule y especifica las direcciones IP permitidas.
En este ejemplo, permitiremos el acceso a las direcciones IP 192.168.1.1 y
192.168.1.2.

SecRule REMOTE_ADDR "@ipMatch 192.168.1.1/32,192.168.1.2/32"


"phase:1,id:100,allow"

Nota: En la directiva SecRule, REMOTE_ADDR se refiere a la dirección IP del cliente


que realiza la petición, y @ipMatch especifica una lista de direcciones IP
permitidas. Puedes especificar múltiples direcciones IP separándolas por comas y
usando la notación CIDR para especificar rangos de direcciones IP.

2. Para bloquear el acceso a un conjunto de direcciones IP, agrega otra directiva


SecRule y especifica las direcciones IP a bloquear. En este ejemplo, bloquearemos
el acceso a las direcciones IP 10.0.0.1 y 10.0.0.2:
SecRule REMOTE_ADDR "@ipMatch 10.0.0.1/32,10.0.0.2/32"
"phase:1,id:101,deny,status:403"

Nota: En la directiva SecRule, deny indica que se debe bloquear el acceso a las
direcciones IP especificadas, y status:403 indica que el servidor web debe
devolver un código de estado HTTP 403 (Prohibido) a los clientes que intenten
acceder desde estas direcciones IP.

3. Guardamos y cerramos el archivo de configuración de ModSecurity.


4. Reinicia el servicio de apache.
Sudo systemctl restart httpd

También podría gustarte