+ All Categories
Home > Documents > Apache.http ftp-smtp

Apache.http ftp-smtp

Date post: 20-Jun-2015
Category:
Upload: gh02
View: 444 times
Download: 2 times
Share this document with a friend
Popular Tags:
55
Seguridad en HTTP, FTP y SMTP Laura Concepción Rodríguez
Transcript
Page 1: Apache.http ftp-smtp

Seguridad en HTTP, FTP y SMTP

Laura Concepción Rodríguez

Page 2: Apache.http ftp-smtp

2

Índice

Servidor http Apache

Servidor ftp Vsftpd

Servidor smtp Postfix

Page 3: Apache.http ftp-smtp

3

Introducción

Los servicios más comunes que se pueden ofrecer al exterior son:

Páginas web Archivos Correo electrónico

La seguridad en los archivos de configuración de estos servicios es muy importante para no permitir el acceso a otras partes de nuestro sistema.

Page 4: Apache.http ftp-smtp

4

Apache

Por defecto, Apache lee un solo archivo de configuración llamado httpd.conf.

Dependiendo de la distribución su localización puede ser diferente aunque se puede encontrar con el siguiente comando:

locate httpd.conf

Page 5: Apache.http ftp-smtp

5

Apache

Apache es iniciado por el root, pero posteriormente el usuario efectivo pasa a ser el definido en la directiva User.

Los archivos relativos al servidor no deben ser editables por otros usuarios que no sean el root.

La estructura de directorios bajo la que se encuentran los archivos debe tener permisos de escritura únicamente para root.

Page 6: Apache.http ftp-smtp

6

Apache

Si vamos a instalar el servidor en /usr/local/apache2:

mkdir /usr/local/apache2

cd /usr/local/apache2

chown 0 . bin conf logs

chgwp 0 . bin con f logs

chmod 755 . bin conf logs

Page 7: Apache.http ftp-smtp

7

Apache

Se asume que únicamente root tiene permiso de escritura en /, /usr y /usr/local.

El ejecutable que arranca el servidor, httpd, debe estar protegido de una forma similar:

Se puede crear un subdirectorio denominado htdocs que sea modificable por otros usuarios.

cp httpd /usr/local/apache2/bin

chown 0 /usr/local/apache2/bin/httpd

chgrp 0 /usr/local/apache2/bin/httpdchmod 511 /usr/local/apache2/bin/httpd

Page 8: Apache.http ftp-smtp

8

Apache

Op

MaxClients <nº>: Límite de clientes conectados a la vez al servidor. Evita que el servidor bloquee al sistema.

Listen y Port: Cambia el puerto por el que escucha el servidor (80 por defecto) en el caso de que no se desee que el servidor esté accesible para todo el mundo.

Page 9: Apache.http ftp-smtp

9

Apache

DocumentRoot directorio: especifica el directorio raiz desde el cual Apache ofrecerá las páginas html para usuarios del exterior.

User y Group: definen el propietario y el grupo bajo el cual el proceso httpd correrá.

User daemon o User Apache Group daemon o Group Apache

TimeOut <seg>: Tiempo máximo para una conexión activa, evita bloqueos

Page 10: Apache.http ftp-smtp

10

Apache

UserDir <directorio>: Permite servir ficheros de usuarios. Puede proporcionar información no deseada, así que lo evitamos:

Option –Indexes DirectoryIndex index.html: Si no existe la

página de inicio indicada por defecto se mostrará el contenido del directorio y eso es peligroso.

Page 11: Apache.http ftp-smtp

11

Apache

UserDir <enable/disable> Habilitar o Deshabilitar usuarios específicos para administrar el sistema.

Ej. UserDir disable root ftp

ServerName dns:puerto: No especificar el nombre de la máquina donde está el servidor para evitar dar más información de la necesaria al exterior.

Page 12: Apache.http ftp-smtp

12

Apache

FollowSymLinks: Por defecto la directiva FollowSymLinks está habilitada, lo cual puede comprometer la seguridad en el caso de que existan enlaces simbólicos hacia fuera del contenedor.

