Blog

Elementos específicos para prevenir los ataques en Apache

Elementos específicos para prevenir los ataques en Apache.

Ataques de denegación de servicio.

Un ataque de denegación de servicio, básicamente consiste en saturar los recursos de algún tipo de servicio, En el caso del servidor Apache, o cualquier servidor web, se podría decir que un ataque se podría llevar a cabo mediante peticiones ilegítimas a través de aplicaciones diseñadas para tal fin o aprovechando algún fallo de seguridad, de modo que le falten recursos para procesar las legítimas.

Bandwidth Attacks

Este ataque, también conocido como hotlinking, consiste en incrustar enlaces en varios portales web a imágenes o archivos del sitio web atacado de manera que al visitar uno de estos portales automáticamente se realiza una costosa petición al sitio web atacado.

Mediante este ataque se puede utilizar contenido de otros sitios web sin permiso ni «pagar» por el ancho de banda y también se puede llegar a colapsar el servidor atacado.

Este ataque se puede evitar mediante una regla de mod_rewrite que prohíba todas las peticiones de acceso a archivos cuya cabecera HTTP_REFERER, que contiene el sitio web desde el que se ha realizado la petición, no sea el del propio sitio web:

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://mipaginaweb\.es [nocase]

RewriteRule (\.gif|\.jpg|.\png|\.swf)$ $0 [forbidden]

Medidas para asegurar el servidor web Apache.

Medidas para asegurar el servidor web Apache.

Estructura de los principales archivos que forma Apache2

 

/etc/apache2/apache2.conf: el archivo raíz es el que incluye a los demás. No se debe modificar este archivo.

