Crear un servidor hosting seguro con Debian, LAMP y SFTP

Creo que el nombre del artículo ya es bastante descriptivo, vamos a ver como instalar y configurar un servidor para servicios de hosting, utilizando como sistema operativo GNU Linux, en este caso Debian, en su versión 8, con un servidor LAMP y daremos acceso a nuestros clientes a sus páginas webs vía SFTP

debian-world-conference

Hosting seguro con Debian, LAMP y SFTP

He utilizado un nuevo entorno de virtualización con el que llevo poco tiempo trabajando. Se trata de Proxmox, que utiliza la tecnología QEMU/KVM

Creamos una máquina virtual en Proxmox

Todavía no he tratado en la web el producto Proxmox, vamos a utilizar éste artículo para echarle un vistazo, creando la máquina virtual que utilizaremos para el servidor de hosting.

Yo ya tengo instalado Proxmox en un servidor físico, al cual me conecto vía interfaz web.

Podéis obtener información sobre dicho producto y su instalación , que es bien sencilla, en su página web. [proxmox.com]

Accedo al panel web:

server-hosting-001

En la «Vista Carpetas«, crearemos una máquina virtual, en la parte superior derecha, marcando «Crear VM«

server-hosting-002

En el primer paso indicaremos el nombre de la máquina.

server-hosting-003

El tipo de sistema operativo.

server-hosting-004

La imagen ISO o CD/DVD, yo ya tengo varias imagenes ISO guardadas, incluida la de Debian 8 «Jessie»

server-hosting-005

Asignamos el espacio que creamos conveniente. Yo he asignado un espacio de 64 GB, en formato ‘qcow2‘, propio de QEMU, también podemos escoger otros como VMDK, propio de VMWARE

server-hosting-006

En la pestaña siguiente asignamos números de CPU y cores.

server-hosting-007

Desde el panel de Proxmox, en la creación la máquina virtual, podemos asignarle memoria fija o memoria de automática, es decir, siempre tendrá una memoria mínima asignada, pero si se da el caso que la supera, podrá utilizar hasta un máximo asignado.

server-hosting-008

Por último asignaremos la red. Yo de momento tengo una única red en uso.

server-hosting-009

Con todos estos pasos ya tenemos la máquina configurada. El proceso de creación puede tardar un poco, depende de las características de nuestro hardware.

Ya podemos ver la nueva máquina, llamada ‘DebianHosting‘ creada.

server-hosting-010

Si hacemos ‘click’ con el botón derecho sobre la máquina, veremos un desplegable con varias opciones, elegiremos «Iniciar«

server-hosting-011

En el mismo desplegable escogemos «Consola», para poder acceder vía VNC de manera cifrada.

server-hosting-012

Entiendo que la mayoría de usuarios que están leyendo el artículo ya han instalado Debian alguna vez, o algún sistema similar. Por lo que en ésta parte no profundizaré.

Instalar servicios LAMP (Apache2, MySQL, PHP5)

En la web ya he hablado alguna vez de la instalación, pero como quiereo hacer una configuración un poco diferente, éste paso no me lo saltaré.

Actualizamos el sistema:

1
apt-get -y update

Instalamos el servicio Apache2

1
apt-get -y install apache2

Realizamos la instalación de los paquetes necesarios del servidor MySQL

1
apt-get -y install mysql-server mysql-common mysql-client

Le toca el turno a PHP5 y al módulo de apache2

1
apt-get -y install php5 libapache2-mod-php5

Podemos también añadir los módulos gd y curl, que se suelen utilizar en los proyectos web.

1
apt-get -y install php5-curl php5-gd

Y por último el módulo mysql para PHP

1
apt-get -y install php5-mysql

Ya podemos reiniciar el servicio web:

1
service apache2 restart

Si todo ha ido bien, ya podremos ver la siguiente imagen en nuestro navegador:

server-hosting-013

Configurar los diferentes Virtual Host en Apache

Para poder funcionar los diferentes proyectos web, debemos crear los diversos vhost en la configuración de Apache2.

Imaginemos que tenemos tres proyectos web, los tres utilizan WordPress, se tratan varios desarrollo personales, de Juan, María y Carmen. Que llamaremos:

  • juanfotografias.com
  • mariadesarrollos.es
  • carmeningieneria.net

Creamos sendas carpetas en /var/www/

