Lo primero que necesitaremos es un servidor Web si queremos gestionarlo de esta manera, si no os hace falta os podéis saltar esta sección.
Con este objetivo vamos a usar Lighttpd que es un servidor muy ligero que soporta PHP y además instalaremos pound, es un proxy inverso que nos permitirá convertir cualquier interfaz HTTP que tengamos instalado en nuestro servidor en HTTPS de manera muy sencilla.
Para instalar todo esto usaremos el comando siguiente, previa actualización de los paquetes disponibles como siempre:
aptitude update
aptitude install lighttpd php5-cgi pound
Una vez instalado tener que retocar la configuración de PHP para que funcione correctamente, editaremos la configuración con este comando:
nano /etc/php5/cgi/php.ini
Y añadiremos al final la siguiente linea:
cgi.fix_pathinfo=1
El siguiente paso será habilitar el soporte PHP en lighttpd, para ello ejecutaremos los siguientes comandos:
lighttpd-enable-mod fastcgi
/etc/init.d/lighttpd restart
Ahora hay que editar la configuración para que funcione en IPv4 o nos dara algunos problemas no deseados, para ello editamos el siguiente fichero:
nano /etc/lighttpd/lighttpd.conf
Eliminando o comentando la linea siguiente:
#include_shell "/usr/share/lighttpd/use-ipv6.pl"
Para aplicar los cambios ejecutamos el siguiente comando:
/etc/init.d/lighttpd restart
Por seguridad en todo lo que hagamos de manera remota usar encriptación es muy importante de modo que voy a explicar como proteger dicho acceso con HTTPS, aunque lighttpd soporta SSL y puede funcionar como proxy inverso para esa tarea vamos a usar pound que es mucho más sencilla de configurar, funciona mucho mejor y da mejor rendimiento, además de que puede proteger interfaces de otras aplicaciones como por ejemplo Transmision o aMule tal y como también os explicare.
Lo primero va a ser generar el certificado que vamos a usar:
cd /etc/pound
openssl req -x509 -newkey rsa:2048 -keyout servidor.pem -out servidor.pem -days 3650 -nodes
Os pedirá rellenar los datos del servidor como es para nuestro uso particular podemos poner cualquier cosa, por ejemplo:
Generating a 2048 bit RSA private key
...............................................................+++
............................................................................................................................+++
writing new private key to 'servidor.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Republica independiente de mi servidor
Locality Name (eg, city) []:Servidor
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yomismo
Organizational Unit Name (eg, section) []:Mismoyo
Common Name (eg, YOUR name) []:servidor
Email Address []:servidor@localhost
Como el certificado es importante vamos a cambiarle los permisos para que solo root y el servidor web lo puedan leer:
chown root:www-data servidor.pem
chmod 640 servidor.pem
Ahora configuraremos pound, primero editaremos el fichero siguiente:
nano /etc/default/pound
Tenemos que poner el valor "startup" a 1:
startup=1
El siguiente paso es configurar, los servicios para los que va a hacer de proxy inverso, para ello editamos el siguiente fichero:
nano /etc/pound/pound.cfg
La configuración para proteger lighhtpd, amule y transmision sería esta, si os fijáis le decimos que certificado usar (pueden ser diferentes), en que puerto escuchar el HTTPS y en cual esta escuchando el servidor de verdad, que podría estar en otra máquina también:
## Minimal sample pound.cfg
##
## see pound(8) for details
######################################################################
## global options:
User "www-data"
Group "www-data"
#RootJail "/chroot/pound"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 30
## use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
# poundctl control socket
Control "/var/run/pound/poundctl.socket"
######################################################################
## listen, redirect and ... to:
#lighttpd
ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/etc/pound/servidor.pem"
Service
BackEnd
Address 127.0.0.1
Port 80
End
End
End
#transmission
ListenHTTPS
Address 0.0.0.0
Port 9093
Cert "/etc/pound/servidor.pem"
Service
BackEnd
Address 127.0.0.1
Port 9091
End
End
End
#amule
ListenHTTPS
Address 0.0.0.0
Port 4713
Cert "/etc/pound/servidor.pem"
Service
BackEnd
Address 127.0.0.1
Port 4711
End
End
End
Ahora arrancaremos pound y podremos acceder a nuestros interfaces de gestión por HTTPS en vez de HTTP si conectamos al puerto que hemos configurado, por ejemplo para aMule podríamos usar la siguiente URL:
https://servidor:4713/
Para arrancar el servidor ejecutamos:
/etc/init.d/pound start