Options -FollowSymLinks

Page 13: Apache.http ftp-smtp

13

Apache

Archivos de configuración secundariosLos archivos .htaccess proporcionan una forma de realizar un cambio en la configuración basada en directorios.Un archivo .htaccess con directivas de configuración se sitúa en un directorio, de modo que esas directivas se aplican a ese directorio y a sus subdirectorios.

Page 14: Apache.http ftp-smtp

14

Apache

Archivos de configuración secundariosLos archivos .htaccess pueden anular las precauciones tomadas en la configuración de httpd.conf. Para evitar esto hacemos, en httpd.conf:

<Directory />AllowOverride None

</Directory>

Page 15: Apache.http ftp-smtp

15

Apache

Autentificar usuariosPara autentificar a un usuario se utilizan las siguientes directivas en el contenedor requerido:

AuthType Basic

AuthName "Sitio privado"

AuthUserFile /usr/local/apache2/passwd/passwords

Require Valid-User

Page 16: Apache.http ftp-smtp

16

Apache

Para crear el archivo de passwords y añadir usuarios, se utiliza la orden htpasswd.

Opción -c para crear un nuevo archivo de passwords. Opción -b para suministrar el password en la línea de

la orden (modo batch). Si no se indica esta opción, se solicita el password a continuación.

httpasswd -c -b {path}/passwords usuario contraseña

Page 17: Apache.http ftp-smtp

17

Apache

Para restingir el acceso a una máquina, un red, un dominio, etc, se utilizan las directivas allow y deny.

Allow: controla los servidores que tendrán acceso al contenido

Deny: controla los servidores que no tendrán acceso Order: determina el orden en el que se leerán los

permisos<Directory />

Order Deny,AllowDeny from 192.168.1.0/24 .conga.net

Allow from all

</Directory>

Page 18: Apache.http ftp-smtp

18

Apache

Un buen seguimiento de los logs es crítico para una buena seguridad.

Se utilizan las siguientes directivas para tratar los logs:

Errorlog: indica el directorio donde se almacenarán los registros de errores

LogLevel: especifica el nivel de detalle de los errores LogFormat: para seleccionar la información que se muestra CustomLog: indica donde se almacena el registro de acceso

que almacena información sobre las peticiones que procesa el servidor.

Page 19: Apache.http ftp-smtp

19

Apache

Con ErrorLog y LogLevel ErrorLog /var/log/httpd/error_log LogLevel warn

Con LogFormat y CustomLog LogFormat “%a %p %P” common CustomLog /var/log/httpd/common_log

common

Page 20: Apache.http ftp-smtp

20

Apache y SSL

Netscape desarrolló el protocolo abierto no propietario llamado Secured Socket Layer (SSL) para proporcionar encriptación de datos, autentificación del servidor, integridad de datos y autentificación de clientes para comunicación basada en TCP/IP.

HTTPS es la versión segura de HTTP que utiliza SSL para crear un canal de cifrado más apropiado para el tráfico de información sensible.

Page 21: Apache.http ftp-smtp

21

Apache y SSL

Page 22: Apache.http ftp-smtp

22

Apache y SSL

En una transacción basada en SSL, el servidor envía un certificado al sistema cliente.

Las autoridades certificadoras (como VeriSign) son las que normalmente emiten los certificados.

El certificado contiene la clave pública del servidor, que se utilizará para establecer un canal de comunicación seguro.

Page 23: Apache.http ftp-smtp

23

Apache y SSL

El módulo mod_ssl provee una interfaz para OpenSSL.

OpenSSL es una implementación de código abierto de los protocolos SSL v2/v3 y TLS v1 (Transport Layer Security).

Para establecer SSL para apache necesitamos instalar OpenSSL en el sistema. Se puede descargar el paquete OpenSSL desde http://www.openssl.org.

Para instalar este paquete solo tenemos que descomprimirlo y desempaquetarlo e instalarlo mediante las herramientas configure y make.

Page 24: Apache.http ftp-smtp

24

Apache y SSL

