====== Cómo dar mayor seguridad a tu ispCP ====== Aquí puedes encontrar algunas ideas para hacer tu servidor mas seguro.\\ No hay ningún tipo de garantía así que usalo bajo tu propia responsabilidad.\\ \\ ===== 1.) Desactivar el "ServerSignature" en Apache ===== \\ Apache/2.2.3 (Debian) mod_fastcgi/2.4.2 mod_perl/2.0.2 Perl/v5.8.8 \\ Simplemente escribe estas lineas en tu httpd.conf (si usas Debian Etch lo tienes que poner en el fichero apache2.conf) # Disable ServerInfo ServerSignature Off ServerTokens Prod \\ \\ ===== 2.) Desactivar las funciones de Depuración (Debug)===== Un ataque puede utilizar este error para engañar a los legítimos usuarios de la web dándoles estas credenciales. Añade las siguientes líneas para cada host virtual en el fichero de configuración (/etc/apache2/ispcp /...) o directamente en el archivo de plantilla (/etc/ispcp/apache/parts/custom.conf.tpl) para desactivar la depuración (Debug) RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] \\ Vuelve a cargar la configuración de Apache y verifica si la configuración está activa: # /etc/init.d/apache2 reload # telnet yourdomain.com 80 Trying xxx.yyy.zzz.rrr... Connected to yourdomain.com. Escape character is '^]'. TRACE / HTTP/1.0 Host: foo A: b HTTP/1.1 301 Moved Permanently Date: ... Server: Apache Location: http://www.yourdomain.com/ Content-Length: ... Connection: close Content-Type: text/html; charset=iso-8859-1 301 Moved Permanently

Moved Permanently

The document has moved here.

