# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

The Debian Administrator’s Handbook

The Debian Administrator’s HandbookGracias a www.ubuntips.com.ar he descubierto este recurso que seguro a más de uno le viene muy bien. Se trata de una guía disponible online, como eBook o en libro tradicional que comenzó siendo una traducción del best-seller francés “Cahier de l’admin Debia”.

The Debian Administrator’s Handbook enseña todo lo fundamental para ser un buen administrador de sistemas Debian GNU/Linux y derivados, y por consiguiente para tener una buena base en cualquier sistema GNU/Linux. El proyecto ha sido realizado por dos desarrolladores de Debian, Raphaël Hertzog y Roland Mas.

El libro está disponible bajo la licencia Debian Free Software Guidelines. Lo podéis conseguir por todas estas vías:

  1. Leerlo online.
  2. eBook/libro físico.
  3. Descargas las fuentes y contribuir.

FAQ de RHCS (Red Hat Cluster Suite)

Lo primero de todo, perdonad la falta de actualización durante las últimas semanas, no he estado en España y tampoco he tenido el tiempo suficiente para escribir en el blog, estudiar, etc. Vamos a ir retomando poco a poco el ritmo. Hoy simplemente os quiero dejar un enlace para que lo guardéis en vuestros favoritos. Os será de gran utilidad si administráis RHCS (Red Hat Cluster Suite).

Se trata de las FAQ (Frequently asked questions/Preguntas frecuentes) relacionadas con el clustering de Red Hat (en este caso a través de Fedora). Encontraremos un montón de preguntas resueltas sobre problemas comunes que nos encontramos en este sistema de Cluster, también configuraciones típicas, operación, etc. Para hacerlo más claro y fácil de revisar, está separado por secciones según componentes (cman, fencing, GFS, CLVM, DLM, rgmanager, etc).

¡Espero que os sean de utilidad!

Cómo instalar Oracle Solaris 11 Express

Hoy vamos a ver lo sencillo que resulta instalar Oracle Solaris 11 Express 2010.11 tanto en una máquina virtual como en un equipo físico. Lo primero que tenemos que hacer es descargar la imagen de instalación correspondiente desde este enlace del sitio web de Oracle (es necesario registro). En mi caso, como es habitual he utilizado la versión de instalación en modo texto para x86.

Vamos a ello, arrancamos el equipo con un CD con la imagen ISO grabada y empezamos la instalación. Seleccionamos el tipo de teclado, en nuestro caso ’39′ (español):

Ahora toca elegir el idioma, en mi caso selecciono inglés ya que prefiero instalar los sistemas en inglés que en español, sobre todo porque a la hora de buscar documentación y errores hay mucha más información:

Comienza la instalación de Oracle Solaris, elegimos ’1′ para empezar:

Tras la pantalla de bienvenida, empezamos con la configuración de discos y particiones. Primero toca elegir el disco sobre el que hacer la instalación y después la estructura de particiones. En este caso es un disco virtual sobre Virtualbox, así que elegimos el único disco disponible y usamos todo el disco para instalar el sistema.

Ahora introducimos el nombre de la máquina (hostname) y especificamos si deseamos que la configuración de red sea automática o si preferimos realizarla de forma manual posteriormente:

Establecemos la configuración regional del equipo, fecha, etc:

Llega el momento de asignar una clave al usuario root y la creación de una cuenta de usuario extra:

Antes de comenzar la instalación, podemos ver un resumen de las opciones configuradas y elegir cambiar alguna de ellas volviendo atrás (F3):

Cuando todo esté correcto, presionamos F2 y la instalación comenzará:

Una vez finalizada la instalación sólo nos queda presionar F8 para hacer un reboot y ya podemos comenzar a disfrutar de nuestro sistema Oracle Solaris:

alex@solaris:~$ uname -a
SunOS solaris 5.11 snv_151a i86pc i386 i86pc

En las próximas entradas empezaremos a ver cómo configurar las interfaces de red, la instalación de paquetes y una visión general del sistema.

LDAP (OpenLDAP): instalación y configuración (I)

LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

OpenLDAPLlevaba tiempo queriendo probar LDAP y finalmente me he decidido, sobre todo por el hecho de utilizarlo para autenticación y gestión de usuarios de forma centralizada. Pese a no poder ponerlo en práctica de momento a gran escala, me conformo con hacer alguna que otra prueba con pequeños entornos virtuales.

En esta entrada voy a tratar de momento lo más básico de OpenLDAP. Sobre todo no voy a entrar prácticamente en todo lo relacionado con creación “manual” de arboles de directorios pues de momento no domino al 100% la estructuración de objetos y demás, vamos a usar los scripts que ofrece OpenLDAP para migración e importación de objetos.

Instalación de OpenLDAP

La instalación de OpenLDAP (implementación Open Source de LDAP) la vamos a hacer a través de YUM (RHEL, CentOS, Fedora…), en Debian o similar podéis hacerlo por APT, no tiene mayor complicación.

# yum install -y openldap openldap-servers openldap-clients

Configuración inicial/básica de OpenLDAP

La configuración básica que tenemos que revisar una vez instalado se encuentra en el fichero de configuración slapd.conf. Lo primero que especificamos es la definición de una base de datos o directorio en la que almacenaremos toda la información (bdb en este caso), la información/sufijo del dominio (ldap-db.com en nuestro caso) y el DN que tendrá acceso total (root, Manager o como queráis llamarlo) sin restricciones a la información (rootdn).

A tener en cuenta respecto al suffix, que en este caso es ldap-db.com es que al especificarlo se separa el nombre del dominio (ldap-db) y su TLD (com). Se pueden especificar varios pero es necesario mínimo uno para cada base de datos:

# vim /etc/openldap/slapd.conf

database          bdb
suffix          "dc=ldap-db,dc=com"
rootdn          "cn=gestion,dc=ldap-db,dc=com"
rootpw          {SSHA}6SPjVCdtjv2aC3O+pvddSiFkdKGEAa3sH

La string que véis en rootpw es la clave del usuario de gestión (rootdn), la hemos generado con el comando slappaswd:

# slappasswd
New password:
Re-enter new password:
{SSHA}6SPjVCdtjv2aC3O+pvddSiFkdKGEAa3sH

Ya podemos arrancar el servidor ldap, también lo configuramos para que arranque de forma automática tras reinicios:

# /etc/init.d/ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]

# chkconfig ldap on

Cómo insertar o importar registros en la base de datos LDAP

Ahora mismo ya tenemos inicializada nuestra base de datos bdb, pero no hay ningún dato en ella. Todo lo relacionado con la arquitectura y estructuración de la base de datos es un tema muy extenso y complejo, así que os emplazo a la documentación en www.openldap.org para familiarizaros con ella. Lo que vamos a hacer en este caso es exportar los usuarios y grupos de sistema (junto con sus claves) a formato ldif para tenerlos dentro del directorio LDAP y poder usar la autenticación a través de él. Para ello utilizamos los scripts en perl que nos ofrece el propio OpenLDAP. Se encuentran en:

/usr/share/openldap/migration

Estos scripts permiten migrar al formato ldif toda la información del sistema. Lo primero que hacemos es configurar unas variables en el script migrate_common.ph:

$DEFAULT_MAIL_DOMAIN = "ldap-db.com";
$DEFAULT_BASE = "dc=ldap-db,dc=com";
# Las siguientes variables es por si queremos evitar
# la exportación de usuarios y grupos de sistema que
# no interesan...
$IGNORE_UID_BELOW = 1000;
$IGNORE_GID_BELOW = 100;
$IGNORE_UID_ABOVE = 9999;
$IGNORE_GID_ABOVE = 9999;

Después importamos la base de la configuración:

# /usr/share/openldap/migration/migrate_base.pl > base.ldif
# ldapadd -x -W -D 'cn=gestion, dc=ldap-db, dc=com' -h 127.0.0.1 -f base.ldif
Enter LDAP Password:
adding new entry "dc=ldap-db,dc=com"
adding new entry "ou=Hosts,dc=ldap-db,dc=com"
adding new entry "ou=Rpc,dc=ldap-db,dc=com"
adding new entry "ou=Services,dc=ldap-db,dc=com"
adding new entry "nisMapName=netgroup.byuser,dc=ldap-db,dc=com"
adding new entry "ou=Mounts,dc=ldap-db,dc=com"
adding new entry "ou=Networks,dc=ldap-db,dc=com"
adding new entry "ou=People,dc=ldap-db,dc=com"
adding new entry "ou=Group,dc=ldap-db,dc=com"
adding new entry "ou=Netgroup,dc=ldap-db,dc=com"
adding new entry "ou=Protocols,dc=ldap-db,dc=com"
adding new entry "ou=Aliases,dc=ldap-db,dc=com"
adding new entry "nisMapName=netgroup.byhost,dc=ldap-db,dc=com"

Después podemos ya hacer lo mismo para los usuarios y grupos del sistema, de esta forma ya tendremos los objetos base de la base de datos/árbol LDAP y todos los usuarios y grupos del sistema:

# /usr/share/openldap/migration/migrate_group.pl /etc/group /tmp/group.ldif
# /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd /tmp/passwd.ldif

E importamos al árbol LDAP:

# ldapadd -x -W -D 'cn=gestion, dc=ldap-db, dc=com' -h 127.0.0.1 -f passwd.ldif
Enter LDAP Password:
adding new entry "uid=root,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=bin,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=daemon,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=adm,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=lp,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=sync,ou=People,dc=ldap-db,dc=com"
adding new entry "uid=shutdown,ou=People,dc=ldap-db,dc=com"
...
...
...

# ldapadd -x -W -D 'cn=gestion, dc=ldap-db, dc=com' -h 127.0.0.1 -f group.ldif
Enter LDAP Password:
adding new entry "cn=root,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=bin,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=daemon,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=sys,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=adm,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=uucp,ou=Group,dc=ldap-db,dc=com"
adding new entry "cn=man,ou=Group,dc=ldap-db,dc=com"
...
...
...
...

Y si ahora lanzamos una consulta contra LDAP veremos estas entradas reflejadas:

# ldapsearch -x -b 'dc=ldap-db,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# ldap-db.com
dn: dc=ldap-db,dc=com
...
...

Configurar el sistema para autenticar contra LDAP

Una vez configurado OpenLDAP podemos hacer lo propio con el sistema para que utilice su directorio de forma activa. En este caso utilizando la autenticación en el sistema de usuarios a través de LDAP.

Tenemos que modificar el fichero /etc/nsswitch.conf e indicarle que la autenticación a través de passwd/shadow/group también se puede hacer vía LDAP:

passwd:  files ldap
group:  files ldap
shadow:   files ldap

Luego modificamos el fichero /etc/ldap.conf indicando:

URI ldap://<IP_SERVIDOR_LDAP_O_FQDN:389/
base dc=ldap-db,dc=com

Bien, ahora usando el comando getent podemos verificar si está cogiendo los datos vía LDAP, si salen los usuarios dos veces es que lo coge bien (una por passwd y otra por LDAP):

# getent passwd | grep alex
alex:x:27:27:Alex Garcia:/var/lib/mysql:/bin/bash
alex:x:27:27:Alex Garcia:/var/lib/mysql:/bin/bash

Si ahora borraramos el usuario “alex” del passwd y shadow (visudo, vipw y vigr: editando ficheros críticos en Linux de forma segura), aparecería sólo una vez, pero podríamos seguir haciendo login con el usuario, porque lo coge de LDAP. Guardar un backup antes de los ficheros que modifiquéis:

# getent passwd | grep alex
alex:x:27:27:Alex Garcia:/var/lib/mysql:/bin/bash

Activar log de LDAP

Vamos a activar el logging de LDAP para verificar que todo funciona OK. Para ello añadimos la siguiente línea al fichero /etc/openldap/slapd.conf:

loglevel 128

Luego a nivel de syslog, en el fichero /etc/syslog.conf:

local4.*                  /var/log/ldap.log

Y reiniciamos:

# /etc/init.d/syslog restart && /etc/init.d/ldap restart

Volviendo a la prueba de antes, si la hacéis de nuevo y hacéis login con un usuario veréis que autentica vía LDAP en el log:

Aug 31 01:19:16 cluster02 slapd[2312]: => access_allowed: search access to "uid=alex,ou=People,dc=ldap-db,dc=com" "objectClass" requested
Aug 31 01:19:16 cluster02 slapd[2312]: => access_allowed: backend default search access granted to "(anonymous)"
Aug 31 01:19:16 cluster02 slapd[2312]: => access_allowed: search access to "uid=alex,ou=People,dc=ldap-db,dc=com" "uid" requested
Aug 31 01:19:16 cluster02 slapd[2312]: => access_allowed: backend default search access granted to "(anonymous)"
Aug 31 01:19:16 cluster02 slapd[2312]: => access_allowed: read access to "uid=alex,ou=People,dc=ldap-db,dc=com" "entry" requested

 

En próximas entradas veremos entre otras cosas como por ejemplo configurar ssh para que use también la autenticación LDAP, añadir y borrar registros, tareas de mantenimiento en el árbol de directorios, etc.

Segundo artículo aquí:

Usar autenticación LDAP (OpenLDAP) con OpenSSHD (sshd)

Lighttpd: proteger una carpeta o website con contraseña

LighttpdSi utilizamos Lighttpd y necesitamos una funcionalidad similar a la que nos ofrece el servidor web Apache para proteger con password un directorio o virtualhost (en este caso vía .htaccess o directamente en el virtualhost con AuthType, AuthUserFile…) debemos hacer uso del módulo mod_auth y sus directivas. Vamos a ver como configurarlo.

Lo primero que debemos hacer es ver si el módulo está cargado en la configuración, para ello abrimos el fichero de configuración y revisamos la sección server.modules, donde debería mod_auth, sino lo añadís:

/etc/lighttpd/lighttpd.conf
server.modules              = (
            "mod_access",
            "mod_accesslog",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_auth",
            "mod_cgi"
)

Después tenemos que configurar las tres directivas disponibles para la autenticación, el tipo de autenticación, el fichero en el que se almacenarán los datos de usuarios y claves y el nivel de debug:

auth.backend               = "htpasswd"
auth.backend.htpasswd.userfile = "/home/miwebsite/.lighttpdpasswd"
auth.debug = 0

Mediante auth.backend podemos especificar el tipo de autenticación, puede ser en texto plano (plain) o mediante htpasswd o LDAP. Elegimos htpasswd para tener la clave encriptada. Luego el fichero donde se almacenan las claves lo especificamos también (auth.backend.htpasswd.userfile). Finalmente el debug para verificar el funcionamiento, con 0 queda desactivado, con 1 vuelca a los logs cuando la autenticación es correcta y con 2 vuelca todo (access.log y error.log).

Ahora creamos fuera de la carpeta pública del sitio web el fichero con los usuarios y sus claves encriptadas por htpasswd:

# vim /home/miwebsite/.lighttpdpasswd
foo:soAb7vp63UATv7uaA2
chown lighttpd /home/miwebsite/.lighttpdpasswd && chmod 0600 .lighttpdpassword

Finalmente sólo nos queda seleccionar que directorio o website queremos proteger. Para ello buscaremos la sección $HTTP["host"] que contenga la web/directorio a proteger:

En negrita lo relacionado con la autenticación:

$HTTP["host"]  =~ "test.com" {
  server.document-root = "/home/test-com/"
  accesslog.filename         = "/var/log/lighttpd/test-access.log"
 auth.require = ( "/carpeta-protegida/" =>
 (
  "method" => "basic",
  "realm" => "Password protected area",
  "require" => "user=foo"
 )
 )
}

Y ya podemos reiniciar lighttpd para activar los cambios. En este caso la carpeta test.com/carpeta-protegida/ quedará protegida y únicamente el usuario foo podrá acceder.