En la instalación de Apache se deben pasar los siguientes argumentos a configure: --with-ssl={Directorio de OpenSSL} --enable-ssl

Una vez instalado OpenSSL y Apache con el módulo mod_ssl debemos obtener un certificado. A través de una CA comercial (VeriSign). A través de una CA privada de autocertificación.

Page 25: Apache.http ftp-smtp

25

Apache y SSL

Para crear un certificado para test utilizamos la utilidad openssl. openssl req –new –x509 –nodes –out server.crt –keyout

server.key

Una vez creado, establecemos una password para server.key. openssl rsa –des3 –in server.key –out server.key.new mv server.key.new server.key

Page 26: Apache.http ftp-smtp

26

Apache y SSL

Para poder ejecutar SSL, en el fichero httpd.conf creamos un servidor virtual que escuche las peticiones al puerto 443 (puerto de HTTPS por defecto).

<VirtualHost _default_:443>

DocumentRoot "/www/privado"

<Directory />

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

Page 27: Apache.http ftp-smtp

27

Apache y SSL

Habilitamos SSL para ese servidor virtual e indicamos la ubicación de los certificados (dentro de la directiva VirtualHost):

SSLEngine on

SSLCertificateFile /usr/local/apache2/conf/server.crt

SSLCertificateKeyFile /usr/local/apache2/conf/server.key

Page 28: Apache.http ftp-smtp

28

Apache y SSL

Añadimos el tipo MIME adecuado para el tipo de los certificados (.crt).

AddType application/x-x509-ca-cert .crt

Añadimos la directiva Listen 443 para habilitar que se puedan realizar peticiones a través de este puerto.

Arrancamos el servidor: /usr/local/apache2/bin/apachectl start

Page 29: Apache.http ftp-smtp

29

Vsftpd

El servidor FTP que proporciona Fedora Core 3 por defecto es vsftpd (Very Secure FTP Daemon).

vsftpd es un servidor FTP para sistemas UNIX con licencia GPL.

Es seguro, rápido y estable

Page 30: Apache.http ftp-smtp

30

Vsftpd

El fichero de configuración del servidor es /etc/vsftpd/vsftpd.conf.

La documentación se encuentra en /usr/share/doc/vsftpd-{versión}.

A continuación veremos las directivas más importantes a tener en cuenta para asegurar nuestro servidor.

Page 31: Apache.http ftp-smtp

31

Vsftpd

Para impedir el acceso del usuario anónimo (se permite por defecto):anonymous_enable=NO

Para restringir a los usuarios a sus directorios home:chroot_local_user=YES

Al restringirlos a sus directorios home, no pueden seguir enlaces simbólicos.

Page 32: Apache.http ftp-smtp

32

Vsftpd

Para permitir el acceso a usuarios locales del sistema se utiliza la directiva local_enable=yes (por defecto no se permite).

Una vez activada, mediante PAM se puede restringir el acceso a determinados usuarios, como por ejemplo el usuario root.

El fichero PAM correspondiente es /etc/pam.d/vsftpd

Page 33: Apache.http ftp-smtp

33

Vsftpd

Indirectamente soporta máximo número de clientes debido a que es un servicio basado en inetd. Si se utiliza xinetd, se puede establecer un límite de conexiones por servicio y por IP.

Si se ejecuta vsftpd en solitario (standalone) se puede restringir el número máximo de usuarios con la directiva

max_clients=número_máximo y max_per_ip=número máximo.

Page 34: Apache.http ftp-smtp

34

Vsftpd

Por defecto, vsftpd no permite la escritura. Ningún usuario podrá escribir en el

directorio raíz del servidor. Si queremos permitir escritura, debemos

incluir las directivas:write_enable=YES

anon_upload_enable=YES

Page 35: Apache.http ftp-smtp

35

Vsftpd

allow_anon_ssl Sólo se aplica se está activa la opción ssl_enable. Si esta opción se pone a YES, los usuarios anonymous podrán hacer uso de conexiones SSL seguras. Por defecto: NO dirlist_enable Si se pone a NO, a todos los comandos para listar el directorio se les denegará el permiso de ejecución. Por defecto: YES

