Archivo de la etiqueta: servidor web

Proteger carpetas en Apache con .htaccess

Uno de los métodos más habituales para proteger carpetas en un servidor web bajo Apache, es la utilización del archivo .htaccess.

Proteger un directorio con .htaccess en Apache

Lo primero que tenemos que tener en cuenta, es si nuestro servidor Proteger directorios con .htaccessweb tiene activada la opción de trabajar con el fichero .htaccess.

Para comprobar si tenemos activada esta opción, es mirar en el fichero de configuración “/etc/apache2/sites-available/000-default.conf”, si no tenemos creado ningun virtual host, si tenemos el siguiente parámetro.

AllowOverride All

Si en nuestro fichero de configuración existe este parametro, pero con el atributo de “None”, cambiaremos este por “All”.

Con este parametro le indicamos a Apache que reconozca todas las directivas que encuentre dentro del fichero .htaccess. Si solo queremos que tenga en cuenta las directivas de autenticación en vez de poner “All” tendremos que poner “AuthConfig”.

Si tenemos creados virtual host, esto los tendremos que comprobar en el  fichero que hayamos utilizado para crear la configuración de nuestro virtual host.

Ejemplo de configuración.

<Directory /var/www/pruebas.local/public_html/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Crear nuestro fichero de contraseñas

Lo primero que tenemos que tener para proteger nuestra carpeta es un fichero con las contraseñas a las que vamos ha permitir el acceso. Este fichero contendrá el nombre de usuario y la contraseña codificada en MD5.

Para crear el fichero utilizaremos el siguiente programa.

htpasswd -c /ruta/donde/queremos/guardar/las/contraseñas nombreUsuario

Con el parametro “-c” le indicamos a htpasswd que vamos ha crear un fichero nuevo de contraseñas. Si el fichero ya existiera, este seria borrado.

Luego indicaremos la ruta completa donde queremos guardar el fichero con las contraseñas, no tiene por que estar dentro de las carpetas del servidor web, pero si tiene que tener los permisos para acceder a el.

Por ultimo le indicaremos el nombre de usuario que deseamos utilizar para esa contraseña.

Una vez finalizado nos quedara un fichero con la siguiente linea.

usuario:$spr1$lE/2eTdy$q/FMRI9UrogzET/Ks/6mH/

Si queremos añadir más usuarios a nuestro fichero, simplemente no utilizaremos el parámetro “-c”, quedando de la siguiente manera.

htpasswd /ruta/donde/queremos/guardar/las/contraseñas nombreUsuario

Crear el fichero .htaccess

Para crear el fichero .htaccess, nos situaremos dentro del directorio que deseamos proteger.

cd /var/www/pruebas.local/public_html/protegido

Creamos el fichero .htaccess con nuestro editor favorito, en mi caso nano

nano .htaccess

Si el usuario con el estamos trabajando no tuviera los permisos suficientes para trabajar en el directorio que intentamos proteger, la creariamos utilizando “sudo”

sudo nano .htaccess

Si creamos el fichero, con cualquier usuario que no sea www-data, cambiaremos el propìetario del fichero, para no tener problemas.

sudo chown www-data:www-data .htaccess

Y añadimos las siguientes lineas al fichero .htaccess

AuthType Basic
AuthName "Area protegida, introduzca nombre de usuario y contraseña"
AuthUserFile /ruta/donde/queremos/guardar/las/contraseñas
Require valid-user

De esta forma, solo los usuario que están en el fichero de contraseñas que hemos creado, tendrán acceso al directorio.

Si solo queremos, que unicamente, que acceda un usuario de la lista que hemos creado. Cambiaremos el parametro de “Requiere” por “user” más el nombre de usuario que deseemos que tenga acceso. Quedando de la siguiente forma.

AuthType Basic
AuthName "Area protegida, introduzca nombre de usuario y contraseña"
AuthUserFile /ruta/donde/queremos/guardar/las/contraseñas
Require user UsuarioConAcceso

