Una de las finalidades de este manual es la de poder servir contenido Web desde nuestro servidor hacia nuestra red local y hacia Internet.
Para esto usaremos el programa Apache Web Server en su versión apache2-mpm-prefork que es la recomendada para Debian por su Multi-Processing Module (MPM) ya que es algo más rápido que el modelo tradicional.
Antes de nada, crearemos un usuario que en mi caso será “usuarioweb” con directorio raíz/home/usuarioweb, donde alojaremos el directorio que queremos sea visible públicamente. Con este usuario también tendremos acceso al FTP para poder subir y bajar archivos directamente. Así pues, desde consola nos conectamos al servidor via ssh y como root:
#addsuser usuarioweb
Se nos crearán los directorios automáticamente, e introduciremos el password por dos veces para su verificación. Nos preguntará algunos datos sobre el usuario, pero lo dejamos en blanco puesto que es opcional.
Añadiendo el usuario `usuarioweb’ …
Añadiendo el nuevo grupo `usuarioweb’ (1001) …
Añadiendo el nuevo usuario `usuarioweb’ (1001) con grupo `usuarioweb’ …
Creando el directorio personal `/home/usuarioweb’ …
Copiando los ficheros desde `/etc/skel’ …
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para usuarioweb
Introduzca el nuevo valor, o presione ENTER para el predeterminado
Nombre completo []:
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [S/n]
Contestamos que sí (S) y listo. Ahora instalaremos apache2 y apache2-mpm-prefork:
#apt-get install apache2
#apt-get install apache2-mpm-prefork
Finalizada la instalación, podemos abrir un navegador en nuestro PC e introducir la IP estática del servidor. Veremos entonces un mensaje tal que “It works!”. Esto quiere decir que el servidor Web Apache está funcionando.
El directorio hacia donde apunta el Servidor Web Apache por defecto es a /var/www/apache2-default. Esto lo podemos cambiar para que apunte a uno de los directorios que tenemos en nuestro directorio /home/usuarioweb. Crearemos una nueva carpeta llamada www donde alojaremos lo que queremos que sea público. Por debajo de ese directorio podremos alojar archivos para que sean vistos solo a nivel privado. Así pues, nos logeamos como usuarioweb y nos movemos hasta el directorio /home/usuarioweb/, y allí creamos la carpeta www:
$mkdir www
Ahora vamos a editar el archivo default que se encuentra en la ruta /etc/apache2/sites-available y vamos a substituir la ruta /var/www/ por la nuestra de nuestro /home/usuarioweb/www/. Nos logeamos como root:
#nano /etc/apache2/sites-available/default
Modificaremos los directorios, poniéndo los nuestros:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/usuarioweb/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/usuarioweb/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>
Ahora reiniciamos Apache con:
#apache2ctl restart
Si volvemos a introducir nuestra IP fija en un navegador veremos algo así:
Imaginemos ahora que queremos proteger mediante contraseña el acceso al directorio restringido que tenemos en /home/usuarioweb/www/restringido.
Para proteger el acceso a un directorio del servidor web mediante contraseña, primero creamos el archivo que contendrá los usuarios y las passwords.
# htpasswd -cm /home/usuarioweb/.htpasswd nombreusuario
Como vemos “.htpasswd” es el nombre que le he dado yo al archivo de claves. Puede llamarse de cualquier otra forma (recomendado si no hay más remedio que ubicarlo en la carpeta pública).
La opción -cm nos permite crear el fichero de claves. Lo usaremos la primera vez y, en sucesivas ocasiones, no será necesario. Una vez creado el fichero, ejecutaremos el comando sin el parámetro -cm:
# htpasswd /home/usuarioweb/.htpasswd nombreusuario2
Cada vez que creemos un usuario, htpasswd nos preguntará qué contraseña queremos asignarle.
El fichero de claves esté fuera de los directorios públicos del servidor web. De este modo, eliminamos la posibilidad de que sea descargado.
Por otra parte, limitaremos los permisos en el sistema para que el fichero .htpasswd sólo pueda ser leido por el usuario www-data (creado para el servidor web).
# chown www-data:www-data /home/usuarioweb/.htpasswd
#chmod 0660 /home/usuarioweb/.htpasswd
Una vez hecho todo ésto, nos situamos dentro del directorio a proteger (/home/usuarioweb/www/restringido) y creamos un fichero .htaccess con el siguiente contenido:
AuthName “Debe registrarse para poder acceder a este directorio”
AuthType Basic
AuthUserFile /home/usuarioweb/.htpasswd
Require valid-user
Y ya para terminar, hacemos que apache2 lea el fichero .htaccess que hemos creado en el directorio /home/usuarioweb/www/restringido, modificando el siguiente contenido al fichero /etc/apache2/sites-available/default:
Cambiar: AllowOverride None
Por: AllowOverride AuthConfig
Por supuesto, después recargaríamos la configuración de apache2:
# /etc/init.d/apache2 restart
Para acceder a la carpeta introducimos en nuestro navegador http//:192.168.X.XXX/restringido, donde 192.168.X.XXX es la ip del servidor. Veremos cómo nos pide un usuario y contraseña para acceder a ella.
ALGUNAS CURIOSIDADES MÁS DE APACHE2:
Deshabilitar el listado del contenido de directorios.
Si queremos evitar que los visitantes de nuestra web vean el contenido de cualquier directorio del sitio no tenemos más que especificar la opción Options -Indexes en el directorio principal (/home/usuarioweb/www/) definido en /etc/apache2/sites-available/default.
<Directory /home/usuarioweb/www/>
Options -Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>
Ahora bien, si lo que queremos es permitir que se listen los contenidos, salvo los de un directorio en concreto, podemos dejar la siguiente configuración en /etc/apache2/sites-available/default para permitir los listados:
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Y crear un fichero .htaccess en el directorio que queramos evitar listar. Imaginemos que no queremos que se liste el contenido del directorio privado que tenemos en /home/usuarioweb/www/restringido. Nos movemos al directorio y creamos un fichero .htaccess con el siguiente contenido:
Options -Indexes
Control de acceso a carpetas.
Si queremos, podemos deshabilitar totalmente el acceso a una carpeta, de tal forma que podremos acceder a los archivos mediante el sistema de archivos, pero no se podrán acceder a ellos vía web.
Para denegar el acceso vía web a una carpeta, para todo el mundo, creamos un archivo .htaccess en esa carpeta que contenga:
#Denegar el acceso a todos
deny from all
Si queremos denegar el acceso a todos, permitiéndolo tan sólo desde una IP específica, creamos un archivo .htaccess en esa carpeta que contenga:
#Denegar el acceso a todos
deny from all
# Permitir el acceso al equipo con IP 10.0.0.1
allow from 10.0.0.1
Y si queremos permitir tan sólo el acceso a un rango específico de IPs , creamos un archivo .htaccess en la carpeta que contenga las siguientes líneas:
deny from all
allow from 192.168.0.0/24











0 Respuesta a “Montaje de un Servidor Ciego con Debian Lenny (4.-Apache Web Server)”