Page 36: Apache.http ftp-smtp

download_enable Si se pone a NO, a todas las peticiones de descarga de ficheros se les denegará el permiso. Por defecto: YES

cmds_allowed Esta opción permite especificar una lista de comandos separados por comas, que serán los comandos FTP que se permitan utilizar (tras login, USER, PASS y QUIT, que son comandos previos al login, siempre son permitidos). Los demás comandos no serán aceptados.

Ejemplo: cmds_allowed=PASV,RETR,QUIT

Vsftpd

Page 37: Apache.http ftp-smtp

Postfix

Postfix es el servidor de correo más utilizado en las distribuciones de Linux.

Es más fácil de administrar, rápido y SEGURO que el sendmail (que viene por defecto en Fedora Core3).

Fue desarrollado por IBM.

Page 38: Apache.http ftp-smtp

38

Postfix

Instalación en el sistema:

Desactivar el sendmail

Crear usuario postfix y grupo postdrop

Instalar en el sistema (make)

Page 39: Apache.http ftp-smtp

39

Postfix

El fichero de configuración es: /etc/postfix/main.cf

Las directivas más relevantes concernientes a la seguridad son:

default_privs = nobody Default_privs indica los privilegios por defecto del agente de entrega de correo para ejecutar un comando o abrir un archivo. Generalmente se usa nobody ya que no se debe especificar un usuario con privilegios o el usuario postfix

Page 40: Apache.http ftp-smtp

Postfix

mynetworks = 192.168.10.0/28, 127.0.0.0, !192.168.10.29

Máquinas que pueden y que no pueden (precedidas de ‘!’ ) enviar correo

message_size_limit = tamaño (en bytes)Indica el tamaño máximo que puede tener un mensaje. Por defecto: 10 MB.

mailbox_size_limit = tamaño (en bytes) Indica el tamaño máximo que puede tener un buzón de correo. Por defecto: 50 MB

Page 41: Apache.http ftp-smtp

Postfix

relay_domains = <dirección_de _máquina>Especifica las máquinas a las que se les puede enviar el correo.

notify_classes=<bounce, 2bounce, delay, policy, protocol, resource, software>

Mediante la directiva notify_classes el administrador indica a Postfix qué tipo de incidencias debe notificar automáticamente , mediante un mensaje al usuario Postmaster.

Page 42: Apache.http ftp-smtp

42

Postfix

BounceSi un mensaje no puede ser encaminado, se envía otro mensaje al remitente y una copia al Postmater incluyendo el mensaje original. En el caso del Postmaster sólo se incluyen por razones de privacidad las cabeceras.

2bounceEn el caso en que la notificación de un mensaje de error de encaminamiento genere también un error de encaminamiento, se envía notificación a Postmaster.

Page 43: Apache.http ftp-smtp

Postfix

DelaySe informa a Postmaster de que hay mensajes pospuestos por problemas en su encaminamiento.

PolicySe informa sobre peticiones rechazadas de entrega de mensajes. Normalmente se debe a que el interlocutor o el propio mensaje incumple la política definida para la aceptación de correo. Muy útil para conocer intentos fallidos de uso de la estafeta como relay.

Page 44: Apache.http ftp-smtp

Postfix

ProtocolSe informa sobre incidentes de protocolo.

ResourceSe comunica a Postmaster que un mensaje no ha sido encaminado por problemas de recursos en el sistema.

SoftwareSe comunica a Postmaster que un mensaje no ha sido encaminado por problemas de software.

Page 45: Apache.http ftp-smtp

45

Postfix

smtpd_client_restrictions = reject_unknown_client

Permite rechazar las conexiones desde clientes cuya dirección IP no disponga de resolución inversa en el DNS

smtpd_client_restrictions = reject_rbl_client relays.ordb.org

Permite fácilmente verificar que el cliente que ha establecido la conexión SMTP o el remitente del mensaje no está inscrito en alguna de las listas negras que se designen

Page 46: Apache.http ftp-smtp

Postfix

