LINUX MURCIA

Linux es un sistema operativo basado en Unix, desarrollado por una comunidad de informáticos a lo largo y ancho del planeta, algunos de ellos pagados (por empresas de distribuciones como Red Hat o Suse), pero otros muchos totalmente voluntarios.

Archivos de la categoría ‘Comos’

Capítulo 2. Configuración Post-Instalación de GNU/Linux

Publicado por cristobal39 en Sábado, Abril 25, 2009

Obtenido de: http://fferrer.dsic.upv.es/cursos/Linux/basico/ch02.html

Configuración de los niveles de ejecución

Como ya se ha dicho, el administrador tiene la potestad de variar el proceso de arranque de un sistema Linux, bien simplemente cambiando el nivel de ejecución al editar el fichero /etc/inittab o pasándole un parámetro al kernel indicando el nivel de ejecución deseado.

El sistema Linux, según la distribución elegida, vendrá con una configuración predeterminada de servicios que se deben lanzar en el proceso de arranque del sistema. De nuevo el administrador puede variar ese comportamiento. Si hemos seguido con atención la sección anterior, la forma más directa de hacer que un determinado servicio no se lance en un nivel de ejecución, sería borrar el enlace simbólico que exista en el directorio predeterminado del nivel de ejecución ( /etc/rc.d/rc<x>.d ). Si queremos volver a arrancar en el proceso de inicio el servicio, crearemos el enlace de nuevo y listo.

Si por el contrario, nuestras necesidades pasan por añadir al proceso de arranque un nuevo servicio, los pasos necesarios para integrarlo serían los siguientes:

  1. Crear un script en el directorio /etc/rc.d/init.d, cuyo esqueleto sea el siguiente:
    #! /bin/bash
    #
    # miservicio  Start/Stop miservicio.
    #
    # chkconfig: 2345 90 60
    # description:
    # Source function library.
    . /etc/init.d/functions
    prog=/usr/sbin/miservicio
    start() {
         echo -n "Iniciando $prog:"
         daemon miservicio
         RETVAL=$?
         echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/miservicio
         return $RETVAL
    }
    stop() {
        echo -n "Parando $prog: "
        killproc miservicio
        RETVAL=$?
        echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/miservicio
        return $RETVAL
    }
    case "$1" in
       start) start
              ;;
       stop) stop
              ;;
    esac

Publicado en Comos, General | Deja un Comentario »

Configuración del servidor de impresión: CUPS

Publicado por cristobal39 en Sábado, Abril 25, 2009

Bienvenido a la configuración del servidor CUPS

Esta es la pantalla de bienvenida del diálogo de configuración de su servidor. Pulsando sobre uno de los elementos de la vista de árbol en el lado izquierdo de la pantalla abre la parte adecuada de las opciones de configuración.

Cada opción tiene un valor predefinido. Los valores predeterminados permiten que CUPS funcione normalmente como un cliente funcional. Los clientes escuchan en el puerto TCP/IP 631 en escucha de la difusión realizada por los servidores CUPS en una LAN. Esta información permite a los cliente imprimir inmediatamente después de recibirla, sin que los clientes tengan que instalar o configurar ninguna impresora.

Para configurar un servidor CUPS (que anuncia su servicio a la LAN) necesita cambiar las opciones predeterminadas.

El diálogo para configurar el servidor CUPS: pantalla de bienvenida.


El diálogo para configurar el servidor CUPS: pantalla de bienvenida


Para selecionar el valor predeterminado de cualquier elemento active la casilla en el lado derecho de la pantalla. Para configurar un elemento con un valor diferente, desacitve la casilla y proceda con la opción que desea en el lado izquierdo de la pantalla.

La configuración completa del servidor incluye:

Cada de uno de estos elementos de configuración se describirán en las siguientes secciones de este manual.

Publicado en Comos | Deja un Comentario »

Manual de usuario de KPlayer

Publicado por cristobal39 en Jueves, Febrero 12, 2009

http://docs.kde.org/stable/es/extragear-multimedia/kplayer/index.html

Kirill Bulygin

Traductor: Santiago Fernández Sancho

revisión 0.6.2 (2007-05-13)

KPlayer es un reproductor de medios de KDE basado en MPlayer.

Si tiene problemas con KPlayer, consulte el micro CÓMO resolver problemas.


Publicado en Comos | Deja un Comentario »

Pasar DVD a divx en Linux

Publicado por cristobal39 en Lunes, Febrero 9, 2009

Javier Penalva 29 de junio de 2005

http://www.genbeta.com/2005/06/29-pasar-dvd-a-divx-en-linux

Uno de los principales temores de los usuarios a la hora de probar y utilizar a diario el sistema operativo Linux, es la falsa creencia de que en Linux no encontrarán el software que necesitan en cada momento. Evidentemente esto no es cierto.

Hoy os presentamos en Genbeta una de las utilidades que pueden convencer a más de un usuario a dar el paso a Linux: pasar de DVD a divx.

drip082_01s.jpg
Leer el resto de esta entrada »

Publicado en DIVX &XVID | Deja un Comentario »

Cómo configurar MySQL™

Publicado por cristobal39 en Viernes, Enero 2, 2009

Autor: Joel Barrios Dueñas
Correo electrónico: jbarrios arroba linuxparatodos punto net
Sitio de Red: http://www.linuxparatodos.net/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

MySQL™ es actualmente el servidor de base de datos más popular para los desarrollos web. Es muy rápido y sólido, son muchos los administradores que lo instalan, y sin embargo no tantos los que lo configuran correctamente, o que siquera saben que hay que configurarlo.

Este manual es solo una referencia rápida para el procedimiento de instalación y configuración de un servidor MySQL™. La generación de tablas y el ingreso de datos dentro de los campos de éstas puede hacerse a través de mandatos SQL en el Shell de MySQL™, utilizando un fichero .sql (como en es caso de PHP NUKE y otras aplicaciones web) o bien utilizando clientes MySQL™, como son MySQLGUI, GtkSQL o Gmysql.

Procedimientos.

MySQL™ es incluido actualmente en la mayoría de las distribuciones de GNU/Linux de hoy en día, por lo que no habrá problema alguno en conseguir los binarios necesarios y propios de la distribución que se utilice. Bastará con instalar los incluidos en el CD de instalación o bien los disponibles entre los paquetes de actualización para la distribución que se utilice.

Pregunte al sistema si se encuentran instalados los paquetes que componen MySQL™:

rpm -q mysql mysql-server

De no estar instalados, o bien si hay paquetes más recientes entre las actualizaciones disponibles, cambie a súper usuario o bien ingrese como root al sistema. Si utiliza Red Hat™ Enterprise Linux, procederemos a instalar lo necesario del siguiente modo:

up2date -i mysql mysql-server

Si utiliza White Box Enterprise Linux o bien otros clones de Red Hat™ Enterprise Linux, se ejecutar lo siguiente:

yum -y install mysql mysql-server

Lo anterior descargará las más recientes actualizaciones de seguridad de MySQL™ para Fedora™ Core, junto con todo lo que haga falta para satisfacer todas las dependencias de biblotecas y otro software.

Si utiliza Red Hat™, CentOS o White Box Enterprise Linux 4.0, ejecute system-config-securitylevel (mod gráfico), vaya a la pestaña de SELinux y en la sección de SELinux Service Protection habilite la casilla que dice Disable SELInux protection for mysqld daemon. De otro modo MySQL no podrá siquiera iniciar.

Desactivar  protección de SELinux para mysqld.
Desactivar protección de SELinux para mysqld.

La manera más apropiada de iniciar el servicio mysqld será ejecutado el siguiente mandato:

/sbin/service mysqld start

Procederemos a agregar a MySQL™ al los niveles de corrida 3, 4 y 5, de modo que la siguiente vez que se tenga que iniciar el equipo, MySQL™ se encuentre habilitado.

/sbin/chkconfig --level 345 mysqld on

Después de iniciado MySQL™ por primera vez, como root ejecute el mandato mysql:

# mysql

Esto nos ingresará directamente y sin mayor preámbulo al Shell de MySQL™, donde lo primero será asignar una contraseña cifrada al usuario root, ya que no es conveniente, de manera alguna y sin pretexto, dejar MySQL™ de este modo.

Primero indicaremos que base de datos utilizar, en este caso será la principal y única existente, mysql:

> use mysql

Ahora haremos petición para que se muestren las tablas:

> show tables;

Procederemos hacer una petición para que se muestre el contenido de la tabla user:

> select * from user;

Esto hará que se vea, entre otras muchas cosas, lo siguiente:

+-------------------------+----------+------------------+--------------+
| Host                    | User     | Password         | Select_priv  |
+-------------------------+----------+------------------+--------------+
| localhost               | root     |                  | Y            |
+-------------------------+----------+------------------+--------------+

Como se podrá ver, el usuario root no tiene asignada una contraseña, por lo que cualquiera que se identifique como root tendrá acceso. Asignaremos una contraseña del siguiente modo (sea cuidadoso con lo que teclea como contraseña):

> update user set Password=PASSWORD('nuevo_password') where user='root';

Ejecute de nuevo el siguiente mandato:

> select * from user;

Notará que ahora hay un criptograma en el campo que corresponde a la contraseña de root.

+-------------------------+----------+------------------+--------------+
| Host                    | User     | Password         | Select_priv  |
+-------------------------+----------+------------------+--------------+
| localhost               | root     |4593274b8e0d68j852| Y            |
+-------------------------+----------+------------------+--------------+

Refresquemos los privilegios a fin de que tomen efecto los cambios.

> flush privileges

Salgamos ahora a fin de regresar y poder probar la nueva contraseña.

> quit

Ingrese de nuevo al Shell de MySQL™:

mysql

Notará que ya no se puede acceder como antes, y regresa un mensaje de error.

ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

Ejecute ahora el mismo mandato, pero especificando un usuario (-u root) y solicitando se pregunte por una contraseña (-p):

mysql -u root -p

A continuación se le pedirá ingrese una contraseña, tras lo cual obtendrá de nuevo acceso al Shell de MySQL™

Creando y destruyendo bases de datos.

Para crear una nueva base de datos, puede utilizarse el mandato mysqladmin con el parámetro create:

mysqladmin -u root -p create dbejemplo

Si queremos eliminar dicha base de datos, utilizamos el parámetro drop en lugar de create.

mysqladmin -u root -p drop dbejemplo

Otorgando permisos a los usuarios.

En adelante el usuario root solo se utilizará para tareas administrativas y creación de nuevas bases de datos. Resultará conveniente delegar a los usuarios ordinarios el manejo de sus propias bases de datos.

Una vez generada una base de datos, debemos determinar con que usuario y desde que equipo en la red local, se podrá tener acceso, así como los privilegios para modificar esta. Lo más común, y seguro, es asignar el acceso solo desde el mismo servidor (localhost), a menos que el desarrollo web o aplicación se localice en otro equipo.

Genere un base de datos denominada directorio:

mysqladmin -u root -p create directorio

En seguida acceda al Shell de MySQL™ y ejecute lo siguiente, suponiendo que se desea asignar permisos sobre las tablas de la base de datos directorio al usuario jbarrios del equipo local:

GRANT select, insert, update, create, alter, delete, drop ON directorio.* TO jbarrios@localhost IDENTIFIED BY 'password_del_usuario_jbarrios';

Al concluir, usted tendrá una base de datos “jbarrios” que podrá ser utilizada y modificada por el usuario jbarrios desde el servidor donde se encuentra instalada la base de datos, es decir, localhost. Esto establecerá un nivel de seguridad apropiado, y garantizará que de ser descifrada una contraseña de un usuario, está no podrá ser utilizada desde un equipo remoto.

Si, por ejemplo, se requiere permitir el acceso a una base de datos jbarrios desde otro equipo en la red local con fines administrativos, podemos otorgar el acceso al usuario jperez del equipo que, según el DNS de la LAN, se denomina como maquina1.mi-red-local.org, es decir jperez@maquina1.mi-red-local.org.

GRANT
select, insert, update, create, alter, delete, drop
ON
directorio.*
TO
jperez@maquina1.mi-red-local.org
IDENTIFIED BY
'password_del_usuario_jperez';

El muro corta-fuegos.

MySQL™ escucha peticiones en el puerto 3306, tanto para TCP como para UDP. Puede implementar un Firewall o muro muro corta-fuegos que cierre dicho puerto, de modo tal que solo se puede acceder a MySQL™ desde la red local. Las siguientes líneas de ejemplo suponen que el servidor donde se encuentra instalado MySQL™ posee dos interfaces de red, eth0 y eth1, de las cuales la primera (eth0) corresponde a la interfaz de acceso hacia la red local y la segunda (eth1) corresponde a la interfaz de acceso hacia la red mundial.

# MySQL™
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306 -i eht1 -j DROP
/sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306 -i eth1 -j DROP

Si se requiere acceder remotamente hacia MySQL™ desde fuera de la red local, con fines meramente de administración, como sería algunos casos particulares, se requerirá añadir las siguientes líneas en el guión de Firewall o muro muro corta-fuegos a fin de abrir los puertos correspondientes.

# MySQL™
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306 -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306 -j ACCEPT

Última Edición lunes, 05 de febrero 2007 @ 10:01 CST; 92,334

Publicado en Comos | Deja un Comentario »

Cómo configurar Squid: Parámetros básicos para Servidor Intermediario (Proxy).

Publicado por cristobal39 en Jueves, Enero 1, 2009

http://www.linuxparatodos.net/portal/staticpages/index.php?page=19-0-como-squid-general
Autor: Joel Barrios Dueñas
Correo electrónico: jbarrios arroba linuxparatodos punto net
Sitio de Red: http://www.linuxparatodos.net/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

¿Qué es Servidor Intermediario (Proxy)?

El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinónimo del concepto de «Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado (el que tiene el que poder sobre otro).

Un Servidor Intermediario (Proxy) se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:

•  Cliente se conecta hacia un Servidor Intermediario (Proxy).
•  Cliente solicita una conexión, fichero u otro recurso disponible en un servidor distinto.
•  Servidor Intermediario (Proxy) proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché.
•  En algunos casos el Servidor Intermediario (Proxy) puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos.

Los Servidores Intermediarios (Proxies) generalmente se hacen trabajar simultáneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables, o bien operando en el Nivel de Aplicación, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos también se conoce como BPD o Border Protection Device o simplemente filtro de paquetes.

Una aplicación común de los Servidores Intermediarios (Proxies) es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y ficheros disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

Cuando se recibe una petición para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el caché, el Servidor Intermediario lo traerá desde servidor remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché. El contenido en el caché es eliminado luego a través de un algoritmo de expiración de acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

Los Servidores Intermediarios para contenido de Red (Web Proxies) también pueden actuar como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios arbitrarios.

Acerca de Squid.

Squid es un Servidor Intermediario (Proxy) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo sustento lógico libre, está disponible el código fuente para quien así lo requiera.

Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario.

Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS.

