Instalación de Apache (1.3.34-4.1)+PHP4 Debixer:/# apt-get update  Antes que todo, actualizar nuestros repositorios… Descargados 58,2kB en 15s (3867B/s) Leyendo lista de paquetes... Hecho Debixer:/# Debixer:/# apt-get dist-upgrade  Vemos si necesitamos alguna actualización…  Con esto actualizamos el sistema completo… Debixer:/# apt-get install –f  Ver si tenemos algún problema de dependencias Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho 0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados. Debixer:/# apt-get install apache apache-doc php4 libapache-mod-php4 libapache-mod-ssl  Instalación de Apache+PHP5+mod_ssl Luego de unos momentos, tendremos listo la instalación de Apache 1.3.34+PHP4 funcionando en nuestro Debian etch, ahora es el momento de configurar y securizar nuestro servidor web…  La seguridad no es una panacea… día a día se ven más y más servidores “crackeados”, “desfaceados”, por distintos motivos, ya sea falta de actualización, mala configuración, programas “inseguros, faltas de políticas de seguridad, etc, no nos sirve de nada tener un servidor bien configurado, tuneado, etc, si nuestras políticas de seguridad ( ya sea firewall, información a mostrar, etc) son deficientes… A continuación trataremos de configurar nuestro Apache, para que éste muestre la menor cantidad de información referente al mismo. Ejemplo: El siguiente ejemplo lo teste en mi maquina corriendo Debian etch con Apache 1.3.34-4.1+PHP5+mod_ssl, luego de una instalación por defecto… Debixer:/# a2enmod php5 This module is already enabled! Debixer:/# a2enmod ssl This module is already enabled! Debixer:/# telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HEAD/1.0 HTTP/1.1 400 Bad Request Date: Fri, 09 Feb 2007 12:18:06 GMT Server: Apache/1.3.34 (Debian) PHP/5.2.0-8+etch4 mod_ssl/2.8.25 OpenSSL/0.9.8c Connection: close Content-Type: text/html; charset=iso-8859-1 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

The request line contained invalid characters following the protocol string.


Apache/1.3.34 Server at localhost Port 80
Connection closed by foreign host. Debixer:/#  Server: Apache/1.3.34 (Debian) PHP/5.2.0-8+etch4 mod_ssl/2.8.25 OpenSSL/0.9.8c Demasiada información a mostrar, demasiada!  Configurando httpd.conf para mostrar la menor información posible… Ejemplo: Debixer:/# apachectl start /usr/sbin/apachectl start: httpd started Debixer:/# En un navegador escribimos nuestra dirección IP: En mí caso Firefox: http://192.168.0.08/asd Not Found The requested URL /asd was not found on this server. ________________________________________ Apache/1.3.34 Server at 192.168.0.08 Port 80 Debixer:/# nano /etc/apache/httpd.conf La verdad es bastante común ver este tipo de información Debixer:/# nano /etc/apache/httpd.conf ## ## httpd.conf -- Apache HTTP server configuration file ## Buscamoes está línea: ServerSignature On y la cambiamos a ServerSignature Off Y quedaría así: ServerTokens Prod Explicación: ServerTokens Prod[uctOnly] El servidor envía (por ejemplo): Server: Apache ServerTokens Major El servidor envía (por ejemplo): Server: Apache/2 ServerTokens Minor El servidor envía (por ejemplo): Server: Apache/2.0 ServerTokens Min[imal] El servidor envía (por ejemplo): Server: Apache/2.0.41 ServerTokens OS El servidor envía (por ejemplo): Server: Apache/2.0.41 (Unix) ServerTokens Full (or not specified) El servidor envía (por ejemplo): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 Probamos: Guardamos los cambios y Debixer:/# /etc/init.d/apache force-reload Reloading apache 1.3 configuration.... Debixer:/# Habrimos de nuevo el navegador y testeamos: http://192.168.0.08/fds Not Found The requested URL /fds was not found on this server.  Algunas opciones a tomar en cuenta: MaxRequestsPerChild 100  Cantidad de procesos hijos que se crearán, prevenir DDoS MaxClients 300  Cantidad máxima de clientes soportados, aplicar un número alto para que no se bloqueen las pagínas. Timeout 50  Para que las conexiones “Reading” sean matadas antes “Reading” sean “matadas” rápidamente, antes que pueda llenarse el MaxClients a su tope Algunas opciones: Muchas veces cuando accedemos a un directorio de nuestro Apache nos sale algo parecido a esto: http://192.168.0.08/prueba/ Index of /prueba Name Last modified Size Description ________________________________________ Parent Directory 09-Feb-2007 10:56 - prueba1 09-Feb-2007 10:57 0k prueba2 09-Feb-2007 10:57 0k prueba3 09-Feb-2007 10:57 0k pruebaetc 09-Feb-2007 10:57 0k Por lo menos para mí es bastante “molesto” así que lo vamos a desactivar Debixer:/# nano /etc/apache/httpd.conf # # Options SymLinksIfOwnerMatch # AllowOverride None # Dejarlo en: Options -Indexes -Includes -ExecCGI -FollowSymLinks AllowOverride None Explicación: Options –Indexes  Desactiva la exploración de Directorios Options –Includes  Desactiva los Includes del Servidor Options –ExecCGI  Desactiva la ejecución de CGI Options –FollowSymLink  Desactiva el seguimiento de enlaces simbólicos Para el ejemplo anterior: Options -Indexes -Includes –FollowSymLinks -ExecCGI MultiViews AllowOverride None Order allow,deny Allow from all http://192.168.0.08/prueba/ Forbidden You don't have permission to access /prueba/ on this server DirectoryIndex : DirectoryIndex index.html index.htm index.shtml index.cgi index.php php_value magic_quotes_gpc 0  php_value magic_quotes_gpc 0 : Hace que los caracteres ', “, \ y NULL sean transformados a una barra invertida automáticamente, para prevenir ataques simples de “SQL Inyection” Denegar la descarga de todos los archivos que comienzen con .ht* AccessFileName .httpdoverride Order allow,deny Deny from all Satisfy All