1
mkdir /var/www/juanfotografias.com
1
mkdir /var/www/juanfotografias.com/htdocs
1
mkdir /var/www/mariadesarrollos.es
1
mkdir /var/www/mariadesarrollos.es/htdocs
1
mkdir /var/www/carmeningieneria.net
1
mkdir /var/www/carmeningieneria.net/htdocs

Es importante crear la subcarpeta htdocs, que será donde el usuario vía SFTP podrá modificar los ficheros y carpetas.

Utilizaremos el fichero /etc/apache2/sites-available/000-default.conf como plantilla para modificar con los datos de cada web.

Ahora lo copiaremos para cada uno de nuestros proyectos:

1
cp /etc/apache2/sites-availabe/000-default.conf /etc/apache2/sites-available/juanfotografias.com.conf
1
cp /etc/apache2/sites-availabe/000-default.conf /etc/apache2/sites-available/mariadesarrollos.es.conf
1
cp /etc/apache2/sites-availabe/000-default.conf /etc/apache2/sites-available/carmeningieneria.net.conf

Modificamos el primero:

1
nano /etc/apache2/sites-available/juanfotografias.com

Lo modificamos de la siguiente manera:

1
2
3
4
5
6
7
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
 
ServerName www.juanfotografias.com
ServerAlias juanfotografias.com
1
DocumentRoot /var/www/juanfotografias.com/htdocs

Esto lo debemos hacer con los tres ficheros, en cada uno debemos indicar la ubicación del proyecto.

Ahora añadiremos los Virtual Host:

1
a2ensite juanfotografias.com
1
a2ensite mariadesarrollos.es
1
a2ensite carmeningieneria.net

De ésta manera se ubicará un enlace en la carpeta /etc/apache2/sites-enabled

Y podemos reiniciar otra vez el servidor:

1
service apache2 restart

Hasta ahora hemos hecho una configuración básica, evidentemente quedarían muchas cosas por hacer, para que no sea muy extenso el artículo, ésta parte la dejaremos como finalizada.

 

Acceder al hosting vía SFTP

Ahora toca una parte muy interesante, ya que crearemos usuarios «enjaulados» dentro de las carpetas de sus proyectos.

Instalaremos el servicio openssh:

1
apt-get -y install openssh-server
1
apt-get -y install openssh-client

Crearemos usuarios y el grupo de usuarios:

1
groupadd usuariossftp
1
useradd -g usuariossftp -s /bin/false -d /var/www/juanfotografias/ Juan
1
useradd -g usuariossftp -s /bin/false -d /var/www/mariadesarrollos/ Maria
1
useradd -g usuariossftp -s /bin/false -d /var/www/carmeningieneria/ Carmen

Y asignamos contraseña a cada usuario:

1
passwd Juan
1
passwd Maria
1
passwd Carmen

Ahora asignaremos permisos de propietario sobre la carpeta htdocs correspondiente al usuario:

1
chown Juan:usuariossftp /var/www/juanfotografias.com/htdocs
1
chown Maria:usuariossftp /var/www/mariadesarrollos.es/htdocs
1
chown Carmen:usuariossftp /var/www/carmeningieneria.net/htdocs

Modificamos el fichero de configuración /etc/ssh/sshd_config

1
nano /etc/ssh/sshd_config

Modificamos la línea:

1
Subsystem sftp /usr/lib/openssh/sftp-server

Por:

1
Subsystem sftp internal-sftp

Y añadimos al final del fichero:

1
2
3
4
5
6
7
8
9
10
UsePAM yes
Match user Juan
ChrootDirectory /var/www/juanfotografias.com
ForceCommand internal-sftp
Match user Maria
ChrootDirectory /var/www/mariadesarrollos.es
ForceCommand internal-sftp
Match user Carmen
ChrootDirectory /var/www/carmeningienerias.net
ForceCommand internal-sftp

De ésta manera podremos acceder por usuario a cada carpeta.

Recordad reiniciar el servicio ssh.

Para que todo funcione bien debemos de asignar a la carpeta /var/www/ y a las de cada usuario como propietario a root, utilizando el comando chown, con los permisos 755, realizando lo propio con chmod. Para que pueda escribir el usuario usaremos la carpeta htdocs, que tendrá como propietario correspondiente el usuario.

Para el artículo me he servido de bastante información de Internet utilizando licencias libres:

esdebian.org | askubuntu.com | nireleku.com