Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas Proyectos Sobre

Instalar un servidor Web en Debian

Read in English
Instalar un servidor Web en Debian

Tabla de contenidos

Lamp

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:

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

añadimos al final:

text
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.

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

y añadimos:

text
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

bash
rokitoh@redorbita:~# nano /etc/hosts

añadimos:

text
192.168.1.120            red-orbita.com         www

Para guardar Ctrl + O
Para salir Ctrl + X

Nos vamos a nuestro servidor DNS para configurarlo.

bash
rokitoh@redorbita:~# cd /etc/bind

Configuramos las zonas

bash
rokitoh@redorbita:~# nano redorbita.com

y añadimos:

text
www        IN          A          192.168.1.120

Para guardar Ctrl + O
Para salir Ctrl + X


iniciamos el servidor DNS

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

Empezamos a instalar los paquetes necesarios:

bash
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:

bash
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:

bash
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:

bash
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

bash
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.

bash
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

bash
rokitoh@redorbita:~# nano /etc/apache2/sites-available/default
text
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

Images
Añadir soporte php5

bash
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:

bash
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:

bash
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

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

En el archivo ponemos el siguiente codigo:

php
<?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:

Pantallazo 4

Instalar MySQL

bash
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:

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

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

bash
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:

bash
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:

bash
rokitoh@redorbita:~# apt-get install phpmyadmin

Copiamos el bichero a nuestro servidor web:

bash
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

Phpmyadmin

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:

bash
rokitoh@redorbita:~# apt-get install phpsysinfo

Copiamos el archivo:

bash
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

Images 1

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

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


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

bash
rokitoh@redorbita:~# groupadd chroot

Creamos el usuario:

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

Definimos una contraseña al usuario creado:

text
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.

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

Nos vamos a la linea:

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

y la modificamos por:

text
Subsystem sftp internal-sftp

También buscamos y modificamos estas lineas:

text
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:

text
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):

text
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/

Comentarios