freebsd sbs.pdf

Upload: alexis-pedraja-escalona

Post on 03-Apr-2018

262 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 FreeBSD SBS.pdf

    1/112

    Diseno e Implementacion de una Red Empresarial utilizando

    Software Libre

    Alejandro Tamayo Castillo

    [email protected]

    Abril 2007

  • 7/28/2019 FreeBSD SBS.pdf

    2/112

  • 7/28/2019 FreeBSD SBS.pdf

    3/112

    Indice general

    Prefacio VII

    Licencia IX

    Retroalimentacion / Feedback XI

    1. Introduccion 1

    2. Necesidades de la Organizacion Ficticia BSDLand 3

    3. Diseno de Red 5

    3.1. TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3.2. Union de las Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3.2.1. Tunel PPTP/L2TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3.2.2. Tunel IP/IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.2.3. IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.3. Esquema de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4. Estructura Organizativa 114.1. Modelos de Servidores LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    4.1.1. Single Master (Maestro unico) . . . . . . . . . . . . . . . . . . . . . . 12

    4.1.2. Dual Master (Maestro Doble) . . . . . . . . . . . . . . . . . . . . . . . 13

    4.1.3. Multi-Master (Maestro Multiple) . . . . . . . . . . . . . . . . . . . . . 13

    5. Seleccion del Software a Utilizar 15

    5.1. Seleccion del Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.1.1. FreeBSD vs Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.2. Seleccion del Software de Aplicacion (Servicios) . . . . . . . . . . . . . . . . . 19

    5.2.1. Servicio de Seguridad Kerberos . . . . . . . . . . . . . . . . . . . . . . 19

    5.2.2. Servicio de Directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2.3. Servicio de Encaminamiento, Cortafuegos y Conversion de Direcciones 20

    5.2.4. Integracion con Redes Windows . . . . . . . . . . . . . . . . . . . . . . 20

    5.2.5. Servidor Web y Servidor de Administracion va Web . . . . . . . . . . 20

    5.2.6. Servicio MTA (Mail Transfer Agent) . . . . . . . . . . . . . . . . . . . 21

    5.2.7. Servicio de Cuentas de Correo . . . . . . . . . . . . . . . . . . . . . . 21

    i

  • 7/28/2019 FreeBSD SBS.pdf

    4/112

    6. Instalando el Sistema Operativo 236.1. Instalando FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2. Configuracion Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286.3. Servicios en FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.4. Configurando el Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.5. Activando ACLs en FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    6.6. Configurando el Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.6.1. Reglas de Acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.6.2. Sincronizando los Firewalls: CARP . . . . . . . . . . . . . . . . . . . . 42

    6.7. Configurando Tuneles IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    7. Instalacion y Configuracion de Servicios 457.1. Administracion del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    7.1.1. Administrador de Paquetes Binarios . . . . . . . . . . . . . . . . . . . 457.1.2. Sistema de Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.1.3. Manteniendo los Ports Actualizados . . . . . . . . . . . . . . . . . . . 48

    7.2. Configurando Servidor de Nombres de Dominio (BIND) . . . . . . . . . . . . 497.3. Configurando Kerb eros V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    7.3.1. Servidor Heimdal Kerberos . . . . . . . . . . . . . . . . . . . . . . . . 527.3.2. Cliente Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.3.3. Kerberizando SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    7.4. OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.4.1. Usuarios y Grupos en Unix/Windows . . . . . . . . . . . . . . . . . . 567.4.2. Grupo Wheel (GID 0) . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.4.3. Esquema del Directorio . . . . . . . . . . . . . . . . . . . . . . . . . . 587.4.4. Servidor Maestro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.4.5. Estructura del Directorio . . . . . . . . . . . . . . . . . . . . . . . . . 647.4.6. Asociando el Sistema con el Directorio: PAM & NSSwitch . . . . . . . 68

    7.5. Extendiendo BIND (Servidor DNS) sobre LDAP . . . . . . . . . . . . . . . . 71

    7.6. Configurando Controlador de Dominio para Windows: Samba . . . . . . . . . 757.7. Configurando MTA: Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    7.7.1. Cluster de Correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.7.2. Sistema de correo distribuido . . . . . . . . . . . . . . . . . . . . . . . 817.7.3. Entorno Mixto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.7.4. Instalando Prerequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . 837.7.5. Organizacion y Esquema de Directorio . . . . . . . . . . . . . . . . . . 857.7.6. Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    7.8. Configurando POP3/IMAP: Courier . . . . . . . . . . . . . . . . . . . . . . . 95

    8. Si algo va mal 97

  • 7/28/2019 FreeBSD SBS.pdf

    5/112

    Indice de figuras

    2.1. Estructira de la organizacion BSDLand . . . . . . . . . . . . . . . . . . . . . 4

    3.1. Diseno Conceptual de la Red . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2. Estructura Real de la Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    4.1. Estructura Basica del Directorio LDAP para BSDLand . . . . . . . . . . . . . 13

    5.1. FreeBSD vs Linux, AMD64 8-Core SMP Multithread . . . . . . . . . . . . . . 185.2. FreeBSD vs Linux, AMD64 8-Core SMP Single-Thread . . . . . . . . . . . . . 19

    6.1. Menu de Instalacion/Configuracion de FreeBSD - sysinstall . . . . . . . . . . 246.2. Opciones de Instalacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.3. Listado de Elementos a Instalar . . . . . . . . . . . . . . . . . . . . . . . . . . 256.4. Menu de Configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.5. Interfaces de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.6. Interface de Red lnc0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.7. Servicios de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.8. Configuracion de Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286.9. Listado de las ACL de la carpeta netlogon desde Windows Vista . . . . . . . 356.10. Diagrama de un Firewall Cluster . . . . . . . . . . . . . . . . . . . . . . . . . 37

    7.1. Cluster de Correos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.2. Granja de Servidores Distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . 82

    iii

  • 7/28/2019 FreeBSD SBS.pdf

    6/112

  • 7/28/2019 FreeBSD SBS.pdf

    7/112

    Indice de cuadros

    3.1. Configuracion de las Interfaces en el Nodo A . . . . . . . . . . . . . . . . . . 63.2. Configuracion de las Interfaces en el Nodo B . . . . . . . . . . . . . . . . . . . 6

    6.1. Configuracion de la Interface lnc0 . . . . . . . . . . . . . . . . . . . . . . . . . 27

    7.1. Tabla Comparativa prara Usuarios Windows/Unix . . . . . . . . . . . . . . . 57

    v

  • 7/28/2019 FreeBSD SBS.pdf

    8/112

  • 7/28/2019 FreeBSD SBS.pdf

    9/112

    Prefacio

    Este libro representa un esfuerzo para mostrarle a los lectores la potencialidaddel Software Libre en el campo de las Redes Empresariales y contribuir as con elcrecimiento de la Comunidad.

    Va dedicado a todos aquellos Cubanos que han hecho su aporte de una formau otra al fortalecimiento del Movimiento del Software Libre.

    vii

  • 7/28/2019 FreeBSD SBS.pdf

    10/112

  • 7/28/2019 FreeBSD SBS.pdf

    11/112

    Licencia

    Copyright (c) 2007 Alejandro Tamayo Castillo - All rights reserved.Redistribution and use in source (Latex) and compiled forms (SGML, HTML, PDF, PostScript,RTF and so forth) with or without modification, are permitted provided that the followingconditions are met:

    1. Redistributions of source code (Latex) must retain the above copyright notice, this listof conditions and the following disclaimer as the first lines of this file unmodified.

    2. Redistributions in compiled form (transformed to other DTDs, converted to PDF,PostScript, RTF and other formats) must reproduce the above copyright notice, this listof conditions and the following disclaimer in the documentation and/or other materialsprovided with the distribution.

    THIS DOCUMENTATION IS PROVIDED BY ALEJANDRO TAMAYO CASTILLOAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMIT-ED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALEJANDROTAMAYO CASTILLO BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIM-ITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ORTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OFTHE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OFSUCH DAMAGE.

    ix

  • 7/28/2019 FreeBSD SBS.pdf

    12/112

  • 7/28/2019 FreeBSD SBS.pdf

    13/112

    Retroalimentacion / Feedback

    Estimado lector, usted puede enviar sus opiniones y sugerencias a la siguiente direc-cion: [email protected] y as contribuir con el mejoramiento de este libro que tiene comoobjetivo facilitar el aprendizaje y promover el trabajo con FreeBSD y en general con aplica-ciones/servicios Libres.Por favor, no utilice la direccion electronica que se ha publicado anteriormente como destinode SPAM y/o bastion para encabezar una guerra (Flamewar) entre software.

    xi

  • 7/28/2019 FreeBSD SBS.pdf

    14/112

  • 7/28/2019 FreeBSD SBS.pdf

    15/112

    Captulo 1

    Introduccion

    El diseno, instalacion y mantenimiento de redes empresariales hoy en da puede decirseque es un aspecto crucial para la productividad y el desarrollo de cualquier empresa. Esta guatiene como objetivo explicar de una manera sencilla (o al menos esa es la idea) como dise nary desplegar una red que se ajuste a las necesidades y caractersticas de su organizacion.Existen muchos software como Windows 2003 Enterprise Server, Productos Microsoft engeneral, RedHat Enterprise Server, SuSE Linux Enterprise Server, Solaris, entre otros quesolucionan estas necesidades, sin embargo el costo de implantacion y mantenimiento puedeser elevado en cuanto a presupuesto y recursos, debido al monto de las licencias y el costodel hardware especializado necesario para correr este tipo de sistemas.En esta gua veremos como hacer lo mismo o casi lo mismo que puede lograrse con estetipo de sistemas usando software libre y hardware barato (Tenga en cuenta que tratamosde minimizar el costo, no hacer Magia! As que barato es una palabra relativa, ya quesi piensa brindar servicios para +1000 usuarios no creo que barato cobre el significado ysentido tradicional de la palabra).Pues hemos hasta ahora mencionado mas de una vez el termino Red Empresarial as queme parece buena idea hacer una definicion del mismo ya que puede en Internet encontrarse

    con varios significados.Una Red Empresarial (como la estoy definiendo) es una gran red que engloba a todas lasdivisiones, entidades y unidades pertenecientes a una misma organizacion, esta acorde con eldiseno estructural (organizativo) de la misma y puede o no superar los limites geograficos. Enotras palabras, es una gran WAN (Wide Area Network) que puede tener varios nodos (redeslocales) separados y distribuidos geograficamente.

    En este documento no se toca ninguno de estos temas: Clusters, Balance deRed (Load Balancing), Failover, Network Storage (SAN), Protocolos de Encami-namiento Avanzado (Routing Protocols), Data Backup, entre otras cosas, ya queeste tipo de tecnologas necesitan hardware y software especializado (los llamados

    High End) los cuales son sumamente costosos y entran en contradiccion con miobjetivo as que disculpenme aquellos que esperaban leer algo acerca de este tipode cosas. Pienso que estas tecnologas son sumamente importantes, sin embargo,no todas las organizaciones pueden obtenerlas, por lo cual no las incluyo.

    1

  • 7/28/2019 FreeBSD SBS.pdf

    16/112

    2 CAPITULO 1. INTRODUCCION

  • 7/28/2019 FreeBSD SBS.pdf

    17/112

    Captulo 2

    Necesidades de la OrganizacionFicticia BSDLand

    Definamos para nuestro trabajo una organizacion totalmente inventada por nosotros lla-mada BSDLand (En caso de que alguien ya haya definido una organizacion con este nombre

    en la vida real, que nos disculpen entonces) dedicada a la produccion de software. Supong-amos tambien que compramos el dominio bsdland.com y hagamos ahora una lista de lasnecesidades de esta empresa:

    Debe poder alojarse digitalmente la estructura de la organizacion (Direccion, Divisiones,Unidades, Departamentos, etc.), as como el perfil de cada trabajador y debe disenarsede tal manera que admita futuros cambios estructurales (Fusi on de Departamentos,Eliminacion de Divisiones, etc.) en otras palabras, se desea Escalaridad.

    Todas las redes LAN (Local Area Network) deben poderse intercomunicar segun con-venga, as como deben poder acceder a Internet y deb e existir un control de todas estasoperaciones.

    Cada LAN debe estar configurada con los servicios necesarios para servir tanto clientesWindows como UNIX.

    Se deben brindar diferentes servicios como correo, almacenamiento de ficheros, colabo-racion, entre otros.

    Se desea unicidad. Cada trabajador debera poder recibir correos tanto desde @unidad.division.bsdlancomo @bsdland.com.

    Se desean multiples puntos de acceso. Los trabajadores pueden estar en constantemovimiento y deben poder acceder a su perfil y correo desde cualquier nodo. Estospuntos de Acceso aceptaran comunicaciones va Internet o va Modem.

    Se debe proteger las comunicaciones con filtros Anti-Spam, Anti-Virus y utilizacion deprotocolos seguros.

    Cada nodo (unidad, division) debera tener sus servidores propios y la comunicacionentre los nodos debera ser la mnima necesaria con el objetivo de ahorrar ancho debanda.

    3

  • 7/28/2019 FreeBSD SBS.pdf

    18/112

    4 CAPITULO 2. NECESIDADES DE LA ORGANIZACION FICTICIA BSDLAND

    El servicio de correos es de crtica importancia para la organizacion, as que no puedenperderse los mismos en caso de alguna rotura en algun servidor.

    Hemos definido una organizacion Abstracta, sin embargo es necesario tener mas in-formacion acerca de la misma as que personalicemos un poco mas la estructura de BSDLand:

    Figura 2.1: Estructira de la organizacion BSDLand

    Como vemos en la figura 2.1 BSDLand es una empresa que desarrolla software tanto paraBSD, como para Windows, as que cuenta con dos divisiones (Verde y Azul):

    La division principal (Headquarters) ubicada en el pas A.

    La division dedicada al desarrollo de aplicaciones para Windows ubicada en el pas B.

    La division principal, cuenta con dos departamentos:

    Dpto de Ventas

    Dpto dedicado al desarrollo de aplicaciones para BSD

    Como puede apreciarse BSDLand es una pequena empresa con dos Edificios ubicadosen dos pases diferentes que tiene un diseno bastante simple. El mismo ha sido escogido yaque cualquier otro que ud. cree no va a ser mas que una combinacion de los elementos deeste, es decir, puede que existan mas divisiones, unidades, departamentos y se ponga tancomplejo como desee, sin embargo veremos que las explicaciones que daremos en esta guason totalmente extensibles para cualquier diseno.Entonces hemos creado una organizacion con necesidades virtuales que pueden ser las realesde una empresa no ficticia.

  • 7/28/2019 FreeBSD SBS.pdf

    19/112

    Captulo 3

    Diseno de Red

    3.1. TCP/IP

    Entrando en materia, lo primero que debemos hacer es el diseno de la Red TCP/IP quevamos a utilizar. Llamemosle Nodo a cada Division definida en el epgrafe anterior. Pues

    en cada nodo tendremos entonces un enlace a Internet que le alquilaremos al ISP (InternetService Provider) de cada pas y ademas tendremos un enlace a la red LAN as que comomnimo tenemos que utilizar un servidor por Nodo y cada servidor debe tener al menos 2NIC (Network Interface Card).Para uso de nuestro documento, supongamos que la red 10.0.0.0/8 son los IPs que asignanlos proveedores de Internet a los cuales BSDLand le arrendara/comprara el enlace.

    Esto es realmente un error ya que la red 10.0.0.0/8 esta clasificada para usoprivado y no publico, sin embargo, y a pesar de que no me gusta esta idea, en arasde no utilizar IPs publicos (Segmentos Publicos Reales) hagamos esta suposicion.Por tanto 10.0.0.1 sera el IP publico del nodo principal y 10.0.2.1 sera el IPpublico del nodo Windows. Tenga en cuenta que normalmente los ISPs asignansegmentos de redes (Rangos de 8, 16,... IPs) sin embargo para nuestro ejemplosolo es necesario tener en cuenta los IPs que tienen los servidores as que da igualcualquiera que se escoja (Los segmentos seran 10.0.0.0/24 y 10.0.2.0/24).

    Ahora tenemos que definir los segmentos de red privados de cada nodo. Esto es una tareaque puede ser tan compleja como se desee en dependencia de la cantidad de computadoraspor nodo y las divisiones fsicas que se deseen tener en cada uno. Como este documentorealmente no es un curso de redes, doy por sentado que el lector sabe como efectuar estatarea. Supongamos que la cantidad de PCs, no excede los 255 para simplificar el dise no.Entonces podremos utilizar los segmentos de red privados 192.168.0.0/24 y 192.168.1.0/24

    para cada nodo. Resumiendo, los adaptadores de red quedaran as:Note que cada segmento de red LAN tiene que ser diferente en cada Nodo, ya que cuan-

    do unamos todas las redes locales si se solapan algunos segmentos, van a ocurrir graveserrores de encaminamiento as que es extremadamente importante que este paso se efectuecorrectamente.Note tambien que la red 192.168.0.0/16 ha sido dividida en 256 Nodos de Red (192.168.0.0/24,

    5

  • 7/28/2019 FreeBSD SBS.pdf

    20/112

    6 CAPITULO 3. DISE NO DE RED

    Interface IP Red

    Internet 10.0.0.1 10.0.0.0/24

    Lan 192.168.0.1 192.168.0.0/24

    Cuadro 3.1: Configuracion de las Interfaces en el Nodo A

    Interface IP Red

    Internet 10.0.2.1 10.0.2.0/24Lan 192.168.1.1 192.168.1.0/24

    Cuadro 3.2: Configuracion de las Interfaces en el Nodo B

    192.168.1.0/24, ... ,192.168.255.0/24,) donde cada uno puede tener hasta 255 PC. Lo que sig-nifica que se pueden crear hasta 254 nuevas divisiones en BSDLand. Es muy importante preverel crecimiento de la red y crear un diseno consecuente. En esta particion, se ha presupuestoque ningun nodo tendra mas de 255 computadoras. La idea es tratar de no desperdiciar di-recciones IP.

    3.2. Union de las Redes

    Teniendo ya creado los dos nodos pasemos ahora a la uni on de los mismos. La idea escrear un tunel entre ellos y para lograr esta tarea existen varias soluciones:

    Tunel PPTP

    Tunel L2TP

    Tunel IP

    Tunel IPSec

    IPSec

    3.2.1. Tunel PPTP/L2TP

    Los protocolos PPTP y L2TP estan orientados a conexion y se realizan en la capa TCP1. El funcionamiento es el siguiente: un paquete IP que desee llegar a la red privada en elnodo externo, se encapsula, se le enva al nodo externo a traves del protocolo PPTP (L2TP)y este desencapsula el contenido recibido y encamina el paquete original. La diferencia entre

    PPTP y L2TP es que los datos con L2TP viajan codificados utilizando un certificado digital.La desventaja de este sistema es que un fallo en la conexi on desconectara el tunel y estedemorara unos segundos en volver a conectar. Ademas se necesita software especializado encada punto y este no es muy estandar que digamos. 2.

    1Recuerde que el protocolo TCP/IP esta desglosado en capas: Ethernet, IP, TCP/UPD, Aplicacion2Las Microsoft Virtual Private Network o simplemente VPN implementan PPTP y L2TP

  • 7/28/2019 FreeBSD SBS.pdf

    21/112

    3.2. UNION DE LAS REDES 7

    3.2.2. Tunel IP/IPSec

    Los tuneles IP/IPSec no son orientadas a conexion y se realizan en la capa IP. El fun-cionamiento es similar a PPTP/L2TP con la diferencia que el paquete no se enva a travesde un protocolo, sino se encapsula dentro de otro paquete IP y se encamina directamente. Ladiferencia entre un tunel IP y uno IPSec es que con un tunel IP los paquetes viajan tal y

    como son y cualquiera puede ver que es lo que se est a trasmitiendo y con IPSec la regionde Datos del paquete viaja codificada usando un certificado digital o una palabra clave.

    3.2.3. IPSec

    Un tunel IPSec y utilizar IPSec para transmitir datos son cosas diferentes. Cuando seutiliza IPSec en la interface de Red, este codifica todo el trafico entrante y saliente desdeun IP hacia un IP (La region de datos del paquete IP) usando un certificado digital o unapalabra clave.Nosotros no querramos que las personas ajenas a nuestra organizacion chismearan en

    nuestras comunicaciones, as que las variantes a considerar son aquellas que codifican la in-formacion. En esta gua nos iremos por las variantes Tunel IPSec e IPSec+Tunel IP.La ventaja de un Tunel IPSec es que puede utilizarse un Certificado o Clave por Tunel(Suponiendo que hayan 3 nodos, para comunicar todos con todos deberan hacerse 6 tuneles)y el trafico no importante o publico entre los nodos viajara sin codificar. Note que codificarinformacion toma tiempo y se ha demostrado que puede rebajar el rendimiento un 25 por-ciento cuando hay mucha carga. La desventaja es la cantidad de tuneles que habra que crearcuando la cantidad de nodos aumenta.La ventaja de IPSec+Tunel IP es que el trafico entre nodos que pasa por el Adaptador de Redes el que se codifica y el trafico entre redes privadas simplemente se encamina sin codificaci on(el adaptador hace el trabajo sucio). Ademas con un solo certificado/clave se resuelve lacodificacion. No es necesario crear tuneles ya que se puede encaminar el paquete librementeentre nodos, aunque no seria mala idea crear tuneles sin codificacion. La desventaja es quetodo el trafico entre nodos que pasa por la tarjeta de red se codifica y esto puede que no seanecesario siempre.Ambas variantes superan a PPTP (L2TP) en el sentido de que como no son orientadas aconexion un problema de red solo retrasara los paquetes, no desconectara a las redes,as que la recuperacion ante un fallo es inmediata, ademas por ubicarse en una de las capasmas bajas de TCP/IP esta exento de los problemas que pueden ocurrir con los servicios ori-entados a conexion (Time-Outs, etc). Una desventaja es que es mas complicado de configuraren algunos sistemas operativos. Sin embargo esto no es una desventaja para nosotros ya quecomo lo demostraremos aqu con el Sistema Operativo que propondremos es realmente facilconfigurarlo.

    Los protocolos PPTP (L2TP) se idearon para la conexion Usuario FinalServidor debido a la facilidad que implica crear conexiones de este estilo.IPSec esta concebido para la conexion Servidor Servidor debido a la compleji-dad de implantacion

  • 7/28/2019 FreeBSD SBS.pdf

    22/112

    8 CAPITULO 3. DISE NO DE RED

    Figura 3.1: Diseno Conceptual de la Red

    3.3. Esquema de Red

    Resumiendo, tenemos un diseno de estrella donde el mundo exterior (Internet) esta sep-

    arado de la Red Privada y a su vez esta ultima esta distribuida por los nodos de la organizaciony protegida mediante codificacion de los datos. El servidor que separa Internet de la RedPrivada se le llama Gateway o Punto de Acceso.La figura 3.1 muestra el diseno conceptual de nuestra red (Suponiendo que existan 3 nodos).

    La Red privada se muestra como un todo ya que desde cualquier segmento se puede accedera cualquier segmento (de eso se encargan los Tuneles IP y/o IPSec). Cada Servidor Gatewayes un Punto de Acceso a la Red Privada.Sin embargo, el diseno real (Fsico) es el que se muestra en la figura 3.2.

    Note que esto es un diseno basico en donde supuestamente todos los nodospueden acceder a la informacion de todos los nodos. En un diseno real es posi-ble que algunos nodos no deban acceder a otros. En cualquier caso cada punto

    de acceso es responsable del trafico que pasa hacia su nodo, as que limitar laconectividad es responsabilidad del Firewall.

    Cada Nodo tiene un segmento de red asociado. En este ejemplo es simple,pero pudiese complicarse. Ejemplo: Que cada departamento (En un mismo Nodo- LAN) tenga su propio segmento de red para limitar trafico entre los mismos.

  • 7/28/2019 FreeBSD SBS.pdf

    23/112

    3.3. ESQUEMA DE RED 9

    Figura 3.2: Estructura Real de la Red

    En ese caso, el punto de acceso debera tener un NIC, por cada segmento de red(Departamento) o se debera anadir un Switch capa 3 (Un poco costoso) paradistribuir el trafico.

  • 7/28/2019 FreeBSD SBS.pdf

    24/112

    10 CAPITULO 3. DISE NO DE RED

  • 7/28/2019 FreeBSD SBS.pdf

    25/112

    Captulo 4

    Estructura Organizativa

    Es tiempo de tomar una de las decisiones mas importantes: como almacenar la estructuraorganizativa.Cuando definimos la estructura de BSDLand vimos que tenamos Divisiones, Departamentosy por supuesto, cada departamento tiene trabajadores. Es necesario guardar esa informacion

    y organizarla segun su estructura jerarquica (Ademas de la informacion, hay que guardar lacontrasena de cada trabajador, y en general todos los datos necesarios para autentificar elusuario en la red).Pues para ello puede usarse la base de datos de usuarios del sistema operativo, una basede datos SQL como MySQL o PostgreSQL o pudieramos usar un servidor LDAPv3 comoOpenLDAP. Veamos rapidamente por que OpenLDAP supera a todas las variantes anteri-ores.La base de datos de usuarios del sistema operativo queda descartada ya que los usuarios nopertenecen a un servidor sino a la organizacion. Ademas en la base de datos del sistemano podemos adicionar ningun objeto/dato/meta dato (como direccion y foto) que no sean lospredefinidos por el sistema.Con un servidor SQL ya podemos hacer mas cosas. Podemos crear los campos b asicos del sis-tema (nombre de usuario, contrasena, homedir, etc.) y mas aun, podemos definir por usuariocualquier caracterstica que deseemos ya que MySQL (PostgreSQL) son sistemas de bases dedatos relacionales. Sin embargo, queda aun un problema: el hospedaje y la replica de los datos.El servidor SQL no puede hospedarse solo en uno de los servidores, sino que tiene que estardistribuido por todos los nodos por si alguno falla, no se caiga la red completa (Note que si losusuarios no pueden validarse, ningun servicio va a funcionar). Ademas los cambios tienen quereplicarse: si se agrega un usuario en un servidor debe notificarse/enviarse este cambio haciatodas las replicas. Tanto PostgreSQL como MySQL, tienen sistemas de replicas, pero sonextremadamente complicados de configurar. Por Ejemplo: PgCluster (PostgreSQL), necesitaun Servidor Maestro, Un Servidor de Sincronizacion, y las Replicas... en fin, si quisiesemossolamente tener un Maestro y un Esclavo, necesitaramos obligatoriamente tener un servidor

    de sincronizacion (Mucho Gasto!). Ademas tenemos otro problema mas Como manejamosla creacion de un mismo usuario por dos administradores en nodos diferentes? Simplementees un poco complejo... y que nadie me malinterprete! PgCluster es extremadamente eficientepara Balance de cargas y replicas de Bases de Datos... el punto es que existe ya un sistematotalmente preparado que resuelve todos estos detalles por nosotros: OpenLDAP y no esnecesario gastar energas en un servidor de Bases de Datos.

    11

  • 7/28/2019 FreeBSD SBS.pdf

    26/112

    12 CAPITULO 4. ESTRUCTURA ORGANIZATIVA

    OpenLDAP implementa el protocolo LDAPv3 (Lightweight Data Access Protocol versi on 3)el cual esta disenado especficamente para almacenar la estructura organizativa de la empresay resolver todos estos detalles que anteriormente mencionabamos. En el caso de OpenLDAP,este usa como backend un sistema de base de datos que de manera predeterminada es BDB(Berkeley Database) pero puede cambiarse por cualquier otro (Y aqu puede entrar a jugarMySQL o PostgreSQL). Sin embargo BDB es un motor de base de datos sencillo, compacto,

    eficiente y realmente no es recomendable cambiarlo a menos que sepamos lo que estamoshaciendo. El papel fundamental del servidor OpenLDAP no lo juega el backend sino laimplementacion del protocolo LDAP como tal. Este es, como su nombre lo dice, extremada-mente rapido y liviano y permite crear una estructura jer arquica de manera que podemosdisenar nuestra empresa de manera facil.Voy a saltarme la explicacion de como funciona OpenLDAP (LDAPv3 en general), ya queexisten cursos detallados que explican esto (http://www.openldap.org/). Solo voy a tocar losaspectos de mas interes.

    Microsoft Active Directory, el sistema de validacion de los usuarios (y otrascosas mas) que viene con Windows 2000 (2k3) no es mas que una implementacion

    del protocolo LDAPv3.

    Existen otros servidores compatibles con LDAPv3 libres, sin embargo hemosescogido OpenLDAP debido a que es el mas estandar y portable de todos. Losotros servidores solo se pueden instalar en uno o dos sistemas operativos, algoque limita y corta la libertad de decision.

    4.1. Modelos de Servidores LDAP

    Un servidor LDAP puede ser solo lectura (RO) o lectura escritura (RW). Supongamos

    que tenemos dos servidores RW y dos administradores desean crear al usuario alex y cadauno lo hace en un servidor diferente. Si los servidores permiten esta operaci on, los datosquedaran inconsistentes, ya que cual de los dos alex sera el real?Supongamos que no permitan esa operacion, entonces, cual se agrega y cual se deniega?Pues ese tipo de decisiones se toma de maneras diferentes en dependencia de los siguientescriterios o modelos:

    4.1.1. Single Master (Maestro unico)

    De todos los servidores LDAP que hospedan una misma organizaci on, solo uno es RW. Es-

    to asegura que no existan inconsistencias ya que las operaciones de escrituras son sincronicas(una primero y otra despues). La desventaja de este modelo es que si se cae el servidor mae-stro solo se pueden efectuar lecturas a la organizacion hasta que se recupere el mismo o sepromueva un servidor replica (shadow) a maestro (master). Este modelo lo implementa elservidor OpenLDAP.

  • 7/28/2019 FreeBSD SBS.pdf

    27/112

    4.1. MODELOS DE SERVIDORES LDAP 13

    4.1.2. Dual Master (Maestro Doble)

    Este modelo, permite tener dos servidores maestros RW. Si uno cae, el otro continua lasoperaciones. Segun los expertos a pesar de los algoritmos que se implementen para mantenerla consistencia de los datos existen escenarios en los cuales falla y se requiere intervencionhumana. Este modelo lo implementa Fedora Directory Services.

    4.1.3. Multi-Master (Maestro Multiple)

    Se permiten varios servidores maestros RW con algunas restricciones. Es un modelo al-tamente riesgoso el cual si no se maneja bien puede traer malas consecuencias. Ademasgeneralmente existen tipos especiales de servidores RW donde la escritura es solo parcialy/o Global. Un ejemplo de esto es Microsoft Active Directory en el cual existen servidoresRO (Backup Domain Controler), RW Parcial (Domain Controler) y RW Totales o Globales(Global Catalog). Hay muchas personas que aseguran que el modelo mas eficiente es el SingleMaster y que no existe necesidad de utilizar ningun otro. Yo comparto esa idea y veremosen esta gua cuando implementemos de manera concreta OpenLDAP como podemos manejar

    la cada del unico servidor maestro. Tambien es verdad que el modelo Multi-Master proveemuchas ventajas, sin embargo se necesita mas trabajo para mantenerlo funcional y muchohardware en dependencia de la implementacion que utilicemos.Pues veamos como quedara nuestro diseno LDAP.

    Figura 4.1: Estructura Basica del Directorio LDAP para BSDLand

    Como se muestra en la figura 4.1 tenemos el dominio dc=bsdland,dc=com (bsdland.com)que tiene como unidades organizativas (Departamentos) Ventas y Desarrolladores BSD.Ademas tenemos un subdominio dc=windows,dc=bsdland,dc=com (windows.bsdland.com)que tiene como unidad organizativa a Desarrolladores Windows.Cuando efectuemos el despliegue de OpenLDAP veremos que esta estructura es totalmentebasica, ya que necesitaremos agregar muchos ob jetos mas para poder crear totalmente a nues-tra organizacion.

  • 7/28/2019 FreeBSD SBS.pdf

    28/112

    14 CAPITULO 4. ESTRUCTURA ORGANIZATIVA

  • 7/28/2019 FreeBSD SBS.pdf

    29/112

    Captulo 5

    Seleccion del Software a Utilizar

    De una correcta seleccion del software de aplicacion y sistema operativo depende en granmedida el resultado final en cuanto a rendimiento y usabilidad de nuestro sistema as queantes de empezar a configurar, creo que se le debe dedicar unos puntos en este documento aese aspecto.

    5.1. Seleccion del Sistema Operativo

    Esto es una decision un tanto difcil y que siempre va a ser un tema polemico, ya queexiste una gran variedad de sistemas operativos libres con gran calidad y tras cada uno deellos existen grupos de fans que aseguran cual sistema sirve y cual no y realmente a cienciacierta no existe como tal una verdad absoluta que defina al mejor sistema operativo; cadauno tiene buenas prestaciones y otras no tan buenas. As que simplemente seleccionare uno yexplicare el porque de mi seleccion. Ah! Por supuesto que los sistemas comerciales no entranen la seleccion.As que nos quedaremos con los BSDs y las distribuciones Linux que son los dos grupos que

    llevan digamos que la vanguardia en cuanto a popularidad. En los BSDs tenemos a FreeBSD,NetBSD y OpenBSD y en los Linux, pues creo que no me alcanzaran las paginas paranombrar cada distribucion que existe. Sin embargo me voy a limitar a 3 de las mas conocidas:Fedora, Open SuSE y Debian (En realidad las unicas tres que he probado). No divagare masy dire cual es mi seleccion: FreeBSD (http://www.freebsd.org/). Creo que las razones que mehan llevado a esta seleccion son mas bien personales ya que he trabajado con FreeBSD desdela version 3.0 y he tenido muchos problemas con RedHat Linux (Actualmente la version librees Fedora) y en general con las distribuciones Linux que he instalado y nunca he presentadoningun problema con FreeBSD. El sistema operativo OpenBSD es mucho mejor que FreeBSDcuando de seguridad se trata (Firewall, Routing - tiene un gran historial) sin embargo, buscoun servidor All Purpose facil de trabajar, estable, escalable, confiable, disponible y eficiente,

    cosa que en algunos escenarios OpenBSD queda desplazado por FreeBSD1

    .Pero como siempredigo es una cuestion de gustos ya que con todos se puede de una manera u otra hacer lo mismo.Ahora, apartando mis gustos a un lado, hay tres cosas que me hacen seleccionar FreeBSD

    1Hoy en da OpenBSD y FreeBSD comparten el mismo codigo base para muchas cosas. Por ejemplo FreeBSDimplementa Packet Filter, el Firewall por excelencia de OpenBSD, as que es muy difcil decir que OpenBSDes mejor o peor que FreeBSD

    15

  • 7/28/2019 FreeBSD SBS.pdf

    30/112

    16 CAPITULO 5. SELECCION DEL SOFTWARE A UTILIZAR

    por sobre todos los OS que he mencionado:

    Diseno y ciclo de produccion: Existen varios artculos que catalogan a BSD comoordenado y a los Linux de caoticos. En principio el desarrollo y mantenimiento deFreeBSD es cerrado, es decir, las modificaciones estan a cargo del grupo de sus desar-rolladores y siguen reglas estrictas para mantener el codigo seguro y ordenado: Todoel codigo esta bajo CVS y se marca como freeze si los cambios deben ser aproba-

    dos por un supervisor u open si se pueden hacer cambios libremente. Si visitamoshttp://www.freebsd.org/releng podemos ver el estado de todas las ramas del Sistema.Ademas en FreeBSD existen capas: Kernel, Base System, Userland y Packages y ca-da elemento que se anade a alguna de estas capas se reescribe, en dependencia de lasnecesidades, para mantener el rendimiento del sistema, en su totalidad, al maximo. Sinembargo la mayora de las distribuciones Linux siguen el concepto de armar un sistemaa pedacitos, es decir: toma el Kernel Linux, anade GCC, anade Xorg, y as basicamentese logra el sistema. Un ejemplo de esto es OpenSSH: en la mayora de las distribucionesLinux es un paquete mas que se compila desde el sitio oficial y se anade al sistema. EnFreeBSD, OpenSSH no puede ser instalado como paquete ya que esta integrado a labase del sistema y realmente no es el OpenSSH clasico sino una version personalizada

    (rescrita) que se integra a bajo nivel con el sistema. Este nivel de integraci on/separacioncontrolado por los desarrolladores de FreeBSD le brindan al sistema una ganancia encuanto a rendimiento y estabilidad. Ademas, de una misma version de FreeBSD existentres ramas diferentes: CURRENT, RELEASE y STABLE. CURRENT es donde con-stantemente se agregan nuevas tecnologas y esta en constante desarrollo (Es la versionde desarrollo/prueba de FreeBSD ya que en algun escenario puede fallar). Cuando seconsidera que estas tecnologas estan aptas para un entorno productivo (despues deuna serie de pruebas) se agrega a la rama STABLE. Sin embargo, esta rama puedetener algunos bugs todava y es p or eso que se crea la rama RELEASE que no esmas que un snapshot de la rama STABLE que se mantiene independiente (solo seefectuan modificaciones al codigo para eliminar bugs y errores de seguridad, no para

    anadir nuevas caractersticas) por lo cual se recomienda para entornos que necesitenuna gran estabilidad. Lo bueno de estas divisiones es que ud. como administrador puedeescoger la version que mas se ajuste a sus necesidades.

    Instalacion/Actualizacion de todo el Sistema basada en C odigo fuente: Nor-malmente la Instalacion/Actualizacion de las distribuciones de Linux vienen orientadasa paquetes binarios precompilados. Es decir, si queremos actualizar a la ultima ver-sion del Kernel o simplemente deseamos la ultima version de nuestro servidor Web,utilizamos el administrador de paquetes del sistema (Yast, Apt, en dependencia) queautomaticamente baja de Internet el paquete precompilado requerido y lo instala. Yesto puede parecer muy natural, sin embargo cada hardware es diferente y un programano corre igual en un procesador con SSE2 (si se compila con soporte para SSE2) que

    en uno con solo MMX, y los paquetes binarios normalmente vienen precompilados paraprocesadores genericos y no utilizan tecnologas especficas. Es p or eso que compilar unsoftware (y mas en un servidor productivo) es muy recomendado para as usar instruc-ciones especficas que siempre son mas rapidas que las genericas. Y hasta ahora no hedicho nada novedoso, ya que sobre linux pudiesemos bajar manualmente (o usando apt-get build source paquete) cada software, compilarlo e instalarlo... pero todos los das

  • 7/28/2019 FreeBSD SBS.pdf

    31/112

    5.1. SELECCION DEL SISTEMA OPERATIVO 17

    salen parches de seguridad, actualizaciones y mejoras, as que compilar/instalar man-ualmente es un rollo. FreeBSD resuelve este problema de una manera muy inteligente.Cuando se instala el sistema base, se instala tambien un snapshot del codigo fuente detodo el sistema y cuando digo todo es todo! tanto utilitarios como kernel. Entoncesbasta con sincronizar el codigo local con el hospedado en el sitio de FreeBSD medianteCVS. No es necesario bajar ningun binario, simplemente se descargan los cambios

    del codigo, por lo cual es un proceso extremadamente r apido y optimizado. Entoncesse recompila el mundo y se tiene un sistema operativo totalmente nuevo/actualizado.Cuando compilas una vez y haces una actualizaci on del codigo solo se recompila laparte cambiada por lo cual la compilacion es extremadamente rapida. FreeBSD proveealgunos scripts que automatizan este proceso por lo cual es totalmente f acil de utilizary con esto se garantiza que el Sistema corra con el mayor rendimiento posible en suhardware. Y eso no es todo! Todos los programas populares como Apache, Squid, Sam-ba, OpenLDAP, Postfix, etc entran en este sistema (A esto se le llama los Ports). Hayun grupo de personas bastante extenso ligado a FreeBSD que se encarga de mantenermas de 100000 puertos actualizados con las ultimas versiones. Y todava hay mas. Elcodigo de cada uno de estos programas se modifica para que corran sobre FreeBSD dela manera mas eficiente posible. El sistema de Ports garantiza obtener el ultimo codigofuente, parchear el codigo para freebsd, compilar de manera optima segun el hardware,crear un paquete binario y registrarlo en el sistema de manera automatica y facil el cualen el futuro puede ser desinstalado como un paquete binario mas. Ademas se brindacon los puertos una base de datos actualizable con los ultimos detalles de seguridadpara que ud. como administrador pueda conocer el estado de los paquetes instalados enel sistema. Resumiendo, lo que hacemos manualmente en Linux, puede hacerse aqu demanera automatica. Y si no os gusta este sistema, pueden ignorarlo ya que freebsd tieneun administrador de paquetes que es funcionalmente parecido a Yast o Apt.

    Rendimiento historico: Los BSDs son sistemas operativos que tienen muchos anosde experiencia y han demostrado ser estables y potentes. Muchas de las versiones com-

    erciales de los sistemas operativos de alto rendimiento como Solaris estan basados enalgun BSD. Ademas hablando de FreeBSD especficamente creo que puedo decir que esun sistema conservador donde no todo hardware funciona. En Linux esto no es as yaque todos hacen drivers y modificaciones al Kernel, y esto es muy bueno en algunoscasos... pero no siempre resulta ya que si el driver no es seguro y estable el sistemase desploma con mucha facilidad. Esos son los encantos basicos de FreeBSD, aunquesi nos ponemos a hacer un poco de propaganda podemos hablar de las opciones deseguridad que brinda como los SecureLevels del Kernel y los Jails adem as de los tiposde firewalls que trae (Packet Filter, IPFW) y del diseno del Stack TCP/IP que brindasegun algunos tests, un rendimiento de hasta un 15 porciento comparado con Linux enalgunos escenarios. Pero como mi objetivo no es iniciar una guerra, digo una vez m asque no existe el sistema operativo mejor. Un ejemplo de esto es la distribuci on LinuxDebian que ha demostrado ser estable y potente. Para mas informacion recomiendo quese busque en Google FreeBSD vs Linux y apareceran muchos artculos interesantesexplicando los pro y los contra de cada uno.

    Hay varias distribuciones de Linux que implementan algo como los Portsde FreeBSD, llamado Backports, sin embargo no lo tengo en cuenta ya que

  • 7/28/2019 FreeBSD SBS.pdf

    32/112

    18 CAPITULO 5. SELECCION DEL SOFTWARE A UTILIZAR

    no es algo maduro (hasta donde he ledo). No obstante puede que existan masvariantes de este estilo, sin embargo, al no estar integradas al sistema o no tenerpopularidad simplemente no se tienen en cuenta. Y cuando digo popularidad nome refiero a fama sino a gran cantidad de personal trabajando para mantenerel sistema/programa actualizado y funcionalmente estable.

    5.1.1. FreeBSD vs LinuxHistoricamente FreeBSD (hasta la version 4) ha tenido mayor rendimiento que Linux 2.4

    bajo presion de carga. Sin embargo, la comunidad ha quedado un poco decepcionada con laaparicion de FreeBSD 5.x debido a que Linux 2.6 ha digamos que ganado la mayora de lostest de rendimiento bajo gran cantidad de carga utilizando SMP (Symmetric Multiprocess-ing). No obstante hay que tambien resaltar que la version 5.x se marco por los productoresde FreeBSD como New Technology y la version 4.x siguio siendo Production Release,as que podemos ver a la serie 5.x como una BETA tecnologica.Ahora FreeBSD 6.x ha alcanzado su madures y ya es una versi on para entornos productivos.Veamos entonces los graficos benchmark obtenidos con SysBench comparando FreeBSD-Current contra Fedora Core.2 Los resultados que aparecen en las Figuras 5.1 y 5.2 son

    Figura 5.1: FreeBSD vs Linux, AMD64 8-Core SMP Multithread

    2Grafico obtenido desde http://jeffr-tech.livejournal.com/6268.html

  • 7/28/2019 FreeBSD SBS.pdf

    33/112

    5.2. SELECCION DEL SOFTWARE DE APLICACION (SERVICIOS) 19

    Figura 5.2: FreeBSD vs Linux, AMD64 8-Core SMP Single-Thread

    producto de las mejoras inicialmente introducidas en la serie 5.x y que ahora han madurado.Especialmente el nuevo ULE-Scheduler de FreeBSD que es quien garantiza la administraci on

    de los procesos.

    5.2. Seleccion del Software de Aplicacion (Servicios)

    Ya tenemos el sistema operativo, ahora seleccionemos el software que utilizaremos parapoder realizar las tareas que al inicio nos propusimos.

    5.2.1. Servicio de Seguridad Kerberos

    Las contrasenas de las cuentas de usuarios crticas en nuestra organizacion como porejemplo aquellas con permiso a efectuar tareas de administracion deben protegerse de alguna

    manera. Por ningun motivo estas deb en viajar sin codificacion (Text Plain) a traves de la redprivada y en realidad, ni siquiera deberan viajar o al menos hacerlo solo la cantidad de vecesnecesarias. Es por ello que se implementara un servidor Kerberos 5, y especficamente HeimdalKrb5 que viene ya integrado con FreeBSD 6.0. Pues kerberos es un protocolo dise nado paraacometer esta tarea. Cuando un usuario se valida contra un servidor kerberos (KDC) este ledevuelve al mismo un ticket por un tiempo de vida especfico (lifetime). Entonces cada vez

  • 7/28/2019 FreeBSD SBS.pdf

    34/112

    20 CAPITULO 5. SELECCION DEL SOFTWARE A UTILIZAR

    que el usuario necesite utilizar algun servicio (que este Kerberizado) lo que viaja por lared no es la contrasena sino el ticket. La contrasena solo viaja por primera vez o cuando elticket caduca. Ah! Y por supuesto, esas veces en que la contrasena viaja por la red lo hacede manera segura.

    5.2.2. Servicio de Directorio

    Pues a esto ya le dedicamos una tematica completa: OpenLDAP. Solo falta que resaltarque todos los servicios que se configuren en esta gua seran integrados con este servidor.En cuanto al tema de las contrasenas, las crticas se almacenaran en el servidor Kerberos ylas normales como un hash irreversible (MD5) en la base de datos del Servidor OpenLDAP.Tambien se explicara como almacenarlas Text Plain en el directorio para que otros serviciosajenos a este puedan validar cuentas con formatos como CRAM-MD5.

    5.2.3. Servicio de Encaminamiento, Cortafuegos y Conversion de Direc-ciones

    La funcion de router, firewall y NAT la implementa el nucleo (Kernel) del sistema operati-vo FreeBSD as que no hace falta software de terceros. Existen tres versiones que funcionan endiferentes capas del modelo OSI y tienen diferentes prestaciones. Personalmente recomiendoPacket Filter por dos razones fundamentales:

    Es el que utiliza OpenBSD, sistema operativo con una seguridad demostrada.

    Las funcionalidades NAT, Traffic Shaping, Port Filtering, Port Redirecting e IP Filter-ing todas se efectuan a nivel de Kernel y son configurables desde el PF (Packet Filter),no siendo as, por ejemplo, en IPFW donde el NAT es una funcionalidad externa quese ejecuta como programa en la capa Userland.

    5.2.4. Integracion con Redes Windows

    El Compartir Impresoras y Archivos va a ser implementado con Samba 3 (http://www.samba.org/).Dentro de unos meses es p osible (a partir de la fecha de escritura de este artculo) que aparez-ca Samba 4 con una implementacion de Active Directory (Reemplazo a LDAP). Esta guaesta disenada exclusivamente para la version 3 debido a que todava no se sabe con exactitudcuales van a ser las prestaciones y los cambios que van a integrar finalmente la versi on 4.FreeBSD 6.0 incluye en su nucleo (Kernel) una implementacion del protocolo SMB as que siel servidor no va a jugar el rol de controlador de dominios o servidor de archivos, no esnecesaria la instalacion de Samba.

    5.2.5. Servidor Web y Servidor de Administracion va Web

    Creo que este punto no necesita debate: Apache 2 para servidor Web y Webmin paraadministracion remota (y digo va Web ya que la administracion remota se hara con laimplementacion del servidor SSH que integra FreeBSD).

  • 7/28/2019 FreeBSD SBS.pdf

    35/112

    5.2. SELECCION DEL SOFTWARE DE APLICACION (SERVICIOS) 21

    5.2.6. Servicio MTA (Mail Transfer Agent)

    En este punto podemos escoger entre una gran cantidad de aplicaciones. Los mas cono-cidos son Sendmail, Qmail, Postfix y Exim. Cada uno de estos MTAs tiene caractersticasunicas que lo diferencia de los demas.Sendmail es el mas antiguo y popular por lo que tradicionalmente se incluye en casi todos lossistemas operativos UNIX Like, y segun los expertos su diseno esta obsoleto producto de

    que fue creado para ejecutarse en un entorno y en condiciones que actualmente han cambiadototalmente.Qmail es el segundo mas popular y tiene dos caractersticas interesantes: su diseno modulary el soporte para clusters de correo; sin embargo carece de opciones de seguridad como porejemplo: el filtrado/reescritura de direcciones.Exim, es un servidor con muchas prestaciones y caractersticas modernas, sin embargo nocuenta con la madurez de Postfix o Qmail. Postfix ha sido disenado para proveer seguridad,estabilidad, rendimiento y reemplazar a Sendmail.Mi seleccion es: Postfix. Este servidor ademas de la gran cantidad de opciones para seguri-dad que incluye, tiene ademas muchsimas prestaciones interesantes como: un potente motorde reescritura (Rewriting Engine), multiples transportes de correo y soporte para multi-

    ples dominios y cuentas virtuales (Virtual Delivery Agent). Sin embargo carece del soportepara clusters de correo (caracterstica que implementa Qmail, especficamente Qmail-Ldap);elemento fundamental para nosotros en esta gua. Entonces se preguntaran por que se esco-gio Postfix si carece de esta posibilidad. Pues en realidad puede hacerse un cl uster de correoscon Postfix con la misma calidad que se hace con Qmail (y hasta mejor), simplemente hay quehacer algunas configuraciones un poco rebuscadas. Personalmente no he encontrado ningunartculo en Internet que hable de Postfix ligado a Clusters de correo y es por eso que digo quecarece del soporte... sin embargo el Rewriting Engine y el VDA estan ah, herramientaspoderossimas que nos permitiran implementar esta caracterstica.

    5.2.7. Servicio de Cuentas de Correo

    Pues si, son cosas diferentes. El MTA es el que se encarga de distribuir los correos, yla manera de acceder a los buzones (POP3, IMAP) se implementa en otras aplicaciones.Hay muchos servidores que integran todo lo necesario para enviar y recibir correos en unasola aplicacion y a lo mejor eso ha colaborado a mezclar los conceptos. Pues hay muchasaplicaciones que implementan los protocolos POP3 e IMAP, sin embargo hemos seleccionadoCourier (Courier-IMAP y Courier-AUTH) simplemente por la integracion a LDAP que imple-menta (incluye un Esquema que usaremos para definir las cuentas de los usuarios). Algunaspersonas aclaman que bajo grandes cargas Cyrus brinda mejor rendimiento que Courier, sinembargo Cyrus es mas complicado de configurar y no brinda tanta integracion a LDAP comoCourier. Resumiendo, usaremos Postfix+Courier.

  • 7/28/2019 FreeBSD SBS.pdf

    36/112

    22 CAPITULO 5. SELECCION DEL SOFTWARE A UTILIZAR

  • 7/28/2019 FreeBSD SBS.pdf

    37/112

    Captulo 6

    Instalando el Sistema Operativo

    Antes de empezar hay que hacer una aclaracion muy importante. En Windows las lneasen un documento de texto se separan p or CR+LF (Retorno + Nueva Lnea). En UNIX solopor LF, por lo cual el caracter CR se considera parte del texto de la lnea. Esto trae muchosproblemas debido a que los ficheros de configuracion pueden interpretar el CR como uncaracter mas y pueden tener como elementos diferentes a nombre y nombre\r sin embargoesto no es lo que necesitamos. Por tanto es recomendable instalar dos programitas: dosunixy unix2dos que se encargan de convertir ficheros de texto creados en Windows (Notepad) aUNIX y viceversa. Para ello podemos en nuestro shell introducir los siguientes comandos:

    #portinstall dosunix

    #portinstall unix2dos

    El comando portinstall se explicara posteriormente en este documento.

    6.1. Instalando FreeBSD

    Para una correcta instalacion de FreeBSD, es recomendable leer el Manual de UsuarioFreeBSD Handbook antes de comenzar.Este se puede obtener desde http://www.freebsd.org/. En el, existe un captulo que explicapaso a paso y de una manera muy asequible (en espanol) todo lo que usted necesita saber.En este punto solo daremos una gua rapida de como proceder para instalar/configurar elsistema operativo con las caractersticas basicas necesarias. Note que no haremos ningunaconfiguracion avanzada, por lo cual es necesario que lea el manual de usuario y personaliceel sistema para satisfacer sus necesidades.Ahora mostraremos los pasos a seguir para instalar FreeBSD.Inicie con el CD1 de FreeBSD insertado en el lector y cuando aparezca el menu de instalacion(figura 6.1), seleccione la opcion Custom. Al seleccionar la opcion Custom aparecera la

    pantalla que muestra la figura 6.2. Note que todos los pasos est an numerados y se debenseguir en ese orden.Seleccione el administrador de particiones (3) y una vez all presione A para usar el HDD

    completo y luego presione Q para finalizar. Seleccione BootMgr para instalar el admin-istrador de particiones de FreeBSD. Seleccione la opcion (4) Label, y una vez mas A y luegoQ. Esto configurara el disco de manera predeterminada.

    23

  • 7/28/2019 FreeBSD SBS.pdf

    38/112

    24 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    Figura 6.1: Menu de Instalacion/Configuracion de FreeBSD - sysinstall

    Figura 6.2: Opciones de Instalacion

    Para seleccionar la distribucion que desea instalar seleccione la opcion (5) Distributions.Luego pasara a la pantalla que muestra la figura 6.3. De todas las variantes, dirjase a la ultimaB Custom para personalizar lo que queremos instalar y no gastar HDD innecesariamente.

    Estas son las opciones necesarias:

    base. Los programas del sistema operativo.

    man. La ayuda.

    doc. (Opcional) Handbook de FreeBSD.

    src. Es el codigo fuente de todo el Sistema Operativo. Es muy necesario para mantenerel sistema actualizado usando la va de sincronizacion de codigo con los servidores CVSde FreeBSD.

    ports. Es el arbol CVS que contiene todo el software de terceros que funciona sobreFreeBSD. Es necesario para mantener actualizado todos los programas del servidor(Apache, Squid, Postfix, etc).

  • 7/28/2019 FreeBSD SBS.pdf

    39/112

    6.1. INSTALANDO FREEBSD 25

    Figura 6.3: Listado de Elementos a Instalar

    X.org. (Opcional) En un servidor productivo, realmente no es necesario tener una in-terfase grafica, pero si es primera vez que trabaja con FreeBSD y est a instalando sobre

    un servidor de pruebas, puede ser de gran utilidad. No obstante le advierto, los admin-istradores de escritorio como Gnome utilizan gran cantidad de libreras dependientesque luego pueden traer conflictos de versiones con otras libreras necesarias para algunosservidores. Este tipo de error es casi improbable, pero suele suceder en algunos casos.

    Vuelva al menu principal (El que tiene los pasos de instalaci on numerados) seleccionandoExit y una vez all, seleccione la opcion (6) Media. Asumiendo que esta instalando desdeCD, seleccione la primera opcion que aparece. Seleccione la opcion (7) Commit para comen-zar con la instalacion.Ahora la instalacion se encargara de crear la estructura de directorios, copiar los programasy activar las opciones predeterminadas. Esta operacion va a tardas algunos minutos en de-pendencia del Hardware. Despues que termine este proceso, la instalacion preguntara si desearetornar al menu inicial y diremos que s para poder personalizar el sistema: Nombre, IP, etc(figura 6.4).

    Figura 6.4: Menu de Configuracion

  • 7/28/2019 FreeBSD SBS.pdf

    40/112

    26 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    Seleccione Root Password para configurar una contrasena de administracion. Si deseaanadir otro usuario, puede hacerlo a traves de la opcion User Management. Seleccione laopcion Networking para comenzar a configurar la Red. Seleccione Interfaces. Vera unlistado de todas las interfaces de Red ( Figura 6.5). Deberan aparecer dos adaptadores dered mas los puertos COM (Que son tambien interfaces de red). Los nombres de los adapta-dores van a cambiar en dependencia del tipo de tarjeta. En esta gua los llamaremos lnc0 y

    lnc1 (Usando dos tarjetas de Red Lance/PCNet). Sin perder generalidad diremos que lnc0 es-tara conectado fsicamente a la Red Privada y lnc1 a Internet. Seleccione el primer adaptador.Dgale no a usar IPv6 debido a que estamos trabajando con IPv4 (Lo mismo cuando preguntesi usa DHCP ya que los IP los asignaremos de manera estatica). Estas son las opciones aconfigurar (Figura 6.6 y/o Cuadro 6.1):

    Figura 6.5: Interfaces de Red

    Figura 6.6: Interface de Red lnc0

    Presione OK, y el sistema preguntara si desea activar el dispositivo. Despues de aceptar,volvera a la pantalla con las interfaces de red. Seleccione la segunda (lnc1) e introduzca lasiguiente informacion:IPv4 Address: 10.0.0.1

  • 7/28/2019 FreeBSD SBS.pdf

    41/112

    6.1. INSTALANDO FREEBSD 27

    Campo Valor Descripcion

    Host server1 Es el nombre del servidor

    Domain bsdland.com Dominio

    IPv4 Gateway [IP Router] IP del Router hacia Internet

    Name Server [IP Name Server] Servidor DNS.

    IPv4 Address 192.168.0.1 IP de la Interface lnc0

    Netmask 255.255.255.0 Mascara de Red

    Cuadro 6.1: Configuracion de la Interface lnc0

    Netmask: 255.0.0.0

    Presione OK, y vuelva al menu configuracion de red (Figura 6.7) . Ahora ya tenemosconfigurados los dos adaptadores de red (Publico y Privado).Seleccione sshd para activar un servidor seguro (SSH) necesario para administraci on remo-

    Figura 6.7: Servicios de Red

    ta. Note que tambien puede desde aqu activar un servidor FTP anonimo, Mail, entre otrasopciones, pero esto no lo haremos debido a que es mejor personalizar (para FTP, SMTP, etc.)el software a instalar y no usar el que FreeBSD trae de manera predeterminada. Ahora salgahacia el menu de configuracion principal.Seleccione la opcion Startup. Luego Seleccione named (Figura 6.8) para activar/crear

    nuestro propio servidor DNS. Seleccione tambien las opciones Accounting para llevar lasestadsticas de los procesos y Linux si desea activar compatibilidad binaria con Linux (Op-cional). Salga al menu de configuracion principal.Salga hacia el menu inicial y presione Exit Install para terminar la instalacion. Quite el

    CD/DVD de su lector. Ya tiene una version de FreeBSD 6.0 instalada. Ahora el sistemainiciara por primera vez. FreeBSD es un UNIX Like Operating System as que existenmuchsimas diferencias comparado con Windows (No existen los servicios, no hay registro desistema, etc.). Es muy importante que lea el captulo Unix Basics del Handbook de FreeB-SD incluso si ha trabajado con Linux alguna vez debido a que muchas cosas cambian, comopor ejemplo la organizacion de los directorios y la manera en que se aplican los permisos.

  • 7/28/2019 FreeBSD SBS.pdf

    42/112

    28 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    Figura 6.8: Configuracion de Inicio

    Lo primero que hara FreeBSD al iniciar es generar una clave RSA para codificar todas lascomunicaciones seguras (SSH) que se efectuen posteriormente. Para ello, nos pedira que rel-lenemos la pantalla de basura (caracteres sin sentido) o que presionemos ENTER para que

    automaticamente sean generados y as p oder obtener un certificado digital para uso local.Solo queda decir: Bienvenidos a FreeBSD!

    6.2. Configuracion Inicial

    Todos los pasos que efectuamos en la seccion 6 lo que realmente hicieron fue modificarlos ficheros de configuraciones del Sistema Operativo y especialmente uno llamado rc.conf(se encuentra en /etc) que puede decirse que es el archivo de configuracion principal deFreeBSD ya que es ah donde se agregan las opciones de inicio as como la carga de losservicios/aplicaciones que se desean ejecutar cuando el sistema levante.Validemonos como root y visualicemos el fichero /etc/rc.conf. Para ello ejecutemos la siguiente

    lnea de comandos:

    #ee /etc/rc.conf

    El Programa Easy Edit ee es el editor de textos predeterminado en FreeBSD. Aquellos quevienen de Linux tambien pueden usar vi.A continuacion se visualizara el fichero rc.conf:

    accounting_enable="YES"

    hostname="server1.bsdland.com"

    ifconfig_lnc0="inet 192.168.0.1 netmask 255.255.255.0"

    ifconfig_lnc1="inet 10.0.0.1 netmask 255.255.255.0"

    moused_enable="YES"

    moused_type="auto"

    named_enable="YES"

    sshd_enable="YES"

    Como puede observar, ah se encuentra toda la configuracion que efectuamos con el asis-tente de instalacion. A partir de ahora cada vez que queramos cambiar algo de sistema,

  • 7/28/2019 FreeBSD SBS.pdf

    43/112

    6.3. SERVICIOS EN FREEBSD 29

    simplemente accedemos a este fichero y hacemos las modificaciones directamente. Si deseautilizar el asistente de instalacion puede acceder al mismo con la siguiente lnea:

    #sysinstall

    6.3. Servicios en FreeBSD

    En Windows, los programas se clasifican en: aplicaciones que son aquellas que el usuariove y servicios que son programas administrados por el sistema operativo. Los servicios tienenuna estructura diferente a las aplicaciones y se registran utilizando APIs (Funciones del Sis-tema) de Windows.En FreeBSD todos los programas son iguales: aplicaciones de consola (aunque utilicen algunainterfase grafica). Las aplicaciones de consola tienen una entrada de datos (Standard InputSTDIN) y dos salidas (Standard Output STDOUT y Standard Error STDERR). Usualmenteel STDIN es el teclado, el STDOUT es la pantalla y el STDERR es el registro de errores(fichero Log). Estas entrada y salidas pueden redireccionarse a gusto e inclusive interconec-tarse entre aplicaciones (vease pipes en el Handbook). Un servicio en FreeBSD, no es mas queuna aplicacion de consola, que el sistema ejecuta, asociado a una cuenta de usuario, medianteun script (codigo texto ejecutable sobre BSD Shell) de inicio previamente configurado. Losscripts de inicio se almacenan en /etc/rc.d/ o /usr/local/etc/rc.d/ y la carga autom atica secontrola desde /etc/rc.conf.

    Entonces, como crear un servicio? Supongamos que tenemos una aplicacion de consolaen /usr/local/sbin/utilidad que queremos ejecutar como servicio. Los pasos a seguir son lossiguientes:

    1. Crear un fichero ejecutable con nombre utilidad.sh, almacenarlo en /usr/local/etc/rc.d/y comenzar a editarlo.

    #cd /usr/local/etc/rc.d/

    #cp /dev/null utilidad.sh

    #chmod 755 utilidad.sh

    #ee utilidad.sh

    #ee /etc/rc.conf

    El fichero utilidad.sh debe quedar como la siguiente plantilla:

    #!/bin/sh

    # PROVIDE: utilidad

    # REQUIRE: DAEMON

    # KEYWORD: shutdown

    #

    # DO NOT CHANGE THESE DEFAULT VALUES HERE

    # SET THEM IN THE /etc/rc.conf FILE

    #

  • 7/28/2019 FreeBSD SBS.pdf

    44/112

    30 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    utilidad_enable=${utilidad_enable-"NO"}

    utilidad_flags=${utilidad_flags-""}

    . /etc/rc.subr

    name="utilidad"

    rcvar=set_rcvarcommand="/usr/local/sbin/${name}"

    pidfile="/var/run/${name}.pid"

    start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utilidad_flag

    load_rc_config $name

    run_rc_command "$1"

    2. Agregar la siguiente lnea a /etc/rc.conf

    utilidad_enable="YES"

    3. Para cargar el servicio:

    #/usr/local/etc/rc.d/utility.sh start

    4. Para pararlo:

    #/usr/local/etc/rc.d/utility.sh stop

    Cuando el sistema inicie la proxima vez el servicio cargara automaticamente. El ordende ejecucion de los servicios depende del orden alfabetico de la carpeta /usr/local/etc/rc.d

    as que si desea ejecutar alguno primero que otro cambie los nombres o anada como prefijoun orden de ejecucion (Ejemplo: 001.servicio1.sh, 002.servicio2.sh)

    Se ha explicado como crear un servicio simplemente para que usted tengauna idea de como funcionan los mismos. Sin embargo, cuando instalemos unaaplicacion como Apache, Squid u otras, FreeBSD creara el script de inicio au-tomaticamente.

    6.4. Configurando el Kernel

    En FreeBSD, como en muchos Unix-Like Operating Systems, el Nucleo del Sistema es

    configurable y en dependencia de las opciones que se agreguen o desactiven el rendimientogeneral aumentara o disminuira considerablemente.Dado el diseno modular del Kernel, es posible en tiempo real cambiar algunas opciones derendimiento (Tunning Options) as como cargar algunos drivers sin necesidad de recompilartodo el codigo fuente o reiniciar el Sistema Operativo. Sin embargo, hay cosas que solo puedenhacerse de manera estatica (Recompilando) y a veces es mejor hacerlo as. Por ejemplo, el

  • 7/28/2019 FreeBSD SBS.pdf

    45/112

    6.4. CONFIGURANDO EL KERNEL 31

    soporte SMP (Symmetric Multiprocessing) para poder manejar multiples procesadores o elsoporte para grandes bloques de memoria RAM (>4GB) solo es posible activarlo recompi-lando el Kernel. Y esto tiene su explicacion: si usas una Arquitectura de 32 Bits y a lo sumo4GB de Memoria RAM, el puntero de direccionamiento de memoria virtual es de 4 Bytes(32 Bits), sin embargo en otro caso este puntero puede ser de 8 Bytes (64 Bits) permitiendoas el manejo de gran cantidad de memoria. Ahora, sera un desperdicio de espacio compilar

    ese puntero a 64 Bits (aunque es posible) si solo vas a manejar a lo sumo 4GB RAM. LosSistemas Operativos de codigo cerrado lo que hacen para resolver este problema es proveervarias versiones precompiladas del Kernel y cargarlas dinamicamente en dependencia de lasnecesidades.Pues no divaguemos mas y veamos como se configura el Nucleo del Sistema y no se asusteque no tendra que programar nada.En el camino /usr/src es donde FreeBSD almacena el codigo fuente de todo el sistema, tantoel Kernel como las aplicaciones del Sistema Operativo y esto es a lo que se le llama TheWorld.Dentro de El Mundo se encuentra The Kernel ubicado en /usr/src/sys/i386/ donde i386,es la arquitectura correspondiente a Intel x86. Dentro de este camino se encuentra una carpe-ta llamada conf (/usr/src/sys/i386/conf/) donde aparecen distintas variantes de ficherosde configuracion del Nucleo:

    GENERIC - Configuracion Basica

    SMP1 - Configuracion para Multiprocesamiento

    Lo primero que ud. debe de hacer es crear su propio fichero de configuracion o bien haceruna copia de los bases que aparecen y comenzar a editar sus opciones:

    #cd /usr/src/sys/i386/conf

    #cp SMP BSDLAND

    #ee BSDLAND

    Ahora veamos la configuracion del Kernel (Sin optimizaciones avanzadas) que vamos a uti-lizar:

    # Kernel Personalizado: BSDLAND

    # Incluye la configuracion Generica

    include GENERIC

    # Nombre/Identificacdor del Kernel

    ident CINET-SMP

    # Optimizaciones para GCC

    makeoptions COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math"

    # Activar SMP

    options SMP # Symmetric MultiProcessor Kernel

    1La configuracion SMP incluye a GENERIC y solo agrega la compatibilidad para multiprocesamiento, nadamas.

  • 7/28/2019 FreeBSD SBS.pdf

    46/112

    32 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    # Activando el Firewall de OpenBSD (Packet Filter)

    device pf

    device pflog # Interfase deestadsticas

    device pfsync # Interfase para sincronizacion

    options ALTQ # Soporte ALTQ - Calidad de Paquetes & Traffic Shaping

    options ALTQ_CBQ # Class Base Queueingoptions ALTQ_RED # Random Early Drop

    options ALTQ_RIO # RED In/Out

    options ALTQ_HFSC # Hierachical Packet Scheduler

    options ALTQ_CDNR # Traffic Conditioner

    options ALTQ_PRIQ # Priority Queueing

    # Algunas Opciones de Rendimiento (Ver Handbook de FreeBSD)

    options SYSVMSG

    options MSGMNB=8192 # max # of bytes in a queue

    options MSGMNI=40 # number of message queue identifiers

    options MSGSEG=2048 # number of message segments per queue

    options MSGSSZ=64 # size of a message segment

    options MSGTQL=2048 # max messages in system

    options SYSVMSG

    options SYSVSEM

    options SHMMAXPGS=262144

    options SHMSEG=512

    options SHMMNI=512

    options SEMMNI=512

    options SEMMNS=1024

    options SEMMNU=512

    options SEMMAP=512

    # Activar tunel IP & IPSec

    options IPSEC #IP security

    options IPSEC_ESP #IP security (crypto; define w/ IPSEC)

    options IPSEC_FILTERGIF

    device gif

    Para compilar el kernel, podemos ir por dos vas, la antigua y la moderna. La antigua sera:

    #cd /usr/src/sys/i386/conf

    #/usr/sbin/config BSDLAND

    #cd ../..

    #make cleandepend && make depend && make && make install

    Y por la nueva va sera:

    #cd /usr/src

    #make buildkernel KERNCONF=BSDLAND

    #make installkernel KERNCONF=BSDLAND

  • 7/28/2019 FreeBSD SBS.pdf

    47/112

    6.5. ACTIVANDO ACLS EN FREEBSD 33

    Si todo sale bien, entonces al reiniciar el servidor, tendra la nueva version del Kernel. Noteque este nuevo nucleo puede no cargar, pero no se preocupe, ud. siempre puede cargar laversion anterior del Kernel o la version generica, seleccionandola en el menu de inicio (Boot).

    6.5. Activando ACLs en FreeBSD

    Los permisos en UNIX fueron disenados con otras condiciones y necesidades diferentes alas actuales y realmente resuelven una gran cantidad de problemas, sin embargo, que pasasi un objeto del sistema de archivos se desea compartir por multiples usuarios y/o grupos?Esto no tiene solucion. Es por eso que nacen las ACL (Access Control Lists). La mayorade los sistemas operativos comerciales como Windows y Solaris incluyen en sus sistemas dearchivos ACL. Entonces, por que no incluirlas en FreeBSD? Inicialmente los escepticos y losconservadores diran que no hay necesidad de modificar el sistema de permisos en UNIX, sinembargo, es una necesidad y una obligacion si se desea interactuar con otros sistemas oper-ativos. Por ejemplo, utilizando Samba (Windows Domain Controller) se pueden compartircarpetas, y si se desea cambiar los permisos de acceso a la carpeta dando clic derecho sobrela misma desde Windows, es necesario que el sistema de archivos en el servidor soporte ACL

    (Para compatibilizar con NTFS). Inclusive si se copia desde Windows (NTFS) una estruc-tura de directorio hacia una carpeta de red (Hospedada con FreeBSD) se pueden mantenerlos permisos por cada objeto.Y que no le quede duda a nadie, no se sustituyen las mascaras de UNIX por ACL sino quelas ACL son una capa sobre UFS2 (En FreeBSD 5/6). Esto significa que se pueden utilizarindistintamente los dos sistemas.Entonces activemos las ACL en FreeBSD (Desactivadas con la configuracion predetermina-da). Las ACL pertenecen al Sistema de Archivos y requieren obligatoriamente soporte paraatributos extendidos (UFS2). Debemos reiniciar en Single User Mode para poder accederdirectamente al sistema de archivos y modificarle las propiedades. Para ello:

    #shutdown -r now

    Cuando este iniciando FreeBSD seleccione Boot FreeBSD in Single User Mode. Una vez eneste modo:

    #/sbin/tunefs -a enable /dev/da0s1f

    Donde /dev/da0s1f es la particion donde esta /usr. Esto puede cambiar en dependencia de lostipos de discos duros que ud tenga, por lo que recomiendo que verifique el fichero /etc/fstabdonde estan todos los mount points y los discos. Una vez activadas las ACL veamos algunoscomandos para trabajar con ellas desde FreeBSD.Primero, supongamos que estamos validados como alex:wheel (UID 0, GID 0).

    #cd ~

    #cp /dev/null acl-test

    Esto crea un fichero llamado acl-test en nuesto Home Directory.

    #setfacl -b acl-test

    Esta opcion inicializa las ACL (solo incluye las reglas equivalentes a la mascara de UNIX)

  • 7/28/2019 FreeBSD SBS.pdf

    48/112

    34 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    # ls -l acl-test

    -rw-r--r--+ 1 alex wheel 0 Dec 19 17:27 acl-test

    Ademas de los permisos estandares de UNIX, aparecera un + que significa que ese ficherotiene permisos definidos va ACL. Para ver esos permisos:

    # getfacl acl-test

    # file:acl-test# owner:500

    # group:0

    user::rw-

    group::r--

    other::r--

    (La primera lnea es el comando, las restantes # son comentarios que emite el utilitariogetfacl)Note que es equivalente estas ACL con la mascara/permisos de UNIX. Ahora, sin cambiarestos permisos, permitamos que los miembros del grupo Domain Users puedan leer estefichero:

    # setfacl -m group:Domain Admins:r-- acl-test

    Veamos que se mantienen intocables los permisos de UNIX y que de manera adicional es quese agrega el nuevo permiso.

    #ls -l acl-test

    -rw-r--r--+ 1 alex wheel 0 Dec 19 17:30 acl-test

    #getfacl act-test

    # file:acl-test

    # owner:500

    # group:0

    user::rw-group::r--

    group:Domain Admins:r-

    mask::r--

    other::r--

    Hemos estado trabajando con un fichero. Con directorios las ACL se comportan de igualmanera, pero hay algo nuevo: herencia. Cada vez que se cree un fichero dentro de una carpetacon ACL activadas hay ocasiones en que se desea que se hereden las ACL. Las ACL no seheredan de manera predeterminada, hay que forzar la herencia con la opcion -d (Default) enel utilitario setfacl. Para poder especificar una ACL heredable hay que tambien especificar lamascara de UNIX, sino la utilidad lanza un error (Tiene sentido, ya que a cada fichero nuevo

    hay que obligatoriamente especificarle una nueva mascara UNIX). Ejemplo:

    # setfacl -d -m user::rw-,group::r--,other::r--,u:alex:rwx carpeta

    Para eliminar las ACL predeterminadas se utiliza la opcion -k.Veamos ahora un ejemplo de interoperacion con Microsoft Windows Vista (NT 6.0). Supong-amos que compartimos una carpeta llamada netlogon (Luego cuando configuremos Samba

  • 7/28/2019 FreeBSD SBS.pdf

    49/112

    6.5. ACTIVANDO ACLS EN FREEBSD 35

    veremos como compartir carpetas) donde almacenaremos nuestro fichero act-test con las ACLdel ejemplo anterior activadas.

    Figura 6.9: Listado de las ACL de la carpeta netlogon desde Windows Vista

    En la Figura 6.9 se ven todas las ACL que hemos definido. Everyone en Windows es otheren UNIX. Alex y Wheel es el user:group propietario de los permisos del fichero y DomainUsers es el grupo con la ultima ACL que se agrego en el ejemplo anterior.

    Ahora, probemos modificar estas ACL desde Windows. Vamos a poner a Domain Users comoLectura, aceptemos los cambios y veamos si se modificaron los permisos en nuestro sistemade archivos en FreeBSD:

    #getfacl act-test

    # file:acl-test

  • 7/28/2019 FreeBSD SBS.pdf

    50/112

    36 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    # owner:500

    # group:0

    user::rw-

    group::r--

    group:Domain Admins:rw-

    mask::r--

    other::r--Wow! Como habamos pensando! Las ACL se modificaron. Esto demuestra lo p oderosa queson las ACL y la necesidad de estas para interactuar con otros sistemas operativos comoWindows.

    6.6. Configurando el Firewall

    Existen varios tipos de cortafuegos: Stateless y Statefull (Nombre en ingles). Los firewallsStateless ignoran el estado de las conexiones y se limitan a filtrar (permitir/denegar) lospaquetes en dependencia de un grupo de reglas estaticamente definidas.Los firewalls Statefull, mantienen un conjunto de reglas dinamicas ademas del grupo estatico

    as como un estado en memoria de todas las conexiones que pasan a traves (o para) el servidor.Las reglas dinamicas garantizan el flujo dinamico de informacion y esta es una caractersticaimportante para las puertas (Gateways). Como las comunicaciones TCP/UDP se efectuandesde un IP:Puerto hasta otro IP:Puerto cada vez que se efectua desde una PC interna unpedido HTTP a un servidor externo, el puerto de la PC interna se selecciona aleatoriamente(generalmente un numero alto: 32343 o 15674) y esto es un problema para los FirewallsStateless, ya que no pueden saber el trafico entrante (Respuesta del Servidor HTTP) haciadonde va ni a que sesion TCP pertenece, trayendo as problemas de flexibilidad a la horade crear reglas de este estilo. Un firewall Statefull al inicializar la conexi on creara una regladinamica inversa para la sesion TCP especfica, permitiendo as que las respuestas (Paquetesentrantes) lleguen a su destino y que cualquier otra comunicaci on que no coincida con la

    sesion sea descartada (Si no coincide con otra regla). Packet Filter es un Firewall Statefull.Estas son las caractersticas fundamentales de Packet Filter:

    Stateful packet filteringMantiene el estado de las comunicaciones.

    Network Address Translation (NAT)Permite mediante traduccion de direcciones que grupos de IP privados puedan accedera redes publicas (IP Relaes).

    Port ForwardingPermite publicar servidores internos o en el DMZ hacia redes externas.

    Passive Operating System FingerprintingEl firewall puede detectar el sistema operativo de los clientes en dependencia de lasmarcas de los paquetes IP.

    Packet Queueing and Quality of ServiceImplementa diversos algoritmos para la administracion del ancho de banda y la prior-izacion del trafico por regla.

  • 7/28/2019 FreeBSD SBS.pdf

    51/112

    6.6. CONFIGURANDO EL FIREWALL 37

    Load Balancing & FirewallPuede configurarse el firewall para que se sincronice con otro firewall que tenga instala-do Packet Filter y as balancear la carga y tener una alta disponibilidad de los servicios(Failover).

    Veamos ahora como configurar Packet Filter. La Figura 6.10 muestra un diseno conocidocomo 3-Leg Firewall ya que el Gateway esta conectado a la LAN, a la red desmilitarizada(DMZ) y a Internet. Sin embargo, existen dos firewalls: fw1.bsdland.com y fw2.bsdland.comhaciendo de Gateway. El objetivo de esta dualidad es sincronizarlos, balancear la carga y sipor alguna razon uno de ellos falla, pues el otro asuma todo el tr afico y el cliente final nonote ningun cambio o problema.

    Figura 6.10: Diagrama de un Firewall Cluster

    6.6.1. Reglas de Acceso

    Veamos primero la configuracion de las reglas del firewall, que deben ser identicas en

    ambos servidores exceptuando que los IP varan en cada caso.Por ejemplo, nuestra LAN es 192.168.0.0/24. El IP fsico de fw1.bsdland.com sera 192.168.0.2y el de fw2.bsdland.com 192.168.0.3. El IP 192.168.0.1 sera el virtual utilizado para el balancede carga. Esto significa que ambos servidores (fw1 y fw2) van a recibir los pedidos de conexi onen 192.168.0.1 y se van a poner de acuerdo sobre quien responde y quien no. El LoadBalancing se efectuara utilizando C.A.R.P (Common Address Redundancy Protocol). La

  • 7/28/2019 FreeBSD SBS.pdf

    52/112

    38 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    configuracion del Packet Filter la encontramos en /etc/pf.conf (En caso de no aparecer creelay utilice la plantilla que a continuacion aparece):

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

    # BSDLAND FW1 - OpenBSD Firewall #

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

    ##########

    # Macros #

    ##########

    ext_if="lnc0" # INTERNET

    dmz_if="lnc1" # DMZ

    lan_if="lnc2" # LAN

    # Redes

    lan_net="192.168.0.0/24"

    dmz_net="192.168.5.0/24"

    ext_net="10.0.0.0/8"

    # Algunas macros utiles

    table const { self }

    table {$lan_net,$dmz_net}

    table {$lan_net,$dmz_net}

    # Opciones generales (Tunning) de Packet Filter

    set timeout { interval 10, frag 30 }

    set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }

    set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }

    set timeout { udp.first 60, udp.single 30, udp.multiple 60 }

    set timeout { icmp.first 20, icmp.error 10 }

    set timeout { other.first 60, other.single 30, other.multiple 60 }

    set timeout { adaptive.start 0, adaptive.end 0 }

    set limit { states 10000, frags 5000 }

    set loginterface none

    set optimization normal

    set block-policy drop

    set require-order yes

    set fingerprints "/etc/pf.os"

    # Normalizacion: reensambla fragmentos y resuelve o reduce

    # ambiguedades en el traficoscrub in on $ext_if

    # Colas: Control de Ancho de banda para enlace externo (128Kb)

    # y priorizacion del trafico.

    altq on $ext_if bandwidth 128Kb priq queue { normal, medium, high, critical }

  • 7/28/2019 FreeBSD SBS.pdf

    53/112

    6.6. CONFIGURANDO EL FIREWALL 39

    queue normal priority 1 priq(default)

    queue medium priority 3

    queue high priority 5

    queue critical priority 7

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

    # NAT ##################

    # Se efectua NAT desde las redes internas hacia Internet

    # Hay que permitir todava quien sale y quien no

    nat on $ext_if from $dmz_if:network to any -> ($ext_if)

    nat on $ext_if from $lan_if:network to any -> ($ext_if)

    # Estas son reglas para la publicacion de servidores

    # internos. Hay que definir las variables $web_server1 etc

    # en dependencia de las necesidades.

    # HTTP - Server Mapping

    # rdr on $ext_if proto tcp from any to any port 80 -> $web_server1 port 80

    # rdr on $ext_if proto tcp from any to any port 443 -> $web_server1 port 443

    # SMTP - Server Mapping

    # rdr on $ext_if inet proto tcp from any to any port 25 -> $smtp_server1 port 25

    # POP - Server Mapping

    # rdr on $ext_if proto tcp from any to any port 110 -> $pop_server1 port 110

    # IMAP - Server Mapping

    # rdr on $ext_if proto tcp from any to any port 143 -> $imap_server1 port 143

    # Transparent Proxying - Filtrar la navegacion con Squid Proxy Server

    # escuchando en el puerto 8080

    # rdr on {$ppp_if,$cedi_if} inet proto tcp from any to any port www -> 127.0.0.1 port 8

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

    # DEFAULT POLICY #

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

    # De manera predeterminada se bloquea todo el trafico.

    block all

    # Loopback Access - Se permite acceder a 127.0.0.1pass quick on lo0 all

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

    # Server Port Publishing #

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

  • 7/28/2019 FreeBSD SBS.pdf

    54/112

    40 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    # Si el servidor Firewall ademas incluye algun servicio hay que

    # permitirlo. Esta opcion es exclusiva: O se publica el puerto (rdr forward)

    # o se instala un servidor local y se permite el acceso.

    # Note que el trafico se prioriza: SSH tiene la mayor prioridad.

    # DNS Server

    pass proto {tcp,udp} from any to port 53 keep state queue high

    # SMTP Server

    pass proto {tcp} from any to port 25 keep state queue medium

    # HTTP Server

    pass proto {tcp} from any to port 80 keep state queue normal

    # POP3 Server

    pass proto {tcp} from any to port 110 keep state queue normal

    # IMAP Server

    pass proto {tcp} from any to port 143 keep state queue normal

    # SSH Server

    pass proto {tcp,udp} from any to port 22 keep state queue critical

    # DHCP Server (INTERNAL)

    pass on $lan_if proto {udp} from any to any port 67

    pass on $dmz_if proto {udp} from any to any port 67

    # Squid Proxy Server (INTERNAL)

    pass on $lan_if proto {tcp} from any to port 8080 keep state

    pass on $dmz_if proto {tcp} from any to port 8080 keep state

    # Samba Server (INTERNAL)

    pass proto {tcp} from to port 135 keep state

    pass proto {tcp} from to port 139 keep state

    pass proto {tcp} from to port 445 keep state

    pass proto {udp} from to port 137 keep state

    pass proto {udp} from to port 138 keep state

    # LDAP Server (DMZ)

    pass proto {tcp} from $dmz_net to port 389 keep state

    # PostgreSQL Server (DMZ)

    pass proto {tcp} from $dmz_net to port 5432 keep state

    # Jabber Server

    pass proto {tcp} from any to port 5222 keep state

  • 7/28/2019 FreeBSD SBS.pdf

    55/112

    6.6. CONFIGURANDO EL FIREWALL 41

    pass proto {tcp} from any to port 5223 keep state

    pass proto {tcp} from any to port 5269 keep state

    pass proto {tcp} from any to port 5280 keep state

    pass proto {tcp} from any to port 8888 keep state

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

    # Firewall Access Rules ###########################

    # Permitir Firewall SSH -> Anywhere

    pass proto {tcp} from to any port ssh keep state queue critical

    # Permitir Firewall -> Anywhere

    pass from to any keep state

    # Permitir DMZ -> Internet

    pass from $dmz_net to $ext_net keep state

    # Tunel IP: NODO1 NODO2

    pass on gif0 from any to any keep state

    # CARP

    pass quick on { $dmz_if } proto pfsync keep state (no-sync)

    pass on { $dmz_if $lan_if } proto carp keep state

    Podemos ver que en el fichero de configuracion aparecen los siguientes grupos:

    Definicion de las interfaces y direcciones IP que intervienen en el NAT.

    Configuraciones generales del Packet Filter

    Control de Ancho de Banda y Priorizacion de Trafico.

    NAT

    Publicacion de Servidores Internos (Port Forwarding)

    Permisos para trafico entrante

    Reglas de Acceso

    Ahora, en dependencia de su configuracion ud. debera comentariar y/o modificar esta plan-

    tilla respetando el orden y la agrupacion, debido a que de otra manera puede no funcionarcorrectamente el Firewall.Para activar el Firewall agregue las siguientes lneas al fichero /etc/rc.conf

    pf_enable="YES"

    pflog_enable="YES"

  • 7/28/2019 FreeBSD SBS.pdf

    56/112

    42 CAPITULO 6. INSTALANDO EL SISTEMA OPERATIVO

    6.6.2. Sincronizando los Firewalls: CARP

    Pr