NOTA ESPECIAL: Squid no debe ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerirá implementar obligatoriamente un enmascaramiento de IP o NAT (Network Address Translation) o bien hacer uso de un servidor SOCKS como Dante (http://www.inet.no/dante/).

URL: http://www.squid-cache.org/

Algoritmos de caché utilizados por Squid.

A través de un parámetro (cache_replacement_policy) Squid incluye soporte para los siguientes algoritmos para el caché:

•  LRU Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que no han sido accedidos en mucho tiempo son eliminados primero, manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predefinido.
     
•  LFUDA Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.
     
•  GDSF Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que sean solicitado con frecuencia.

Sustento lógico necesario.

Para poder llevar al cabo los procedimientos descritos en este manual y documentos relacionados, usted necesitará tener instalado al menos lo siguiente:

•  Al menos squid-2.5.STABLE6
•  httpd-2.0.x (Apache), como auxiliar de caché con aceleración.
•  Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando. No es conveniente utilizar un sistema con posibles vulnerabilidades como Servidor Intermediario.

Debe tomarse en consideración que, de ser posible, se debe utilizar siempre las versiones estables más recientes de todo sustento lógico que vaya a ser instalado para realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de Squid anterior a la 2.5.STABLE6 se considera como apropiada debido a fallas de seguridad de gran importancia.

Squid no se instala de manera predeterminada a menos que especifique lo contrario durante la instalación del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalación es exactamente el mismo que con cualquier otro sustento lógico.

Instalación a través de yum.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

yum -y install squid httpd

Instalación a través de up2date.

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

up2date -i squid httpd

Otros componentes necesarios.

El mandato iptables se utilizará para generar las reglas necesarias para el guión de Enmascaramiento de IP. Se instala de modo predefinido en todas las distribuciones actuales que utilicen núcleo (kernel) versiones 2.4 y 2.6.

Es importante tener actualizado el núcleo del sistema operativo por diversas cuestiones de seguridad. No es recomendable utilizar versiones del kernel anteriores a la 2.4.21. Actualice el núcleo a la versión más reciente disponible para su distribución.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo e iptables, si acaso fuera necesario:

yum -y update kernel iptables

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo, e iptables si acaso fuera necesario:

up2date -u kernel iptables

Antes de continuar.

Tenga en cuenta que este manual ha sido comprobado varias veces y ha funcionado en todos los casos y si algo no funciona solo significa que usted no lo leyó a detalle y no siguió correctamente las indicaciones.

Evite dejar espacios vacíos en lugares indebidos. El siguiente es un ejemplo de como no se debe habilitar un parámetro.

Mal

# Opción incorrectamente habilitada
  http_port 3128

El siguiente es un ejemplo de como si se debe habilitar un parámetro.

Bien

# Opción correctamente habilitada
http_port 3128

Configuración básica.

Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de parámetros, de los cuales recomendamos configurar los siguientes:

•  http_port
•  cache_dir
•  Al menos una Lista de Control de Acceso
•  Al menos una Regla de Control de Acceso
•  httpd_accel_host
•  httpd_accel_port
•  httpd_accel_with_proxy

Parámetro http_port: ¿Que puerto utilizar para Squid?

De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados (rango desde 1024 hasta 49151) recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a través de TCP.

De modo predefinido Squid utilizará el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.

En el caso de un Servidor Intermediario (Proxy) Transparente, regularmente se utilizará el puerto 80 o el 8000 y se valdrá del re-direccionamiento de peticiones de modo tal que no habrá necesidad alguna de modificar la configuración de los clientes HTTP para utilizar el Servidor Intermediario (Proxy). Bastará con utilizar como puerta de enlace al servidor. Es importante recordar que los Servidores HTTP, como Apache, también utilizan dicho puerto, por lo que será necesario volver a configurar el servidor HTTP para utilizar otro puerto disponible, o bien desinstalar o desactivar el servidor HTTP.

Hoy en día puede no ser del todo práctico el utilizar un Servidor Intermediario (Proxy) Transparente, a menos que se trate de un servicio de Café Internet u oficina pequeña, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar más conveniente configurar un Servidor Intermediario (Proxy) con restricciones por clave de acceso, lo cual no puede hacerse con un Servidor Intermediario (Proxy) Transparente, debido a que se requiere un diálogo de nombre de usuario y clave de acceso.

Regularmente algunos programas utilizados comúnmente por los usuarios suelen traer de modo predefinido el puerto 8080 (servicio de cacheo WWW) para utilizarse al configurar que Servidor Intermediario (Proxy) utilizar. Si queremos aprovechar esto en nuestro favor y ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto también. Siendo así localice la sección de definición de http_port, y especifique:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 3128
http_port 8080

Si desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.254, puede hacerse lo siguiente:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080

Parámetro cache_mem.

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:

•  Objetos en tránsito.
•  Objetos frecuentemente utilizados (Hot).
•  Objetos negativamente almacenados en el caché.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el caché podrán utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición.

De modo predefinido se establecen 8 MB. Puede especificarse una cantidad mayor si así se considera necesario, dependiendo esto de los hábitos de los usuarios o necesidades establecidas por el administrador.

Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parámetro:

cache_mem 16 MB

Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?

Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuanto desea almacenar de Internet en el disco duro? De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB:

cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.

Parámetro ftp_user.

Al acceder a un servidor FTP de manera anónima, de modo predefinido Squid enviará como clave de acceso Squid@. Si se desea que el acceso anónimo a los servidores FTP sea más informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la dirección de correo especificada como clave de acceso, puede especificarse la dirección de correo electrónico que uno considere pertinente.

ftp_user proxy@su-dominio.net

Controles de acceso.

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas máquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Procedamos a entender como definir unas y otras.

Listas de control de acceso.

Regularmente una lista de control de acceso se establece con la siguiente sintaxis:

acl [nombre de la lista] src [lo que compone a la lista]

Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde las máquinas tienen direcciones IP 192.168.1.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

acl miredlocal src 192.168.1.0/255.255.255.0

También puede definirse una Lista de Control de Acceso especificando un fichero localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP. Ejemplo:

acl permitidos src "/etc/squid/permitidos"

El fichero /etc/squid/permitidos contendría algo como siguiente:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

Reglas de Control de Acceso.

Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

La sintaxis básica es la siguiente:

http_access [deny o allow] [lista de control de acceso]

En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

http_access allow permitidos

También pueden definirse reglas valiéndose de la expresión !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:

http_access allow lista1 !lista2

Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de control de acceso.

Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración.

Caso 1.

Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

acl todalared src 192.168.1.0/255.255.255.0

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl todalared src 192.168.1.0/255.255.255.0

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow todalared

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow todalared
http_access deny all

La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual está conformada por 192.168.1.0/255.255.255.0. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

Caso 2.

Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/listas/redlocal, dentro del cual se incluirán solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Denominaremos a esta lista de control de acceso como redlocal:

acl redlocal src "/etc/squid/listas/redlocal"

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl redlocal src "/etc/squid/listas/redlocal"

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow redlocal

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal
http_access deny all

La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual está conformada por las direcciones IP especificadas en el fichero /etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.

Parámetro chache_mgr.

De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente.

cache_mgr joseperez@midominio.net

Parámetro cache_peer: caches padres y hermanos.

El parámetro cache_peer se utiliza para especificar otros Servidores Intermediarios (Proxies) con caché en una jerarquía como padres o como hermanos. Es decir, definir si hay un Servidor Intermediario (Proxy) adelante o en paralelo. La sintaxis básica es la siguiente:

cache_peer servidor tipo http_port icp_port opciones

Ejemplo: Si su caché va a estar trabajando detrás de otro servidor cache, es decir un caché padre, y considerando que el caché padre tiene una IP 192.168.1.1, escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130 (puerto utilizado de modo predefinido por Squid) ,especificando que no se almacenen en caché los objetos que ya están presentes en el caché del Servidor Intermediario (Proxy) padre, utilice la siguiente línea:

cache_peer 192.168.1.1 parent 8080 3130 proxy-only

Cuando se trabaja en redes muy grandes donde existen varios Servidores Intermediarios (Proxy) haciendo caché de contenido de Internet, es una buena idea hacer trabajar todos los caché entre si. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarán estos caches localizados en la red local antes de acceder hacia Internet y consumir ancho de banda para acceder hacia un objeto que ya podría estar presente en otro caché vecino.

Ejemplo: Si su caché va a estar trabajando en paralelo junto con otros caches, es decir caches hermanos, y considerando los caches tienen IP 10.1.0.1, 10.2.0.1 y 10.3.0.1, todos escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130, especificando que no se almacenen en caché los objetos que ya están presentes en los caches hermanos, utilice las siguientes líneas:

cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Pueden hacerse combinaciones que de manera tal que se podrían tener caches padres y hermanos trabajando en conjunto en una red local. Ejemplo:

cache_peer 10.0.0.1 parent 8080 3130 proxy-only
cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Caché con aceleración.

Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché de Squid. Si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet.

Esta función permite navegar rápidamente cuando los objetos ya están en el caché de Squid y además optimiza enormemente la utilización del ancho de banda.

La configuración de Squid como Servidor Intermediario (Proxy) Transparente solo requiere complementarse utilizando una regla de iptables que se encargará de re-direccionar peticiones haciéndolas pasar por el puerto 8080. La regla de iptables necesaria se describe más adelante en este documento.

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) en modo convencional.

En la sección HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parámetros:

httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente.

Si se trata de un Servidor Intermediario (Proxy) transparente, deben utilizarse las siguientes opciones, considerando que se hará uso del caché de un servidor HTTP (Apache) como auxiliar:

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local o bien el valor virtual
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.

Si va a utilizar Internet Explorer 5.5 y versiones anteriores con un Servidor Intermediario (Proxy) transparente, es importante recuerde que dichas versiones tiene un pésimo soporte con los Servidores Intermediarios (Proxies) transparentes imposibilitando por completo la capacidad de refrescar contenido. Si se utiliza el parámetro ie_refresh con valor on puede hacer que se verifique en los servidores de origen para nuevo contenido para todas las peticiones IMS-REFRESH provenientes de Internet Explorer 5.5 y versiones anteriores.

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
ie_refresh on

Lo más conveniente es actualizar hacia Internet Explorer 6.x o definitivamente optar por otras alternativas. Mozilla es en un conjunto de aplicaciones para Internet, o bien Firefox, que es probablemente el mejor navegador que existe en el mercado. Firefox es un navegador muy ligero y que cumple con los estándares, y está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Estableciendo el idioma de los mensajes mostrados por de Squid hacia el usuario.

Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las páginas de error traducidas al español, es necesario cambiar un enlace simbólico localizado en /etc/squid/errors para que apunte hacia /usr/share/squid/errors/Spanish en lugar de hacerlo hacia /usr/share/squid/errors/English.

Elimine primero el enlace simbólico actual:

rm -f /etc/squid/errors

Coloque un nuevo enlace simbólico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al español.

ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

Nota: Este enlace simbólico debe verificarse, y regenerarse de ser necesario, cada vez que se actualizado Squid ya sea a través de yum, up2date o manualmente con el mandato rpm.

Iniciando, reiniciando y añadiendo el servicio al arranque del sistema.

Una vez terminada la configuración, ejecute el siguiente mandato para iniciar por primera vez Squid:

service squid start

Si necesita reiniciar para probar cambios hechos en la configuración, utilice lo siguiente:

service squid restart

Si desea que Squid inicie de manera automática la próxima vez que inicie el sistema, utilice lo siguiente:

chkconfig squid on

Lo anterior habilitará a Squid en todos los niveles de corrida.

Depuración de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de dedo o bien se están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso.

Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en el fichero /etc/squid/squid.conf.

service squid reload

Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del fichero /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto:

less /var/log/squid/squid.out

Ajustes para el muro corta-fuegos.

Si se tiene poca experiencia con guiones de cortafuegos a través de iptables, sugerimos utilizar Firestarter. éste permite configurar fácilmente tanto el enmascaramiento de IP como el muro corta-fuegos. Si se tiene un poco más de experiencia, recomendamos utilizar Shorewall para el mismo fin puesto que se trata de una herramienta más robusta y completa.

•  Firestarter: http://www.fs-security.com/
•  Shorewall: http://www.shorewall.net/

Re-direccionamiento de peticiones a través de iptables y Firestarter.

En un momento dado se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT.

El re-direccionamiento lo hacemos a través de iptables. Considerando para este ejemplo que la red local se accede a través de una interfaz eth0, el siguiente esquema ejemplifica un re-direccionamiento:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Lo anterior, que requiere un guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor.

Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post.

Re-direccionamiento de peticiones a través de la opción REDIRECT en Shorewall.

La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidores Intermediario (Proxy) transparente.

#ACTION		SOURCE		DEST	PROTO	DEST
REDIRECT	loc		8080	tcp	80

Publicado en Comos | 3 Comentarios »

Cómo configurar Squid: Parámetros básicos para servidor de intermediación (Proxy)

Publicado por cristobal39 en Martes, Marzo 25, 2008

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

¿Qué es Servidor Intermediario (Proxy)?

El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinónimo del concepto de «Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado (el que tiene el que poder sobre otro).

Un Servidor Intermediario (Proxy) se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:

•  Cliente se conecta hacia un Servidor Intermediario (Proxy).
•  Cliente solicita una conexión, fichero u otro recurso disponible en un servidor distinto.
•  Servidor Intermediario (Proxy) proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché.
•  En algunos casos el Servidor Intermediario (Proxy) puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos.

Los Servidores Intermediarios (Proxies) generalmente se hacen trabajar simultáneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables, o bien operando en el Nivel de Aplicación, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos también se conoce como BPD o Border Protection Device o simplemente filtro de paquetes.

Una aplicación común de los Servidores Intermediarios (Proxies) es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y ficheros disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

Cuando se recibe una petición para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el caché, el Servidor Intermediario lo traerá desde servidor remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché. El contenido en el caché es eliminado luego a través de un algoritmo de expiración de acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

Los Servidores Intermediarios para contenido de Red (Web Proxies) también pueden actuar como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios arbitrarios.

Acerca de Squid.

Squid es un Servidor Intermediario (Proxy) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo equipamiento lógico libre, está disponible el código fuente para quien así lo requiera.

Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario.

Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS.

