Buscar aquí

miércoles, 29 de octubre de 2014

SFTP con otra instancia de SSH

Buen día

Supongamos que se contrata un servicio de VPS al que se puede acceder solo por ssh y con una llave como en amazon ec2, y que este VPS va a ser un servidor web. Los usuarios desarrolladores del VPS necesitan acceder a este servidor, pero el administrador no puede dar la llave por seguridad. ¿Solución? Un servidor ftp, por ejemplo, pero ftp es inseguro [1], pero podemos asegurar mediante ssl o pasarlo por un túnel ssh. Supongamos que no queremos todavía ssl, y accedemos a la segunda opción. ¿Cómo hacerlo en la instancia de amazon?

Bueno, he aquí una solución:

Seleccionamos un puerto que no esté siendo usado y lo abrimos en el firewall de amazon añadiéndolo a las reglas de seguridad del grupo. Para el ejemplo será el 2221.

Se crea un usuario para editar los archivos web. En amazon el usuario por defecto es www-data. Así que podemos cambiarlo. Para nuestro ejemplo, creamos el usuario con nombre http. Hacemos que apache arranque con este usuario.

Detenemos apache

sudo service apache2 stop

Editamos /etc/apache2/envvars

Cambiamos www-data por http

Editamos /etc/passwd

Cambiamos /home/http por /var/www

Cambiamos los permisos del directorio /var/www PERO no del directorio en si. Este debe ser de root

chown http:http -R /var/www
chown root:root /var/www


Reiniciamos apache

sudo service apache2 start

Copiamos /etc/ssh/sshd_config con otro nombre /etc/ssh/sshd_ftp_config y editamos ese archivo

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_ftp_config

sudo nano /etc/ssh/sshd_ftp_config


Cambiamos 22 por 2221

Cambiamos ChallengeResponseAuthentication no por ChallengeResponseAuthentication yes

Cambiamos PasswordAuthentication no por PasswordAuthentication yes

Cambiamos Subsystem sftp /usr/lib/openssh/sftp-server por Subsystem sftp internal-sftp

Y agregamos al final

Match User http
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

Y arrancamos el nuevo servicio

sudo /usr/sbin/sshd -f /etc/ssh/sshd_ftp_config

Y listo, Ya podemos conectarnos por filezilla por sftp

sftp://[ip] 

[1]http://juan0022.blogspot.com/2012/09/ftp-es-un-protocolo-inseguro.html