smtpd_helo_requiredDándole el valor yes obliga a que el sistema remoto inicie la sesión con la directiva HELO o EHLO. Por defecto: NO.Obligar a iniciar la sesión con HELO/EHLO ya en sí inutiliza algunas herramientas utilizadas para SPAM y algún que otro virus.

smtpd_helo_restrictionsEn conjunción con la anterior directiva, ésta permite establecer criterios que permiten continuar o no con la sesión.

Page 47: Apache.http ftp-smtp

Postfix

Ejemplo de configuración más usada:smtpd_helo_restrictions =

reject_invalid_hostname: rechaza la petición cuando HELO es enviado con mala sintaxix.reject_unknown_hostname: similarreject_non_fqdn_hostname: cuando el helo no está de la forma especificada en el RFC821

Page 48: Apache.http ftp-smtp

Postfix

Filtrado por cabeceras

Un mecanismo que proporciona Postfix, y que se está utilizando ampliamente contra la propagación de virus, es la posibilidad de filtrar los mensajes en base a las cabeceras de los mismos y a patrones definidos mediante expresiones regulares. De esta manera, todo mensaje que contenga una cabecera que cumpla un determinado patrón será rechazado automáticamente.

Page 49: Apache.http ftp-smtp

Postfix

Suponiendo que el fichero de definición de cabeceras está en /etc/postfix/headers_checks, para activar el filtrado por cabeceras será necesario incluir en el fichero main.cf la siguiente directiva:

header_checks = egexp:/etc/postfix/header_checks

Page 50: Apache.http ftp-smtp

Postfix

# Headers Checks

# Virus: W32.SirCam [20/SEP/01]/^date:.*/i REJECT/^Content-Disposition: Multipart message/ REJECT# Virus Nimda (attach readme.exe) [20/SEP/01]/^X-Unsent: 1/ REJECT# Virus Badtrans [30/NOV/01]/^From: ".*" <_/ REJECT# Virus W32.Myparty.B@mm [29/ENE/02]/^Subject: new photos from my party!/ REJECT#Virus W32/Frethem.K/J [15/JUL/02]/^Subject: Re: Your password!/ REJECT

Page 51: Apache.http ftp-smtp

Postfix

Filtrado por contenidos De igual manera que pueden filtrarse mensajes en

base a patrones que se definen sobre las cabeceras de los mensajes, también se pueden definir patrones que se aplicarán al contenido de los mensajes

Suponiendo que el fichero de definición de contenidos es /etc/postfix/body_checks, para activar el filtrado por contenidos en el mensaje será necesario incluir en el fichero main.cf la directiva:

body_checks = regexp:/etc/postfix/body_checks

Page 52: Apache.http ftp-smtp

Postfix

# Body Checks

#

/Accept Credit Cards/ REJECT

/Nude Celebrities/ REJECT

/PRODUCT or SERVICE/ REJECT

/GUARANTEED!/ REJECT

/Amateur Girls/ REJECT

/FREE MEMBERSHIP/ REJECT

/bizinfo/ REJECT

Page 53: Apache.http ftp-smtp

Postfix

Postfix puede ejecutar la mayoría de sus procesos en modo chroot, es decir, los procesos sólo disponen de privilegios para acceder al directorio /var/spool/postfix, y todas las referencias a ficheros se resuelven tomando este directorio como raíz. No pueden ejecutarse en modo chroot el proceso local, virtual y todos los procesos pipe.

Aunque este no es un mecanismo que garantice la inviolabilidad, sí que representa una barrera más, y por tanto es recomendable su adopción en instalaciones que requieran un nivel adicional de seguridad.

Page 54: Apache.http ftp-smtp

Postfix

Dado que para cambiar a modo chroot es necesario copiar algunos ficheros, que cambiarán según el sistema operativo que se esté utilizando, Postfix proporciona en su distribución una colección de scripts para realizar esta labor.

A efectos de configuración, sólo es necesario modificar el fichero master.cf para indicar qué procesos deben ejecutarse en modo chroot.

Page 55: Apache.http ftp-smtp

55

FIN


Recommended