Apache con hosts virtuales

Posteado por Dario Fernandez | Linux | Monday 22 June 2009 9:43 pm

En este artículo comenzamos a agregarle funcionalidad a nuestro servidor web Apache, se recomienda leer el artículo de instalación de Apache con soporte para SSL. Para iniciar, vamos a crear la estructura para alojar de forma ordenada los diferentes sitios.

Con el siguiente comando la hacemos de una sola vez.

mkdir -p /var/www/prueba/{cgi-bin,html,logs,etc,var}

De esta forma quedan creados dentro de la carpeta prueba cuatro directorios que luego albergaran los archivos necesarios, dentro del directorio ../html pondremos el index.html que es la página que se carga al inicio cuando escribimos la url de nuestra página.

El archivo de configuración para los diferentes sitios estarán en /etc/httpd/conf.d/, en este caso /etc/httpd/conf.d/prueba.conf, luego debemos crear uno para cada dominio por separado. Este tiene la configuración de los hosts virtuales con soporte para SSL.  Suponiendo que nuestro servidor web tiene IP 192.168.1.10, este es un ejemplo del contenido del archivo, teniendo en cuenta que lo que se pretende es con una sola IP alojar varios dominios distintos.

NameVirtualHost 192.168.1.10:80
 
ServerAdmin admin@prueba.com.uy
DocumentRoot /var/www/prueba/html
ServerName www.prueba.com.uy
ServerAlias prueba.com.uy
Redirect 301 / https://www.prueba.com.uy/
CustomLog /var/www/ prueba/logs/access_log combined
Errorlog /var/www/prueba/logs/error_log
 
NameVirtualHost 192.168.1.10:443
 
ServerAdmin admin@prueba.com.uy
DocumentRoot /var/www/prueba/html
ServerName www.prueba.com.uy
ScriptAlias /cgi-bin/ /var/www/prueba/cgi-bin/
SSLEngine on
SSLCertificateFile /etc/ssl/prueba/prueba.crt
SSLCertificateKeyFile /etc/ssl/prueba/prueba.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /var/www/prueba/logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r"\ %b"
CustomLog /var/www/prueba/logs/ssl_access_log combined
Errorlog /var/www/prueba/logs/ssl_error_log

Luego debemos reiniciar Apache para que surtan efecto los cambios realizados.

service httpd restart

Para probar si todo está funcionando, digitamos en la url de nuestro navegador http://prueba.com.uy, luego automaticamente se redirigira nuestra consulta a https://prueba.com.uy

Esto es posible si ya se tiene un servidor DNS, configurado en nuestra lan, de lo contrario debemos sustituir el nombre del dominio por la IP del equipo en este caso será http://192.168.1.10

Si repetimos el proceso y sustituimos la palabra prueba por intranet, y tenemos el DNS correctamente configurado, podemos digitar luego en la url http://intranet.com.uy, y obtener una respuesta positiva. De esta forma tenemos varios dominios en un mismo servidor con una sola dirección IP.

Espero que este artículo les sea de utilidad y si tienen dudas envíenlas.

VN:F [1.6.3_896]
Te gusto este post?
Rating: 0.0/10 (0 votes cast)

Instalar Apache con soporte SSL

Posteado por Dario Fernandez | Linux | Tuesday 16 June 2009 12:29 am

La idea de este tutorial es mostrar una forma muy elemental de instalar y configurar un servidor útil para alojar nuestros sitios Web, en este caso Apache con soporte para conexiones seguras SSL. En sucesivos tutoriales iremos agregando funcionalidad a nuestro servidor  y veremos el modo de hacerlo funcionar en conjunto con un servidor DNS y así tener acceso a los dominios virtuales que se creen.

Instalar Apache

La instalación de este servidor web es bastante sencilla, en este caso lo haremos con soporte para PHP, mysql, python, perl, ssl y tls.

yum -y install php php-mysql mod_perl mod_python mod_ssl

Con esto el servidor ya está funcionando, pero le haremos unas modificaciones para que refleje nuestras necesidades.

Configurar Soporte SSL

mkdir -m 0700 /etc/ssl

Se crea el directorio para almacenar las claves que se generan

mkdir -m 0700 /etc/ssl/prueba.com.uy

Creamos un subdirectorio para que sea mas prolijo solo con derechos para root que es donde se guardan las claves

cd /etc/ssl/prueba.com.uy

Ingresamos al directorio

openssl genrsa -des3 –rand file1.gz:file2.gz:file3.gz:file4.gz:file5.gz -out prueba.key 1024

Creamos la clave utilizando aleatoriamente los nombres de 5 archivos para aumentar la seguridad, ésta se llamará prueba.key

openssl rsa -in prueba.key -out prueba.pem