Connection closed by foreign host.
\\ \\ ===== 3.) Un poco más de seguridad a Proftpd ===== Puedes darle un poco más de seguridad a ProFTP si editas el archivo de configuración y añades: DefaultRoot ~ IdentLookups off \\ También puedes desactivar la visualización del banner ftp. Este aparece por defecto cuando alguien se conecta a tu servidor: Conexion establecida desde 62.75.xx.xx 220 ProFTPD 1.3.0 Server (vsxxxxxx) [62.75.xx.xx] Usuario (62.75.xx.xx:(none)): \\ Puedes observar cómo se muestra la versión de ProFTPD ===> 1.3.0 \\ Para poderlo desactivar añade la siguiente información al fichero de configuración de proftpd.conf: ServerIdent off Puedes encontrar más información a este respecto en: http://proftpd.org/localsite/Userguide/linked/userguide.html \\ \\ ===== 4.) Activar el modo SSL (Secure Socket Layer) en ProFTPD ===== Para poder transmitir ficheros de forma segura tienes que añadir SSL (encriptación) a ProFTPD. \\ Crea un certificado SSL: openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl.crt -keyout /etc/proftpd/ssl.key \\ Abre el fichero de configuracion (proftpd.conf) para activar SSL: # vi /etc/proftpd/proftpd.conf Activa las últimas líneas de la siguiente manera y establece "TLSEngine" en 'on' # # SSL via TLS # TLSEngine on # on for use of TLS TLSLog /var/log/proftpd/ftp_ssl.log # where to log to TLSProtocol SSLv23 # SSLv23 or TLSv1 TLSOptions NoCertRequest # either to request the certificate or not TLSRSACertificateFile /etc/proftpd/ssl.crt # SSL certfile TLSRSACertificateKeyFile /etc/proftpd/ssl.key # SSL keyfile TLSVerifyClient off # client verification \\ Reinicia proftpd para que los cambios surtan efecto: # /etc/init.d/proftpd restart \\ \\ ===== 5.) Cambiar el Banner SMTP ===== Si quieres cambiar el Banner SMTP de Postfix: Connected to your-domain.tld. Escape character is '^]'. 220 your-domain.tld. ISPCP 1.0 Priamos Managed ESMTP 1.0.0 RC3 OMEGA \\ Abre "/etc/postfix/main.cf" y cambia "smtpd_banner" por lo que quieras: smtpd_banner = $ myhostname ISPCP 1.0 Priamos Managed ESMTP 1.0.0 RC3 OMEGA \\ \\ ===== 6. Instalar y configurar fail2ban ===== Fail2Ban bloquea de forma automatica una dirección IP que ha fallado varias veces al intentar hacer login. \\ Funciona para Apache, SSH, FTP y Mail. \\ \\ Usa apt-get para instalar fail2ban. # apt-get install fail2ban \\ Después de la instalación puedes configurar fail2ban con estas 2 configuraciones en /etc/fail2ban/ /etc/fail2ban/fail2ban.conf /etc/fail2ban/jail.conf \\ Abre jail.conf para activar el bloqueo de algunos servicios # vi /etc/fail2ban/jail.conf \\ Puedes activar o desactivar los servicios que quieras proteger. Por defecto SSH esta activado. \\ Si quieres activar Apache, cambia: # # HTTP servers # [apache] enabled = false port = http filter = apache-auth logpath = /var/log/apache*/*access.log maxretry = 6 \\ a # # HTTP servers # [apache] enabled = true port = http filter = apache-auth logpath = /var/log/apache2/users/*access.log maxretry = 6 \\ Para el FTP (proftpd): [proftpd] enabled = false port = ftp filter = proftpd logpath = /var/proftpd/proftp.log maxretry = 6 \\ cambialo a: [proftpd] enabled = true port = ftp filter = proftpd logpath = /var/log/auth.log maxretry = 3 **NOTA IMPORTANTE:** \\ En Debian Lenny, el archivo /var/log/auth.log contiene espacios en blanco al final de la línea. Debido a esto, fail2ban no puede detectar estas líneas. Tienes que modificar el failregex para que funcione. Puedes encontrar más información sobre ésto en [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507986|Debian BugTracker]] \\ \\ Puedes cambiar el numero máximo de intentos antes de negarle el acceso con: maxretry = X \\ Si quieres cambiar el tiempo de exclusión, bantime = 600 (se fija en segundos) \\ Aviso: fail2ban usa reglas de Firewall para bloquear las IP. \\ El tiempo de exclusión está, por defecto, activo 10 minutos. Después de este tiempo la IP es desbloqueada de forma automática. \\ \\ El registro de la actividad de Fail2ban se encuentra en: /var/log/fail2ban.log \\ \\ ===== 7.) SSL para el servicio de correo (Courier) ===== Primero necesitamos instalar los paquetes courier-ssl # apt-get install courier-imap-ssl courier-pop-ssl \\ Por defecto se creará un certificado durante la instalación. Así que necesitaremos cambiarlo. \\ Abre /etc/courier/imapd.cnf # vi /etc/courier/imapd.cnf y cambia los atributos necesarios. \\ \\ Tienes que hacer lo mismo para /etc/courier/pop3d.cnf # vi /etc/courier/pop3d.cnf \\ Después de esos cambios, realizaremos primero una copia de seguridad del antiguo certificado antes de generar el nuevo. # cd /etc/courier/ && mv pop3d.pem pop3d.pem.orig && mv imapd.pem imapd.pem.orig \\ Ahora podemos generar el nuevo certificado: # dpkg-reconfigure courier-pop-ssl && dpkg-reconfigure courier-imap-ssl \\ Una vez realizado, tu Servicio de correo ya está preparado para usar SSL. \\ Tienes que cambiar tu cliente de correo para usar POP3-SSL en el puerto 995 e IMAP-SSL en el puerto 993. \\ \\ ===== 8.) Hacer SSH más seguro ===== Cualquier script "infantil" puede intentar abrir el puerto 22 de tu servidor y acceder a tu cuenta como root. \\ Tienes que realizar una serie de cambios para modificar el puerto y desactivar el acceso root mediante SSH. \\ \\ Primero necesitaremos crear un usuario en el sistema para su acceder posteriormente al mismo. Si ya existe uno podemos saltar al paso siguiente. Si no, hay que crearlo: # adduser nuevo_nombre_de_usuario \\ Ahora tienes que abrir el archivo sshd_config (/etc/ssh/sshd_config) y cambia lo siguiente: # vi /etc/ssh/sshd_config \\ Cambia el puerto de: Port 22 \\ a Port 222 \\ Cambia la linea: PermitRootLogin yes \\ a PermitRootLogin no \\ Reinicia el servisor SSH # /etc/init.d/ssh restart \\ Cierra tu conexión y vuelve a conectarte otra vez a tu servidor usando el puerto 222 con tu nuevo nombre de usuario.\\ Para hacerte root, simplemente haz: # su \\ \\ ===== 9.) Prevenir ataques tipo DOS (Denegación de Servicio) ===== Para prevenir un ataque tipo DoS, puedes usar el modulo mod_evasive. Descárgate la version actual de http://www.zdziarski.com/projects/mod_evasive/ y descomprimela. Asegúrate de que apache2-prefork-dev está instalado. # apt-get install apache2-dev build-essential # wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz # tar -xzf mod_evasive_1.10.1.tar.gz # cd mod_evasive \\ Instálalo con el módulo para Extensiones de Apache (apxs). # apxs2 -i -a -c mod_evasive20.c \\ El módulo será compilado e instalado en tu httpd.conf. \\ \\ Opcionalmente, puedes realizar algunos cambios específicos en tu fichero de configuración de Apache /etc/apache2/apache2.conf. Simplemente añade las siguientes lineas y cámbialas conforme a lo que necesites. DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 \\ CUIDADO: Esta configuración puede producir errores tipo "403 Forbidden" en sitios normales (por ejemplo: typo3, gallery,...). \\ También puedes añadir las siguientes directivas: DOSEmailNotify you@yourdomain.com DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" DOSLogDir "/var/lock/mod_evasive" \\ Si no quieres crearlas y chmod /var/log/evasive te da este error: mx mod_evasive[32318]: Couldn't open logfile /var/log/evasive//dos-1.2.3.4: No such file or directory \\ Crea el directorio de registro de evasive: mkdir /var/log/evasive \\ Chmod este directorio: chmod www-data:www-data /var/log/evasive \\ Después de éstos pasos, simplemente reinicia Apache para aplicar los nuevos cambios. # sudo /etc/init.d/apache2 restart \\ \\ ===== 10.) Seguridad en el servidor DNS (BIND 9) ===== Después de una instalación limpia del servidor Debian, dnsstuff.com nos informa que nuestro servidor es un "open dns server" (cualquiera puede preguntar a nuestro servidor sobre cualquier dominio, lo que produce una gran carga y una gran transferencia). Podemos aplicar dos pasos para resolver este problema: \\ \\ A) Primero edita /etc/bind/named.conf.options (o /etc/named/named.conf para otras distribuciones, la sección "opciones") y añade: recursion no; transfer-format many-answers; //this is for speed up the transfer to a secondary dns \\ B) Necesitamos modificar las plantillas usadas por ispCP para generar ficheros de zona; en Debian se hace en /etc/ispcp/bind/parts/cfg_entry.tpl. El fichero, tras la modificación, debería de verse así: zone "{DMN_NAME}" { type master; file "{DB_DIR}/{DMN_NAME}.db"; notify YES; allow-query { any; }; }; \\ Reinicia BIND: /etc/init.d/bind9 restart \\ Ahora ya está todo hecho.