NOTA ESPECIAL: Squid no debe ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerirá implementar obligatoriamente un enmascaramiento de IP o NAT (Network Address Translation) o bien hacer uso de un servidor SOCKS como Dante (http://www.inet.no/dante/).

URL: http://www.squid-cache.org/

Algoritmos de caché utilizados por Squid.

A través de un parámetro (cache_replacement_policy) Squid incluye soporte para los siguientes algoritmos para el caché:

•  LRU Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que no han sido accedidos en mucho tiempo son eliminados primero, manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predefinido.
   
•  LFUDA Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.
   
•  GDSF Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que sean solicitado con frecuencia.

Equipamiento lógico necesario.

Para poder llevar al cabo los procedimientos descritos en este y otros documentos relacionados, usted necesitará tener instalado al menos lo siguiente:

•  Al menos squid-2.5.STABLE6
•  httpd-2.0.x (Apache), como auxiliar de caché con aceleración.
•  Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando. No es conveniente utilizar un sistema con posibles vulnerabilidades como Servidor Intermediario.

Debe tomarse en consideración que, de ser posible, se debe utilizar siempre las versiones estables más recientes de todo equipamiento lógico que vaya a ser instalado para realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de Squid anterior a la 2.5.STABLE6 se considera como apropiada debido a fallas de seguridad de gran importancia.

Squid no se instala de manera predeterminada a menos que especifique lo contrario durante la instalación del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalación es exactamente el mismo que con cualquier otro equipamiento lógico.

Instalación a través de yum.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

yum -y install squid httpd

Instalación a través de up2date.

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

up2date -i squid httpd

Otros componentes necesarios.

El mandato iptables se utilizará para generar las reglas necesarias para el guión de Enmascaramiento de IP. Se instala de modo predefinido en todas las distribuciones actuales que utilicen núcleo (kernel) versiones 2.4 y 2.6.

Es importante tener actualizado el núcleo del sistema operativo por diversas cuestiones de seguridad. No es recomendable utilizar versiones del kernel anteriores a la 2.4.21. Actualice el núcleo a la versión más reciente disponible para su distribución.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo e iptables, si acaso fuera necesario:

yum -y update kernel iptables

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo, e iptables si acaso fuera necesario:

up2date -u kernel iptables

Antes de continuar.

Tenga en cuenta que este manual ha sido comprobado varias veces y ha funcionado en todos los casos y si algo no funciona solo significa que usted no lo leyó a detalle y no siguió correctamente las indicaciones.

Evite dejar espacios vacíos en lugares indebidos. El siguiente es un ejemplo de como no se debe habilitar un parámetro.

Mal

# Opción incorrectamente habilitada
  http_port 3128

El siguiente es un ejemplo de como si se debe habilitar un parámetro.

Bien

# Opción correctamente habilitada
http_port 3128

Configuración básica.

Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de parámetros, de los cuales recomendamos configurar los siguientes:

•  http_port
•  cache_dir
•  Al menos una Lista de Control de Acceso
•  Al menos una Regla de Control de Acceso
•  httpd_accel_host
•  httpd_accel_port
•  httpd_accel_with_proxy

Parámetro http_port: ¿Que puerto utilizar para Squid?

De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados (rango desde 1024 hasta 49151) recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a través de TCP.

De modo predefinido Squid utilizará el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.

En el caso de un Servidor Intermediario (Proxy) Transparente, regularmente se utilizará el puerto 80 o el 8000 y se valdrá del re-direccionamiento de peticiones de modo tal que no habrá necesidad alguna de modificar la configuración de los clientes HTTP para utilizar el Servidor Intermediario (Proxy). Bastará con utilizar como puerta de enlace al servidor. Es importante recordar que los Servidores HTTP, como Apache, también utilizan dicho puerto, por lo que será necesario volver a configurar el servidor HTTP para utilizar otro puerto disponible, o bien desinstalar o desactivar el servidor HTTP.

Hoy en día puede no ser del todo práctico el utilizar un Servidor Intermediario (Proxy) Transparente, a menos que se trate de un servicio de Café Internet u oficina pequeña, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar más conveniente configurar un Servidor Intermediario (Proxy) con restricciones por clave de acceso, lo cual no puede hacerse con un Servidor Intermediario (Proxy) Transparente, debido a que se requiere un diálogo de nombre de usuario y clave de acceso.

Regularmente algunos programas utilizados comúnmente por los usuarios suelen traer de modo predefinido el puerto 8080 (servicio de cacheo WWW) para utilizarse al configurar que Servidor Intermediario (Proxy) utilizar. Si queremos aprovechar esto en nuestro favor y ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto también. Siendo así localice la sección de definición de http_port, y especifique:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 3128
http_port 8080

Si desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.254, puede hacerse lo siguiente:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080

En el caso de Squid 2.6 y versiones posteriores (CentOS 5, Red Hat Enterprise Linux 5 y White Box Enterprise Linux 5), el parámetro http_port se utiliza también para especificar si se utiliza un proxy transparente, especificando el parámetro transparent, de la siguiente forma:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 192.168.1.254:8080 transparent

Parámetro cache_mem.

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:

•  Objetos en tránsito.
•  Objetos frecuentemente utilizados (Hot).
•  Objetos negativamente almacenados en el caché.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el caché podrán utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición.

De modo predefinido se establecen 8 MB. Puede especificarse una cantidad mayor si así se considera necesario, dependiendo esto de los hábitos de los usuarios o necesidades establecidas por el administrador.

Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parámetro:

cache_mem 16 MB

Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?

Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuanto desea almacenar de Internet en el disco duro? De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB:

cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.

Parámetro ftp_user.

Al acceder a un servidor FTP de manera anónima, de modo predefinido Squid enviará como clave de acceso Squid@. Si se desea que el acceso anónimo a los servidores FTP sea más informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la dirección de correo especificada como clave de acceso, puede especificarse la dirección de correo electrónico que uno considere pertinente.

ftp_user proxy@su-dominio.net

Controles de acceso.

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas máquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Procedamos a entender como definir unas y otras.

Listas de control de acceso.

Regularmente una lista de control de acceso se establece con la siguiente sintaxis:

acl [nombre de la lista] src [lo que compone a la lista]

Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde las máquinas tienen direcciones IP 192.168.1.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

acl miredlocal src 192.168.1.0/255.255.255.0

También puede definirse una Lista de Control de Acceso especificando un fichero localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP. Ejemplo:

acl permitidos src "/etc/squid/permitidos"

El fichero /etc/squid/permitidos contendría algo como siguiente:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

Reglas de Control de Acceso.

Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

La sintaxis básica es la siguiente:

http_access [deny o allow] [lista de control de acceso]

En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

http_access allow permitidos

También pueden definirse reglas valiéndose de la expresión !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:

http_access allow lista1 !lista2

Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de control de acceso.

Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración.

Caso 1.

Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

acl todalared src 192.168.1.0/255.255.255.0

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl todalared src 192.168.1.0/255.255.255.0

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow todalared

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow todalared
http_access deny all

La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual está conformada por 192.168.1.0/255.255.255.0. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

Caso 2.

Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/listas/redlocal, dentro del cual se incluirán solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Denominaremos a esta lista de control de acceso como redlocal:

acl redlocal src "/etc/squid/listas/redlocal"

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl redlocal src "/etc/squid/listas/redlocal"

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow redlocal

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal
http_access deny all

La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual está conformada por las direcciones IP especificadas en el fichero /etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.

Parámetro chache_mgr.

De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente.

cache_mgr joseperez@midominio.net

Parámetro cache_peer: caches padres y hermanos.

El parámetro cache_peer se utiliza para especificar otros Servidores Intermediarios (Proxies) con caché en una jerarquía como padres o como hermanos. Es decir, definir si hay un Servidor Intermediario (Proxy) adelante o en paralelo. La sintaxis básica es la siguiente:

cache_peer servidor tipo http_port icp_port opciones

Ejemplo: Si su caché va a estar trabajando detrás de otro servidor cache, es decir un caché padre, y considerando que el caché padre tiene una IP 192.168.1.1, escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130 (puerto utilizado de modo predefinido por Squid) ,especificando que no se almacenen en caché los objetos que ya están presentes en el caché del Servidor Intermediario (Proxy) padre, utilice la siguiente línea:

cache_peer 192.168.1.1 parent 8080 3130 proxy-only

Cuando se trabaja en redes muy grandes donde existen varios Servidores Intermediarios (Proxy) haciendo caché de contenido de Internet, es una buena idea hacer trabajar todos los caché entre si. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarán estos caches localizados en la red local antes de acceder hacia Internet y consumir ancho de banda para acceder hacia un objeto que ya podría estar presente en otro caché vecino.

Ejemplo: Si su caché va a estar trabajando en paralelo junto con otros caches, es decir caches hermanos, y considerando los caches tienen IP 10.1.0.1, 10.2.0.1 y 10.3.0.1, todos escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130, especificando que no se almacenen en caché los objetos que ya están presentes en los caches hermanos, utilice las siguientes líneas:

cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Pueden hacerse combinaciones que de manera tal que se podrían tener caches padres y hermanos trabajando en conjunto en una red local. Ejemplo:

cache_peer 10.0.0.1 parent 8080 3130 proxy-only
cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Caché con aceleración.

En el caso de Squid 2.6 y versiones posteriores (CentOS 5, Red Hat Enterprise Linux 5 y White Box Enterprise Linux 5), esta sección queda obsoleta, pues desaparecen httpd_accel_host, httpd_accel_port, httpd_accel_with_proxy y httpd_accel_uses_host_header.

En versiones de Squid 2.5 y anteriores, cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché de Squid. Si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet.

Esta función permite navegar rápidamente cuando los objetos ya están en el caché de Squid y además optimiza enormemente la utilización del ancho de banda.

La configuración de Squid como Servidor Intermediario (Proxy) Transparente solo requiere complementarse utilizando una regla de iptables que se encargará de re-direccionar peticiones haciéndolas pasar por el puerto 8080. La regla de iptables necesaria se describe más adelante en este documento.

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) en modo convencional.

En la sección HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parámetros:

httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente.

Si se trata de un Servidor Intermediario (Proxy) transparente en versiones de Squid 2.5 y anteriores, deben utilizarse las siguientes opciones, considerando que se hará uso del caché de un servidor HTTP (Apache) como auxiliar:

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local o bien el valor virtual
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

En el caso de Squid 2.6 y versiones posteriores (CentOS 5, Red Hat Enterprise Linux 5 y White Box Enterprise Linux 5), todo lo anterior es reeemplazado por:

http_port 192.168.1.254:8080 transparent

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.

Si va a utilizar Internet Explorer 5.5 y versiones anteriores con un Servidor Intermediario (Proxy) transparente, es importante recuerde que dichas versiones tiene un pésimo soporte con los Servidores Intermediarios (Proxies) transparentes imposibilitando por completo la capacidad de refrescar contenido. Si se utiliza el parámetro ie_refresh con valor on puede hacer que se verifique en los servidores de origen para nuevo contenido para todas las peticiones IMS-REFRESH provenientes de Internet Explorer 5.5 y versiones anteriores.

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
ie_refresh on

En el caso de Squid 2.6 y versiones posteriores (CentOS 5, Red Hat Enterprise Linux 5 y White Box Enterprise Linux 5), solo es necesario establecer http_port 192.168.1.254:8080 transparent (visto al inicio del documento) y descomentar ie_refresh con el valor on:

ie_refresh on

Lo más conveniente es actualizar hacia Internet Explorer 6.x o definitivamente optar por otras alternativas. Mozilla es en un conjunto de aplicaciones para Internet, o bien Firefox, que es probablemente el mejor navegador que existe en el mercado. Firefox es un navegador muy ligero y que cumple con los estándares, y está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Estableciendo el idioma de los mensajes mostrados por de Squid hacia el usuario.

Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las páginas de error traducidas al español, es necesario cambiar un enlace simbólico localizado en /etc/squid/errors para que apunte hacia /usr/share/squid/errors/Spanish en lugar de hacerlo hacia /usr/share/squid/errors/English.

Elimine primero el enlace simbólico actual:

rm -f /etc/squid/errors

Coloque un nuevo enlace simbólico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al español.

ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

Nota: Este enlace simbólico debe verificarse, y regenerarse de ser necesario, cada vez que se actualizado Squid ya sea a través de yum, up2date o manualmente con el mandato rpm.

Iniciando, reiniciando y añadiendo el servicio al arranque del sistema.

Una vez terminada la configuración, ejecute el siguiente mandato para iniciar por primera vez Squid:

service squid start

Si necesita reiniciar para probar cambios hechos en la configuración, utilice lo siguiente:

service squid restart

Si desea que Squid inicie de manera automática la próxima vez que inicie el sistema, utilice lo siguiente:

chkconfig squid on

Lo anterior habilitará a Squid en todos los niveles de corrida.

Depuración de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de dedo o bien se están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso.

Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en el fichero /etc/squid/squid.conf.

service squid reload

Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del fichero /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto:

less /var/log/squid/squid.out

Ajustes para el muro corta-fuegos.

Si se tiene poca experiencia con guiones de cortafuegos a través de iptables, sugerimos utilizar Firestarter. éste permite configurar fácilmente tanto el enmascaramiento de IP como el muro corta-fuegos. Si se tiene un poco más de experiencia, recomendamos utilizar Shorewall para el mismo fin puesto que se trata de una herramienta más robusta y completa.

•  Firestarter: http://www.fs-security.com/
•  Shorewall: http://www.shorewall.net/

Re-direccionamiento de peticiones a través de iptables y Firestarter.

En un momento dado se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT.

El re-direccionamiento lo hacemos a través de iptables. Considerando para este ejemplo que la red local se accede a través de una interfaz eth0, el siguiente esquema ejemplifica un re-direccionamiento:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Lo anterior, que requiere un guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor.

Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post.

Re-direccionamiento de peticiones a través de la opción REDIRECT en Shorewall.

La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidores Intermediario (Proxy) transparente.

#ACTION		SOURCE		DEST	PROTO	DEST
REDIRECT	loc		8080	tcp	80

Última Edición jueves, agosto 30 2007 @ 08:44 CDT; 165,103 Hits

Publicado en Comos | 1 comentario

Cómo configurar SAMBA

Publicado por cristobal39 en Martes, Marzo 25, 2008

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca del protocolo SMB.