Generamos esta clave para que se pueda detener y arrancar el servicio httpd sin que se necesite ingresar una contraseña por parte del administrador

openssl req -new -key prueba.key -out prueba.csr

Opcionalmente creamos un archivo .csr para enviarlo a una autoridad certificadora la que nos envía un archivo .crt firmado por ellos y nos da un aval reconocido internacionalmente. Este proceso hace que se nos pidan algunos datos, en este caso lo llenamos con los datos de la prueba.

En caso de no necesitar o no querer un certificado con este aval, lo podemos crear nosotros con el siguiente comando:

openssl x509 -req -days 730 -in prueba.csr -signkey prueba.key -out prueba.crt

Luego le damos derecho de lectura solo a root sobre los certificados y con eso está listo nuestro servidor para comenzar a hacer pruebas.

chmod 400 /etc/ssl/prueba.com.uy/prueba.*

Espero que este tutorial les sea de utilidad y como siempre, si tienen alguna duda escríbanme y con gusto les daré una mano.

VN:F [1.6.3_896]
Te gusto este post?
Rating: 7.0/10 (1 vote cast)

Virtual Host y DNS

Posteado por Dario Fernandez | Linux | Wednesday 10 June 2009 12:22 am

Esta guía pretende mostrar la forma en que podemos agregarle funcionalidad al servidor de nombres que instalamos y configuramos en el anterior tutorial de DNS. Veremos algunos ejemplos para poder agregar a nuestra servidor con la misma IP, otros nombres diferentes, o en el caso de contar con un servidor web con dominios virtuales, poder resolver esos nombres para que las consultas que sean dirigidas a esas páginas puedan llegar a su destino.

Lo primero que haremos será agregar un poco de seguridad a nuestro servidor, para que solo atienda peticiones de nuestra lan. Para eso debemos modificar el archivo de configuración para reflejar esta realidad:

vi /var/named/chroot/etc/named.conf

y le agregamos una regla ACL para permitir únicamente hacer consultas a nuestra red y a localhost

acl "lan" {
127.0.0.1;
192.168.1.1/24;
};
options {
directory "/var/named/";
};
allow-query {
lan;
};

Luego de haberle agregado este detalle debemos comenzar a introducir las entradas para cada dominio virtual que se desee resolver, como lo hicimos con el dominio principal, por lo tanto al final tendremos algo como esto:

vi /var/named/chroot/etc/named.conf
zone "prueba.com.uy" IN {
 
type master;
 
file "zona.prueba.com.uy";
 
allow-query {lan};
 
};
 
zone "reversa.prueba.com.uy" IN {
 
type master;
 
file "1.168.192.in-addr.arpa";
 
allow-query {lan};
 
};
 
zone "intranet.com.uy" IN {
 
type master;
 
file "zona.intranet.com.uy";
 
allow-query {lan};
 
};
 
zone "webmail.com.uy" IN {
 
type master;
 
file "zona.webmail.com.uy";
 
allow-query {lan};
 
};

Para que estas entradas tengan sentido debemos tener creados esos archivo con las definiciones de cada dominio, y cada uno de ellos debe tener al menos esto:

$TTL 172800
 
@      IN      SOA       intranet.com.uy.     root.localhost. (
 
3
 
10800
 
7200
 
1296000
 
172800             )
 
;
 
IN      NS          web.prueba.com.uy.
 
www.intranet.com.uy.            IN        A          192.168.1.10
 
$TTL 172800
 
@      IN      SOA       webmail.com.uy.     root.localhost. (
 
3
 
10800
 
7200
 
1296000
 
172800             )
 
;
 
IN      NS          web.prueba.com.uy.
 
webmail.com.uy.            IN        A          192.168.1.10

Este puede ser perfectamente el caso de un servidor web con apache y dominios virtuales bajo la misma dirección IP, en el que por ejemplo podría estar una intranet y un webmail.

VN:F [1.6.3_896]
Te gusto este post?
Rating: 0.0/10 (0 votes cast)

Instalar Servidor de Nombres de Dominio DNS en Linux

Posteado por Dario Fernandez | Linux | Friday 5 June 2009 1:48 am

Este tutorial pretende mostrar la forma de instalar y configurar un sencillo servidor de nombres de dominio o DNS por sus siglas en inglés. Puede servir para una implementación de tamaño medio o pequeño. Se trata de seguir las instrucciones, copiar y modificar algunos archivos, sin tener que profundizar en el vasto mundo de los servidores de nombres.

Instalación

El proceso de instalación es bastante sencillo, simplemente deben digitar el siguiente comando y en pocos segundos estará listo, luego deben hacerse algunas modificaciones a los archivos de configuración.

