Instalación del servidor web Apache2, PHP 5, Ruby y securización en Ubuntu Server
Apache es el servidor web por excelencia para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular servidor web NCSA HTTPd 1.3, pero más tarde fue reescrito por completo.
Su nombre se debe a que su creador (Behelendorf) equería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y «civilizasen» el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor «parcheado»).
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation.
Apache presenta entre otras características altamente configurables, bases de datos de autenticación y negociado de contenido.
Apache tiene amplia aceptación en la red desde 1996 y es el servidor HTTP más usado. Alcanzó su máxima cuota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su cuota de mercado en los últimos años según estadísticas proporcionadas por Netcraft2).
Para instalar Apache en nuestro servidor Ubuntu (Server 8.04 TLS) abriremos la consola y escribiremos los siguientes comandos:
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
Posteriormente instalaremos las utilidades necesarias para sacar el máximo partido a nuestro servidor web:
PHP5 y el lenguaje Ruby como módulos de Apache.
Por lo tanto en nuestra consola escribiremos lo siguiente:
apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Ahora editaremos el fichero /etc/apache2/mods-available/dir.conf con el objeto de cambiar las páginas de inicio por las que deseemos.
Para ello utilizaremos el editor de texto de línea de comando «vi» y modificaremos el fichero dejando esta sección así:
vi /etc/apache2/mods-available/dir.conf
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
por
DirectoryIndex index.html index.htm index.php
Posteriormente activaremos los siguientes módulos de Apache escribiendo en la consola lo siguiente:
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
y hacemos un «reload» de la configuración para recargar el servidor Apache:
/etc/init.d/apache2 force-reload
Con esto, ya tendremos habilitado y configurado correctamente nuestro servidor apache.
Creación de servidores web virtuales
En el caso de que queramos alojar múltiples sitios web en vez de uno, tendremos que realizar las siguientes operaciones:
Hay que editar el fichero /etc/apache2/sites-available/default y continuación modificar la sección NameVirtualHost y dejarla así:
NameVirtualHost *:80
Introducimos el comando:
vi /etc/apache2/sites-available/default
Luego por cada servidor virtual debemos crear una sección como esta al final del archivo:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.netdreams.es
DocumentRoot /var/www/directoriodelaspaginasdeestesitio
</VirtualHost>
Securización de Apache
Si nuestro servidor web está disponible al público en general (Internet o Intranet) el mismo será probablemente objetivo de todo tipo de ataques por parte de vándalos, crackers, etc. Por lo tanto, no está de más proteger el servidor con algunas medidas básicas.
Ӣ Ataques DDOS
En seguridad informática, un ataque de denegación de servicio, también llamado ataque DoS (de las siglas en inglés Denial of Service), es un ataque a un sistema de ordenadores o red que causa que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos computacionales del sistema de la víctima.
Se genera mediante la saturación de los puertos con flujo de información, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le dice «denegación», pues hace que el servidor no dé abasto a la cantidad de usuarios. Esta técnica es usada por los llamados crackers para dejar fuera de servicio a servidores objetivo.
Una medida básica para paliar un ataque hecho mediante DDOS (por ejemplo Slowloris) es modificar, el valor del parámetro TimeOut así como KeepAliveTimeOut. Para el primero por defecto son 300 segundos (o sea 5 minutos), lo cual puede hacer que efectivamente nuestro Apache sea carne de DoS en un corto espacio de tiempo. Si lo modificamos a un valor inferior (10), obligaríamos a que el atacante hiciera uso de más y más máquinas para consumirnos muchas conexiones en muy poco tiempo. El segundo valor es el tiempo que espera para más peticiones bajo una misma conexión persistente. Por defecto viene a 2 segundos; un valor inferior liberará antes los recursos de esas conexiones persistentes.
Por lo tanto haremos lo siguiente:
vi /etc/apache2/apache2.conf
Y modificaremos los siguientes parámetros:
Timeout 10
KeepAliveTimeout 2
Ahora hacemos un “reload” de la configuración:
etc/init.d/apache2 force-reload
PHP
Para evitar problemas de seguridad es recomendable editar nuestro archivo php.ini y modificar las siguientes variable para dejarlas así:
register_globals = Off
allow_url_fopen = Off
allow_url_include = Off
display_errors = Off
log_errors = On
error_log = varies
error_reporting = E_ALL
Mediante está configuración básica de Apache, tendremos el mismo instalado junto con un nivel de seguridad aceptable.
En breve iré ampliando este artículo.