martes, 30 de octubre de 2012

Instalación de servidor primario BIND9 en una distribución Ubuntu server 12.04

Servidores DNS Ubuntu Server 12.04

Instalación y configuración de servidores DNS.

  • Server Primario o master. - Autorizado para la zona
  • Server secundario o slave. - No autorizado.
  • Servidor Caché.


A tener en cuenta:

hostname debe contener el nombre de la máquina: en este caso "server".

hosts debe contener ip_de_la_máquina  nombre_máquina.dominio   alias:


      192.168.1.6 (o 127.0.1.1)   server.miempresa.com         server




Instalación de servidor primario BIND9 en una distribución Ubuntu server 12.04



       ~$sudo aptitude install bind9 bind9utils

       ~$cd /etc/bind

Editamos named.conf.options. Cambiamos "dnssec-validation" a "no" de momento, para que syslog no nos dé la "lata".

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      8.8.8.8;
        //      8.8.4.4;
        // };

        //======================================================================$
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //======================================================================$
        auth-nxdomain no;    # conform to RFC1035
        //listen-on-v6 { any; };
        dnssec-validation no;
        

};

Editamos "named.conf.local:

 //
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "miempresa.com" {    -> El nombre de la zona directa.
        type master;
        file "/etc/bind/db.miempresa.com"; -> Zona directa.
        allow-transfer { 192.168.1.5; };   -> Esclavo permitido.
        also-notify { 192.168.1.5; };      -> Notificaciones.
};

zone "1.168.192.in-addr.arpa" {  -> El nombre de la zona inversa.
        type master;
        file "/etc/bind/db.192"; -> Zona inversa.
        allow-transfer { 192.168.1.5; };
        also-notify { 192.168.1.5; };
};


Creamos las zonas en el directorio:

        ~$cp db.local db.miempresa.com

       ~$cp db.127 db.192


Editamos db.miempresa.com


Ejemplo de zona directa:


;
; BIND data file for local miempresa.com interface
;
$TTL    604800
@       IN      SOA     miepresa.com. root.miempresa.com. (
                        2012102602      ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

        IN      NS      server.miempresa.com.
;       IN      NS      server1.miempresa.com.


;hosts

@               IN      A       192.168.1.6
server          IN      A       192.168.1.6
server1         IN      A       192.168.1.5



Editamos db.192

Ejemplo de zona inversa:

;
; BIND reverse data file for local 192.168.1.xxx interface
;
$TTL    604800
@       IN      SOA     server.miempresa.com. root.miempresa.com. (
                        2012102607      ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

;
        IN      NS      server.
;

6       IN      PTR     server.miempresa.com.
5       IN      PTR     server1.miempresa.com.




       ~$sudo service bind9 restart

Listo el servidor primario.









viernes, 26 de octubre de 2012

Software RAID

Software RAID

Proceso de montaje de discos en RAID mediante Software "mdadm".

Raid1.png Raid2.png
Montaje de RAID sobre dos discos. Lo primero que se debe hacer es el particionado de los discos. En este ejemplo, se van a crear 3 particiones por disco, 1 de 100 mb primaria BOOTABLE, 1 de 2 GB lógica y con el resto otra lógica. Esto se debe hacer igual en cada disco, siendo fundamental que una de ellas, la misma, sea BOOTABLE.
Raid3.png Raid4.png
Primera partición de 100 MB para /boot. Esta es obligatoriamente primaria dado que será la que contendrá el sector de arranque. Se posiciona en el inicio del disco.
Raid5a.png Raid6.png
Seleccionamos el sistema de ficheros. Para montar un RAID aquí debemos seleccionar Volumen físico para RAID.
Raid8.png Raid10.png
IMPORTANTE activar la Marca de Arranque en esta partición. Realizamos el resto de particiones siguiendo el mismo proceso. En este caso se crean dos lógicas, una para SWAP y la otra para la raíz /, aunque podrían ser todas primarias. Repetimos el mismo proceso en el segundo disco, respetando los mismos tamaños, tipos y que /boot sea BOOTEABLE. Debe quedar como en la imagen.
Raid11.png Raid12.png
Seleccionamos la opción Configurar RAID por software y seguimos los pasos.
Raid13.png Raid14.png
Seleccionamos Crear nuevo dispositivo MD y el tipo de RAID que se quiere montar. Con dos discos, seleccionamos RAID 1, pero es posible seleccionar RAID 0.
Raid15.png Raid16.png
Aquí seleccionamos el número de dispositivos activos por el array, como tenemos dos discos y hemos creado dos particiones para cada array se selecciona 2. En Dispositivos libres se deja como está.
Raid17.png Raid18.png
Tiene que quedar como en la imagen superior. Una vez los array están creados, hay que seleccionar el para cada uno el sistema de ficheros - swap, ext4, ext3... y el punto de montaje, que serán en este caso /boot para la primaria y / para la que contendrá el SO + SWAP.
Raid19.png Raid20.png
Raid21.png
Y ya está el sistema preparado para la instalación del sistema sobre las particiones

Administración de LDAP

LDAP

Servidor LDAP

LDAP - Lightweight Directory Access Protocol - o protocolo ligero de acceso a directorios, es un protocolo de aplicación utilizado para el acceso y mantenimiento de servicios de directorios distribuidos en entornos de red. este tipo de servicio, también es considerado como base de datos ya que se pueden realizar consultas sobre la información contenida en él. Está organizado de manera jerárquica, siendo el directorio un conjunto de objetos con atributos. Estos objetos, pasan por ser desde nombres de dominio en sus niveles más altos hasta usuarios, máquinas, cuentas de correo, unidades organizativas o cualquier objeto representado en el árbol. Debido a que almacena datos de usuarios y contraseñas, entre otras cosas, es un medio utilizado para realizar autenticaciones a servicios.

Instalación

Para realizar la instalación sobre nuestro servidor Ubuntu Server, hemos de instalar los siguientes paquetes:


      sudo aptitude install slapd ldap-utils


slapd es el demonio usado por LDAP. Es autónomo, no necesita de otros programas ni librerías para su ejecución y es iniciado en el arranque del sistema operativo.


En el transcurso de la instalación únicamente nos pide una contraseña. Para esta práctica, usaremos ldapadmin.


Ldap1.png


Después de realizar la instalación configuramos el servicio con la mínima configuración necesaria para que el servidor LDAP, opere adecuadamente:


      sudo dpkg-reconfigure slapd


Ldap2.png
Seleccionamos NO en la opción de omitir una nueva configuración.
Ldap3.png Ldap4.png
Introducimos el nombre de dominio DNS que agregamos anteriormente al fichero hosts. Introducimos el nombre de nuestra organización. En este caso se opta por el mismo DNS, pero puede ser cualquier otro, como por ejemplo el nombre de una empresa; miempresa S.A. o cualquier información que describa a la organización.
Ldap5.png Ldap6.png
Introducimos la contraseña - 2 veces por seguridad - y seleccionamos el tipo de BD a utilizar con LDAP. HDB y BDB, no difieren mucho respecto a su configuración, pero la BD recomendada por la propia configuración del paquete, permite la modificación de los nombres de los sub-árboles, además de aconsejar la lectura del fichero de configuración de la BD. Para esta práctica se selecciona la opción predeterminada HDB.
Ldap7.png Ldap8.png
EL siguiente paso pregunta por el borrado de la base de datos toda vez que se purgue el paquete slapd. Si no se desea eliminar la base de datos anterior, se ha de seleccionar la opción - por defecto - NO. Si se desea iniciar slapd con una nueva base de datos, en el siguiente paso se ha de seleccionar mover la base de datos antigua, de este modo habremos guardado una copia de la base de datos anterior y comenzado una nueva sesión de LDAP limpia.
Ldap9.png Ldap10.png
Por último, solo en el caso de necesitar soporte para la versión de ldap v2, debido al uso de aplicaciones anteriores, se seleccionará el soporte para esta versión. Por defecto la opción remarcada es NO. Si todo se realiza de manera correcta, el demonio slapd será inicializado de nuevo.
Para comprobar que el estado de configuración de slapd es correcto, podemos usar el siguiente comando:


      sudo slaptest


Ldap11.png

 

  Administración de LDAP



Versiones de LDAP

Es importante remarcar que, dependiendo de la versión de LDAP, la manera de administrar el servidor varía. En versiones anteriores, la realización de cambios en el servidor es realizada modificando el fichero de configuración sladp.conf ubicado en /etc/ldap/slapd.conf. LA modificacicón de este fichero implica la parada del servidor y posterior reinicio del mismo. Esto, en sistemas de producción supone un agravio. Por ello, este método ha sido modificado para que la administración se pueda realizar en caliente. Para ello se ha dividido la configuración en dos partes; Una para la parte de administración y otra para los datos de la BD.

Administrar LDAP

Existen diversas maneras de administrar el servidor y la base de datos LDAP, tanto a nivel de terminal como gráfica, mediante el uso de aplicaciones web/gráficas.


Modo terminal


Breve introducción de los comandos necesarios para la visualización del contenido de la base de datos y de la configuración del servidor, adición de información, esquemas, etcétera


Para realizar una búsqueda de la información relativa a la configuración:


     sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn


El comando ldapsearch muestra la información contenido en la base de datos, tanto para la configuración "cn=config", como de los datos contenidos en la BD. Para poder visualizar el contenido del DIT (Directory information tree) de configuración "cn=config" es necesario el uso del parámetro -Y ya que es necesaria la autenticación con SASL, e indicarle EXTERNAL para usar el método de autenticación propio del protocolo LDAP. -H indica la URI que en este caso es la raíz "///" y ldapi indica el "camino", ldap + IPC


     dn: cn=config                                 -> Configuración global
     dn: cn=module{0},cn=config                    -> Modulos dinámicos cargados.
     dn: cn=schema,cn=config                       -> Configuración del squema a nivel de sistema. 
     dn: cn={0}core,cn=schema,cn=config            -> Esquema del núcleo.
     dn: cn={1}cosine,cn=schema,cn=config          -> Esquemas de LDAP.
     dn: cn={2}nis,cn=schema,cn=config             -> Esquema.
     dn: cn={3}inetorgperson,cn=schema,cn=config   -> Esquema.
     dn: olcBackend={0}hdb,cn=config               -> Configuración del "backend" de la base de datos.
     dn: olcDatabase={-1}frontend,cn=config        -> Configuración del frontend de la base de datos.
     dn: olcDatabase={0}config,cn=config           -> Configuración de la base de datos del demonio slapd. 
     dn: olcDatabase={1}hdb,cn=config              -> Configuración de la instancia de la base de datos.

Donde olc significa online configuration y {x} es la forma de ordenar las entradas


Para realizar una búsqueda dentro de una instancia creada por el usuario (2º DIT):


     ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com dn


Donde -x indica que no se realizará autenticación SASL, -LLL muestra la información más compactada, -H la URI sin seguridad "ldap" y -b indica el punto de partida para realizar la búsqueda por el directorio. Veamos el resultado para una BD creada cuya entrada de más alto nivel es el nombre de dominio miempresa.com:


Ldap11a.png
Ldap12.png


Para añadir objetos al árbol LDAP por línea de comandos, ha de crearse un tipo de fichero ldif. Para ello, hacemos lo siguiente:


     sudo nano /var/tmp/newuser.ldif


Ldap13.png


Para evitar conflictos entre los usuarios unix locales y los creados en LDAP se sugiere asignar en el campo uidNumber un número por encima de 10000


Para crear un usuario debemos de tener ya creado con anterioridad un grupo posixGroup, para poder introducir el número posixNumber a nuestro usuario. En este caso ya existen varios grupos. Aquí se utiliza el grupo Domain Users, para ver que número tiene asignado este grupo:
     ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com 'cn=Domain Users'


Ldap14.png


Una vez creado el fichero ldif, introducimos el usuario al directorio con ldapadd:


     ldapadd -x -D cn=admin,dc=miempresa,dc=com -W -f /var/tmp/newuser.ldif


Donde -D binddn indica el usuario con permisos administrativos - admin es creado por defecto en la instalación - -W para el password (ldapadmin) y -f para indicar el fichero que contiene los datos a introducir


Ldap15.png


     ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com 'uid=daniel'


Ldap16.png


Esto es lo más básico para hacer búsquedas, añadir y actualizar datos (ldapmodify). Si se pretende administrar LDAP mediante consola es necesario aprender a manejar estos comandos y otros muchos correctamente. Para más información, consultar openldap.org y los man de los comandos, ldapadduser, ldapaddgroup, ldapmodify, ldapadd y otros.


Modo gráfico



Creando Objetos

El hecho de administrar la base de datos por consola de comandos, puede parecer una ardua tarea. Para ello hay disponibles diversas utilidades gráficas que simplifican este proceso. En esta práctica vamos a utilizar una de ellas: PHPLdapAdmin. Para realizar la instalación, introducimos esto en una terminal:


     sudo aptitude install phpldapadmin


Una vez instalada la aplicación es necesario la modificación de su fichero de configuración:


     sudo nano /etc/phpldapadmin/config.php 


Ldap17.png


En la línea 300 y 326 (Si no se ha modificado config.php) debemos modificar el DN de primer nivel que por defecto es dc=example,dc=com y dn=admin,dc=example,dc=com por los valores que correspondan a nuestra configuración. En este caso es dc=miempresa,dc=com.


Ldap18.png


Como el servidor no dispone de entorno gráfico y PHPLdapAdmin es un cliente web, accederemos a él desde otro sistema cliente. Para conectar al servidor podemos usar OpenSSH. Si no lo tenemos instalado, ejecutamos el siguiente comando:


     sudo aptitude install openssh-server


De este modo podemos acceder vía web a PHPLdapAdmin y abrir una terminal remota en el servidor para realizar las operaciones necesarias desde el sistema ciente. Para conectar a la base de datos desde el navegador web, introducimos en la barra de dirección la ip - nombre del servidor (si tenemos un servidor DNS activo)/phpldapadmin:


Ldap19.png


Nos conectamos con el usuario admin y la contraseña ldapadmin.


Ldap20.png


Aquí podemos ver el árbol del directorio LDAP. Hay varios grupos que han sido creados con el comando smbldap-populate que no es más que poblar el directorio con los grupos predefinidos del controlador de dominio SAMBA. Si el directorio está vacio, lo normal cuando solo se instala ldap, se debe de crear, al menos un grupo posix ya que necesitamos al menos un gidNumber. Esto es, es necesario añadir el nuevo usuario a un grupo. En este caso se añade al grupo Domain Users. Los sub-árboles ou son unidades organizativas que como su nombre indica, ayudan a organizar el directorio. Por ejemplo, Users, Computers, groups, son unidades organizativas. Dando por hecho que hemos creado un grupo posix y tenemos una OU, por ejemplo Users, seleccionamos la OU y añadimos nuevos objetos en ella. En el menú contextual seleccionamos crear objeto hijo y genérico: cuenta de usuario.


Ldap21.png


Ldap22.png


Ahora tenemos que rellenar los campos - al menos los obligatorios - y clicar en crear cuenta.


Ldap23.png


Ldap24.png


Es necesario modificar al menos el uidNumber para que comience de un número superior a 10000. Pulsamos en actualizar objeto


Ldap25.png


Autenticación LDAP
Hemos creado usuarios en LDAP. Esto nos posibilita poder hacer login con ellos desde distintos clientes. Para que un cliente Ubuntu pueda logearse es necesaria la instalación de varios paquetes:


     sudo apt-get install ldap-auth-client nscd


Debemos modificar el fichero nsswitch.conf para añadir la base de datos de LDAP.


     sudo auth-client-config -t nss -p lac_ldap


También es interesante la creación de los directorios personales de forma automática. Para ello, editamos el fichero /etc/pam.d/common-session:


     sudo nano /etc/pam.d/common-session


Agregamos la siguiente línea comprobando que figure antes de cualquier entrada pam_ldap y pam_krb5.


     session required        pam_mkhomedir.so umask=0022 skel=/etc/skel


Solo queda ejecutar el siguiente comando para aplicar las modificaciones:


    sudo pam-auth-update


Ldap26.png


Ldap27.png


Reiniciamos el proceso nscd para poder autenticarnos con los usuarios de LDAP.


     /etc/init.d/nscd restart

Configuración básica Ubuntu Server 12.04

Configuración básica

Configuración de red

Si no has configurado la red en el transcurso de la instalación (paso omitido), es hora de realizar los cambios pertinentes. Para ello, editaremos el fichero interfaces y configuraremos la tarjeta de red:

     ifconfig -> para ver cual es nuestra interfaz (ethx)
 
Si no podemos ver la interfaz es posible que esté "down". Hacemos lo siguiente:
     ifconfig -a -> lista las interfaces (todas)
     ifconfig ethx up -> Levantamos la interfaz.
     sudo nano /etc/network/interfaces
       
Añadimos la configuración de red:

     auto ethx                 -Esto variará en función de tu red-
     iface ethx inet static
     address 192.168.1.2
     netmask 255.255.255.0
     broadcast 192.168.1.255
     network 192.168.1.0
     gateway 192.168.1.1 
 
 
Reiniciamos la interfaz

     sudo service networking restart


Actualización del sistema base

Antes de realizar nada, es recomendable la actuailización del sistema a la última versión. Para ello, desde el terminal ejecutaremos:
      sudo -i
      aptitude update && aptitude full-upgrade && aptitude safe-upgrade


Instalación de un entorno gráfico liviano

Un servidor no necesita necesariamente de un entorno gráfico para trabajar, pero es posible que vayamos a usar servicios del estilo webadmin que requieren de un navegador. Para no coartar el funcionamiento del servidor, que es dar servicios a la red, y dado que el servidor puede ser de recursos limitados, instalaremos un gestor de ventanas ligero. Existen una gran variedad de ellos, como fluxbox, lxde (bastante completo), e17, blackbox, awesome etc. Nosotros en este caso en particular y sin menosprecio del resto, instalaremos Openbox. Para que el inicio sea automático, instalaremos un display manager. Entre los más ligeros tenemos xdm y slim. Incluso podríamos pasar si él, solo necesitaremos instalar xinit. -Si "startx" no corre automáticamente.
Para instalar esto, hacemos lo siguiente:


      sudo aptitude install xorg slim openbox obconf
 
Esto ya nos permite instalar un gestor de ficheros como nautilus, thunar etc. Además de un navegador web. Si este entorno no te resulta amigable, podemos configurarlo copiando el archivo de configuración menu.xml a nuestro directorio de usuario y editarlo:


     cp /etc/xdg/openbox/menu.xml $HOME/.config/openbox/menu.xml
 
Tenemos aplicaciones para facilitar esto, instalaremos menumaker feh y tint2 para dejar un escritorio un poco más completo.


     sudo wget "http://sourceforge.net/projects/menumaker/files/latest/download" -O menumaker.tar.gz
     sudo wget "url de una imagen" -O image.ext (extensión)
     sudo aptitude install feh tint2


Desempaquetamos menumaker y lo ejecutamos:


     tar xzvf menumaker.tar.gz
 
 
menumaker es una aplicación que lista las aplicaciones y genera un menú contextual. Para ello nos dirigimos al directorio de la aplicación


    cd menumaker.(version)
    ./mmaker OpenBox3
 
 
23.png


Para poner un fondo de escritorio utilizaremos feh. Para ello tipeamos en el terminal:


      feh --bg-scale /ruta/de/la/imagen/image.ext


24.png


Ahora hacemos que todo se cargue al inicio:


     nano ~/.config/openbox/autostart.sh


Modificamos el script con esto:


     #!/bin/sh 
     # feh stores the last background in .fehbg 
     eval `cat $HOME/.fehbg` &
     tint2 & 
     if pgrep tint2 
     then exec openbox 
     else tint2 && exec openbox 
     fi


Reiniciamos y comprobamos que todo se carga al inicio.


25.png


hostname & hosts



Para cambiar el nombre del equipo debemos editar los archivos "hostname" y "hosts" situados en el directorio /etc.


     sudo nano /etc/hostname
 
Cambiamos el nombre del equipo por servidorLDAP - o lo que creamos conveniente -.


26.png


Si nuestra máquina es parte de un dominio u ofrece algún servicio como LDAP, debemos editar el fichero hosts. Si nuestro domino es "midominio.org", añadimos la siguiente línea:


     sudo nano /etc/hosts
     servidorLDAP.midominio.org ->  hostname.domain             servidorLDAP -> alias


Ejemplo de fichero "hosts"


Ho.png


Editaremos la línea "127.0.1.1" y guardamos


Para comprobar que los cambios se han realizado correctamente tipearemos los siguientes comandos:

     hostname -s -> Debe devolver el nombre de la máquina.
     hostname -d -> Debe devolver el nombre del dominio.
     hostname -f -> Devolverá el nombre completo.