Inicio > Apache, Linux, Seguridad > Instalar un Servidor Web Seguro (Linux + Apache + PHP + Joomla + Tomcat/JBOSS) : P4 – Securizando Joomla

Instalar un Servidor Web Seguro (Linux + Apache + PHP + Joomla + Tomcat/JBOSS) : P4 – Securizando Joomla

domingo, 17 de julio de 2011 Dejar un comentario Ir a comentarios

Hoy vamos a dar una serie de consejillos para securizar nuestro Joomla. Es seguro todos sabéis que se trata de un gestor de contenidos (evolución de Mambo) programado sobre PHP, que nos va a permitir de una forma sencilla generar arquitecturas Web adaptadas a nuestras necesidades.

Se trata de un entorno con mucho potencial a la hora de dotar a nuestra web de nuevas funcionalidades a través de sus  complementos , módulos y plugins… que nos permitirán instalar miles de extensiones, disponiendo así de una plataforma rápida en su puesta en marcha y sencilla en su mantenimiento.

Generalmente se tratará de una instalación sobre maquinas Linux, junto con Apache y Mysql como repositorio de datos, aunque ya sabemos que esto no tiene por que ser siempre asi:).

Al basarse principalmente en PHP, vamos a dar alguna recomendación a la hora de configurarlo.

Procedemos a editar el fichero de configuración. Al trabajar sobre la versión 5:

# vi /etc/php5/apache2/php.ini

Algunos parámetros a tener en cuenta deberían deberían de ser los siguientes :

expose_php = Off
safe_mode = On
safe_mode_gid = On
display_errors = Off
display_startup_errors = Off
register_globals = Off
magic_quotes_gpc = On
allow_url_fopen = Off
allow_url_include = Off
open_basedir = /var/www/html
disable_funcions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system,passthru,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show
max_execution_time = 30
max_input_time = 60
;max_input_nesting_level = 64
memory_limit = 16

Hay que tener cuidadin con lo que desactivamos ya que determinadas aplicaciones podrían dejar de funcionar.

Ahora si vamos a proceder a dar algunas recomendaciones sobre la configuración de nuestro querido Joomla.

  • Empezaremos por renombrar la cuenta por defecto Admin con algún otro nombre, lo que nos va a servir para evitar ataques automatizados o ataques de fuerza bruta.
  • Deberemos borrar todos los ficheros de ayuda y archivos por defecto que no sean necesarios. También podemos modificar las imágenes (/imágenes/) en las que aparezcan referencias a la versión de Joomla que tenemos instalada. Puede ser una forma de entretener un poquito más a nuestros atacantes.
  • Restringimos el acceso a la zona de administración (/administrador/) con las técnicas que hemos visto a la hora de configurar el apache (.htaccess…)
  • Resulta interesante mover el archivo de configuración fuera del directorio raíz.
  • No permitir que se puedan instalar componentes, módulos… sin autorización del administrador.
  • Renombrar la carpeta administrador, teniendo cuidado con los enlaces,  para que esta no pueda ser descubierta por técnicas de enumeración, o instalar el componente JSEcure (Que ha dejado de ser gratuito) para proteger la zona de administración con una key.
  • No permitir registro de usuarios nuevos que no sean autorizados por el administrador.
  • Controlar los permisos que asignamos a las carpetas.

Como veís hemos dados algunas recomendaciones que van a permitir disponer de un sistema algo mas robusto. De todas formas, como ya hemos comentado en anteriores artículos, si vamos a exponer información sensible como pueden ser datos de usuarios, contraseñas… debemos instalar un certificado que por un lado nos garantice que nos estamos conectando a la web real, y que la información va a viajar de una forma segura por la red. Hablamos de los certificados digitales.

Vamos a ello…

Para ello instalamos los siguientes paquetes en nuestro Debian:

#apt-get install libapache2-mod-gnutls ssl

Activamos el modulo SSL

# a2enmod ssl

Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run ‘/etc/init.d/apache2 restart’ to activate new configuration!

Activamos el site-ssl que contendrá la configuración

# a2ensite default-ssl

Enabling site default-ssl.
Run ‘/etc/init.d/apache2 reload’ to activate new configuration!

Reiniciamos el servicio Web

# /etc/init.d/apache2 restart

Si no disponemos de un certificado emitido por una entidad certificadora, por el coste que este supone, podemos crear el nuestro propio. Vamos a ello…

#openssl req -new -x509 -nodes -out

/etc/ssl/certs/blog.iurlek.com_self.crt -keyout /etc/ssl/private/blog.iurlek.com_self.key

Editamos el fichero de configuración:

#vi /etc/apache2/default-ssl

SSLCertificateFile    /etc/ssl/certs/www.domi.com.com_self.crt
SSLCertificateKeyFile /etc/ssl/private/www.domi.com_self.key

Y reiniciamos el servicio:

#/etc/init.d/apache restart

Ahora podría resultar interesante instalar un servicio de correo MTA que nos permita el envio de correos, en nuestro caso se va a tratar de Postfix. Un sistema fiable, seguro y fácil de administrar.

Si nuestro MTA por defecto es exim4, primero deberemos proceder a desinstalarlo antes de poder trabajar con Postfix.

#apt-get purge exim4

Y procedemos a instalar los siguientes paquetes :

#apt-get install procmail
#apt-get install postfix

Si deseamos que se reenvíen los correos que reciban los usuarios a cuentas externas, deberemos generar en el fichero home de los usuarios un fichero .forward con la cuenta de correo a la que queremos reenviar estos correos.

#vi /home/pedimave/.forward
pedimave@gmail.com

O definir un usuario que reciba los correos destinados a root.

Para ello editamos el siguiente fichero

#vi /etc/aliases

Y añadimos en el mismo:

root: pedimave

Ahora solo nos queda ejecutar:

#newaliases

Ahora que ya tenemos nuestro Postfix instalado vamos a proceder a securizarlo un poquitín.

Editamos el archivo de configuración de Postfix

#vi /etc/postfix/main.cf

Una configuración básica podría ser la siguiente:

smtpd_banner = Ongi Etorri
biff = no
alias_maps = hash:/etc/aliases
append_at_myorigin = yes

De este modo ocultamos la versión y obligamos a que todo mail enviado por los procesos automáticos del sistema tengan como dominio el especificado en ‘/etc/mailname’ (si se envián a usuario@localhost se reescribirá como usuario@iurlek.com).

Editamos el siguiente fichero para establecer el dominio que queremos aparezca:

#vi /etc/mailname

Iurlek.com

Si únicamente vamos a utilizar Postfix como servicio local, podemos editar: ‘/etc/postfix/master.cf’ para asegurarnos que únicamente se aceptan conexiones localhost:

127.0.0.1:smtp      inet  n       –       –       –       –       smtpd

Ya solo nos queda reiniciar el servicio:

# /etc/init.d/postfix restart

Buenos compañeros a seguir disfrutando del veranito y nos vemos pronto!!.

Enviar a un amigo: Share this page via Email
Categories: Apache, Linux, Seguridad Tags:
  1. Sin comentarios aún.
  1. Sin trackbacks aún.