viernes, 21 de noviembre de 2008

Autenticación en Apache

Se utiliza para restringir el acceso, ya que el cliente (usuario) debe de autenticarse ante el Servidor, para acceder a unos determinados recursos.

El mecanismo es sencillo.

1 el cliente manda su nombre y contraseña.
2 el servidor la comprueba, en un archivo de nombres y contraseñas. Si el cliente puede acceder o no.

Para ello seguiremos los siguientes pasos:

1.Paso se crea nuestro directorio, que contendrá nuestra página web dentro de la ruta, /var/www que es la que se usa por defecto:

En nuestro caso utilizaremos:

/var/www/apache.com/index.html



2. Paso se crea una carpeta "passwd" donde se almacenan las contraseñas.

Se recomienda ponerlo en otro sitio distinto a la carpeta contiene nuestra web así que la colocaremos un nivel por encima de donde se encuentra nuestra carpeta, aunque podéis ponerla donde queráis.

En nuestro caso un nivel jerárquico por encima donde se encuentra nuestro directorio contiene la web.

/var/passwd

A continuación ahora crearemos el archivo contendrá los usuarios y contraseña, para ello aplicaremos el comando:

sudo htpasswd -c /var/passwd/ .htpasswd alumno





donde el argumento "-c" solo se utiliza al crear el primer usuario, si lo aplicaremos con sucesivos usuarios sobrescribimos el anterior perdiendo esa información.

Me pedira una contraseña, y que la vuelva a confirmar.
Para añadir posteriormente usuarios, no hará falta poner el argumento
"-c".


3. Paso se crea un archivo oculto ".htaccess" dentro del directorio queremos ocultar, en nuestro caso dentro de:

/var/www/apache.com/



Este fichero debe de quedar configurado tal como muestra:

AuthType Basic
AuthName "Pagina restringida de alumno"
AuthUserFile /var/passwd/.htpasswd
Require user alumno


Como podemos observar, se configurar con unas directivas en las cuales

AuthType Basic especificamos que tipo de identificación se va a llevar a cabo, en este caso basica.

AuthName especificamos un texto descriptivo.

AuthUserFile especificamos la ruta donde se encuentra el archivos donde cortejar la contraseña introducida.

Require user
especifica que entra un solo usuario, o usuarios aislado.



4. Paso una vez tenemos hecho el directorio contiene nuestra página web y el fichero oculto ".htaccess" . También tenemos creada la carpeta (passwd) contiene el fichero con las contreseñas (.htpasswd).

Debemos debemos de habilitar nuestra pagina web, para ello hay que dar de alta un hosts virtual, para ello nos vamos a la ruta:

/etc/apache2/sites-availables

Aqui dentro crearemos nuestro hosts virtual, con la novedad, de que hay que añadirle una directivas, las cuales nos permiten hacer que nuestro sitio web, haga uso del fichero ".htaccess" y quede así protegido.



Estas directivas son:

<Directory /var/www/apache.com/>
Order allow,deny
Allow from all
Directory
<Directory>


5. Paso y último, seria habilitar nuestro hosts virtual,

sudo a2ensite apache.com

Y reiniciar nuestro Servidor Apache surtan efecto los cambios.

sudo apache2ctl restart.



Hay una segunda forma que es en vez de con la directiva "Requiere user", pues sea "Requiere group", de tal forma con ello conseguimos añadir una nueva capa de seguridad, es decir si el usuario que introducimos en nuestros sitio web, no pertenece al grupo, o uno de los grupos, no podremos acceder a dicho recurso.

AuthType Basic
AuthName "Pagina restringida de alumno"
AuthUserFile /var/passwd/.htpasswd
AuthGroupFile /var/passwd/grupos
Require group team

Para ello debemos de crear, ademas una carpeta, con un fichero contendrá el
nombre del grupo, y sus usuarios





martes, 18 de noviembre de 2008

Host Virtuales en Apache2.

Antes de empezar, estas configuraciones probablemente pueden variar, según nuestra distribución de Linux utilizada, y la versión de Apache utilizado. En nuestro caso el S.O. a sido Ubuntu desktop 8.04, y nuestro Servidor Apache versión 2.2.8.

##################################################
##################################################