yum -y install bind bind-chroot bind-utils caching-nameserver

Configuración

En Red Hat Linux y sus derivados,  por cuestiones de seguridad la instalación automáticamente crea una jaula chroot para los archivos del servicio named (DNS), es decir, que todos los archivos se encuentran en el directorio /var/named/chroot, y no en /etc, por este motivo la implementación se hace en esta distribución.

El primer paso es renombrar el archivo /var/named/chroot/named.rfc1912.zones

mv var/named/chroot/named.rfc1912.zones  var/named/chroot/named.conf

Luego debemos editarlo y agregarle los parámetros para nuestro servidor.

options {
directory "/var/named";				(nuevo directorio de trabajo)
forwarders {200.40.30.245; 200.40.220.245;}; 	(dirección de nuestro ISP)
};

Esto significa que usará el directorio /var/named que está dentro de /etc/namded/chroot como raíz, y las direcciones ip del ISP que aparecen son las que consultará cuando no sea capaz de resolver por sí mismo. En este caso son los DNS de Antel (es el proveedor de servicios en Uruguay).

zone "prueba.com.uy" IN {
type master;
file "zona.prueba.com.uy";
allow-query {any;};
};
zone "rversa.prueba.com.uy" IN {
type master;
file "1.168.192.in-addr.arpa";
allow-query {any;};
};

Estas son las definiciones de zonas que tendremos en nuestro DNS, por cada dominio que administramos o que deseamos resolver, debemos agregar la doble entrada. En cada una de estas definiciones indicamos el nombre de la zona, de qué tipo es, en este caso una zona maestra, y el nombre del archivo que tiene los parámetros de ese dominio.
Una vez que tengamos funcionado el archivo principal debemos comenzar a crear los archivos correspondientes a los dominios que necesitemos resolver.

Ejemplo del archivo zona.prueba.com.uy

$TTL 604800
@       IN       SOA    prueba.com.uy.        root.localhost. (
2009041001; serie 10-04-09
10800 ; tiempo de refresco
7200 ; reintentos de consulta
129600 ; tiempo tras el cual expira la zona
172800 ; tiempo total de vida
)
@          IN      NS                 server.prueba.com.uy
@           IN      MX      10     server.prueba.com.uy
@           IN      A      	 192.168.1.1
www     IN      A       192.168.1.1
correo  IN      A       192.168.1.1
PC-1        IN      A       192.168.1.3

En este archivo lo importante es el nombre del dominio en el registro primario SOA, y luego las definiciones de nombre del servidor NS, MX para el correo, y A que indica la dirección IP.

Este es el ejemplo el archivo de resolución inversa, que sera utilizado para responder a un pedido de dirección IP, en este caso cuando el usuario solicita por la 192.168.1.1, le saldrá la respuesta prueba.com.uy

Aqui un ejemplo del archivo

$TTL 3600
@       IN      SOA     prueba.com.uy.         root.localhost. (
2009041001 ; serie 10-04-09
28800 ; refresco
7200 ; tiempo entre reintentos
604800 ; expira la zona
86400 ; tiempo total de vida
)
@       IN      NS      server.prueba.com.uy.
1       IN      PTR     server.prueba.com.uy.
3       IN      PTR     PC-1

En este archivo lo importante es el SOA, NS, IN, y los números que se observan son los que corresponden a final de la dirección IP de los servidores o equipos que tengamos en la subred, en la que estamos resolviendo ese dominio.

Con estos parámetros básicos debería estar pronto para funcionar nuestro servidor de nombres. Luego configuramos el servicio para que inicie con el sistema y lo ponemos en funcionamiento.

chkconfig --levels 345 named on
service named start

En este momento podemos hacer una prueba desde algún equipo de la red que tenga nuestro servidor como DNS o desde el mismo servidor, este debe ser el resultado.

nslookup prueba.com.uy
 
Server:        prueba.com.uy
Address:    192.168.1.1#53
 
Non-authoritative answer:
Name:    prueba.com.uy
 
address: 192.168.1.1

Para finalizar, unas últimas configuraciones en el archivo /etc/hosts, debe tener esta linea:

127.0.0.1                 localhost.localdomain          localhost
 
192.168.1.1             server.prueba.com.uy          server

y en el archivo /etc/resolv.conf :

nameserver 192.168.1.1

Espero que el tutorial les sea de utilidad y si tienen consultas no duden en enviármelas.

Más información:

DNS en wikipedia

VN:F [1.6.3_896]
Te gusto este post?
Rating: 0.0/10 (0 votes cast)



Tecnopedia.net - 2009 / Condiciones de Uso / Contacto / RSS
Tecnopedia.net desarrollada bajo licencia Creative Commons Creative Commons License