SMB (acrónimo de Server Message Block) es un protocolo, del Nivel de Presentación del modelo OSI de TCP/IP, creado en 1985 por IBM. Algunas veces es referido también como CIFS (Acrónimo de Common Internet File System, http://samba.org/cifs/) tras ser renombrado por Microsoft en 1998. Entre otras cosas, Microsoft añadió al protocolo soporte para enlaces simbólicos y duros así como también soporte para ficheros de gran tamaño. Por mera coincidencia esto ocurrió por la misma época en que Sun Microsystems hizo el lanzamiento de WebNFS (una versión extendida de NFS, http://www.sun.com/software/webnfs/overview.xml).

SMB fue originalmente diseñado para trabajar a través del protoclo NetBIOS, el cual a su vez travaja sobre NetBEUI (acrónimo de NetBIOS Extended User Interface, que se traduce como Interfaz de Usuario Extendida de NetBIOS), IPX/SPX (acrónimo de Internet Packet Exchange/Sequenced Packet Exchange, que se traduce como Intercambio de paquetes interred/Intercambio de paquetes secuenciales) o NBT, aunque también puede trabajar directamente sobre TCP/IP.

Acerca de Samba.

SAMBA es un conjunto de programas, originalmente creados por Andrew Tridgell y actualmente mantenidos por The SAMBA Team, bajo la Licencia Publica General GNU, y que implementan en sistemas basados sobre UNIX® el protocolo SMB. Sirve como reemplazo total para Windows® NT, Warp®, NFS® o servidores Netware®.

equipamiento lógico necesario.

Los procedimientos descritos en este manual han sido probados para poder aplicarse en sistemas con Red Hat™ Enterprise Linux 4, o equivalentes o versiones posteriores, y al menos Samba 3.0.10 o versiones posteriores.

Necesitará tener instalados los siguientes paquetes, que seguramente vienen incluidos en los discos de instalación de su distribución predilecta:

•  samba: Servidor SMB.
•  samba-client: Diversos clientes para el protoclo SMB.
•  samba-common: Ficheros necesarios para cliente y servidor.

Consulte a la base de datos RPM del sistema si se encuentran instalados estos paquetes, utilizando el siguiente mandato:

rpm -q samba samba-client samba-common

Si se utiliza Red Hat™ Enterprise Linux, solo bastará realizar lo siguiente para instalar o actualizar el equipamiento lógico necesario:

up2date -i samba samba-client

Si utiliza CentOS 4 o White Box Enterprise Linux 4, solo bastará realizar lo siguiente para instalar o actualizar el equipamiento lógico necesario:

yum -y install samba samba-client

Configuración básica de Samba.

Para la mayoría de los casos la configuración de Samba como servidor de archivos es suficiente.

Alta de cuentas de usuario.

Es importante sincronizar las cuentas entre el servidor Samba y las estaciones Windows®. Es decir, si en una máquina con Windows® ingresamos como el usuario “paco” con clave de acceso “elpatito16″, en el servidor Samba deberá existir también dicha cuenta con ese mismo nombre y la misma clave de acceso. Como la mayoría de las cuentas de usuario que se utilizarán para acceder hacia samba no requieren acceso al interprete de mandatos del sistema, no es necesario asignar clave de acceso con el mandato passwd y se deberá definir /sbin/nologin o bien /bin/false como interpete de mandatos para la cuenta de usuario involucrada.

useradd -s /sbin/nologin usuario-windows
smbpasswd -a usuario-windows

No hace falta se asigne una clave de acceso en el sistema con el mandato passwd puesto que la cuenta no tendrá acceso al interprete de mandatos.

Si se necesita que las cuentas se puedan utilizar para acceder hacia otros servicios como serían Telnet, SSH, etc, es decir, que se permita acceso al interprete de mandatos, será necesario especificar /bin/bash como interprete de mandatos y además se deberá asignar una clave de acceso en el sistema con el mandato passwd:

useradd -s /bin/bash usuario-windows
passwd usuario-windows
smbpasswd -a usuario-windows

El fichero lmhosts

Es necesario empezar resolviendo localmente los nombres NetBIOS asociándolos con direcciones IP correspondientes. Para fines prácticos el nombre NetBIOS debe tener un máximo de 11 caracteres. Normalmente tomaremos como referencia el nombre corto del servidor o el nombre corto que se asigno como alias a la interfaz de red. Este lo estableceremos en el fichero /etc/samba/lmhosts, en donde encontraremos lo siguiente:

127.0.0.1       localhost

Debemos añadir entonces el nombre que hayamos elegido asociado a la dirección IP que se tenga dentro de la red local. Opcionalmente podrá añadir también los nombres y dirección IP del resto de las máquinas que conformen la red local. La separación de espacios se hace con un tabulador. Ejemplo:

127.0.0.1       localhost
192.168.1.5     maquinalinux
192.168.1.6     isaac
192.168.1.7     finanzas
192.168.1.8     direccion

Parámetros principales del fichero smb.conf.

Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto. Dentro de este notará que la información que le será de utilidad viene comentada con un símbolo # y los ejemplos con ; (punto y coma), siendo estos últimos los que tomaremos como referencia.

Empezaremos por establecer el grupo de trabajo editando el valor del parámetro workgroup asignando un grupo de trabajo deseado:

workgroup = MIGRUPO

Opcionalmente puede establecer con el parámetro netbios name otro nombre distinto para el servidor si acaso fuese necesario, pero siempre tomando en cuenta que dicho nombre deberá corresponder con el establecido en el fichero /etc/samba/lmhosts:

netbios name = maquinalinux

El parámetro server string es de carácter descriptivo. Puede utilizarse un comentario breve que de una descripción del servidor.

server string = Servidor Samba %v en %L

Parámetros útiles para la seguridad.

La seguridad es importante y esta se puede establecer primeramente estableciendo la lista de control de acceso que definirá que máquinas o redes podrán acceder hacia el servidor. El parámetro hosts allow sirve para determinar esto. Si la red consiste en la máquinas con dirección IP desde 192.168.1.1 hasta 192.168.1.254, el rango de direcciones IP que se definirá en hosts allow será 192.168.1. de modo tal que solo se permitirá el acceso dichas máquinas. Note por favor el punto al final de cada rango. Modifique ésta de manera que quede del siguiente modo:

hosts allow = 192.168.1. 127.

El parámetro interfaces permite establecer desde que interfaces de red del sistema se escucharán peticiones. Samba no responderá a peticiones provenientes desde cualquier interfaz no especificada. Esto es útil cuando Samba se ejecuta en un servidor que sirve también de puerta de enlace para la red local, impidiendo se establezcan conexiones desde fuera de la red local.

interfaces = 192.168.1.254/24

Impresoras en Samba.

Las impresoras se comparten de modo predeterminado, así que solo hay que realizar algunos ajustes. Si se desea que se pueda acceder hacia la impresora como usuario invitado sin clave de acceso, basta con añadir public = Yes en la sección de impresoras del siguiente modo:

[printers]
        comment = El comentario que guste.
        path = /var/spool/samba
        printable = Yes
        browseable = No
	writable = no
	printable = yes
        public = Yes

Windows NT, 2000 y XP no tendrán problema alguno para acceder e imprimir hacia las impresoras, sin embargo Windows 95, 98 y ME suelen tener problemas para comunicarse con Samba para poder imprimir. Por tanto, si se quiere evitar problemas de conectividad con dichos sistemas operativos hay que agregar algunos parámetros que resolverán cualquier eventualidad:

[printers]
        comment = Impresoras.
        path = /var/spool/samba
        printable = Yes
        browseable = No
	writable = no
	printable = yes
        public = Yes
        print command = lpr -P %p -o raw %s -r
        lpq command = lpstat -o %p
        lprm command = cancel %p-%j

Se pude definir también a un usuario o bien un grupo (@grupo_que_sea) para la administración de las colas de las impresoras:

[printers]
        comment = Impresoras.
        path = /var/spool/samba
        printable = Yes
        browseable = No
	writable = no
	printable = yes
        public = Yes
        print command = lpr -P %p -o raw %s -r
        lpq command = lpstat -o %p
        lprm command = cancel %p-%j
        printer admin = fulano, @opers_impresion

Con lo anterior se define que el usuario fulano y quien pertenezca al grupo opers_impresion podrán realizar tareas de administración en las impresoras.

Compartiendo directorios a través de Samba.

Para los directorios o volúmenes que se irán a compartir, en el mismo fichero de configuración encontrará distintos ejemplos para distintas situaciones particulares. En general, puede utilizar el siguiente ejemplo que funcionará para la mayoría:

[Lo_que_sea]
        comment = Comentario que se le ocurra
        path = /cualquier/ruta/que/desee/compartir

El volumen puede utilizar cualquiera de las siguientes opciones:

Opción Descripción
guest ok Define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No.
public Es un equivalente del parámetro guest ok, es decir define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No.
browseable Define si se permitirá mostrar este recurso en las listas de recursos compartidos. El valor puede ser Yes o No.
writable Define si ser permitirá la escritura. Es el parámetro contrario de read only. El valor puede ser Yes o No. Ejemplos: «writable = Yes» es lo mismo que «read only = No». Obviamente «writable = No» es lo mismo que «read only = Yes»
valid users Define que usuarios o grupos pueden acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores
write list Define que usuarios o grupos pueden acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores
admin users Define que usuarios o grupos pueden acceder con permisos administrativos para el recurso. Es decir, podrán acceder hacia el recurso realizando todas las operaciones como super-usuarios. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores
directory mask Es lo mismo que directory mode. Define que permiso en el sistema tendrán los subdirectorios creados dentro del recurso. Ejemplos: 1777
create mask Define que permiso en el sistema tendrán los nuevos ficheros creados dentro del recurso. Ejemplo: 0644

En el siguiente ejemplo se compartirá a través de Samba el recurso denominado ftp, el cual está localizado en el directorio /var/ftp/pub del disco duro. Se permitirá el acceso a cualquiera pero será un recurso de solo lectura salvo para los usuarios administrador y fulano. Todo directorio nuevo que sea creado en su interior tendrá permiso 755 y todo fichero que sea puesto en su interior tendrá permiso 644.

[ftp]
	comment = Directorio del servidor FTP
	path = /var/ftp/pub
	guest ok = Yes
	read only = Yes
	write list = fulano, administrador
	directory mask = 0755
	create mask = 0644

Configuración avanzada de Samba.

Samba fue creado con un objetivo: ser en un reemplazo definitivo para Windows como servidor en una red local. Ésto, por supuesto, requiere algunos procedimientos adicionales dependiendo de las necesidades de la red local.

Re-asignación de grupos de Windows en Samba.

Los grupos que existen en Windows también se utilizan en Samba para ciertas operaciones, principalmente relacionadas con lo que involucra un Controlador Primario de dominio (o PDC que significa Primary Domain Controler). Estos grupos existen de modo predefinido en Samba. Sin embargo, si se ejecuta lo siguiente:

net groupmap list

Devolverá la siguiente información:

System Operators (S-1-5-32-549) -> -1
Domain Admins (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-512) -> -1
Replicators (S-1-5-32-552) -> -1
Guests (S-1-5-32-546) -> -1
Domain Guests (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-514) -> -1
Power Users (S-1-5-32-547) -> -1
Print Operators (S-1-5-32-550) -> -1
Administrators (S-1-5-32-544) -> -1
Account Operators (S-1-5-32-548) -> -1
Domain Users (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-513) -> -1
Backup Operators (S-1-5-32-551) -> -1
Users (S-1-5-32-545) -> -1

Lo anterior corresponde al mapa de los grupos que, de modo predeterminado, utilizará Samba si éste fuese configurado como Controlador Primario de Dominio. XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX corresponde a un número generado aleatoriamente al iniciarse Samba por primera vez. Tome nota de dicho número, ya que lo requerirá más adelante para re-asignar los nombres al español en el mapa de grupos.

Los grupos anteriormente descritos trabajarán perfecta y limpiamente asociándolos contra grupos en el sistema, pero solo si utiliza alguna versión de Windows en ingles. Si utiliza alguna versión de Windows en español, habrá que re-asignar los nombres de los grupos a los correspondientes al español y asociarles a grupos en el sistema, esto a fin de permitir asignar usuarios a dichos grupos y de este modo delegar tareas de administración del mismo modo que en Windows.

Es por tal motivo que si se tiene la intención de configurar Samba como Controlador Primario de Dominio y al mismo tiempo poder hacer uso de los grupos del mismo modo que en Windows, es decir, por mencionar un ejemplo, permitir a ciertos usuarios pertenecer al grupo de administradores del dominio con privilegios de administrador, lo primero será entonces generar los grupos en el sistema ejecutando como root los siguientes mandatos:

groupadd -r administradores
groupadd -r admins_dominio
groupadd -r duplicadores
groupadd -r invitados
groupadd -r invs_dominio
groupadd -r opers_copias
groupadd -r opers_cuentas
groupadd -r opers_impresion
groupadd -r opers_sistema
groupadd -r usrs_avanzados
groupadd -r usuarios
groupadd -r usuarios_dominio

Una vez creados los grupos en el sistema, solo resta re-asignar los nombres al español en el mapa de grupo de Samba y asociarles a éstos los grupos recién creados en el sistema. El procedimiento se resume a ejecutar algo como lo siguiente:

net groupmap modify
ntgroup="Nombre grupo Windows en español"
sid="número-de-identidad-en-sistema"
unixgroup="grupo_en_linux"
comment="comentario descriptivo acerca del grupo"

Lo anterior establece que se modifique el registro del grupo que corresponda al sid (identidad de sistema) definido con el nombre establecido con ntgroup, asociándolo al grupo en el servidor con unixgroup y añadiendo un comentario descriptivo acerca de dicho grupo con comment.

De modo tal, y a fin de facilitar las cosas a quien haga uso de este manual, puede utilizar el siguiente guión para convertir los nombres al español y asociarlos a grupos en Linux, donde solo deberá definir el número de identidad del sistema que corresponda al servidor:

#!/bin/sh
SIDSAMBA=XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX

net groupmap modify ntgroup="Administradores"
sid="S-1-5-32-544" unixgroup=administradores
comment="Los administradores tienen acceso completo y sin restricciones al equipo o dominio"

net groupmap modify ntgroup="Admins. del dominio"
sid="S-1-5-21-$SIDSAMBA-512" unixgroup=admins_dominio
comment="Administradores designados del dominio"

net groupmap modify ntgroup="Duplicadores"
sid="S-1-5-32-552" unixgroup=duplicadores
comment="Pueden duplicar archivos en un dominio"

net groupmap modify ntgroup="Invitados del dominio"
sid="S-1-5-21-$SIDSAMBA-514" unixgroup=invitados
comment="Todos los invitados del dominio"

net groupmap modify ntgroup="Invitados"
sid="S-1-5-32-546" unixgroup=invitados
comment="Los invitados tienen de modopredeterminado el mismo acceso que los miembros del grupo Usuarios, excepto la cuenta Invitado que tiene mas restricciones"

net groupmap modify ntgroup="Operadores de copias"
sid="S-1-5-32-551" unixgroup=opers_copias
comment="Los operadores de copia pueden sobrescribir restricciones de seguridad con el unico proposito de hacer copias de seguridad o restaurar archivos"

net groupmap modify ntgroup="Opers. de cuentas"
sid="S-1-5-32-548" unixgroup=opers_cuentas
comment="Pueden administrar cuentas de usuarios y grupos del dominio"

net groupmap modify ntgroup="Opers. de impresión"
sid="S-1-5-32-550" unixgroup=opers_impresion
comment="Pueden operar impresoras del dominio"

net groupmap modify ntgroup="Opers. de servidores"
sid="S-1-5-32-549" unixgroup=opers_sistema
comment="Pueden administrar sistemas del dominio"

net groupmap modify ntgroup="Usuarios avanzados"
sid="S-1-5-32-547" unixgroup=usrs_avanzados
comment="Los usuarios avanzados tienen mas derechos administrativos con algunas restricciones. De este modo, pueden ejecutar aplicaciones heredadas junto con aplicaciones certificadas"

net groupmap modify ntgroup="Usuarios del dominio"
sid="S-1-5-21-$SIDSAMBA-513" unixgroup=usuarios_dominio
comment="Todos los usuarios del dominio"

net groupmap modify ntgroup="Usuarios"
sid="S-1-5-32-545" unixgroup=usuarios
comment="Los usuarios no pueden hacer cambios accidentales o intencionados en el sistema. Pueden ejecutar aplic. certificadas, pero no la mayoría de las heredadas"

exit 0

Nota: Este guión en esta incluido en el disco de “Extras de curso” de Alcance Libre. Solo basta editarlo y definir la variable SIDSAMBA y ejecutarlo como root.

Una vez hecho lo anterior, al volver a realizar lo siguiente:

net groupmap list

Se deberá de mostrar ahora esto otro:

Opers. de servidores (S-1-5-32-549) -> opers_sistema
Admins. del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-512) -> admins_dominio
Duplicadores (S-1-5-32-552) -> duplicadores
Invitados (S-1-5-32-546) -> invitados
Invitados del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-514) -> invitados
Usuarios avanzados (S-1-5-32-547) -> usrs_avanzados
Opers. de impresión (S-1-5-32-550) -> opers_impresion
Administradores (S-1-5-32-544) -> administradores
Opers. de cuentas (S-1-5-32-548) -> opers_cuentas
Usuarios del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-513) -> usuarios_dominio
Operadores de copias (S-1-5-32-551) -> opers_copias
Usuarios (S-1-5-32-545) -> usuarios

