Instalar un servidor Web en Debian

Estado echando un vistazo a paneles libres el otro día… y decidido montar un servidor web para despues probar distintos paneles de Hosting.

Para empezar tenemos que tener instalado Debian, sin interfaz gráfica.

Configurar dirección IP:

rokitoh@redorbita:~# nano /etc/network/interfaces

añadimos al final:

auto eth0

iface eth0 inet static
address 192.168.1.120
netmask 255.255.255.0
gateway 192.168.1..233

Para guardar Ctrl + O
Para salir Ctrl + X


El gateway es el servidor DNS, que ya en manuales anteriores instalamos. Ver manual servidor DNS

Editamos resolv.conf

Es necesario configurar  el archivo para poder resolver los nombres de los servidores en Internet.

rokitoh@redorbita:~# nano /etc/resolv.conf

y añadimos:

domain red-orbita.com
nameserver 192.168.1.233 #Servidor DNS

Para guardar Ctrl + O
Para salir Ctrl + X


Editamos /etc/hosts

El archivo hosts de un ordenador es usado por el sistema operativo para guardar la correspondencia entre dominios de Internet y direcciones IP

rokitoh@redorbita:~# nano /etc/hosts

añadimos:

192.168.1.120            red-orbita.com         www

Para guardar Ctrl + O
Para salir Ctrl + X

Nos vamos a nuestro servidor DNS para configurarlo.

rokitoh@redorbita:~# cd /etc/bind

Configuramos las zonas

rokitoh@redorbita:~# nano redorbita.com

y añadimos:

www        IN          A          192.168.1.120

Para guardar Ctrl + O
Para salir Ctrl + X


iniciamos el servidor DNS

rokitoh@redorbita:~# /etc/init.d/bind9 restart

Empezamos a instalar los paquetes necesarios:

rokitoh@redorbita:~# apt-get install  apache2 apache2-mpm-prefork  php5 libapache2-mod-php5 php5-gd php5-ps php5-cli php-pear php5-gd   libapache2-mod-chroot debootstrap

Enjaulamos Apache

Creamos los directorios:

rokitoh@redorbita:~# mkdir -p /home/rokitoh/var/chroot/etc

rokitoh@redorbita:~# mkdir -p /home/rokitoh/var/chroot/var/www

rokitoh@redorbita:~# mkdir -p /home/rokitoh/var/chroot/var/run

mkdir -p /home/rokitoh/var/chroot/usr/share/zoneinfo/Europe/

Creamos la jaula chroot:

rokitoh@redorbita:~# debootstrap lenny /home/rokitoh/var/chroot http://ftp.fr.debian.org/debian

(Paciencia, se tira un rato)

Copiamos los ficheros importantes dentro de la jaula:

rokitoh@redorbita:~# cp -a /etc/resolv.conf  /home/rokitoh/var/chroot/etc/
rokitoh@redorbita:~# cp -a /etc/hosts /home/rokitoh/var/chroot/etc/
rokitoh@redorbita:~# cp -a /etc/mime.types /home/rokitoh/var/chroot/etc/
rokitoh@redorbita:~# cp -a /usr/share/zoneinfo/Europe/Madrid /home/rokitoh/var/chroot/usr/share/zoneinfo/Europe/
rokitoh@redorbita:~# cp -a /etc/adjtime /home/rokitoh/var/chroot/etc/

Instalamos apache2 dentro de la jaula

rokitoh@redorbita:~# chroot /home/rokitoh/var/chroot apt-get update
rokitoh@redorbita:~# chroot /home/rokitoh/var/chroot apt-get install apache2.2-common apache2-utils

Necesitamos copiar el «pidfile» de apache. Una vez copiado ese «pidfile» habrá que enlazarlo fuera de la jaula. De esta manera nos aseguraremos que esté accesible desde ambos sitios.

rokitoh@redorbita:~# mv /var/run/apache2.pid /home/rokitoh/var/chroot/var/run/apache2.pid
lrokitoh@redorbita:~# n -s /home/rokitoh/var/chroot/var/run/apache2.pid /var/run/apache2.pid

Nota:
A partir de la versión 2.2.10 de apache, ya no es necesario utilizar libapache2-mod-chroot (ni mod-chroot-common) para enjaular este servicio. De hecho, ese antiguo módulo provoca un conflicto que podreis ver en los logs de apache con forma de [alert] (2)No such file or directory: Can’t chdir to . La solución es muy sencilla, borramos/purgamos los dos paquetes mencionados, quitamos el fichero /etc/apache2/mods-enabled/mod_chroot.load y reiniciamos apache (/etc/init.d/apache2 restart)

Configurar Apache

rokitoh@redorbita:~# nano /etc/apache2/sites-available/default

 

DocumentRoot /home/rokitoh/var/chroot/var/
RedirectMatch ^/$ /www/

 


Abrimos un navegador y accedemos al servidor web, en mi caso: http://192.168.1.120

y podemos ver que nos redirige a la carpeta /www dentro de la carpeta personal de nuestro usuario /home/rokitoh


Añadir soporte php5

rokitoh@redorbita:~# chroot /home/rokitoh/var/chroot/ apt-get install php5-common

A continuación vamos añadirle una linea al directorio apache2.conf para poder tener servicio PHP en el servidor web. para ello ejecutamos el siguiente comando en un terminal:

rokitoh@redorbita:~# echo “DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml” >> /home/rokitoh/var/chroot/etc/apache2/apache2.conf