mods-enabled/*.load y mods-enabled/*.conf: la finalidad de estos archivos es la carga y configuración de los módulos de Apache.

httpd.conf: directivas aplicables a todos los servidores web.

ports.conf: define en qué puertos «escuchará» Apache.

conf.d/: directorio que contiene archivos de configuración para cada funcionalidad de apache (charset, php, security, etc.)

sites-enabled/: directorio que contiene los archivos de configuración de cada virtual hos

 

Asegurarse de tener los últimos parches de seguridad

Todas las modificaciones que se indican a continuación dependerán del uso del servidor y se han de realizar httpd.conf.

 

Esconder el número de versión de Apache y otra información importante

Muchas instalaciones de Apache por defecto le anuncian al resto del mundo la versión de Apache .Los atacantes pueden utilizar esta información para su propia ventaja al intentar atacar. También hace saber que has dejado la mayoría de los parámetros como venían por defecto.

Hay dos directivas que necesitarás agregar a tu archivo httpd.conf:

ServerSignature Off
ServerTokens   Prod

“ServerSignature” (la firma del servidor) aparece al final de páginas generadas por Apache como errores 404, listado de directorios, etc.
“ServerTokens” es la que determina lo que Apache incluirá en la cabecera de respuesta HTTP del servidor. El configurarla como “Prod” implica que enviará:

Server: Apache

Se puede cambiar este texto modificando el código fuente, o utilizando el módulomod_security

Creación de una entidad certificadora propia y un certificado autofirmado

Creación de una entidad certificadora propia y un certificado autofirmado.

Para no extenderme demasiado solo enunciaré los comandos y una breve descripción de sus funciones representan.

Por razones de orden creamos un directorio de trabajo llamado CA y dentro de este dos más ,llamados certificados y privado. El primero es donde se guardará una copia de cada certificado que firmemos y en el otro directorio se guardará la llave privada.

#mkdir CA

# cd CA

# mkdir certificados privado

 

Nunca debemos de  perder la llave privada que se generemos, ya que con esta podremos firmar o renovar certificados, y  menos dársela a nadie, ya que toda nuestra seguridad radica en la confidencialidad de la llave privada que se guardará en el directorio privado.

Creamos dos archivos que  formarán la base de datos de los certificados autofirmados.

# echo ’01’ > serial   

# touch index.txt

 

Para no extenderme demasiado solo enunciaré los comandos y una breve descripción de sus funciones representan.

Por razones de orden creamos un directorio de trabajo llamado CA y dentro de este dos más ,llamados certificados y privado. El primero es donde se guardará una copia de cada certificado que firmemos y en el otro directorio se guardará la llave privada.

#mkdir CA

# cd CA

# mkdir certificados privado

 Nunca debemos de  perder la llave privada que se generemos, ya que con esta podremos firmar o renovar certificados, y  menos dársela a nadie, ya que toda nuestra seguridad radica en la confidencialidad de la llave privada que se guardará en el directorio privado.

Creamos dos archivos que  formarán la base de datos de los certificados autofirmados mediante:

Guía de Uso de OpenSSH y sus herramientas

Uso de OpenSSH y sus herramientas.

Herramienta ssh

Para establecer una conexión con un servidor SSH remoto, haremos uso de una Terminal.

La sintaxis para llevar a cabo esta operación es la siguiente:

[root@localhost]# ssh usuarioRemoto@ipDelServidorRemoto

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deberá especificar el puerto por el cual requiere autenticarse al servidor. Ejemplo

[root@localhost ]# ssh -Ppuerto usuarioRemoto@ipDelServidorRemoto

Nos pedirá el password del usuario

Una vez dentro del servidor remoto nos logearemos ahora si como “root”

curso@server1:~$ su-

Password:

En este momento ya estamos como root.

Conexión remota segura mediante ssh con Openssh.

Conexión remota segura mediante ssh con Openssh.

El servidor de shell seguro o SSH (Secure SHell) es un servicio muy similar al servicio telnet ya que permite que un usuario acceda de forma remota a un sistema Linux pero con la particularidad de que, al contrario que telnet, las comunicaciones entre el cliente y servidor viajan encriptadas desde el primer momento de forma que si un usuario malintencionado intercepta los paquetes de datos entre el cliente y el servidor, será muy dificil que pueda extraer la información ya que se utilizan sofisticados algoritmos de encriptación.

No utilizar nunca telnet y utilizar ssh en su lugar.

Para que un usuario se conecte a un sistema mediante ssh, deberá disponer de un cliente ssh. Desde la primera conexión, y mediante encriptación asimétrica, las comunicaciones se encriptan incluido el proceso de autentificación del usuario cuando proporciona su nombre y su contraseña. También se proporciona una clave de encriptación simétrica para encriptar las comunicaciones del resto de la sesión mediante encriptación simétrica por su menor necesidad de procesamiento.

OpenSSH

OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar

comunicaciones cifradas a través de una red, usando como base al protocolo SSH.

Para instalar el servidor y el cliente ssh debemos instalar mediante apt-get el paquete ssh,

tanto en la aplicación del servidor como en la aplicación cliente:

// Instalación de servidor Openssh y cliente Openssh

root@servidor:# apt-get install ssh

SSL con certificado de Autoridad de prueba por Verisign

SSL con certificado de Autoridad de prueba por Verisign.

Para empezar hemos de generar una clave privada con el comando:

#openssl genrsa –out archivoClavePrivada.key 2048

Si lo editamos podemos ver:

#nano /home/antonio/archivoClavePrivada.key

Tras esto creamos una solicitud de certificado de firma con el comando:

SSL con certificado Autofirmado

Configuración de SSL con certificado autofirmado.

Para crear el certificado usamos el siguiente comando:

#openssl req -new -x509 -nodes -days 365 -keyout archivoClavePrivada.key -out archivoCertificado.crt

Tras esto activamos los módulos SSL con:

#sudo ln -s /etc/apache2/mods-available/ssl* /etc/apache2/mods-enabled

A continuación deberíamos añadir el puerto 443 (puerto de seguridad por defecto) en

Proteger un sitio web con contraseñas desde Apache.

Proteger un sitio web con contraseñas desde Apache.

Aunque podemos utilizar Allow y Deny en los Directory para permitir y denegar el acceso a la web, el servidor web Apache ofrece un mecanismo para proteger un directorio de nuestro sitio web de modo que sea necesario introducir un usuario y contraseña para acceder a las páginas que contiene. En este artículo se expone la manera de configurar el servidor para conseguir este objetivo.

Para ello, debemos crear un fichero “.htpasswd” (nota: el primer carácter es un punto)  en un directorio  de nuestro servidor que no sea accesible mediante una url (En el ejemplo var/www/prueba/.htpasswd”). Este fichero contendrá los usuarios definidos y sus contraseñas.

A continuación, creamos un fichero llamado “.htaccess” en el directorio que deseamos proteger, con el siguiente contenido:

 

AuthUserFile /ubicacion/de/.htpasswdAuthName “Introduzca su usuario y clave de acceso”AuthType Basic

require valid-user

DNS Spoofing

Dns Spoofing.

Básica mente consiste en dar datos dns que no se han originado en un servidor dns autorizado. Con ello conseguimos dar una ip falsa a una entrada dns o al contrario.

Con esta técnica podemos clonar páginas web para hacernos con las contraseñas del dispositivo atacado.

Ejecuccion.

Para he utilizado la distribución de Backtrack 5 R3. Es gratuita y puedes conseguirla desde aquí.

1 Iniciamos la distribuicón

2 Abrimos una terminal y escribimos

#cd  /pentest/exploits/set/

#./set

Se abrirá la aplicación SET para realizar ataques de tipo ingeniera social

Elegimos la opción 1