0

Ejecutar IBM HTTP Server sin usuario root en UNIX

ibm-logoLas aplicaciones que se ejecutan con usuarios distintos a root en sistemas Unix y/o Linux no pueden escuchar en puertos de baja numeración. Por puertos de baja numeración entendemos todos aquellos por debajo del 1024. Los puertos por defecto de la mayoría de protocolos de Internet, incluyendo http y https, sulen ser de este tipo.

En Solaris 10, el IHS debe de ser arrancado con root para poder escuchar en puertos de baja numeración, a no ser que el usuario que arranca el proceso tenga el privilegio net_privaddr.

En AIX, HP-UX y Linux (y otras versiones de Solaris) también tenemos que arrancar el proceso con usuario root por los mismos motivos. Una solución alternativa sería utilizar un firewall para redireccionar las peticiones hechas al puerto 80 a otro puerto con numeración más alta. El servidor web escucharía en este puerto de alta numeración, no estando obligados por tanto a levantar el proceso con usuario root.

La mejor solución pasa por usar puertos distintos a los establecidos por defecto, que sean superiores al 1024.

Ejemplo de configuración en el httpd.conf:

# comienzo del ejemplo
Port 9661
ServerName servername.com

# Listen: Solo necesario si el servidor
# va a estar escuchando en más de 1 puerto.
Listen 9661

Listen 1445

<VirtualHost 192.168.1.100:1445>
ServerName servername.com
ErrorLog logs/servername.com-error_log
TransferLog logs/servername.com-access_log
SSLClientAuth none
SSLEnable
SSLServerCert mycert
</VirtualHost>

SSLDisable
Keyfile /directorio/key.kdb
SSLV2Timeout 100
SSLV3Timeout 1000

# fin del ejemplo

En la instancia del ejemplo superior, el contenido no seguro se sirve por el puerto 9661 a través de la URL http://servername.com:9661 y el contenido seguro a través de https://servername.com:1445.

Si intentásemos arrancar el proceso del IHS con usuario no root obtendríamos errores del tipo makesock, pues el proceso no podría escuchar por puertos inferiores al 1024. También obtendríamos errores de permission denied.

Es importante que el usuario que arranque el proceso en el ejemplo superior tenga acceso de lectura a los ficheros de configuración y permiso de escritura al directorio en que se almacenen los logs. Esto tal vez requiera arrancar con usuario root, cambiar el propietario o los permisos de los ficheros de log, según nuestra configuración.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *