Ajaxterm + Apache + SSL


Después de buscar y buscar llegue a un tutorial de como configurar Ajaxterm de forma segura utilizando el servidor Apache y el protocolo SSL. Ajaxterm es una aplicación escrita en Python que nos permite tener acceso remoto a una máquina a través de una terminal común a todos los sistemas GNU/Linux pero con la diferencia que es vía web, por eso mismo es necesario la utilización del protocolo SSL el que hace que la información viaje encripatada.

Ahora les voy a dejar los pasos que segui pero con algunos cambios para llegar a tener todo configurado siguiendo el tutorial que les mencione, espero les sirva como a mi.

Instalamos el servidor web Apache:

# apt-get install apache2

Habilitamos los modulos proxy para apache:

# a2enmod proxy_http
# a2enmod proxy

Instalamos SSL y creamos el certificado:

# apt-get install openssl # apt-get install ssl-cert
# mkdir /etc/apache2/ssl
# /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Al configurarlo nos pedira el nombre de dominio entonces en vez de “localhost” como aparece colocaremos NuestroDominio con el que accederemos a nuestra máquina.

Habilitamos el ssl:

# a2enmod ssl

Instalamos ajaxterm y lo iniciamos:

# apt-get install ajaxterm
# /etc/init.d/ajaxterm start

Si nuestro puerto SSH no es el default (22) debemos cambiarlo para el servicio de ajaxterm haciendo:

# nano /etc/init.d/ajaxterm

SERVERPORT = 22

Creamos un nuevo archivo de host virtual, tener en cuenta que para mi ajaxterm utilice el puerto 8443 asi que dependiendo del que ustedes eligan tendran que cambiarlo en el archivo:

# nano /etc/apache2/sites-available/ajaxterm

************************************************************

Listen 8443

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

NameVirtualHost *:8443

<VirtualHost *:8443>
ServerName NuestroDominio
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

# Suppresses the Via header
ProxyVia Off
# Do not flood the log
#CustomLog /var/log/apache2/access.log combined env=!dontlog
#SetEnvIf Request_URI “^/ajaxterm/u” dontlog

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8022/
ProxyPassReverse / http://localhost:8022/
</VirtualHost>

************************************************************

Habilitamos el ajaxterm creado y reiniciamos los servicios:

# a2ensite ajaxterm
# /etc/init.d/apache2 restart
# /etc/init.d/ajaxterm restart

Ahora si hemos terminado y ya tenemos configurado ajaxterm con el protocolo https para poder acceder en forma remota y segura a nuestra máquina, podemos probarlo haciendo:

https://NuestroDominio:8443

o en forma local:

https://localhost:8443

Acá les dejo una captura de como deberían verlo:

Nota: Si en el momento en que reiniciamos el servidor apache nos sale el siguiente error:

“apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName”

la solución es editar el archivo httpd.conf:

#nano /etc/apache2/httpd.conf

agregandole la línea:

ServerName localhost

Anuncios

Instalando LAMP tras Router Encore ENDSL-A2+4R


Hace un tiempo les comenté como podían abrir puertos en diferentes router según el modelo, bueno ahora quiero compartir con ustedes un pequeño tutorial si se puede llamar sobre como montar el conjunto de herramientas LAMP en una máquina que se encuentra tras un router como bien dice el titulo Encore ENDSL-A2+4R, ya que me llevo algo de tiempo entender la configuración de éste asi que quizá a alguno le sirva.

Asi que bueno para empezar les comento que LAMP es un conjunto de herramientas que permiten por ejemplo en mi caso montar un servidor web en mi máquina con Ubuntu 9.04, las letras hacen referencia a las iniciales de Linux, Apache, MySQL y PHP para este caso.

Empezemos con la instalción de las herramientas desde la terminal:

Instalando Apache

sudo apt-get install apache2

Una vez instalado Apache lo iniciamos escribiendo:

sudo /etc/init.d/apache2 start

Y colocando en nuestro navegador web lo siguiente:

http://localhost ó http://ip-privada-máquina

y si nos aparece It works!, quiere decir que está funcionando.

Instalando PHP

sudo apt-get install php5

sudo /etc/init.d/apache2 restart

Instalando MySQL

sudo apt-get install mysql-server

Instalando phpMyAdmin

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Para entrar al panel de administración phpMyAdmin escribe en el navegador:

http://localhost/phpmyadmin

esto nos permitirá administrar la base de datos.

Ahora ya tenemos LAMP funcionando en nuestro equipo, el problema es cuando querramos acceder a nuestro servidor web desde fuera de nuestra red local con la ip pública de nuestra máquina, en realidad lo que estamos haciendo es acceder a la configuración de nuestro router, lo cual es correcto, así que lo que debemos hacer es que cuando se reciban peticiones al puerto 80 (puerto por defecto del servidor Apache, el cual podemos cambiar) desde fuera de la red local sea nuestra máquina la que responda y no el router, es simple no?, pero bueno a mi me costo un poco configurarlo pero es muy fácil asi que vamos con eso ahora.

Lo que vamos a hacer es acceder a la configuración de nuestro router por medio de la direccion 192.168.1.1 en mi caso:

Accedemos a la pestaña Services:

Pestaña_services

Ahi dentro en NAT Options vamos NAT Rule Entry y ahi vamos a colocar (add) una nueva regla para que redireccione el puerto 80 a nuestra máquina, para eso completamos los datos como están en la imagen, sólo que en Local Address From y Local Address To deben poner la ip privada de su máquina y en Rule ID el número a continuación de la ultima regla que tengan:

NAT_rule

Luego de esto vamos a la pestaña Admin, ahi dentro vamos a Management Control y en la fila correspondiente al servicio HTTP, sacamos el tilde correspondiente a WAN Access. Ahora para guardar los cambios vamos en la misma pestaña Admin a Commit & Reboot, y presionamos Commit y luego Reboot.

Pestaña_admin

Terminamos, ahora podremos acceder a nuestro servidor web desde afuera de la red local con nuestra ip pública, para probarlo le decimos a algún amigo conectado en el chat que ingrese a la dirección:

http://ip-publica-máquina

y si le aparece It Works! funciona correctamente, ahora un nuevo problema es cuando tenemos ip dinámica que lo que tendríamos que hacer es registrar un nombre dominio en Dyndns para nuestro equipo pero bueno eso lo dejamos para otra vuelta, espero haberme explicado lo mejor posible y que les sea de ayuda 😉