De este modo, si por ejemplo, se agrega al usuario fulano al grupo admins_dominio, se tendrá el mismo efecto que si se hiciera lo mismo en Windows agregando al usuario al grupo Admins. del dominio. Esto por supuesto solamente tendrá utilidad si Samba se configura y utiliza como Controlador Primario de Dominio.

Alta de cuentas de usuario en Controlador Primario de Dominio.

Si se configuró Samba para funcionar como Controlador Primario de Dominio, será necesario asignar a root una clave de acceso en Samba, la cual por supuesto puede ser diferente a la del sistema, debido a que las estaciones de trabajo necesitan autenticar primero con el usuario root de Samba para poder unirse dominio y poder crear de este modo una cuenta de máquina en el sistema a través del parámetro add machine script ya descrito anteriormente.

Los usuarios es necesario darlos de alta de modo que queden agregados a los que correspondan en el sistema a grupos Usuarios y Usuarios del dominio de Windows, es decir a los grupos usuarios y usuarios_dominio.

useradd -s /sbin/nologin -G usuarios,usuarios_dominio usuario-windows
smbpasswd -a usuario-windows

Si el usuario ya existiese, solo será necesario agragarlo a los grupos usuarios y usuarios_dominio con gpassswd del siguiente modo:

gpasswd -a usuario-windows usuarios
gpasswd -a usuario-windows usuarios_dominio

En teoría en el directorio definido para el recurso Profiles se deben crear automáticamente los directorios de los usuarios donde se almacenarán los perfiles. De ser necesario es posible generar éstos directorios utilizando el siguiente guión:

cd /home
for user in *
do
mkdir -p /var/lib/samba/profiles/$user
chown $user.$user /var/lib/samba/profiles/$user
done

Parámetros de configuración avanzada en el fichero smb.conf

Anunciando el servidor Samba en los grupos de trabajo.

La opción remote announce se encarga de que el servicio nmbd se anuncie a si mismo de forma periódica hacia una red en particular y un grupo de trabajo específico. Esto es particularmente útil si se necesita que el servidor Samba aparezca no solo en el grupo de trabajo al que pertenece sino también otros grupos de trabajo. El grupo de trabajo de destino puede estar en donde sea mientras exista una ruta y sea posible la transmisión exitosa de paquetes.

remote announce = 192.168.1.255/MI-DOMINIO 192.168.2.255/OTRO-DOMINIO

El ejemplo anterior definió que el servidor Samba se anuncie a si mismo al los grupos de trabajo MI-DOMINIO y OTRO-DOMINIO en las redes cuyas IP de transmisión son 192.168.1.255 y 192.168.2.255 correspondientemente.

Ocultando y denegando acceso a ficheros.

No es conveniente que los usuarios acceder o bien puedan ver la presencia de ficheros ocultos en el sistema, es decir ficheros cuyo nombre comienza con un punto, particularmente si acceden a su directorio personal en el servidor Samba (.bashrc, .bash_profile, .bash_history, etc.). Puede utilizarse el parámetro hide dot files para mantenerlos ocultos.

hide dot files = Yes

En algunos casos puede ser necesario denegar el acceso a cierto tipo de ficheros del sistema. El parámetro veto files se utiliza para especificar la lista, separada por diagonales, de aquellas cadenas de texto que denegarán el acceso a los ficheros cuyos nombres contengan estas cadenas. En el siguiente ejemplo, se denegará el acceso hacia los ficheros cuyos nombres incluyan la palabra «Security» y los que tengan extensión o terminen en «.tmp»:

veto files = /*Security*/*.tmp/

Opciones para cliente o servidor Wins.

Puede habilitar convertirse en servidor WINS o bien utilizar un servidor WINS ya existente. Se puede ser un servidor WINS o un cliente WINS, pero no ambas cosas a al vez.

Si se va ser el servidor WINS, debe habilitarse lo siguiente:

wins support = Yes Si se va a utilizar un servidor WINS ya existente, debe descomentar la siguiente línea y especificar que dirección IP utiliza dicho servidor WINS:

wins server = 192.168.1.1

Opciones específicas para Controlador Primario de Dominio (PDC).

Si se va a configurar Samba como Controlador Primario de Dominio, se debe especificar todos los parámetros descritos a continuación.

Si se quiere que las claves de acceso del sistema y Windows se mantengan sincronizadas, es necesario descomentar las siguiente líenas:

unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn
*passwd:*all*authentication*tokens*updated*successfully*

El parámetro local master define al servidor como examinador del dominio (o master browser); El parámetro domain master define al servidor maestro del dominio; El parámetro preferred master define al servidor como maestro del domino preferido en caso de haber más servidores presentes en el mismo dominio como controladores de dominio; El parámetro time server se utiliza para definir que las estaciones deberán sincronizar la hora con el servidor al unirse al dominio; El parámetro domain logons define que el servidor permitirá a las estaciones autenticar contra Samba.

local master = Yes
domain master = Yes
preferred master = Yes
time server = Yes
domain logons = Yes

La configuración de Controlador Primario de Dominio requiere además definir donde se almacenarán los perfiles de los usuarios. Windows 95, 98 y ME requieren se defina con el parámetro logon home, en tanto que Windows NT, 2000 y XP requieren se haga con el parámetro logon path. Para efectos prácticos y de previsión, utilice ambos parámetros y defina la unidad H para dicho volumen:

logon path = %LProfiles%U
logon home = %L%U.profile
logon drive = H:

Si se va a utilizar Samba como Controlador Primario de Dominio, es necesario establecer el guión que ejecutarán las estaciones Windows al conectarse hacia el servidor. Esto se hace a través del parámetro logon script el cual puede definir o bien un guión a utilizar por cada usuario (%u.bat) o bien por cada máquina (%m.bat) o bien de modo general para todos (logon.cmd). Para no complicar las cosas, defina inicialmente un guión general para todos del siguiente modo:

logon script = logon.cmd

El fichero /var/lib/samba/netlogon/logon.cmd deberá contener algo como lo siguiente:

REM windows client logon script
REM

net time mi-servidor /SET /YES
net use H: mi-servidorhomes /PERSISTENT:NO

El Controlador Primario de Dominio va a necesitar también se definan los guiones a ejecutar para distintas tareas como alta de máquinas, usuarios y grupos así como la baja de estos.

add user script = /usr/sbin/useradd %u
add machine script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -c "Cuenta de máquina" -M %u
delete user script = /usr/sbin/userdel %u
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/bin/gpasswd -a %u %g
set primary group script = /usr/sbin/usermod -g %g %u

El parámetro add user script sirve para definir lo que se deberá ejecutar en el trasfondo en el sistema para crear una nueva cuenta de usuario. El parámetro add machine script es particularmente importante porque es el mandato utilizado para dar de alta cuentas de máquinas (trust accounts o cuentas de confianza) de modo automático. El parámetro delete user script es para definir lo propio para eliminar usuarios, delete group script para eliminar grupos, add user to group para añadir usuarios a grupos y set primary group script para establecer un grupo como el principal para un usuario.

Directorio para Netlogon y perfiles en Controlador Primario de Dominio (PDC).

Si se va a utilizar Samba como Controlador Primario de Dominio, es necesario definir los recursos donde residirá netlogon y también donde se almacenarán los perfiles de los usuarios:

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = @administradores, @admins_dominio
guest ok = Yes
browseable = Yes

[Profiles]
path = /var/lib/samba/profiles
read only = No
guest ok = Yes
create mask = 0600
directory mask = 0700

Genere con el mandato mkdir los directorios /var/lib/samba/profiles y /var/lib/samba/netlogon. El directorio /var/lib/samba/profiles deberá pertenecer a root y al grupo users y tener permiso 1777 a fin de permitir crear el directorio de perfil correspondiente para cada usuario.

mkdir -p -m 1777 /var/lib/samba/profiles
mkdir -p /var/lib/samba/netlogon
chgrp users /var/lib/samba/profiles

Inciar el servicio y añadirlo al arranque del sistema.

Si iniciará Samba por primera vez realice lo siguiente:

/sbin/service smb start

Si va a reiniciar el servicio, realice lo siguiente:

/sbin/service smb restart

Para que Samba inicie automáticamente cada vez que inicie el servidor solo ejecute el siguiente mandato:

/sbin/chkconfig smb on

Accediendo hacia Samba.

Modo texto.

Smbclient.

Indudablemente el método más práctico y seguro es el mandato smbclient. Este permite acceder hacía cualquier servidor Samba o Windows® como si fuese el mandato ftp en modo texto.

Para acceder al cualquier recurso de alguna máquina Windows® o servidor SAMBA determine primero que volúmenes o recursos compartidos posee está. utilice el mandato smbclient del siguiente modo:

smbclient -U usuario -L alguna_maquina

Lo cual le devolvería más menos lo siguiente:

Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

        Sharename       Type      Comment
        ---------       ----      -------
        homes           Disk      Home Directories
        netlogon        Disk      Network Logon Service
        ftp             Disk      ftp
        IPC$            IPC       IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
        ADMIN$          IPC       IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
        epl5900         Printer   Created by redhat-config-printer 0.6.x
        hp2550bw        Printer   Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

        Server               Comment
        ---------            -------
        mi-servidor          Servidor Samba 3.0.7-1.3E en mi-servidor

        Workgroup            Master
        ---------            -------
        MI-DOMINIO           MI-SERVIDOR

La siguiente corresponde a la sintaxis básica para poder navegar los recursos compartidos por la máquina Windows® o el servidor SAMBA:

smbclient //alguna_maquina/recurso -U usuario

Ejemplo:

smbclient //LINUX/FTP -U jbarrios

Después de ejecutar lo anterior, el sistema solicitará se proporcione la clave de acceso del usuario jbarrios en el equipo denominado LINUX.

smbclient //LINUX/FTP -U jbarrios
added interface ip=192.168.1.254 bcast=192.168.1.255 nmask=255.255.255.0
Password:
Domain=[miusuario] OS=[Unix] Server=[Samba 2.2.1a]
smb: >

Pueden utilizarse virtualmente los mismos mandatos que en el interprete de ftp, como serían get, mget, put, del, etc.

Por montaje de unidades de red.

Si necesita poder visualizar desde GNU/Linux a las máquinas con Windows® e interactuar con los directorios compartidos por estás, necesitará realizar algunos pasos adicionales. De manera predeterminada, y por motivos de seguridad, solo root puede utilizar los mandatos smbmnt y smbumount. Deberá entonces establecer permisos de SUID a dichos mandatos. Puede hacerlo ejecutando, como root lo siguiente:

chmod 4755 /usr/bin/smbmnt
chmod 4755 /usr/bin/smbumount

Para acceder hacia una máquina Windows® determine primero que volúmenes o recursos compartidos posee está. utilice el mandato smbclient del siguiente modo:

smbclient -N -L alguna_maquina

Lo cual le devolvería más menos lo siguiente:

Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

        Sharename       Type      Comment
        ---------       ----      -------
        homes           Disk      Home Directories
        netlogon        Disk      Network Logon Service
        ftp             Disk      ftp
        IPC$            IPC       IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
        ADMIN$          IPC       IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
        epl5900         Printer   Created by redhat-config-printer 0.6.x
        hp2550bw        Printer   Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

        Server               Comment
        ---------            -------
        mi-servidor          Servidor Samba 3.0.7-1.3E en mi-servidor

        Workgroup            Master
        ---------            -------
        MI-DOMINIO           MI-SERVIDOR

En el ejemplo anterior hay un volumen compartido llamado algún_volumen. Si queremos montar este, debemos crear un punto de montaje. Éste puede crearse en cualquier directorio sobre el que tengamos permisos de escritura. Para montarlo, utilizamos entonces la siguiente línea de mandato:

smbmount //alguna_maquina/algún_volumen /punto/de/montaje/

Si la máquina Windows® requiere un usuario y una clave de acceso, puede añadir a lo anterior las opciones -username=el_necesario -password=el_requerido -workgroup=MIGRUPO

Si la distribución de GNU/Linux utilizada es reciente, también puede utilizar el ya conocido mandato mount del siguiente modo:

mount -t smbfs -o username=el_necesario,password=el_requerido //alguna_maquina/algún_volumen /punto/de/montaje/

Si se genera una cuenta pcguest, similar a la cuenta nobody, podemos montar volúmenes SMB sin ingresar una clave de acceso pero con privilegios restringidos, o aquellos que definamos a un volumen accedido por un usuario invitado. Esto sería el método por elección para compartir volúmenes en una red de área local. Puede generarse una cuenta pcguest o bien dejar que el sistema tome al usuario nobody. Si opta por lo primero, solo de de alta la cuenta NO asigne clave de acceso alguna. Montar volúmenes remotos como usuarios invitado es muy sencillo. Un ejemplo real sería:

mount -t smbfs -o guest //LINUX/FTP //var/ftp

Lo anterior monta un volumen SAMBA de una máquina con GNU/Linux en otra máquina con GNU/Linux.

Puede añadirse también una entrada en /etc/fstab de modo que sólo tenga que ser tecleado mount /punto/de/montaje. Esta línea sería de modo similar al siguiente:

//LINUX/FTP   /var/ftp   smbfs   user,auto,guest,ro,gid=100   0 0

Recuérdese que el volumen compartido debe estar configurado para permitir usuarios invitados:

[FTP]
        comment = equipamiento lógico libre (RPMS)
        path = /var/ftp/pub
        public = Yes
        guest ok = Yes

Modo gráfico

Desde el entorno de GNOME.

Si utiliza GNOME 2.x o superior, éste incluye un módulo para Nautilus que permite acceder hacia los recursos compartidos a través de Samba sin necesidad de modificar cosa alguna en el sistema. Solo hay que hacer clic en Servidores de red en el menú de GNOME.

Accesando hacia Samba a través de Nautilus

Desde Windows.

Por su parte, desde Windows deberá ser posible acceder sin problemas hacia Samba como si fuese hacia cualquier otra máquina con Windows. Vaya, ni Windows ni el usuario notarán siquiera la diferencia.

Uniendo máquinas al dominio del Controlador Primario de Dominio.