Un mismo Servidor Web, puede dar servicio a multitud de sitios web.

Para ello, se configura Apache2, para servir diferentes sitios web de 2 formas posibles.

- Host virutales basados en direcciones IP.
- Host virtuales basados en nombre (dominio).



1º Manera administrar hosts virtuales basados en dirreciones IP.



Para ello debemos de disponer de varias direcciones IP, bien podemos hacerlo con varias interfaces de red (tarjetas de red) y cada una con su dirección IP.

O bien con interfaces Virtuales.

Las interfaces virtuales se crean con el comando:

sudo ifconfig ethN:n nuevaIP netmask mascara

donde en "N" mayuscula especificamos cual es el número de nuestra tarjeta queremos hacer virtual y en "n" en número interface de red virtual vamos a crear junto con su nueva dirección de red y su mascara, si no se especifica se pone la mascara por defecto, conforme a su clase.

Se deberia de crear una interface virtual este dentro del mismo rango de red, para asi poder trabajar con ella.








Una vez tenemos creada nuestra interface de red virtual,procedemos a crear nuestro host virtual basado en IP.

Para ello crearemos y modificaremos los ficheros se encuentran en:


/etc/apache2/sites-available.


El archivo vamos a crear lo podremos nombrar como deseemos, pero se recomienda ponerle un nombre relacionado al hosts Virtual alojamos, y su contenido.
Adjuntamos en una captura de pantalla.







Donde podemos observar nuestro hosts virtual responde a la IP 192.168.1.228

Nuestro hosts virtual se llama sitio1.com


El dominio de nuestro hosts virtual es www.sitio1.com

Se encuentra almacenado en la ruta /var/www/sitio1.com

Habilitándolo con el comando: a2ensite ficheroVirtual.


En nuestro caso a2ensite sitio1.com

Ahora reiniciamos el Servidor Apache, para que los cambios surtan efecto:

sudo apacheclt restart

Para comprobar, escribimos en nuestro navegador web favorito la IP le tenemos asignada a nuestro hosts virtual y nos muestra nuestra nuestra pagina web.

Tambien podemos hacer nos muestre nuestro navegador web el dominio solicitado, solamente en nuestro pc, si modificamos nuestro archivo hosts, y especificamos que dicho Dominio, pertenece nuestra IP Virtual.








NOTA: Cuando servimos hosts, basados en IP virtuales, hay que tener en cuenta que estas direcciones IP, configuradas de esta manera, solo duran en el equipo hasta que se reinicie este, posteriormente al reinicio, no tendremos esa interface, y por consiguiente no funcionaria nuestro Servidor. Para estas interfaces sean permanentes hay que editar el fichero:



/etc/network/interfaces






2º Manera administrar hosts virtuales basados en Nombre.


Para ello procedemos de la misma manera el caso anterior:

/etc/apache2/sites-available.

Editamos el archivo default que es el primero archivo de configuración consulta nuestro Servidor Apache para mostrar paginas dentro de el, editamos la primera linea cambiando la directiva "NameVirtualhost *" cambiando el asterisco, por la dirección IP física tengamos activada.





Volvemos a crear un archivo, en el mismo directorio se encuenta nuestro fichero default pero en este caso pondremos de nombre al fichero algo descriptivo, en nuestro caso "nombre.com"






A continuación nos vamos al directorio: /var/www
dentro del cual, crearemos la carpeta con el mismo nombre especificamos en el fichero del caso anterior.

Entonces seria

cd /var/www sudo mkdir nombre.com




y dentro de esta carpeta crear nuestro documento html, por defecto cargara los que comiencen por index.html.

Para hacer empiece por el nombre de inicio, queramos, hay que editar de nuevo el archivo "default" se encuentra dentro de: /etc/apache2/sites-availables

En el añadiremos justo debajo de la primera linea, otra directiva, que afecta a todos los directorios Virtuales.

En este caso la directiva DirectoryIndex seguida de los nombres queremos darle a los nombres de inicio de nuestros sites, tener claro empieza a buscarlos por orden intruducimos los nombres.




A continuación habilitamos nuestro site, de igual manera que los basados en IP, con el comando.

Habilitándolo con el comando: a2ensite ficheroVirtual.

