domingo, 6 de noviembre de 2011

Red Hat / CentOS: Running Apache with SELinux on a nonstandard port



En el post anterior explique los fundamentos para hacer correr SELinux con enforcing en virtualhosts fuera del directorio /var/www.
Ahora supongamos que queremos ejecutar también utilizando SELinux en enforcing Apache en un puerto diferente al 80, por ejemplo el 1080. Sabemos que utilizando un puerto menor a 1023 debemos utilizar root para poder iniciar httpd.

Lo primero que debemos hacer es cambiar la configuración del puerto en el archivo /etc/httpd/conf/httpd.conf.
# sed -i 's/Listen\ 80/Listen\ 1080/g' /etc/httpd/conf/httpd.conf
Verificamos el modo de SELinux, y nos encontramos que estamos en Enforcing:
# getenforce
1
Ahora si queremos iniciar Apache, este va a fallar, ya que el puerto 1080 no esta permitido por SELinux para escuchar conexiones de httpd. Por lo cual con el paquete policycoreutils-python previamente instalado hacemos uso de semanage:
# semange port -a -t http_port_t -p tcp 1080
Con esto permitimos que httpd pueda escuchar en el puerto 1080. Ahora si verificamos con semanage port -l vemos que el puerto 1080 se lista:
# semanage port -l
http_cache_port_t               tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t               udp     3130
http_port_t                          tcp      80, 443, 488, 8008, 8009, 8443, 1080
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp     5989
Si reiniciamos el servicio httpd vamos a ver que este levanta correctamente y ya podemos utilizar Apache en un puerto diferente.

No hay comentarios:

Publicar un comentario