El controlador de dominio permite utilizar a Samba como servidor de autenticación y servidor de archivos que además permite almacenar el perfil, preferencias y documentos del usuario en el servidor automáticamente sin la intervención del usuario.

Creando manualmente cuentas de máquinas

Bajo algunas circunstancias será necesario crear cuentas de máquinas (trust accounts o cuentas de confianza) a fin de permitir unirse al dominio. el procedimiento es simple:

/usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -c "Cuenta de máquina" -M maquina-windows$
smbpasswd -a maquina-windows$

Es de resaltar que las cuentas de máquinas deben incluir obligatoriamente un símbolo $ al final del nombre.

Windows 95/98/ME y Windows XP Home

Ya que los sistemas con Windows 95/98/ME y Windows XP Home no incluyen una implementación completa como miembros de dominio, no se requieren cuentas de confianza. El procedimiento para unirse al dominio es el siguiente:

•  Acceder hacia Menú de inicio → Configuraciones → Panel de control → Red
•  Seleccione la pestaña de Configuración
•  Seleccione «Cliente de redes Microsoft»
•  Haga clic en el botón de propiedades
•  Seleccione Acceder a dominio de Windows NT y especifique el dominio correspondiente.
•  Clic en todos los botones de «Aceptar» y reinicie el sistema
•  Acceda con cualquier usuario que haya sido dado de alta en el servidor Samba y que además cuente con una clave de acceso asignada con smbpasswd.

Windows NT

•  Crear manualmente la cuenta de máquina como se decribió anteriormente.
•  Acceder hacia Menú de inicio → Configuraciones → Panel de control → Red.
•  Seleccionar la pestaña de «Identificación».
•  Clic en el botón de «Cambiar».
•  Ingrese el nombre del dominio y el nombre del sistema. No selecione «Crear una cuenta de máquina en el Dominio».
•  Clic en «Aceptar»
•  Espere algunos segundos.
•  Deberá mostrarse un mensaje emergente de confirmación que dice «Bienvenido a MI-DOMINIO»
•  Reinicie el sistema
•  Acceda con cualquier usuario que haya sido dado de alta en el servidor Samba y que además cuente con una clave de acceso asignada con smbpasswd.

Windows 2000/2003 y Windows XP Profesional

•  Clic derecho en el icono de «Mi PC».
•  Seleccionar «Propiedades»
•  Haga clic en la pestaña de «Identificación de red» o «Nombre del sistema».
•  Clic en el botón de «Propiedades».
•  Clic en el botón «Miembro de dominio»
•  Ingrese el nombre del dominio y el nombre de la máquina y haga clic en el botón de «Aceptar»
•  Aparecerá un diálogo que preguntará por una cuenta y clave de acceso con privilegios de administración en el servidor. Especifique la root y la clave de acceso que asignó a la cuenta de root con el mandato smbpasswd (NO LA CLAVE DE ACCESO DE ROOT EN EL SISTEMA).
•  Espere algunos segundos.
•  Deberá mostrarse un mensaje emergente de confirmación que dice «Bienvenido a MI-DOMINIO»
•  Reinicie el sistema
•  Acceda con cualquier usuario que haya sido dado de alta en el servidor Samba y que además cuente con una clave de acceso asignada con smbpasswd.

Última Edición lunes, marzo 19 2007 @ 12:23 CST; 142,150 Hits

Publicado en Comos | Deja un Comentario »

Configurar un servidor de nombres de dominio (DNS).

Publicado por cristobal39 en Martes, Marzo 25, 2008

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Bind (Berkeley Internet Name Domain).

BIND (acrónimo de Berkeley Internet Name Domain) es una implementación del protocolo DNS y provee una implementación libre de los principales componentes del Sistema de Nombres de Dominio, los cuales incluyen:

Un servidor de sistema de nombres de dominio (named).
Una biblioteca resolutoria de sistema de nombres de dominio.
Herramientas para verificar la operación adecuada del servidor DNS (bind-utils).

El Servidor DNS BIND es ampliamente utilizado en la Internet (99% de los servidores DNS) proporcionando una robusta y estable solución.

DNS (Domain Name System).

DNS (acrónimo de Domain Name System) es una base de datos distribuida y jerárquica que almacena la información necesaria para los nombre de dominio. Sus usos principales son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico correspondientes para cada dominio. El DNS nació de la necesidad de facilitar a los seres humanos el acceso hacia los servidores disponibles a través de Internet permitiendo hacerlo por un nombre, algo más fácil de recordar que una dirección IP.

Los Servidores DNS utilizan TCP y UDP en el puerto 53 para responder las consultas. Casi todas las consultas consisten de una sola solicitud UDP desde un Cliente DNS seguida por una sola respuesta UDP del servidor. TCP interviene cuando el tamaño de los datos de la respuesta exceden los 512 bytes, tal como ocurre con tareas como transferencia de zonas.

NIC (Network Information Center).

NIC (acrónimo de Network Information Center o Centro de Información sobre la Red) es una institución encargada de asignar los nombres de dominio en Internet, ya sean nombres de dominio genéricos o por países, permitiendo personas o empresas montar sitios de Internet mediante a través de un ISP mediante un DNS. Técnicamente existe un NIC por cada país en el mundo y cada uno de éstos es responsable por todos los dominios con la terminación correspondiente a su país. Por ejemplo: NIC México es la entidad encargada de gestionar todos los dominios con terminación .mx, la cual es la terminación correspondiente asignada a los dominios de México.

FQDN (Fully Qualified Domain Name).

FQDN (acrónimo de Fully Qualified Domain Name o Nombre de Dominio Plenamente Calificado) es un Nombre de Dominio ambiguo que especifica la posición absoluta del nodo en el árbol jerárquico del DNS. Se distingue de un nombre regular porque lleva un punto al final.

Como ejemplo: suponiendo que se tiene un dispositivo cuyo nombre de anfitrión es «maquina1» y un dominio llamado «dominio.com», el FQDN sería «maquina1.dominio.com.», asi es que se define de forma única al dispositivo mientras que pudieran existir muchos anfitriones llamados «maquina1», solo puede haber uno llamado «maquina1.dominio.com.». La ausencia del punto al final definiría que se pudiera tratar tan solo de un prefijo, es decir «maquina1.dominio.com» pudiera ser un dominio de otro más largo como «maquina1.dominio.com.mx».

La longitud máxima de un FQDN es de 255 bytes, con una restricción adicional de 63 bytes para cada etiqueta dentro del nombre del dominio. Solo se permiten los caracteres A-Z de ASCII, dígitos y el carácter «-». No se distinguen mayúsculas y minúsculas.

Desde 2004, a solicitud de varios países de Europa, existe el estándar IDN (acrónimo de Internationalized Domain Name) que permite caracteres no-ASCII, codificando caracteres Unicode dentro de cadenas de bytes dentro del conjunto normal de caracteres de FQDN. Como resultado, los limites de longitud de los nombres de dominio IDN dependen directamente del contenido mismo del nombre.

Componentes de un DNS.

Los DNS operan a través de tres componentes: Clientes DNS, Servidores DNS y Zonas de Autoridad.

Clientes DNS.

Son programas que ejecuta un usuario y que generan peticiones de consulta para resolver nombres. Básicamente preguntan por la dirección IP que corresponde a un nombre determinado.

Servidores DNS.

Son servicios que contestan las consultas realizadas por los Clientes DNS. Hay dos tipos de servidores de nombres:

Servidor Maestro: También denominado Primario. Obtiene los datos del dominio a partir de un fichero hospedado en el mismo servidor.
Servidor Esclavo: También denominado Secundario. Al iniciar obtiene los datos del dominio a través de un Servidor Maestro (o primario), realizando un proceso denominado transferencia de zona.

Un gran número de problemas de operación de servidores DNS se atribuyen a las pobres opciones de servidores secundarios para las zona de DNS. De acuerdo al RFC 2182, el DNS requiere que al menos tres servidores existan para todos los dominios delegados (o zonas).

Una de las principales razones para tener al menos tres servidores para cada zona es permitir que la información de la zona misma esté disponible siempre y forma confiable hacia los Clientes DNS a través de Internet cuando un servidor DNS de dicha zona falle, no esté disponible y/o esté inalcanzable.

Contar con múltiples servidores también facilita la propagación de la zona y mejoran la eficiencia del sistema en general al brindar opciones a los Clientes DNS si acaso encontraran dificultades para realizar una consulta en un Servidor DNS. En otras palabras: tener múltiples servidores para una zona permite contar con redundancia y respaldo del servicio.

Con múltiples servidores, por lo general uno actúa como Servidor Maestro o Primario y los demás como Servidores Esclavos o Secundarios. Correctamente configurados y una vez creados los datos para una zona, no será necesario copiarlos a cada Servidor Esclavo o Secundario, pues éste se encargará de transferir los datos de manera automática cuando sea necesario.

Los Servidores DNS responden dos tipos de consultas:

Consultas Iterativas (no recursivas): El cliente hace una consulta al Servidor DNS y este le responde con la mejor respuesta que pueda darse basada sobre su caché o en las zonas locales. Si no es posible dar una respuesta, la consulta se reenvía hacia otro Servidor DNS repitiéndose este proceso hasta encontrar al Servidor DNS que tiene la Zona de Autoridad capaz de resolver la consulta.
Consultas Recursivas: El Servidor DNS asume toda la carga de proporcionar una respuesta completa para la consulta realizada por el Cliente DNS. El Servidor DNS desarrolla entonces Consultas Iterativas separadas hacia otros Servidores DNS (en lugar de hacerlo el Cliente DNS) para obtener la respuesta solicitada.

Zonas de Autoridad.

Permiten al Servidor Maestro o Primario cargar la información de una zona. Cada Zona de Autoridad abarca al menos un dominio y posiblemente sus sub-dominios, si estos últimos no son delegados a otras zonas de autoridad.

La información de cada Zona de Autoridad es almacenada de forma local en un fichero en el Servidor DNS. Este fichero puede incluir varios tipos de registros:

Tipo de Registro. Descripción.
A (Address) Registro de dirección que resuelve un nombre de un anfitrión hacia una dirección IPv4 de 32 bits.
AAAA Registro de dirección que resuelve un nombre de un anfitrión hacia una dirección IPv6 de 128 bits.
CNAME (Canonical Name) Registro de nombre canónico que hace que un nombre sea alias de otro. Los dominios con alias obtiene los sub-dominios y registros DNS del dominio original.
MX (Mail Exchanger) Registro de servidor de correo que sirve para definir una lista de servidores de correo para un dominio, así como la prioridad entre éstos.
PTR (Pointer) Registro de apuntador que resuelve direcciones IPv4 hacia el nombre anfitriones. Es decir, hace lo contrario al registro A. Se utiliza en zonas de Resolución Inversa.
NS (Name Server) Registro de servidor de nombres que sirve para definir una lista de servidores de nombres con autoridad para un dominio.
SOA (Start of Authority) Registro de inicio de autoridad que especifica el Servidor DNS Maestro (o Primario) que proporcionará la información con autoridad acerca de un dominio de Internet, dirección de correo electrónico del administrador, número de serie del dominio y parámetros de tiempo para la zona.
SRV (Service) Registro de servicios que especifica información acerca de servicios disponibles a través del dominio. Protocolos como SIP (Session Initiation Protocol) y XMPP (Extensible Messaging and Presence Protocol) suelen requerir registros SRV en la zona para proporcionar información a los clientes.
TXT (Text) Registro de texto que permite al administrador insertar texto arbitrariamente en un registro DNS. Este tipo de registro es muy utilizado por los servidores de listas negras DNSBL (DNS-based Blackhole List) para la filtración de Spam. Otro ejemplo de uso son las VPN, donde suele requerirse un registro TXT para definir una llave que será utilizada por los clientes.

Las zonas que se pueden resolver son:

Zonas de Reenvío.
Devuelven direcciones IP para las búsquedas hechas para nombres FQDN (Fully Qualified Domain Name).

En el caso de dominios públicos, la responsabilidad de que exista una Zona de Autoridad para cada Zona de Reenvío corresponde a la autoridad misma del dominio, es decir, y por lo general, quien esté registrado como autoridad del dominio tras consultar una base de datos WHOIS. Quienes compran dominios a través de un NIC (por ejemplo ejemplo: www.nic.mx) son quienes se hacen cargo de las Zonas de Reenvío, ya sea a través de su propio Servidor DNS o bien a través de los Servidores DNS de su ISP.

Salvo que se trate de un dominio para uso en una red local, todo dominio debe ser primero tramitado con un NIC como requisito para tener derecho legal a utilizarlo y poder propagarlo a través de Internet.

Zonas de Resolución Inversa.
Devuelven nombres FQDN (Fully Qualified Domain Name) para las búsquedas hechas para direcciones IP.

En el caso de segmentos de red públicos, la responsabilidad de que exista de que exista una Zona de Autoridad para cada Zona de Resolución Inversa corresponde a la autoridad misma del segmento, es decir, y por lo general, quien esté registrado como autoridad del segmento tras consultar una base de datos WHOIS.

Los grandes ISP, y en algunos casos algunas empresas, son quienes se hacen cargo de las Zonas de Resolución Inversa.

Herramientas de búsqueda y consulta.

Mandato host.

El mandato host una herramienta simple para hacer búsquedas en Servidores DNS. Es utilizada para convertir nombres en direcciones IP y viceversa.

De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar.

host www.alcancelibre.org

Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema, devolviendo como resultado una dirección IP.

host www.alcancelibre.org 200.33.146.217

Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217, devolviendo una dirección IP como resultado.

Mandato dig.

El mandato dig (domain information groper) es una herramienta flexible para realizar consultas en Servidores DNS. Realiza búsquedas y muestra las respuestas que son regresadas por los servidores que fueron consultados. Debido a su flexibilidad y claridad en la salida es que la mayoría de los administradores utilizan dig para diagnosticar problemas de DNS.

De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar. La sintaxis básica sería:

dig @servidor nombre TIPO

Donde servidor corresponde al nombre o dirección IP del Servidor DNS a consultar, nombre corresponde al nombre del registro del recurso que se está buscando y TIPO corresponde al tipo de consulta requerido (ANY, A, MX, SOA, NS, etc.)

Ejemplo:

dig @200.33.146.209 alcancelibre.org MX

Lo anterior realiza una búsqueda en el Servidor DNS en la dirección IP 200.33.146.209 para los registros MX para el dominio alcancelibre.org.

dig alcancelibre.org NS

Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema para los registros NS para el dominio alcancelibre.org.

dig @200.33.146.217 alcancelibre.org NS

Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217 para los registros NS para el dominio alcancelibre.org.

Mandato jwhois (whois).

El mandato jwhois es una herramienta de consulta a través de servidores WHOIS. La sintaxis básica es:

jwhois dominio

Ejemplo:

jwhois alcancelibre.org

Loa anterior regresa la información correspondiente al dominio alcancelibre.org.

Equipamiento lógico necesario.