En nuestro caso a2ensite nombre.com

Ahora reiniciamos el Servidor Apache, para que los cambios surtan efecto:

sudo apacheclt restart


Ahora bastaria con poner nuestra dirección IP y nos muestraria el contenido de nuestro site.
Pero tambien podemos hacer nuestro navegador responda a nuestro dominio, volviendo a editar, el fichero /etc/hosts

En el cual añadimos la IP este a la escucha nuestro servidor Apache, y el nombre dominio a resolver.





viernes, 7 de noviembre de 2008

Tutorial Apache

Para instalar Apache en Ubuntu tenemos dos opciones: desde un terminal o desde el Synaptic.

Desde un terminal:

sudo aptitude install apache2-mpm-prefork

Desde el Synaptic:

Buscamos “apache2” (sin las comillas).
Seleccionamos el paquete apache2-mpm-prefork.
Pulsamos sobre Aplicar.
En cualquiera de los dos casos se instalarán más paquetes como por ejemplo el apache2.2-common.

Una vez instalado el servidor disponemos de un script que nos permite controlar su estado, se trata de apache2ctl.
Para iniciar el servidor web tenemos que ejecutar el siguiente comando:

apache2ctl start

Para comprobar que funciona, podemos teclear la siguiente dirección en el navegador:

http://localhost




Al iniciar el servidor en Ubuntu, nos aparecerá el siguiente mensaje:

"apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName"





Si se añade una línea con ServerName localhost en el fichero apache2.conf, se elimina el mensaje.

sudo gedit /etc/apache2/apache2.conf




Las opciones de apache2ctl son las siguientes:
start → para arrancar el servidor. Si ya está en marcha, nos avisará de ello.
graceful → relee los ficheros de configuración sin cerrar las conexionas activas.
Las conexiones nuevas se iniciarán con la nueva configuración.
restart → reinicia el servidor, pero a diferencia del anterior, cierra las conexionas activas.
stop → para el servidor y cierra las conexiones.

También se puede iniciar/parar el servidor con
#/etc/init.d/apache2 start|stop



Los ficheros de configuración de Apache se encuentran en /etc/apache2.
Los ficheros de configuración más importantes son:
/etc/apache2/apache2.conf → fichero de configuración principal.
/etc/apache2/ports.conf → indica el puerto en el que escucha Apache.
/etc/apache2/sites-available/ → directorio de los ficheros de configuración de los hosts virtuales.
/etc/apache2/conf.d/charset → indica el conjunto de caracteres por defecto.


Ahora una vez tenemos instalado nuestro Apache, podemos entrar desde un navegador web, introduciendo localhost, o bien modificar el fichero:

/etc/hosts

Donde añadiremos el nombre dominio, queremos entrar nuestro propio equipo, que es donde esta instalado nuestro Servidor Web.

Así bastara la próxima vez con poner nuestro dominio "www.tutorialapache.com" en un navegador web.


Permitir los acentos en las páginas de nuestra web:

Para permitir los acentos en nuestras páginas,
debemos asegurarnos que la siguiente línea:

#AddDefaultCharset UTF-8

aparezca descomentada (sin #) en el archivo

/etc/apache2/conf.d/charset.

Y dentro de nuestro hmtl, la etiqueta dentro del head

<meta http equiv="Content-Type" content="text/html; charset=utf-8">






Una vez tenemos echo todo esto, la pagina que carga por defecto se encuentra:
/var/www/index.html

Tanto para editar el directorio donde se alojan nuestras páginas web por defecto en nuestro Servidor de páginas Web Apache, como para cambiar la prioridad de carga de distintos nombres inicio de página, editaremos el fichero.

/etc/apache2/sites-available/default
Por defecto los páginas se alogan donde especifica la directiva "DocumentRoot", es decir /var/www solo tendriamos cambiar este directorio a otro quisieramos en este caso lo dejaremos como esta.

Si queremos cambiar la prioridad, según el nombre de archivo queramos cambiar, se puede añadiendo la directiva:

DirectoryIndex inicio.html index.html index.php

seguida de la lista, de nombres por prioridad queremos nuestro servidor busque a la hora de mostrar nuestra página web.