# /etc/init.d/lighttpd restart

Cómo instalar CentOS 6

Vamos a ver como instalar paso a paso la nueva versión de CentOS (6.0) que salió a la luz hace pocos días y tras muchos meses de espera. Vamos a seguir los mismos pasos que con la instalación de CentOS 5. Realizaremos una instalación mínima a través de la ISO netinstall.

El primer paso es descargar la ISO correspondiente desde un mirror de CentOS, por ejemplo:

ftp://ftp.udl.es/pub/centos/6.0/isos/

Podréis seleccionar tanto la versión de 32 como 64 bits. En esta guía vamos a instalar la versión de 32 bits:

CentOS-6.0-i386-netinstall.iso

Una vez bajada comenzamos la instalación arrancando con la ISO grabada en un CD. Nos encontraremos la pantalla de bienvenida, seleccionamos la primera opción:

Como instalar CentOS (1)

La primera opción que encontraremos será la de realizar un test del CD de instalación, podemos saltarla sin problemas a no ser que encontremos fallos extraños durante la instalación provocados por un CD defectuoso.

Sigue leyendo el resto de la entrada »

Cómo extraer vídeo, audio y subtitulos de un contenedor MKV

Existe una herramienta llamada MKVExtractGUI, gratuita y para Windows que permite extraer de forma muy sencilla el contenido de un contenedor MKV. Normalmente este tipo de ficheros cuentan con vídeo, audio, imágenes y subtítulos.
 

mkvextractgui

 
 
Como podéis ver en la imagen, el proceso es tan simple como:

  1. Seleccionar el archivo MKV a manipular (Input File).
  2. Elegir el directorio de destino para los ficheors extraidos (Output Dir). Podemos elegir el mismo directorio en el que se encuentra el fichero original marcando Source Dir.
  3. Seleccionar las pistas que queramos extraer, ya sea de audio, vídeo o subtitulos.
  4. Pinchar en Extract.

Este programa puede ser de utilidad, por ejemplo para aquellos que necesitan modificar los codecs de el audio o el vídeo o extraer los subtítulos para que sean compatibles con el reproductor multimedia.

Para usuarios de GNU/Linux, está disponible mkvextract, aplicación de línea de comandos disponible desde cualquier repositorio, podéis ver el funcionamiento en la página man del comando (muy sencillo también).

Podéis descargar MKVExtractGUI desde el sitio web oficial.

Howto: convertir audio DTS a AC3 en Linux

Audio DTSHoy vamos a aprender a convertir las pistas de audio de películas MKV que se encuentren en formato DTS (Digital Theater System) a AC3 (Dolby Digital) en sistemas GNU/Linux. El manual es aplicable a cualquier tipo de distribución excepto la parte de los requerimientos, que es únicamente para sistemas basados en Debian (p.ej Ubuntu) ya que hacemos uso del gestor de paquetes apt. Para otras distribuciones simplemente instalar las dependencias que se muestran a continuación con el gestor de paquetes que tengáis instalado (yum, apt, etc).

El proceso de conversión es realmente sencillo, únicamente necesitamos bajar este script programado en bash y ejecutarlo del siguiente modo dentro de la línea de comandos (terminal):

mkvdts2ac3.sh pelicula.mkv

El script utiliza ciertas librerías por lo que para evitar cualquier error de dependencias, las instalamos, ejecutamos el siguiente comando desde la terminal (si os resulta más sencillo, también lo podéis hacer desde Añadir o quitar aplicaciones, aunque no lo es), de todas formas si faltara cualquier requerimiento el propio script os avisaría (usamos apt en sistemas debian/ubuntu):

sudo apt-get install mkvtoolnix libdca0 libdca-dev aften

Y esto es todo, para el que le guste trastear, el script permite personalizar estas modificaciones. Por ejemplo podemos añadir una nueva pista AC3 en lugar de sustituir la DTS (de este modo mantenemos las dos), dejar la nueva pista AC3 como pista por defecto, borrar la pista DTS tras la modificación, etc.