Paquete. Descripción.
• bind Incluye el Servidor DNS (named) y herramientas para verificar su funcionamiento.
• bind-libs Biblioteca compartida que consiste en rutinas para aplicaciones para utilizarse cuando se interactúe con Servidores DNS.
• bind-chroot Contiene un árbol de ficheros que puede ser utilizado como una jaula chroot para named añadiendo seguridad adicional al servicio.
• bind-utils Colección de herramientas para consultar Servidores DNS.
• caching-nameserver Ficheros de configuración que harán que el Servidor DNS actúe como un caché para el servidor de nombres.

Instalación a través de yum.

Si se utiliza de CentOS 4 o White Box Enterprise Linux 4, o versiones posteriores, se puede instalar utilizando lo siguiente:

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

Instalación a través de Up2date

Si se utiliza de Red Hat™ Enterprise Linux 4, o versiones posteriores, se puede instalar utilizando lo siguiente:

up2date -i bind bind-chroot bind-utils caching-nameserver

Procedimientos.

Preparativos.

Idealmente se deben definir primero los siguiente datos:

1. Dominio a resolver.
2. Servidor de nombres principal (SOA). Éste debe ser un nombre que ya esté plenamente resuelto, y debe ser un FQDN (Fully Qualified Domain Name).
3. Lista de todos los servidores de nombres (NS) que se utilizarán para efectos de redundancia. Éstos deben ser nombres que ya estén plenamente resueltos, y deben ser además FQDN (Fully Qualified Domain Name).
4. Cuenta de correo del administrador responsable de esta zona. Dicha cuenta debe existir y no debe pertenecer a la misma zona que se está tratando de resolver.
5. Al menos un servidor de correo (MX), con un registro A, nunca CNAME.
6. IP predeterminada del dominio.
7. Sub-dominios dentro del dominio (www, mail, ftp, ns, etc.) y las direcciones IP que estarán asociadas a estos.

Es importante tener bien en claro que los puntos 2, 3 y 4 involucran datos que deben existir previamente y estar plenamente resueltos por otro servidor DNS; Lo anterior quiere decir no pueden utilizar datos que sean parte o dependan del mismo dominio que se pretende resolver. De igual modo, el servidor donde se implementará el DNS deberá contar con un nombre FQDN y que esté previa y plenamente resuelto en otro DNS.

Como regla general se generará una zona de reenvío por cada dominio sobre el cual se tenga autoridad plena y absoluta y se generará una zona de resolución inversa por cada red sobre la cual se tenga plena y absoluta autoridad. es decir, si se es propietario del dominio «cualquiercosa.com», se deberá generar el fichero de zona correspondiente a fin de resolver dicho dominio. Por cada red con direcciones IP privadas sobre la cual se tenga control y plena y absoluta autoridad, se deberá generar un fichero de zona de resolución inversa a fin de resolver inversamente las direcciones IP de dicha zona. Regularmente la resolución inversa de las direcciones IP públicas es responsabilidad de los proveedores de servicio ya que son estos quienes tienen la autoridad plena y absoluta sobre dichas direcciones IP.

Todos los ficheros de zona deben pertenecer al usuario «named» a fin de que el servicio named pueda acceder a estos o bien modificarlos en el caso de tratarse de zonas esclavas.

Creación de los ficheros de zona.

Los siguientes corresponderían a los contenidos para los ficheros de zona requeridos para la red local y por el NIC con el que se haya registrado el dominio. Note por favor que en las zonas de reenvío siempre se especifica al menos un Mail Exchanger (MX) y que se utilizan tabuladores (tecla TAB) en lugar de espacio. Solo necesitará sustituir nombres y direcciones IP, y quizá añadir nuevos registros para complementar su red local.

Zona de reenvío red local /var/named/chroot/var/named/red-local.zone

$TTL 86400
@		IN	SOA	dns.red-local.	jperez.red-local. (
		2007041701; número de serie
		28800 ; tiempo de refresco
		7200 ; tiempo entre reintentos de consulta
		604800 ; tiempo tras el cual expira la zona
		86400 ; tiempo total de vida
		)
@		IN	NS	dns
@		IN	MX	10	mail
@		IN	A	192.168.1.1
intranet	IN	A	192.168.1.1
maquina2	IN	A	192.168.1.2
maquina3	IN	A	192.168.1.3
maquina4	IN	A	192.168.1.4
www		IN	CNAME	intranet
mail		IN	A	192.168.1.1
ftp		IN	CNAME	intranet
dns		IN	CNAME	intranet

Zona de resolución inversa red local /var/named/chroot/var/named/1.168.192.in-addr.arpa.zone

$TTL 86400
@		IN	SOA	dns.red-local.	jperez.red-local. (
		2007041701 ; número de serie
		28800 ; tiempo de refresco
		7200 ; tiempo entre reintentos de consulta
		604800 ; tiempo tras el cual expira la zona
		86400 ; tiempo total de vida
		)
@		IN	NS	dns.red-local.
1	IN	PTR	intranet.red-local.
2	IN	PTR	maquina2.red-local.
3	IN	PTR	maquina3.red-local.
4	IN	PTR	maquina4.red-local.

Zona de reenvío del dominio /var/named/chroot/var/named/dominio.com.zone

Suponiendo que hipotéticamente se es la autoridad para el dominio «dominio.com», se puede crear una Zona de Reenvio con un contenido similar al siguiente:

$TTL 86400
@		IN	SOA	fqdn.dominio-resuelto.	cuenta.email.existente. (
		2007041701; número de serie
		28800 ; tiempo de refresco
		7200 ; tiempo entre reintentos de consulta
		604800 ; tiempo tras el cual expira la zona
		86400 ; tiempo total de vida
		)
@		IN	NS	dns
@		IN	MX	10	mail
@		IN	A	148.243.59.1
servidor	IN	A	148.243.59.1
www		IN	CNAME	servidor
mail		IN	A	148.243.59.1
ftp		IN	CNAME	servidor
dns		IN	CNAME	servidor

Zona de resolución inversa del dominio /var/named/chroot/var/named/1.243.148.in-addr.arpa.zone

Suponiendo que hipotéticamente se es la autoridad para el segmento de red 148.234.1.0/24, se puede crear una Zona de Resolución Inversa con un contenido similar al siguiente:

$TTL 86400
@		IN	SOA	fqdn.dominio-resuelto.	cuenta.email.existente. (
		2007041701 ; número de serie
		28800 ; tiempo de refresco
		7200 ; tiempo entre reintentos de consulta
		604800 ; tiempo tras el cual expira la zona
		86400 ; tiempo total de vida
		)
@		IN	NS	dns.dominio.com.
1	IN	PTR	servidor.dominio.com.
2	IN	PTR	maquina2.dominio.com.
3	IN	PTR	maquina3.dominio.com.
4	IN	PTR	maquina4.dominio.com.

Cada vez que haga algún cambio en algún fichero de zona, deberá cambiar el número de serie (serial) a fin de que tomen efecto los cambios de inmediato cuando se reinicie el servicio named, ya que de otro modo tendría que reiniciar el equipo, algo poco conveniente.

Configuración de parámetros en el fichero /etc/named.conf

options {
	directory "/var/named/";
	dump-file "/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	allow-recursion {
		127.0.0.1;
		192.168.1.0/24;
	};
	forwarders {
		200.33.146.209;
		200.33.146.217;
	};
	forward first;
};
zone "." {
	type hint;
	file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
	type master;
	file "0.0.127.in-addr.arpa.zone";
	allow-update { none; };
};
zone "localhost" {
	type master;
	file "localhost.zone";
	allow-update { none; };
};
zone "dominio.com" { 
	type master; 
	file "dominio.com.zone";
	allow-update { none; };
};
zone "1.243.148.in-addr.arpa" { 
	type master; 
	file "1.243.148.in-addr.arpa.zone";
	allow-update { none; };
};
zone "red-local" { 
	type master; 
	file "red-local.zone";
	allow-update { none; };
};
zone "1.168.192.in-addr.arpa" { 
	type master; 
	file "1.168.192.in-addr.arpa.zone";
	allow-update { none; };
};

Seguridad adicional en DNS para uso público.

Quienes hayan utilizado en recientes fechas los servicios de DNS Report, habrán notado que el diagnóstico en línea devuelve ahora un error que, en resumen, indica que el servidor puede ser susceptible de sufrir/participar en un ataque DDoS (Distributed Denail of Service o denegación de servicio distribuido).

Un DDoS (Distributed Denial of Service) es una ampliación del ataque DoS, se efectúa con la instalación de varios agentes remotos en muchas computadoras que pueden estar localizadas en diferentes puntos del mundo. El atacante consigue coordinar esos agentes para así, de forma masiva, amplificar el volumen del saturación de información (flood), pudiendo darse casos de un ataque de cientos o millares de computadoras dirigido a una máquina o red objetivo. Esta técnica se ha revelado como una de las más eficaces y sencillas a la hora de colapsar servidores, la tecnología distribuida ha ido haciendo más sofisticada hasta el punto de otorgar poder de causar daños serios a personas con escaso conocimiento técnico.

La falla reportada por la herramienta en línea de DNS Report, para un servidor DNS que permite consultas recursivas, indicará algo como lo siguiente:

«ERROR: One or more of your nameservers reports that it is an open DNS server. This usually means that anyone in the world can query it for domains it is not authoritative for (it is possible that the DNS server advertises that it does recursive lookups when it does not, but that shouldn’t happen). This can cause an excessive load on your DNS server. Alos, it is strongly discouraged to have a DNS server be both authoritative for your domain and be recursive (even if it is not open), due to the potential for cache poisoning (with no recursion, there is no cache, and it is impossible to poison it). Alos, the bad guys could use your DNS server as part of an attack, by forging their IP address»

Significa que el servidor DNS puede permitir a cualquiera realizar consultas recursivas. Si se trata de un DNS que se desea pueda ser consultado por cualquiera, como puede ser el caso del DNS de un ISP, esto es normal y esperado. Si se trata de un servidor que solo debe consultar la red local, o bien que se utiliza para propagar dominios hospedados localmente, si es conveniente tomar medidas al respecto.

Solución al problema es modificar el fichero /etc/named.conf, donde se añade en la sección de opciones (options) una línea que defina la red, las redes o bien los ACL (Access Control List o listas de control de acceso) que tendrán permitido realizar todo tipo de consultas.

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        forwarders { 192.168.0.1; };
        forward first;
        allow-recursion { 127.0.0.1; 192.168.0.0/24; };
};

Lo anterior hace que solo 192.168.0.0/24 pueda realizar todo tipo de consultas en el DNS, ya sea para un nombre de dominio hospedado localmente y otros dominios resueltos en otros servidores (ejemplo: www.yahoo.com, www.google.com, www.alcancelibre.org, etc). El resto del mundo solo podrá realizar consultas sobre los dominios hospedados localmente y que estén configurado para permitirlo.

En la siguiente configuración de ejemplo, se pretende lograr lo siguiente:

  • Red Local: cualquier tipo de consulta hacia dominios externos y locales (es decir, www.yahoo.com, www.google.com, alcancelibre.org, además de midominio.com).
  • Resto del mundo: solo puede hacer consultas para la zona de midominio.com

De este modo se impide que haya consultas recursivas y con esto impedir la posibilidad de sufrir/participar de un ataque DDoS.

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        forwarders { 192.168.0.1; };
        forward first;
        allow-recursion { 127.0.0.1; 192.168.0.0/24; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "miredlocal" {
        type master;
        file "miredlocal.zone";
        allow-update { none; };
        allow-query { 192.168.0.0/24; };
        allow-transfer { 192.168.0.2; };
};

zone "midominio.com" {
        type master;
        file "midominio.com.zone";
        allow-update { none; };
        allow-transfer { 200.76.185.252; 200.76.185.251; };
};

Un DDoS (Distributed Denial of Service) es una ampliación del ataque DoS, se efectúa con la instalación de varios agentes remotos en muchas computadoras que pueden estar localizadas en diferentes puntos del mundo. El atacante consigue coordinar esos agentes para así, de forma masiva, amplificar el volumen del saturación de información (flood), pudiendo darse casos de un ataque de cientos o millares de computadoras dirigido a una máquina o red objetivo. Esta técnica se ha revelado como una de las más eficaces y sencillas a la hora de colapsar servidores, la tecnología distribuida ha ido haciendo más sofisticada hasta el punto de otorgar poder de causar daños serios a personas con escaso conocimiento técnico.

La falla reportada por la herramienta en línea de DNS Report, para un servidor DNS que permite consultas recursivas, indicará algo como lo siguiente:

«ERROR: One or more of your nameservers reports that it is an open DNS server. This usually means that anyone in the world can query it for domains it is not authoritative for (it is possible that the DNS server advertises that it does recursive lookups when it does not, but that shouldn’t happen). This can cause an excessive load on your DNS server. Alos, it is strongly discouraged to have a DNS server be both authoritative for your domain and be recursive (even if it is not open), due to the potential for cache poisoning (with no recursion, there is no cache, and it is impossible to poison it). Alos, the bad guys could use your DNS server as part of an attack, by forging their IP address»

Significa que el servidor DNS puede permitir a cualquiera realizar consultas recursivas. Si se trata de un DNS que se desea pueda ser consultado por cualquiera, como puede ser el caso del DNS de un ISP, esto es normal y esperado. Si se trata de un servidor que solo debe consultar la red local, o bien que se utiliza para propagar dominios hospedados localmente, si es conveniente tomar medidas al respecto.

Solución al problema es modificar el fichero /etc/named.conf, donde se añade en la sección de opciones (options) una línea que defina la red, las redes o bien los ACL (Access Control List o listas de control de acceso) que tendrán permitido realizar todo tipo de consultas.

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        forwarders { 192.168.0.1; };
        forward first;
        allow-recursion { 127.0.0.1; 192.168.0.0/24; };
};

Lo anterior hace que solo 192.168.0.0/24 pueda realizar todo tipo de consultas en el DNS, ya sea para un nombre de dominio hospedado localmente y otros dominios resueltos en otros servidores (ejemplo: www.yahoo.com, www.google.com, www.alcancelibre.org, etc). El resto del mundo solo podrá realizar consultas sobre los dominios hospedados localmente y que estén configurado para permitirlo.

En la siguiente configuración de ejemplo, se pretende lograr lo siguiente:

  • Red Local: cualquier tipo de consulta hacia dominios externos y locales (es decir, www.yahoo.com, www.google.com, alcancelibre.org, además de midominio.com).
  • Resto del mundo: solo puede hacer consultas para la zona de midominio.com

