Beruflich Dokumente
Kultur Dokumente
AlcanceLibreConfiguracinbsicadeApache.
Introduccin.
Acerca del protocolo HTTP.
HTTP (Hypertext Transfer Protocol o Protocolo de Trasferencia de Hipertexto) es el mtodo
utilizado para transferir o transportar informacin a travs de Internet y (WWW, World Wide Web).
Su propsito original fue el proveer una forma de publicar y recuperar documentos en formato
HTML.
El desarrollo del protocolo fue coordinado por World Wide Web Consortium y la IETF (Internet
Engineering Task Force o Fuerza de Trabajo en Ingeniera de Internet), culminando con la
publicacin de varios RFC (Request For Comments), de entre los que destaca el RFC 2616, mismo
que define la versin 1.1 del protocolo, que es el utilizado hoy en da.
HTTP es un protocolo de solicitud y respuesta a travs de TCP, entre agentes de usuario
(Navegadores, motores de ndice y otras herramientas) y servidores, regularmente utilizando el
puerto 80. Entre la comunicacin entre stos puede intervenir otros tipos de implementaciones,
como seran servidores Intermediarios (Proxies), puertas de enlace y tneles.
URL: http://tools.ietf.org/html/rfc2616
Acerca de Apache.
Apache es un servidor HTTP de cdigo fuente abierto y licenciamiento libre que funciona en Linux,
sistemas operativos derivados de Unix, Windows, Novell Netware y otras plataformas. Ha
desempeado un papel muy importante en el crecimiento de Internet y continua siendo el servidor
HTTP ms utilizado, siendo adems el servidor de facto contra el cual se realizan las pruebas
comparativas y de desempeo para otros productos competidores. Es desarrollado y mantenido por
una comunidad de desarrolladores auspiciada por Apache Software Foundation .
URL: http://www.apache.org/
1/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
yumyinstallmod_ssl
Ejecute lo siguiente para incluir soporte para PHP y sus mdulos para MySQL y PostgreSQL :
yumyinstallphpphpmysqlphppgsql
Nota.
En CentOS 6 y Red Hat Enterprise Linux 6, el soporte para Python se incluye con el paquete mod_wsgi. En CentOS 5
y Red Hat Enterprise Linux 5, el soporte para Python se incluye con el paquete mod_python.
yumyinstallmod_python
Para poder realizar pruebas desde el mismo anfitrin local puede utilizar cualquier navegador
Firefox, Elinks, Lynx u Opera. A fin de poder prescindir del uso del modo grfico y poder trabajar
desde una terminal de texto, sugerimos instalar y utilizar el navegador Lynx.
yumyinstalllynx
Utilizando system-config-firewall.
Ejecute lo siguiente:
systemconfigfirewalltui
Habilite las casillas WWW (HTTP) y WWW Seguro (HTTPS) y aplique los cambios.
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
2/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Servicio iptables.
Ejecute lo siguiente:
iptablesAINPUTmstatestateNEWmtcpptcpdport80jACCEPTiptablesAINPUTm
statestateNEWmtcpptcpdport443jACCEPT
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
3/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Shorewall.
Edite el archivo /etc/shorewall/rules :
vi/etc/shorewall/rules
Reinicie el servicio:
serviceshorewallrestart
Ejecute lo siguiente para reiniciar el servicio e interrumpiendo todas las conexiones establecidas en
ese momento:
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
4/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
servicehttpdrestart
Ejecute lo siguiente para cargar los cambios en la configuracin sin interrumpir el servicio y
manteniendo activas todas las conexiones establecidas:
servicehttpdreload
SELinux y Apache.
En CentOS y Red Hat Enterprise Linux , de modo predeterminado SELinux viene activo en modo
obligatorio (enforcing). ste aade seguridad y proteccin adicional. Algunas opciones impedirn
utilizar ciertas funciones, como directorios virtuales fuera del directorio /var/www , directorios
~/public_html , el envo de correo electrnico desde aplicaciones basadas sobre HTTP, etc.
Desactivar por completo SELinux en un sistema operativo para servidores en lugar de intentar
aprender a utilizarlo puede considerarse algo absolutamente irresponsable y negligente e
invariablemente denotar una completa ignorancia de parte del administrador de sistemas respecto
de aspectos de seguridad fundamentales en CentOS y Red Hat Enterprise Linux.
Polticas ms utilizadas.
Ejecute lo siguiente para permitir el envo de correo electrnico a travs de Apache:
setseboolPhttpd_can_sendmail1
Ejecute lo siguiente para permitir que Apache pueda leer contenidos localizados en los directorios de
inicio de los usuarios locales:
setseboolPhttpd_read_user_content1
Nota.
Estas ltimas dos polticas son indispensables para el funcionamiento de cualquier cliente de correo electrnico basado
sobre HTTP (Webmails).
Ejecute lo siguiente para habilitar el uso de los directorios ~/public_html de los usuarios regulares o
anfitriones virtuales asignados a usuarios regulares:
setseboolPhttpd_enable_homedirs1
Ejecute lo siguiente para permitir administrar a travs de FTP o FTPS cualquier directorio
gestionado por Apache o bien permitir a Apache funcionar como un servidor FTP escuchando
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
5/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Ejecute lo siguiente para permitir las inclusiones del lado del servidor (SSI, Server Side Includes):
setseboolPhttpd_ssi_exec1
Ejecute lo siguiente para permitir conexiones hacia bases de datos localizada en otros servidores:
setseboolPhttpd_can_network_connect_db1
Ejecute lo siguiente para permitir conexiones de red hacia otros servicios como por ejemplo sieve
en Round Cube Mail locales o remotos:
setseboolPhttpd_can_network_connect1
Ejecute lo siguiente para consultar todas polticas disponibles que existen para Apache:
getseboola|grephttpd
Ejecute lo siguiente para consultar estas mismas polticas junto con una breve descripcin:
semanagebooleanl|grephttpd
Contextos ms utilizados.
Cualquier contenido que sea puesto dentro de /var/www automticamente heredar el contexto
httpd_sys_content_t .
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
6/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Lo anterior permitir establecer los contextos establecidos como los predeterminados para cada
directorio o archivo definido. Es decir se restaurarn estos mimos contextos al ejecutar restorecon
sobre estos archivos o directorios. Puede aplicarse tambin con cualquiera de los otros contextos
descritos arriba.
Procedimientos.
Archivos de configuracin.
Cualquier ajuste que se requiera realizar, ya sea para configurar anfitriones virtuales, u otra
funcionalidad adicional, se puede realizar sin tocar el archivo principal de configuracin
(/etc/httpd/conf/httpd.conf ), utilizando cualquier archivo con extensin *.conf dentro del
directorio /etc/httpd/conf.d/ .
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
7/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Directorios virtuales.
El siguiente ejemplo aadir un alias para el directorio /srv/www/ejemplo/ haciendo se muestre
como http://127.0.0.1/ejemplo/ .
Genere primero el directorio /srv/www :
mkdirp/srv/www
Cambie los contextos de SELinux para /srv/www ejecutando chcon con la opcin -t con
httpd_sys_content_t como argumento:
chconthttpd_sys_content_t/srv/www
Ejecute lo siguiente para hacer que este contexto sea en lo sucesivo el predeterminado de este
directorio:
semanagefcontextathttpd_sys_content_t/srv/www
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
8/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Verifique que ste hered los mismos contextos de SELinux establecidos para /srv/www :
lsZ/srv/www
Asumiendo que realizar la prueba desde el mismo anfitrin local, visualice este nuevo directorio
virtual con cualquier navegador a travs de http://127.0.0.1/ejemplo/. Se mostrar que el directorio
existe, pero el acceso a ste se encuentra denegado.
Realice las comprobaciones desde el anfitrin local utilizando el navegador Lynx.
lynxhttp://127.0.0.1/ejemplo/
Lo anterior deber mostrar un error 403 (acceso denegado), pues el directorio carece de un archivo
ndice. Para poder acceder deber haber un documento ndice en el interior (index.html, index.php,
etc) o bien que dicho directorio sea configurado para mostrar el contenido.
Edite de nuevo el archivo /etc/httpd/conf.d/ejemplos.conf :
vi/etc/httpd/conf.d/ejemplos.conf
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
9/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Alias/ejemplo/srv/www/ejemplo
<Directory"/srv/www/ejemplo">
OptionsIndexes
</Directory>
La opcin Indexes indica que se deber mostrar el ndice de contenido del directorio en ausencia de
un archivo index.html. En Apache 2.4 se deniega el acceso a todos los directorios salvo que se
indique lo contrario, razn por la cual se utiliza Require all granted .
Recargue el servicio para que surtan efecto los cambios hechos a la configuracin:
servicehttpdreload
Asumiendo que realizar la prueba desde el mismo anfitrin local, acceda hacia
http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Si se requiere que este directorio tenga an mayor funcionalidad, se pueden aadir ms opciones,
como por ejemplo AllowOve rride, Includes y SymLinksIfOwnerMatch , como se muestra en el
siguiente ejemplo para Apache 2.2:
Alias/ejemplo/srv/www/ejemplo
<Directory"/srv/www/ejemplo">
OptionsIndexesIncludesSymLinksIfOwnerMatch
AllowOverrideall
</Directory>
En el ejemplo anterior:
La opcin SymLinksIfOwnerMatch habilita el uso de enlaces simblicos dentro
del directorio slo si los destinos de stos pertenecen al mismo usuario. Slo
utilice sta si necesita acceder a contenidos fuera del directorio a utilizar.
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
10/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Asumiendo que realizar la prueba desde el mismo anfitrin local, acceda hacia
http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Realice las comprobaciones desde el anfitrin local utilizando el navegador Lynx.
lynxhttp://127.0.0.1/ejemplo/
Si utiliza Apache 2.2 , defina algo similar a lo siguiente para limitar el acceso de un directorio que
est disponible slo hacia ciertas direcciones IP o segmentos de red:
Alias/ejemplo/srv/www/ejemplo
<Directory"/srv/www/ejemplo">
Orderdeny,allow
Denyfromall
Allowfrom127.0.0.0/8192.168.70.0/25
OptionsIndexes
</Directory>
El ejemplo anterior establece que el orden de acceso, donde primero se aplicarn las reglas de
denegacin y luego las que permitirn el acceso y que se denegar el acceso a todo el mundo,
permitiendo el acceso slo desde 127.0.0.0/8 y 192.168.70.0/25 .
Recargue el servicio para que surtan efecto los cambios hechos a la configuracin:
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
11/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
servicehttpdreload
Asumiendo que realizar la prueba desde el mismo anfitrin local, acceda hacia
http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Realice las comprobaciones desde el anfitrin local utilizando el navegador Lynx.
lynxhttp://127.0.0.1/ejemplo/
En Apache 2.2 la poltica predeterminada es permitir el acceso a todo el mundo. Comente o elimine
todas las lneas con directivas Allow, Deny y Order para tal fin:
Alias/ejemplo/srv/www/ejemplo
<Directory"/srv/www/ejemplo">
#Orderdeny,allow
#Denyfromall
#Allowfrom127.0.0.0/8192.168.70.0/25
OptionsIndexes
</Directory>
Lo anterior puede ser incluido en la configuracin existente para cualquier directorio o bien en
archivo .htaccess .
Genere el directorio /srv/www/privado/ ejecutando lo siguiente:
mkdirp/srv/www/privado
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
12/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Recargue el servicio para que surtan efecto los cambios hechos a la configuracin:
servicehttpdreload
Ejecute lo siguiente para cambir los permisos de slo lectura y escritura para usuario y asignar como
propietario al usuario y grupo apache:
chmod600/srv/www/.htpasswd
chownapache:apache/srv/www/.htpasswd
13/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
Ejemplo
Se proceder a asignar siguientes directivas al directorio en la ruta /var/www/aplicacion , mismo
que ser visualizado desde Apache como http://127.0.0.1/aplicacion/:
allow_url_fopen : permite hacer descargas desde PHP. til para actualizar
aplicaciones como Joomla. El valor predeterminado es On
expose_php : define si se muestra u oculta que PHP est instalado en el
servidor. El valor predeterminado es On.
post_max_size : define el tamao mximo de los datos enviados a travs de las
operaciones POST del servidor HTTP. El valor predeterminado es 8 MiB.
upload_max_filesize : tamao mximo de los datos a subir al servidor a travs
de PHP. El valor predeterminado es 2 MiB.
El valor para allow_url_fopen ser Off (requerido slo por aplicaciones PHP muy antiguas o muy mal
escritas), el valor para expose_php ser Off, el valor para post_max_size ser 32M y el valor para
upload_max_filesize ser 32M.
Genere el directorio /var/www/aplicacion ejecutando lo siguiente:
mkdir/var/www/aplicacion
ejecutando lo siguiente:
vi/etc/httpd/conf.d/ejemplodirectivasphp.conf
14/15
15/11/2016
AlcanceLibreConfiguracinbsicadeApache.
touch/var/www/aplicacion/.htaccess
Recargue el servicio para que surtan efecto los cambios hechos a la configuracin:
servicehttpdreload
Corrobore que los valores para las variables de PHP para el directorio involucrado realmente han
sido asignadas. En la sub-seccin PHP Core de la seccin Configuration , hay tres columnas. La
primera, Directive , corresponde a la directivas PHP. La segunda, Local Value , corresponde a los
valores de las directivas de PHP para el directorio actual. La tercera, Master Value , corresponde a
los valores de las directivas predeterminadas que estn definidas en el archivo /etc/php.ini .
Directive
Local Value
Master Value
post_max_size
32M
8M
expose_php
Off
On
allow_url_fopen
Off
On
upload_max_filesize
32M
2M
http://www.alcancelibre.org/staticpages/index.php/comoapache/print
15/15