Y con esto ya tendríamos implementado nuestro control de accesos a nuestro directorio.

Si tiene alguna duda o sugerencia, déjanos un comentario.

Instalar servidor web Lighttpd en Debian

[singlepic id=26 w=320 h=240 float=right]

Lighttpd es un servidor web donde la característica principal de este, es su menor uso de cpu y memoria, lo que le hace perfecto para entornos donde, necesitamos una gran velocidad de proceso o donde las características del servidor no son muy buenas. En mi caso quería un software que corriera con relativamente fluido en un mini ordenador que tengo, la mejor opción que encontré fue esta.

Para instalar este servidor bajo una distribución Debian, podemos hacerlo mediante los típicos repositorios.

sudo apt-get install lighttpd

Con esto ya tenemos instalado nuestro servidor Lighttpd, para probar que la instalación ha sido correcta solo tenemos que abrir un navegador e introducir:

http://localhost

o

http://127.0.0.1

Pero solo con esto no haremos mucho, por lo que ahora pasaremos a instalar Mysql y Php5 para darle mas potencia al sistema.

Para instalar Mysql, tendremos que escribir el siguiente comando

sudo apt-get install mysql-server mysql-client

En la instalación de MySql nos va ha pedir la contraseña que queremos darle al usuario “root” de MySql, no confuncir con el “root” del sistema, no son el mismo usuario, por lo que deberemos de darle una contraseña distinta, para no tener problemas que sabiendo una nos puedan acceder a la otra cuenta.

Y ahora solo nos queda instalar Php5 con el siguiente comando

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Para hacer funcionar el php en una versión básica no hace falta instalar todos estos módulos, pero si son recomendables para que despues no nos surja algún fallo provocado por la falta de alguno de ellos.

Una vez instalados php y mysql solo nos queda probrar que la instacion ha sido correcta. Creamos un fichero dentro de la carpeta de servidor web

vi /var/www/info.php

He insertamos la siguiente linea

 <?php 
    phpinfo(); 
?>

Grabamos el fichero y cerramos el editor. Abrimos el fichero que hemos creado en un navegador

http://localhost/info.php

Y si nos aparece una pagina como esta, la instalación a sido correcta.

[singlepic id=25 w=320 h=240 float=center]

Si no funcionara podemos seguir los siguientes pasos. Editamos el fichero de configuración de php.

sudo vi /etc/php5/cgi/php.ini

Y añadimos las siguiente linea

cgi.fix_pathinfo = 1

Grabamos el fichero y salimos del editor. Ahora solo nos queda modificar el fichero de configuración del Lighttp

sudo vi /etc/lighttpd/lighttpd.conf

Buscamos la opción “server.modules” y añadimos “mod_fastcgi”,  (comillas y coma del final incluido. Nos tendra que quedar de la siguiente forma mas o menos

server.modules = (       
	"mod_access",     
	"mod_alias",       
	"mod_compress",       
	"mod_fastcgi",       
	"mod_redirect",
#      "mod_rewrite"
)

Vamos al final del fichero y añadimos las siguientes lineas.

fastcgi.server = ( ".php" => ((
    "bin-path" => "/usr/bin/php5-cgi",
    "socket" => "/tmp/php.socket",
    "max-procs" => 1,
    "bin-environment" => (
            "PHP_FCGI_CHILDREN" => "4",
            "PHP_FCGI_MAX_REQUESTS" => "1000"
        ),
    ))
)

Grabamos el fichero y salimos. Solo nos queda reiniciar el servidor de Lighttp

service lighttpd restart

Si todo ha salido bien y el fichero de configuración no tiene ningún error nos mostrar algo parecido a esto

[ ok ] Stopping web server: lighttpd.
[ ok ] Starting web server: lighttpd.

Si al reiniciar el servidor nos muestra algún error, leer el mensaje y solucionar el problema que nos indique.

Y con esto ya tenemos nuestro servidor web Lighttp instalado.