De este modo se impide que haya consultas recursivas y con esto impedir la posibilidad de sufrir/participar de un ataque DDoS.

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        forwarders { 192.168.0.1; };
        forward first;
        allow-recursion { 127.0.0.1; 192.168.0.0/24; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "miredlocal" {
        type master;
        file "miredlocal.zone";
        allow-update { none; };
        allow-query { 192.168.0.0/24; };
        allow-transfer { 192.168.0.2; };
};

zone "midominio.com" {
        type master;
        file "midominio.com.zone";
        allow-update { none; };
        allow-transfer { 200.76.185.252; 200.76.185.251; };
};

Seguridad adicional en DNS para uso exclusivo en red local.

Si se va a tratar de un servidor de nombres de dominio para uso exclusivo en red local, y se quieren evitar problemas de seguridad de diferente índole, puede utilizarse el parámetro allow-query, el cual servirá para especificar que solo ciertas direcciones podrán realizar consultas al servidor de nombres de dominio. Se pueden especificar directamente direcciones IP, redes completas o listas de control de acceso que deberán definirse antes de cualquier otra cosa en el fichero /etc/named.conf.

Fichero /etc/named.conf

acl "redlocal" {
		127.0.0.1;
		192.168.1.0/24;
		192.168.2.0/24;
		192.168.3.0/24;
};

options {
	directory "/var/named/";
	dump-file "/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	allow-recursion { redlocal; };
	forwarders {
		200.33.146.209;
		200.33.146.217;
	};
	forward first;
	allow-query {
		redlocal;
		192.168.1.15;
		192.168.1.16;
	};
};
zone "red-local" {
	type master;
	file "red-local.zone";
	allow-update { none; };
};
zone "1.168.192.in-addr.arpa" {
	type master;
	file "1.168.192.in-addr.arpa.zone";
	allow-update { none; };
};

Las zonas esclavas.

Las zonas esclavas se refieren a aquellas hospedadas en servidores de nombres de dominio secundarios y que hacen las funciones de redundar las zonas maestras en los servidores de nombres de dominio primarios. El contenido del fichero de zona es el mismo que en servidor primario. La diferencia está en la sección de texto utilizada en /etc/named.conf, donde las zonas se definen como esclavas y definen los servidores donde está hospedada la zona maestra.

Fichero /etc/named.conf Servidor DNS secundario.

zone "dominio.com" {
	type slave;
	file "dominio.com.zone";
	masters { 192.168.1.254; };
};
zone "1.243.148.in-addr.arpa" {
	type slave;
	file "1.243.148.in-addr.arpa.zone";
	masters { 192.168.1.254; };
};
zone "red-local" {
	type slave;
	file "red-local.zone";
	masters { 192.168.1.254; };
};
zone "1.168.192.in-addr.arpa" {
	type slave;
	file "1.168.192.in-addr.arpa.zone";
	masters { 192.168.1.254; };
};

Adicionalmente, si desea incrementar seguridad y desea especificar en el Servidor DNS Primario que servidores tendrán permitido ser servidores de nombres de dominio secundario, es decir, hacer transferencias, puede utilizar el parámetro allow-transfer del siguiente modo:

Fichero /etc/named.conf Servidor DNS Primario.

zone "dominio.com" {
	type master;
	file "dominio.com.zone";
	allow-update { none; };
	allow-transfer {
		200.33.146.217;
		200.33.146.209;
	};
};
zone "1.243.148.in-addr.arpa" {
	type master;
	file "1.243.148.in-addr.arpa.zone";
	allow-update { none; };
	allow-transfer {
		200.33.146.217;
		200.33.146.209;
	};
};
zone "red-local" {
	type master;
	file "red-local.zone";
	allow-update { none; };
	allow-transfer {
		192.168.1.15;
		192.168.1.16;
	};
};
zone "1.168.192.in-addr.arpa" {
	type master;
	file "1.168.192.in-addr.arpa.zone";
	allow-update { none; };
	allow-transfer {
		192.168.1.15;
		192.168.1.16;
	};
};

Seguridad adicional para transferencias de zona.

Cuando se gestionan dominios a través de redes públicas, es importante considerar que si se tienen esquemas de servidores maestros y esclavos, siempre será más conveniente utilizar una clave cifrada en lugar de una dirección IP, debido a que esta última puede ser falsificada bajo ciertas circunstancias.

Comúnmente se definen las direcciones IP desde las cuales se permitirá transferencias de zonas, utilizando una configuración en el fichero /var/named/chroot/etc/named.conf como la ejemplificada a continuación, donde los servidores esclavos corresponden a los servidores con direcciones IP 192.168.1.11 y 192.168.1.12:

zone "mi-dominio.org" {
	type master;
	file "mi-dominio.org.zone";
	allow-update { none; }:
	allow-transfer { 192.168.1.11; 192.168.1.12; };
};

Lo anterior permite la transferencia de zona para los servidores con direcciones IP 192.168.1.11 y 192.168.1.12, los cuales utilizan la siguiente configuración en el fichero /var/named/chroot/etc/named.conf, ejemplificada a continuación, donde el servidor primario (zonas maestras) corresponde al servidor con dirección IP 192.168.1.1:

zone "mi-dominio.org" {
	type slave;
	file "mi-dominio.org.zone";
	masters { 192.168.1.1; };
};

El inconveniente del esquema anterior es que es fácil falsificar las direcciones IP. A fin de evitar que esto ocurra, el método recomendado será utilizar una clave cifrada que será validada en lugar de la dirección IP. La llave se crea con el mandato dnssec-keygen, especificando un algoritmo, que puede ser RSAMD5 o RSA, DSA, DH (Diffie Hellman) o HMAC-MD5, el tamaño de la llave en octetos (bits), el tipo de la llave, que puede ser ZONE, HOST, ENTITY o USER y el nombre específico para la clave cifrada. DSA y RSA se utilizan para DNS Seguro (DNSSEC), en tanto que HMAC-MD5 se utiliza para TSIG (Transfer SIGnature o transferencia de firma). Lo más común es utilizar TSIG. En el siguiente ejemplo, se generará en el directorio de trabajo actual la clave mi-dominio.org, utilizando /dev/random como fuente de datos aleatorios, un algoritmo HMAC-MD5 tipo HOST de 128 octetos (bits):

dnssec-keygen -r /dev/random -a HMAC-MD5 -b 128 -n HOST mi-dominio.org

Lo anterior devuelve una salida similar a la siguiente:

Kmi-dominio.org.+157+32322

Al mismo tiempo se generaran dos ficheros en el directorio /var/named/chroot/var/named/, que corresponderían a Kmi-dominio.org.+157+32322.key y Kmi-dominio.org.+157+32322.private. Kmi-dominio.org.+157+32322.key deberá tener un contenido como el siguiente, el cual corresponde al registro que se añade dentro del fichero de zona:

mi-dominio.org. IN KEY 512 3 157 NPuNuxvZAjtd3mriuygT8Q==

Kmi-dominio.org.+157+32322.private deberá tener un contenido como el siguiente:

Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: NPuNuxvZAjtd3mriuygT8Q==

En ambos casos, NPuNuxvZAjtd3mriuygT8Q== corresponde a la clave cifrada. Ambos deben tener la misma clave.

Los dos ficheros solo deben tener atributos de lectura para el usuario named.

chmod 400 Kmi-dominio.org.+157+32322.*
chown named.named Kmi-dominio.org.+157+32322.*

A fin de poder ser utilizados, ambos ficheros deben ser movidos hacia el directorio /var/named/chroot/var/named/.

mv Kmi-dominio.org.+157+32322.* /var/named/chroot/var/named

En el servidor primario (zonas maestras), se añade la siguiente configuración en el fichero /var/named/chroot/etc/named.conf:

key mi-dominio.org {
    algorithm HMAC-MD5;
    secret "NPuNuxvZAjtd3mriuygT8Q==";
};

zone "mi-dominio.org" {
	type master;
	file "mi-dominio.org.zone";
	allow-update { none; };
	allow-transfer { key mi-dominio.org; };
};

Los servidores esclavos utilizarían la siguiente configuración en el fichero /var/named/chroot/etc/named.conf, en donde se define la clave y que ésta será utilizada para realizar conexiones hacia el servidor primario (zonas maestras) (192.168.1.1, en el ejemplo):

key mi-dominio.org {
	algorithm HMAC-MD5;
	secret "NPuNuxvZAjtd3mriuygT8Q==";
};

server 192.168.1.1 {
	keys { mi-dominio.org; };
};

zone "mi-dominio.org" {
	type slave;
	masters { 192.168.1.1; };
};

Comprobaciones.

Tanto en el servidor primario (zonas maestras) como en los servidores esclavos, utilice el mandato tail para ver la salida del fichero /var/log/messages, pero solo aquello que contenga la cadena de caracteres named:

tail -f /var/log/messages |grep named

Al reiniciar el servicio named en servidor primario (zonas maestras), se debe mostrar una salida similar a la siguiente cuando un servidor esclavo realiza una transferencia:

Apr 17 01:57:40 m001 named[6042]: listening on IPv4 interface eth0, 192.168.1.64#53
Apr 17 01:57:40 m001 named[6042]: command channel listening on 127.0.0.1#953
Apr 17 01:57:40 m001 named[6042]: zone 0.in-addr.arpa/IN: loaded serial 42
Apr 17 01:57:40 m001 named[6042]: zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
Apr 17 01:57:40 m001 named[6042]: zone 255.in-addr.arpa/IN: loaded serial 42
Apr 17 01:57:40 m001 named[6042]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 1997022700
Apr 17 01:57:40 m001 named[6042]: zone localdomain/IN: loaded serial 42
Apr 17 01:57:40 m001 named[6042]: zone localhost/IN: loaded serial 42
Apr 17 01:57:40 m001 named[6042]: zone mi-dominio.org/IN: loaded serial 2007041701
Apr 17 01:57:40 m001 named: Iniciación de named succeeded
Apr 17 01:57:40 m001 named[6042]: running
Apr 17 01:57:40 m001 named[6042]: zone mi-dominio.org/IN: sending notifies (serial 2007041701)
Apr 17 01:59:49 m001 named[6042]: client 192.168.1.11#32817: transfer of 'mi-dominio.org/IN': AXFR started

Al reiniciar el servicio named en los servidores esclavos, se debe mostrar una salida similar a la siguiente:

Apr 17 01:58:15 m011 named[5080]: listening on IPv4 interface eth0, 192.168.1.253#53
Apr 17 01:58:15 m011 named[5080]: command channel listening on 127.0.0.1#953
Apr 17 01:58:15 m011 named[5080]: zone 0.in-addr.arpa/IN: loaded serial 42
Apr 17 01:58:15 m011 named[5080]: zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
Apr 17 01:58:15 m011 named[5080]: zone 255.in-addr.arpa/IN: loaded serial 42
Apr 17 01:58:15 m011 named[5080]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 1997022700
Apr 17 01:58:15 m011 named[5080]: zone localdomain/IN: loaded serial 42
Apr 17 01:58:15 m011 named[5080]: zone localhost/IN: loaded serial 42
Apr 17 01:58:15 m011 named[5080]: running
Apr 17 01:58:15 m011 named: Iniciación de named succeeded
Apr 17 01:58:15 m011 named[5080]: zone mi-dominio.org/IN: transferred serial 2007041701
Apr 17 01:58:15 m011 named[5080]: transfer of 'mi-dominio.org/IN' from 192.168.1.1#53: end of transfer
Apr 17 01:58:15 m011 named[5080]: zone mi-dominio.org/IN: sending notifies (serial 2007041701)

Reiniciar servicio y depuración de configuración.

Al terminar de editar todos los ficheros involucrados, solo bastará reiniciar el servidor de nombres de dominio.

service named restart

Si queremos que el servidor de nombres de dominio quede añadido entre los servicios en el arranque del sistema, deberemos realizar lo siguiente a fin de habilitar named junto con el arranque del sistema:

chkconfig named on

Realice prueba de depuración y verifique que la zona haya cargado con número de serie:

tail -80 /var/log/messages |grep named

Lo anterior, si está funcionando correctamente, debería devolver algo parecido a lo mostrado a continuación:

Aug 17 17:15:15 linux named[30618]: starting BIND 9.2.2 -u named
Aug 17 17:15:15 linux named[30618]: using 1 CPU
Aug 17 17:15:15 linux named: Iniciación de named succeeded
Aug 17 17:15:15 linux named[30622]: loading configuration from '/etc/named.conf'
Aug 17 17:15:15 linux named[30622]: no IPv6 interfaces found
Aug 17 17:15:15 linux named[30622]: listening on IPv4 interface lo, 127.0.0.1#53
Aug 17 17:15:15 linux named[30622]: listening on IPv4 interface eth0, 192.168.1.1#53
Aug 17 17:15:15 linux named[30622]: command channel listening on 127.0.0.1#953
Aug 17 17:15:16 linux named[30622]: zone 0.0.127.in-addr.arpa/IN: loaded serial 3
Aug 17 17:15:16 linux named[30622]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2006031602
Aug 17 17:15:16 linux named[30622]: zone localhost/IN: loaded serial 1
Aug 17 17:15:16 linux named[30622]: zone mi-dominio.com.mx/IN: loaded serial 2006031602
Aug 17 17:15:16 linux named[30622]: running
Aug 17 17:15:16 linux named[30622]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2006031602)
Aug 17 17:15:16 linux named[30622]: zone mi-dominio.com.mx/IN: sending notifies (serial 2006031602)

Última Edición martes, abril 17 2007 @ 09:05 CDT; 78,622 Hits Ver la versión para imprimir

 

Publicado en Comos | Deja un Comentario »

MySQL 5.0 Reference Manual

Publicado por cristobal39 en Martes, Marzo 25, 2008

<DIV> <P class=releaseinfo>Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en <A href=”http://dev.mysql.com/doc/mysql/en” target=_top>dev.mysql.com</A>. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a <A href=”mailto:mysql-es@vespito.com” target=_top>mysql-es@vespito.com</A>. </P></DIV> <DIV> <DIV class=legalnotice><A name=id2604617></A> <P>Copyright 1997-2007 MySQL AB </P> <P>Esta documentación NO se distribuye bajo una licencia GPL. El uso de esta documentación está sujeta a los siguientes términos: Puede Usted crear una copia impresa de esta documentación únicamente para su uso personal. La conversión a otros formatos está permitida siempre y cuando el contenido no se vea alterado ni editado de ninguna manera. No está permitida la publicación ni la distribución de esta documentación bajo ninguna forma ni en ningún medio, excepto si distribuye la documentación en una manera similar a la que utiliza MySQL para difundirla (esto es, electrónicamente para ser bajada con el software) o en un CD-ROM o medio similar, siempre y cuando la documentación se difunda junto con el software en el mismo medio. Para cualquier otra utilización, como por ejemplo cualquier difusión de copias escritas, o el uso de esta documentación, en su totalidad o parcialmente, en otra publicación, se debe obtener una autorización escrita previa por parte de un representante autorizado de MySQL AB. MySQL AB se reserva cualquier derecho y todos los derechos sobre esta documentación, aunque no esté aquí expresamente acordado. </P> <P class=legalnotice-all>Si desea obtener más información o si está interesado en realizar una traducción, diríjase por favor por correo electrónico a <CODE class=email>&lt;<A href=”mailto:docs@mysql.com”>docs@mysql.com</A>&gt;</CODE> . </P></DIV></DIV> <DIV> <DIV class=abstract> <P class=title><B>Resumen</B></P> <P>Documento generado el: 2008-03-08 (revisión: 499) </P></DIV></DIV>

Publicado en Comos | 1 comentario