Para verificar que se a añadido esa linea al archivo podemos ejecutar:

rokitoh@redorbita:~# cat /home/rokitoh/var/chroot/etc/apache2/apache2.conf

y al final de la linea podemos observar la linea.

Comprobamos si realmente tenemos servicio php, para ello vamos a crear un archivo llamado: compatible.php

rokitoh@redorbita:~# nano /home/rokitoh/var/chroot/var/www/compatible.php

En el archivo ponemos el siguiente codigo:

<?php phpinfo(); ?>

Para guardar Ctrl + O
Para salir Ctrl + X

Abrimos un navegador y accedemos al archivo guardado: http://192.168.1.120/www/compatible.php

Si todo a ido bueno nos tendrá que mostrar una pantalla como esta:

Instalar MySQL

rokitoh@redorbita:~# apt-get install mysql-server-5.0 mysql-client-5.0 php5-mysql

Debian nos abrira una ventana con la configuración de mysql-server para establecer una contraseña.

Paramos el servicio:

rokitoh@redorbita:~# /etc/init.d/mysql stop

Movemos la carpeta del pidfile y el socket de mysql y enlazamos

rokitoh@redorbita:~# mv /var/run/mysqld /home/rokitoh/var/chroot/var/run/mysqld
rokitoh@redorbita:~# ln -s /home/rokitoh/var/chroot/var/run/mysqld /var/run/mysqld

Arrancamos el servicio de mysql:


rokitoh@redorbita:~# /etc/init.d/mysql start

Instalar phpmyadmin

phpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 50 idiomas. Se encuentra disponible bajo la licencia GPL

para installarlo:

rokitoh@redorbita:~# apt-get install phpmyadmin

Copiamos el bichero a nuestro servidor web:

rokitoh@redorbita:~# cp -a /usr/share/phpmyadmin /home/rokitoh/var/chroot/var/www

Abrimos un navegador y ponemos la URL, en mi caso: http://192.168.1.120/www/phpmyadmin/

y si todo a salido bien, nos tendrá que salir una pantalla como este para logearnos

Instalar phpsysinfo

phpSysInfo es un script PHP open source que se instala el servidor y ofrece un detallado informe sobre el software y el hardware del mismo. En este informe se encuentran datos sobre:

  • Información básica del sistema.
  • Información sobre el hardware.
  • Información de la red.
  • Información sobre el uso de la red y la memoria.

Para instalarlo:

rokitoh@redorbita:~# apt-get install phpsysinfo

Copiamos el archivo:

rokitoh@redorbita:~# cp -a /var/ww/phpsysinfo /home/rokitoh/var/chroot/var/www

Abrimos de nuevo el navegador y accedemos para ver si esta instalado perfectamente: http://192.168.1.120/www/phpsysinfo/index.php?disp=dynamic

si os fijáis en el en la esquina superior derecha tenéis 2 opciones, para modificar el idioma y el aspecto. cambiarlo a vuestro gusto.

Instalar SFTP

SSH File Transfer Protocol (también conocido como SFTPSecure File Transfer Protocol) es un protocolo de red que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos sobre un flujo de datos fiable. Se utiliza comúnmente con SSHpara proporcionar la seguridad a los datos, aunque permite ser usado con otros protocolos de seguridad. Por lo tanto, la seguridad no la provee directamente el protocolo SFTP, sino SSH o el protocolo que sea utilizado en su caso para este cometido.

instalamos openssh

rokitoh@redorbita:~# apt-get install openssh-server openssh-client


Vamos a crear un grupo el cual añadiremos todos los usuarios que queramos enjaular

rokitoh@redorbita:~# groupadd chroot

Creamos el usuario:

rokitoh@redorbita:~# useradd -g chroot s /bin/false -d /home/rokitoh/var/chroot/var/www rokitoh

Definimos una contraseña al usuario creado:

passwd rokitoh
Introduzca la nueva contraseña de UNIX:
Vuelva a introducir la nueva contraseña de UNIX:

Para configurar un servidor SFTP restringido uno debería usar las directivas ForceCommand ChrootDirectory en el archivo de configuración sshd_config, que se encuentra en /etc/ssh/sshd_config.

rokitoh@redorbita:~# nano /etc/ssh/sshd_config

Nos vamos a la linea:

#Subsystem      sftp    /usr/local/openssh/libexec/sftp-server

y la modificamos por:

Subsystem sftp internal-sftp

También buscamos y modificamos estas lineas:

LoginGraceTime 30
PermitRootLogin no

Puede restringirse el servicio a usuarios o a grupos de usuarios, de modo que si se requiere aplicar enjaulado al usuario1 usamos la directiva Match como sigue:

UsePAM yes
Match user rokitoh
ChrootDirectory /home/rokitoh/var/chroot/var/www
ForceCommand internal-sftp

Para el enjaulado del grupo chroot se hace de manera similar (de esta forma aparecerán en el directorio raíz todos los usuarios que hayamos creado):

Match group chroot
ChrootDirectory /home/rokitoh/var/chroot/var/www
ForceCommand internal-sftp

En el próximo capitulo veremos como integrar el panel de control GNUPanel…y daremos un poco mas de seguridad a apache.

Fuentes:

http://www.esdebian.org/wiki/enjaulado-sftp

http://www.esdebian.org/wiki/apache2-modchroot-soporte-php5-mysql

http://www.forat.info/2008/03/05/como-montar-un-servidor-web-con-linux-debian/

5 comentarios en “Instalar un servidor Web en Debian”

Deja una respuesta

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