viernes, 25 de septiembre de 2009

Instalando Mandriva MDS 2.3.2 en Centos 5.x

Vamos a instalar el mandriva MDS para administrar nuestro servidor PDC con Linux y teniendo a LDAP sirviendo como base de datos del dominio.

Antes de seguir este manual, ya debemos tener el dominio funcionando, samba+ldap sin problemas, junto con smbldap-tools. Aquí no les proporciono con hacer lo anterior, eso queda en otra ocasión.

Mandriva nos proporciona las fuentes de los siguientes paquetes

mmc-agent-2.3.2.tar.gz
mmc-web-base-2.3.2.tar.gz
mmc-web-mail-2.3.2.tar.gz
mmc-web-network-2.3.2.tar.gz
mmc-web-proxy-2.3.2.tar.gz
mmc-web-samba-2.3.2.tar.gz

Yo solo necesito estos:

mmc-agent-2.3.2.tar.gz
mmc-web-base-2.3.2.tar.gz
mmc-web-samba-2.3.2.tar.gz

Por el momento, así que son los que bajo, siguiendo el manual nos habla de ciertos paquetes que debemos instalar, pero no todos, aquí les proporciono todos.

Les recuerdo que el apache debe estar operando "ya" junto con php para empezar, ya que los tengan funcionando, entonces si continúan con este manual.

Otra cosa que deseo aclarar, esto les debe funcionar con php 5.x, ya que en estos momentos me vi en la necesidad de instalar php 5.3 lo cual me llevo a instalar cada uno de los módulos de php en la misma versión, pero la instalación anterior use la distro que viene por defecto en Centos 5.3 que es php-5.1. Así que les debe funcionar con esta versión sin problemas.

Vamos empezando la instalación de cada uno, así los fui instalando yo.

redhat-lsb
python-twisted
python-ldap
python-libacl
python-psycopg
postgresql-python
mx
python-twisted-web
PyXML
python-fpconst
python-soap
php-xml
php-xmlrpc

Ya que terminen reinician el apache para que cargue de nuevo todos estos módulos de php.

Bien vamos a seguir, como ya bajamos el código fuente, vamos empezando por descomprimir y compilar según el manual:

# tar xzf mmc-agent-x.y.z.tar.gz
# cd mmc-agent-x.y.z
# make install

¿No marco error, correcto?

Como al momento de compilar Centos no agrega el servicio a su lista de arranque ahí
que hacerlo:

chkconfig --add mmc-agent

Ahora le toca a el mmc-web-base:

# tar xzf mmc-web-base-x.y.z.tar.gz
# cd mmc-web-base-x.y.z
# make install HTTPDUSER=apache

Ahora le toca a el mmc-web-samba:

# tar xzf mmc-web-samba-x.y.z.tar.gz
# cd mmc-web-samba-x.y.z
# make install

NOTA: Sí les marco error, debe corregirlo o pedir ayuda, hasta la fecha nunca he tenido problemas a la hora de compilar estos paquetes, por ello desconozco que tipo de errores les pueden suceder.

Agregar el schema de mds a ldap, este se localiza en donde descomprimieron las fuentes de mmc-agent, aquí:

mmc-agent-2.3.2/contrib/ldap/mmc.schema

Y lo debemos copear donde ldap guarda los demás schemas /etc/openldap/schema/
Y ahora debemos editar el archivo de configuración de ldap (slapd.conf) para incluir este schema, según el manual debe estar después del inetorgperson.schema, algo así:

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/mmc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schemama

Ahora si reiniciar el servicio de ldap y no debe arrojar ningún error:

[root@mi-server plugins]# service ldap restart
Stopping slapd: [ OK ]
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

MDS cuando lo compilamos coloca todos sus archivos de configuración en "/etc/mmc/".

Si desean darle un vistazo a el archivo de configuración del mmc-agent, este se localiza en /etc/mmc/agent/config.ini, a este no hay mucho que hacerle al menos que quieran jugar con él, no hay problema si saben cómo regresarlo a su estado original (cp...:-)).

Editar el archivo de configuración "/etc/mmc/plugins/base.ini" y modificarlo de acuerdo a su dominio, en mi caso mi dominio es "basura", así que sería algo así:

[ldap]
# LDAP we are connected to
host = 127.0.0.1
# LDAP base DN
baseDN = dc=basura
# Users location in the LDAP
baseUsersDN = ou=Users, %(basedn)s
# Groups location in the LDAP
baseGroupsDN = ou=Groups, %(basedn)s
# LDAP manager
rootName = cn=Manager, %(basedn)s
password = mi-ldap-password
# If enabled, the MMC will create/move/delete the home of the users
# Else will do nothing, but only write user informations into LDAP
userHomeAction = 1
# Skeleton directory to populate a new home directory
skelDir = /etc/skel
# If set, all new users will belong to this group when created
defaultUserGroup = Domain Users
# Default home directory for users
defaultHomeDir = /home
# user uid number start
uidStart = 10000
# group gid number start
gidStart = 10000
# LDAP log file path
logfile = /var/log/ldap.log
# FDS log file path
# logfile = /opt/fedora-ds/slapd-hostname/logs/access

# you can specify here where you can authorized creation of your homedir
# default is your defaultHomeDir
# example:
# authorizedHomeDir = /home, /home2, /mnt/depot/newhome

# LDAP user password scheme to use
# Possible values are "ssha" and "crypt"
passwordscheme = ssha

[userdefault]
shadowExpire = DELETE

[backup-tools]
# Path of the backup tools
path = /usr/local/lib/mmc/backup-tools
# Where are put the archives
destpath = /home/archives

Son en realidad pocos los parametros que deben cambiar, principalmente el nombre
de su dominio, el password del servidor ldap, el usuario administrador, casi todo lo demas queda igual.

En la parte de "[backup-tools]" es importante crear el directorio que ahí marca "/home/archives/", así que deben hacerlo de lo contrario mmc no arrancara o al menos si desean moverlo de lugar deben indicarlo.

El archivo tiene mas parámetros abajo, pero esos no me interesan.

Tenemos más plugins como:

mail.ini
network.ini
proxy.ini

Estos los encontraran en /etc/mmc/plugins, como no voy a utilizarlos, los deshabilito abriendo cada uno de los archivos y cambiando el parámetro "disable" de 0 a 1, así:

[main]
disable = 1

Guardamos y listo, con esto le digo a mmc que no los ejecute.

Yo solo voy a usar el base.ini y samba.ini, el archivo de configuración para el plugin de samba, no está hecho específicamente para Centos, así que tenemos que hacerle unos cambios, el mío lo deje así

[main]
disable = 0
# Computers Locations
baseComputersDN = ou=Computers, dc=basura
sambaConfFile = /etc/samba/smb.conf
sambaInitScript = /etc/init.d/smb
sambaClamavSo = /usr/lib/samba/vfs/vscan-clamav.so
# Default SAMBA shares location
defaultSharesPath = /opt
# You can specify authorized paths for share creation
# Default value is the defaultSharesPath value
# authorizedSharePaths = /shares, /opt, /srv

# Default value when adding samba attributes to an user
# DELETE means the attibute is removed from the user LDAP entry
[userdefault]
sambaPwdMustChange = DELETE

El principal cambio es este párametro:

sambaInitScript = /etc/init.d/smb

Ya que originalmente tiene el nombre samba, pero Centos le llama smb, guardan y salen.

Ahora sí, vamos a arrancar el servicio de mmc-agent:

service mmc-agent start
Starting Mandriva Management Console : mmc-agent : done.

Que bien, no marco ningún error como podrán ver, si ustedes desean verificar si tiene el puerto está escuchando:

netstat --inet -al | grep 7080

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost.localdomain:7080 *:* LISTEN

Ahi lo tienen, escuchando en el puerto 7080.

Seguimos con el apache, para que el apache pueda desplegar este paquete, debemos agregar ciertos parámetros a el archivo de configuración de apache, para ello MDS ya hizo esto, cuando descomprimieron el archivo mmc-web-base, dentro localizaran el archivo: "mmc.conf" aquí:

mmc-web-base-2.3.2/confs/apache

Este lo debemos copean en:

root# cp mmc.conf /etc/httpd/conf.d/

Debemos reiniciar el apache para que actualice su configuración y agregue este archivo a su arranque.

service httpd restart
Stopping httpd: [ OK ]
Starting httpd: Syntax error on line 9 of /etc/httpd/conf.d/mmc.conf:
Invalid command 'php_flag', perhaps misspelled or defined by a module not included in the server configuration
[FAILED]

Les puede marcar este error, asi que tebemos que abrir el archivo que le dimos a el apache para buscar esa linea que marca error, si abrimos ese archivo tenemos esto:

### Add an alias /mmc on www server root
Alias /mmc /usr/local/share/mmc

### Allow access to lmc web directory to everyone

AllowOverride None
Order allow,deny
allow from all
php_flag short_open_tag on <<<<<<<<

Ese parametro "php_flag short_open_tag on" es un parametro de php y lo pueden localizar en el archivo de configuracion general del php llamado php.ini y esta en /etc, y como yo ya lo tengo configurado no tiene caso aqui volverlo a declarar, asi que solo lo comento y listo.

service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

Bien, ahora si apunten su navegar a la dirección de su nuevo servidor mds:

http://W.X.Y.Z/mmc

Deben ver una imagen parecida a esta:


Ahora, mi usuario administrador se llama "Manager", pero MDS quiere que sea root, así que no hay problema, tecleo root y le pongo el password del administrador de mi dominio y listo, acceso a la interfaz del MDS, verán algo parecido a esto:




Le dan un click en "User list" y les mostrara los usuarios de su dominio:



Esto nos indica que MDS está listo para administrar todos los usuarios de su dominio con Samba+LDAP, ya no necesitan ingresar a la consola para agregar, modificar y eliminar usuarios, cambiar passwords, eliminar computadoras, todo lo podrán hacer desde aquí.

Aun falta la parte del correo, pero aun no le tengo listo así que pronto vamos a actualizarlo, con esto podrán hacer lo mismo pero con el correo.

Si encuentran algún error de cualquier tipo de favor háganmelo saber para corregirlo.

Saludos y hasta pronto!!!

martes, 8 de septiembre de 2009

Cambiar Password del Administrador de LDAP.

Necesito cambiar el password del administrador del LDAP, yo no le llamo por defecto "root", yo uso "Manager".

1; Sacar via slappwd el hash del nuevo password:

root# slappasswd
New password:
Re-enter new password:
{SSHA}gvnVHR/BnKw+4oCi7TJNFy4Ezm43IIho

Cada hash es de acuerdo a su password.

2; Agregar nuevo hash a el archivo slapd.conf

rootpw {SSHA}gvnVHR/BnKw+4oCi7TJNFy4Ezm43IIho

3; Reiniciar el ldap server:

root# service ldap restart
Stopping slapd: [ OK ]
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

4; Darle el nuevo password del administrador de LDAP a samba:

root# smbpasswd -W Manager
Setting stored password for "cn=Manager,dc=rmai,dc=local" in secrets.tdb
New SMB password:
Retype new SMB password:

5; Reiniciar samba.

6; Darle el nuevo password a smbldap-tools, editando el archivo smbldap_bind.conf

slaveDN="cn=Manager,dc=rmai,dc=local"
slavePw="nuevopwd"
masterDN="cn=Manager,dc=rmai,dc=local"
masterPw="nuevopwd"

7; Le cambiamos el password a el administrador atraves de smbldap-password tambien:

smbldap-passwd Manager
Changing UNIX and samba passwords for Manager
New password:
Retype new password:

8; Como tenemos a pure-ftpd via LDAP tambien ahi que darle el nuevo password editando el archivo pureftp-ldap.conf:

LDAPBindPW nuevopwd

9; Reiniciamos pure-ftpd.

service pure-ftpd restart
Stopping pure-ftpd: [ OK ]
Starting pure-ftpd: [ OK ]

10; Hacer esto con todos las aplicaciones que se autentifiquen con LDAP.

11; Probar el nuevo password:

ldapsearch -x -b "dc=rmai, dc=local" -D "cn=Manager, dc=rmai, dc=local" -W
Enter LDAP Password:

Sale un listado de todo lo encontrado, aqui solo pongo lo ultimo:

# search result
search: 2
result: 0 Success

# numResponses: 25
# numEntries: 24

Ahora, probamos con samba:


smbclient -L //rmaipdc -U Manager
Password:
Domain=[RMAI] OS=[Unix] Server=[Samba 3.0.33-3.7.el5_3.1]

Sharename Type Comment
--------- ---- -------
netlogon Disk Default Share
IPC$ IPC IPC Service (RMAI Domain Server)
Manager Disk Home Directories
Domain=[RMAI] OS=[Unix] Server=[Samba 3.0.33-3.7.el5_3.1]

Server Comment
--------- -------
RMAIPDC RMAI Domain Server

Workgroup Master
--------- -------
RMAI RMAIPDC


Todo funcionando de nuevo, animo!!!

sábado, 29 de agosto de 2009

Centos 5 Samba PDC con LDAP

Hola, aqui de nuevo, hace tiempo que no agrego nada, esta vez tengo un bonche de cosas que escribir, ya que si no lo hacemos se nos olvida y creo que todo lo que a continuacion voy a redactar les va a servir a muchos administradores de dominios como yo.

Si no estamos amarrados del Active Directory entonces Samba es la opcion a seguir por muchos factores tanto de costo como seguridad, que no voy a entrar en detalles ya una buscada al respecto y se encontraran con muchos sitios que habla del tema.

Me vi en la tarea de implementar un PDC con Samba teniendo como bd a Ldap, con estas dos herramientas y otras mas que por ahi luefo se las digo, vamos a crear un dominio tipo NT4 para nuestra red pero con Linux.

Ya no tenemos la necesidad de tener que adquirir las costosas licencias tanto del OS como del antivirus que tienes que comprar de rigor, no hay de otra. Como mencione arriba, si no estamos atados a Active Directory, este es el camino.

Me llevo algo de tiempo comprender como crear esta configuracion, y hacerla funcionar, pero al final valio la pena. Despues de varios dias leyendo, configurando, resinstalando el OS de nuevo por fin ya puedo plasmar los pasos, uno a uno para no perderme y la proxima vez solo venir a este espacio y hacerlo ya casi de copy-paste.

El server con el que estoy trabajando es un Dell PowerVault 745N y tiene estas caracteristicas:

P4 2.8Ghz
1.5GB RAM
140GB Disco Duro.

El problema que le encontre, es que no vi la manera de como adaptarle un lector de DC/DVD, por mas que le busque, estos amigos de Dell si que nos hacen la vida difcil, no se como demonios le meterian el Windows 2k3 que tiene un sticker del COA.

Ademas otro detalle es que tampoco vi la manera de como deshabilitar la tarjeta externa Raid, ya que tiene 2 entradas para Sata en la placa madre, pero ninguna me detecto los discos, ademas segun el manual o conectas los discos en la placa madre o usas los de la tarjeta controladora, que al final me tuve que conformar con la tarjeta controladora, me hubiera gustado usar los discos conectados a la placa madre para implementar un raid mirror por software y no depender de una tarjeta externa.

Leyendo unos articulos la respecto, ya las velocidades de los Raid por software y los Raid por Hardware casi se andan codeando, asi que yo prefiero los primeros, aunque ahi veces que no tienes opcion, como yo.

Voy a usar Centos 5.2 ya que baje el Centos 5.3 pero como que en esos momentos que lo baje algo paso que nunca lo logre instalar, me marco muchos errores, creo que seria la distro, ya que vi varios posts de otros usuarios con problemas con esta version.

No importa, de ahi nos vamos a brincar a la 5.3 para tener todo a el dia, es recomendable actualizar su distro minimo 1 vez a la semana, asi lo hago yo.

Como les dije, como no tengo manera de meter el DVD directamente a el server, me vi en la necesidad de implementar un servidor de boteo, al final no estan dificil hacerlo, para ello levante otro servidor con Centos 5.3 virtualizado, para ello use Vmware 2.0.1, todo lo que tiene que ver con virtualizar lo admiro, ya no tenemos que andar metiendole mano a la PC para poder instalar algun OS de prueba, unos cuantos clicks con el raton y listo.

Configurando a PXE

Como utilizo pfsense(pfsense.org) como fw, este gran OS trae un dhcp server, ahi mismo viene una opcion para levantar un servidor de boteo, ahi solo le digo quien tiene los archivos de arranque y listo, aqui les pongo la imagen para su mayor compresion:


Si ven al imagen, solo le damos 2 parametros:

1; Enter the IP address from the network boot server: IP del servidor que tiene los archivos de arranque.

2; Enter the filename used for network booting, la ruta de los archivos de arranque de ese servidor.

Con eso tenemos, salvamos y como podran darse cuenta ya inicie la implementacion, asi que vivos.

Nos vamos del lado de nuestro servidor de boteo, o sea el Centos, ahi necesitamos tener instalado ciertos paquetes, vamos a ver, dejenme nomas que prenta la maquina virtual para ver esta informacion.

Se supone que el programa que tenemos que utilizar es tftp y ademas el xinetd, las versiones que estamos usando son:

xinetd.i386 2:2.3.14-10.el5
tftp-server.i386 0.42-3.1.el5.centos

Pero vamos aclarando ciertos detalles que no funcionaron como deberia, segun xinetd, los archivos de configuracion estan en /etc, ahi dentro tenemos 2 entradas referentes a el, esta:

/etc/xinetd.conf Archivo Ascii
/etc/xinetd.d Directorio

Los servicios estan dentro del directorio, ahi tenemos todos estos:

-rw-r--r-- 1 root root 1157 Mar 14 2007 chargen-dgram
-rw-r--r-- 1 root root 1159 Mar 14 2007 chargen-stream
-rw-r--r-- 1 root root 1157 Mar 14 2007 daytime-dgram
-rw-r--r-- 1 root root 1159 Mar 14 2007 daytime-stream
-rw-r--r-- 1 root root 1157 Mar 14 2007 discard-dgram
-rw-r--r-- 1 root root 1159 Mar 14 2007 discard-stream
-rw-r--r-- 1 root root 1148 Mar 14 2007 echo-dgram
-rw-r--r-- 1 root root 1150 Mar 14 2007 echo-stream
-rw-r--r-- 1 root root 323 Sep 9 2004 eklogin
-rw-r--r-- 1 root root 347 Sep 6 2005 ekrb5-telnet
-rw-r--r-- 1 root root 326 Sep 9 2004 gssftp
-rw-r--r-- 1 root root 310 Sep 9 2004 klogin
-rw-r--r-- 1 root root 323 Sep 9 2004 krb5-telnet
-rw-r--r-- 1 root root 308 Sep 9 2004 kshell
-rw-r--r-- 1 root root 338 May 10 13:24 rsync
-rw-r--r-- 1 root root 1212 Mar 14 2007 tcpmux-server
-rw-r--r-- 1 root root 507 Aug 1 14:52 tftp
-rw-r--r-- 1 root root 1149 Mar 14 2007 time-dgram
-rw-r--r-- 1 root root 1150 Mar 14 2007 time-stream

Yo solo necesito el tftp, lo abrimos y tenemos esto:

service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}

Voy a aclarar, que por mas que estuve analizando esto nunca logre hacer que funcionara, ya no voy a intentarlo, por que ya de por si me hizo perder mucho tiempo, hasta que me di por vencido, mas adelante regreso aqui.

Bien pero, tftp tiene la opcion de ejecutarse manualmente que es como me funciono, para ello hice lo siguiente:

En mi "/" hice un nuevo directorio llamado tftpboot...

[root@vmmachine /]#mkdir /tftpboot

Le otorgo todos los permisos posibles:

[root@vmmachine /]# chmod 777 tftpboot/

Para ejecutarlo manualmente fue:

[root@vmmachine tftpboot]#in.tftpd -l -a 192.168.50.200:69 -u nobody /tftpboot

El ejecutable esta en: /usr/sbin/

Comprobamos que el puerto este abrierto:

[root@vmmachine tftpboot]# netstat -na | grep 69
udp 0 0 192.168.50.200:69 0.0.0.0:*

Ahi esta el puerto abierto, nos vamos a un equipo con algun cliente tftp, en linux no encontre alguno, si alguien sabe de alguno me lo dice, asi que me fui a windows y ese si trae uno, quien lo viera no?

Probando:

tftp 192.168.50.200 get test.txt
Error on server : Only absolute filenames allowed22.el5.centos.2

Un error, parece que desea toda la ruta del archivo:

C:\Documents and Settings\zorrita\My Documents>tftp 192.168.50.200 get /tftpboot
/test.txt
Transfer successful: 0 bytes in 1 second, 0 bytes/s

Ahi esta funcionando, si les marca un error de acceso denegado, deben irse a "My Documents" ya que por default el "cmd" los coloca en la ruta del usuario por ello les marca ese error.

Una vez hecho, me fui a el manual de Centos donde dice como configurar el servidor PXE, una buscada mas y logre tener estos 2 tutoriales:

http://wiki.centos.org/HowTos/PXE/PXE_Setup
http://www.linux-sxs.org/internet_serving/pxeboot.html

Segun aqui tenemos que tener instalado a xinetd y ademas a syslinux que la version que tengo es:

syslinux.i386 3.82-1.el5.rf

El manual dice que los archivos estan en:

/usr/lib/syslinux

Pero no, en realida estan en:

/usr/share/syslinux/memdisk

Esto por que me puse a buscarlos, en fin luego le escribimos o a lo mejor ya lo hicieron, vamos a seguir. Aqui la instalacion se va hacer atraves de un servidor http, asi que tambien instalamos apache, la version que estoy manejando es:

httpd.i386 2.2.3-22.el5.centos.2

Lo configuran para que corra solo en su red, el manual habla de varios pasos que no vamos a hacer ya que solo vamos a manejar una version de Centos, asi que yo al final solo necesite de copiar este archivo de syslinux:

-rwxrwxrwx 1 root root 16138 Aug 1 13:30 pxelinux.0

Pero tuve que crear el folder:

mkdir /tftpboot/pxelinux.cfg

Ahi dentro hice un archivo de texto llamado: "default" y su contenido es:

prompt 1
default linux
timeout 100

label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=9216 noapic acpi=off

Asi que ahora necesitamos 2 archivos mas:

initrd.img
vmlinuz

Estos los vamos a localizar en el dvd de instalacion, como es una maquina virtual, pues vamos a tener que montar el DVD para sacar esos archivos.

Ya con el DVD a nuestro alcance, vamos a sacar esos archivos los cuales estan en la ruta:

images/pxeboot

Ahora si tenemos que tener los siguientes archivos para que nuestro cliente pueda botear Centos desde la red.

-rwxrwxrwx 1 root root 5669675 Aug 1 13:28 initrd.img
-rwxrwxrwx 1 root root 16138 Aug 1 13:30 pxelinux.0
drwxrwxrwx 2 root root 4096 Aug 30 23:26 pxelinux.cfg
-rwxrwxrwx 1 root root 1806388 Aug 1 13:28 vmlinuz

Mas vale cambiarle el permiso de nuevo a todo el directorio:

[root@vmmachine tftpboot]# chmod -R 777 /tftpboot/

Ya esta listo nuestro servidor de boteo, ahora sigue hechar a volar a apache para que sirva nuestra distro via http, otra cosa interesante de esto, es que no tengo necesidad de copear todo el dvd a nuestro servidor, yo solo lo monto, creo un Alias a el directorio donde monte el DVD y listo, que bonito no...?

Alias /linux /mnt

Options Indexes
AllowOverride None


Creamos el enlace simbolico:

ln -s /mnt/ /var/www/html/

Reiniciamos a apache y listo.

Se van a su navegador y al entrar a: "http://192.168.50.200/linux/", les debe mostrar el contenido del DVD que tenemos montado en /mnt.

Sigamos, ahora ya tenemos listo el servidor, este servidor automaticamente cuando detecta que se tiene ningun SO instalado, va en busca de un servidor de boteo, aunque tiene 2 NIC's, solo una de ellas esta habilitada para esta funcion, la otra no puede botear por red.

Una vez que arranca y botea Centos, nos pide saber cual NIC vamos a usar, por default de las 2 tome la primera, deshabilitamos el IPv6 y usamos nuestro DHCP entregado por Pfsense para darnos una IP.

Despues nos pregunta que como vamos a instalar Centos, ahi le decimos que via http, nos pide el nombre del servidor http aqui le ponemos el IP del apache, y abajo la ruta que es en mi caso linux. por que asi lo configure.

Arriba explique esto, bien una vez que nuestro equipo da con los archivos necesarios para empezar la instalacion, ya lo que sigue ya se lo saben, no voy a entrar en detalles de como se instala Centos, de eso ya hay mucho. Lo unico que si les voy a aclarar es que no instalo nada referente a el X, no ventanas en mis servidores, no hay necesidad de instalarlas para mi.

Una vez que termina y entramos a la consola es hora de actualizar todo el OS, lo hacen y reinician.

Yo en lo personal, cuando estoy haciendo instalaciones de samba, claro que no uso nada referente a firewalls, selinux, y muchos servicios que no es necesario ejecutar para que samba funcione, por ello siempre apago esos servicios:

chkconfig iptables off
chkconfig ip6tables off
chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig netfs off
chkconfig pcscd off
chkconfig portmap off

selinux disable esto se hace al iniciar o bien pueden hacerlo directamente del archivo de configuracion de selinux /etc/selinux/config

SELINUX=disabled
SELINUXTYPE=targeted
SETLOCALDEFS=0

Una ves hecho esto, volvemos a reiniciar el servidor ya que selinux no aplica los cambios hasta que reiniciemos el servidor, metanse a el folder donde se almancena todos los scripts de arranque /etc/init.d, y lean que hace cada uno de ellos, la mera verdad hay muchos que nunca les visto razon de tenerlos ejecutandose aun, por ellos los apago, prefiero darle ese pequeño tiempo de cpu a las aplicaciones que en realidad deben ejecutarse.

Ya que regresamos, ahora si vamos a empezar a trabajar con samba y ldap.

Configurando OpenLDAP.

Nuestro dominio se va a llamar: klabacita.

Necesitamos instalar el openldap server y cliente, asi que nos vamos con el yum:

yum install openldap-servers openldap-clients

Ahora nos vamos a el folder de la configuracion

cd /etc/openldap

respaldamos slapd.conf y ldap.conf por si llegaramos a necesitarlos frescos.

cp slapd.conf slapd.conf.ori
cp ldap.conf ldap.conf.ori

Vamos a crear un folder donde vamos a almacenar la base de datos de nuestro dominio, ldap tiene un folder en la ruta /var/lib/ldap, ahi dentro vamos a crear el folder

cd /var/lib/ldap
mkdir klabacita

Copeamos el archivo DB_CONFIG.example en este folder pero ya sin la extension

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/klabacita/DB_CONFIG

Ahora necesitamos cambiar los permisos de ese folder hacia el usuario ldap y el mismo grupo

chown -R ldap:ldap /var/lib/ldap/

Ahora necesitamos instalar a samba y sus amigos, aqui necesitamos hacerlo por que ldap necesita un archivo que samba proporciona cuando los instalamos.

yum install samba samba-common

El archivo esta en

/usr/share/doc/samba-3.0.33/LDAP

Se llama samba.schema y este archvo se lo tenemos que dar a ldap

cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema

Ahora necesitamos sacar el password de nuestro ldap

slappasswd
New password:
Re-enter new password:
{SSHA}bvy+Zsifm39+sWmxHwzu1j8s+VBP32m1

Por razones obvias el programa no refleja la palabra que usamos como password, pero ustedes deben de recordarla, por la vamos a usar varias veces.

Ese campo de texto se lo tenemos que dar a el archivo slapd.conf

Ahora si, nos vamos a editar el archivo slapd.conf y vamos a dejarlo como sigue, si ustedes quieren ponerle a el dominio otro nombre adelante.

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

# Allow LDAPv2 client connections. This is NOT the default.
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

access to attrs=userPassword,sambaLMPassword,sambaNTPassword,shadowLastChange
by self write
by anonymous auth
by * none
access to *
by * read
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################

database bdb
suffix "dc=klabacita,dc=local"
rootdn "cn=Manager,dc=klabacita,dc=local"
cachesize 100000
dbcachesize 1000000
#lastmod on

rootpw {SSHA}bvy+Zsifm39+sWmxHwzu1j8s+VBP32m1
# rootpw {crypt}ijFYNcSNctBYg

# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap/rmai
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUID eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index default sub

loglevel 256

Ahora nos vamos por el archivo /etc/openldap/ldap.conf, este es mas sencillo:

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE dc=klabacita,dc=local
URI ldap://127.0.0.1/
#HOST 127.0.0.1

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
TLS_CACERTDIR /etc/openldap/cacerts

Les voy a recomendar algo, vuelvan a aplicar los permisos a el folder de la bd

chown -R ldap:ldap /var/lib/ldap

Ahora si iniciamos el servicio ldap

service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

Lo apagamos ya que vamos a crear la estructura del dominio...

service ldap stop

Creamos un archivo como esta, recuerden cambiar su nombre de domonio por el suyo:

dn: dc=klabacita,dc=local
objectClass: dcObject
objectClass: organizationalUnit
dc: klabacita
ou: Klabacita

dn: cn=Manager,dc=klabacita,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: Manager
description: LDAP administrator
userPassword:{SSHA}Ik6PFUBPqcQYA+YJeU48oUnCAehvepP+

dn: ou=Users,dc=klabacita,dc=local
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=klabacita,dc=local
objectClass: organizationalUnit
ou: Groups

dn: ou=Computers,dc=klabacita,dc=local
objectClass: organizationalUnit
ou: Computers

dn: ou=Idmap,dc=klabacita,dc=local
objectClass: organizationalUnit
ou: Idmap

Yo guardo este archivo en /etc/openldap/ y le llame klabacita.ldif, les recuerdo que el parametro userPassword debe ser igual que el que ingresaron en el archivo slapd.conf.

Ahora vamos a ejecutar este comando para encviar esta estrucutra a ldap:

slapadd -v -l /etc/openldap/klabacita.ldif
added: "dc=klabacita,dc=local" (00000001)
added: "cn=Manager,dc=klabacita,dc=local" (00000002)
added: "ou=Users,dc=klabacita,dc=local" (00000003)
added: "ou=Groups,dc=klabacita,dc=local" (00000004)
added: "ou=Computers,dc=klabacita,dc=local" (00000005)
added: "ou=Idmap,dc=klabacita,dc=local" (00000006)

Este comando le cambia los permisos a el folder de la base de datos, asi que vuelvan a cambiar los permisos, ya vieron como...

Y de nuevo ejecuten el servicio del ldap:

service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

Todo bien,
























jueves, 3 de enero de 2008

Bacula lleno mi cinta de respaldo!!!

Bien, he estado teniendo problemas con el sistema de respaldo, pero el problema no es FreeBSD o bacula o la cinta, nada de eso, el problema han sido los usuarios, por que?

Los días anteriores estuve recibiendo mensaje de bacula a mi correo de este tipo:
30-Dec 04:00 bacula-sd JobId 2620: Please mount Volume "FullTape-0024" or label a new one for:
Job: MAIL.2007-12-28_20.35.28
Storage: "StorageWorks-232" (/dev/nsa0)
Pool: MFullTape
Media type: LTO-1

Estos mensajes son cuando el requiere que le proporcionemos otra cinta, en mi caso, si estamos respaldando en disco duro, el mismo toma el volumen solito.

Pero si es un dispositivo de cinta para una sola cinta, nos manda este mensaje, me imagino que los dispositivos multicargadores tomarian la siguiente cinta disponible.

Revisando el problema, me fui a ver como estaban los volumenes en la base de datos y tengo esto:

+---------+---------------+-----------+---------+-----------------+----------+--------------+---------+------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes | VolFiles |
+---------+---------------+-----------+---------+-----------------+----------+--------------+---------+------+
| 2 | FullTape-0002 | Used | 1 | 94,028,175,360 | 100 | 6,912,000
| 3 | FullTape-0003 | Used | 1 | 70,534,388,736 | 74 | 6,912,000
| 6 | FullTape-0005 | Used | 1 | 101,141,591,040 | 106 | 6,912,000
| 7 | FullTape-0006 | Used | 1 | 70,140,607,488 | 73 | 6,912,000
| 9 | FullTape-0007 | Used | 1 | 85,557,040,128 | 88 | 6,912,000
| 11 | FullTape-0008 | Used | 1 | 78,246,862,848 | 82 | 6,912,000
| 13 | FullTape-0009 | Full | 1 | 1,421,263,872 | 1 | 6,912,000 | 16 | FullTape-0010 | Used | 1 | 69,391,078,364 | 73 | 6,912,000
| 30 | FullTape-0011 | Full | 1 | 79,628,903,424 | 82 | 6,912,000 |
| 36 | FullTape-0013 | Used | 1 | 74,269,762,560 | 78 | 6,912,000
| 42 | FullTape-0014 | Used | 1 | 74,910,818,304 | 78 | 6,912,000
| 43 | FullTape-0015 | Used | 1 | 87,342,016,462 | 91 | 6,912,000
| 45 | FullTape-0001 | Used | 1 | 73,082,225,664 | 77 | 6,912,000
| 47 | FullTape-0004 | Used | 1 | 96,514,790,400 | 102 | 6,912,000
| 51 | FullTape-0016 | Used | 1 | 72,709,668,864 | 77 | 6,912,000
| 55 | FullTape-0017 | Used | 1 | 97,137,395,712 | 103 | 6,912,000
| 59 | FullTape-0018 | Used | 1 | 72,848,369,664 | 77 | 6,912,000
| 61 | FullTape-0019 | Used | 1 | 95,234,098,176 | 101 | 6,912,000
| 63 | FullTape-0020 | Used | 1 | 72,996,424,704 | 77 | 6,912,000
| 64 | FullTape-0021 | Used | 1 | 95,546,271,744 | 101 | 6,912,000
| 66 | FullTape-0012 | Used | 1 | 69,667,024,896 | 73 | 6,912,000
| 70 | FullTape-0023 | Full | 1 | 76,203,767,808 | 80 |6,912,000
+---------+---------------+-----------+---------+-----------------+----------+--------------+---------+------+---
Les elimine información innecesaria, como podrán ver la columna VolStatus, tenemos 2 valores:
  • Used
  • Full
  
El estatus Full como su significado dice, "Lleno", cuando se llena la cinta fisicamente hablando, automaticamente lo pone en este estatus. Que fue lo que me paso.

El status "Used" se pone cuando ya agregamos los suficientes "Jobs" a el volumen, en mi caso lo tengo para 13 que cada Job es un cliente, cuando recibe el Job #13 independientemente a que la cinta se llene o no, bacula cambia el estatus y ya no usara esa cinta hasta que pasen los dias de retencion que es el periodo que esa cinta no se toca.

Las cintas de fabrica vienen habilitadas para comprimir los datos almacenados, muchas no tienen este mecanismo, pero las recientes si, es una compresion que se llama por Hardware(HW), y cada fabricante tiene su espeficacion, yo estoy trabajando con una HP StorageWorks 232 Utrium externa, que esta cinta pueden almacenar hasta 200GB con la compresion del fabricante 2:1 y 100GB sin compresion.

Ahora, cuando hablamos de la compresion del fabricante 2:1, es en realidad que de 2 archivos hace 1? No.

Es un calculo que ellos hacen tomando en cuenta archivos que se pueden comprimir, ahora que pasa con los archivos que no se comprimen mucho, como los dibujos, musica, archivos de Autocad, video etc? Pues aqui es donde viene el pequeno problema, ya que estamos haciendo una compresion 1:1 y ahi empezamos a perder espacio.

Que fue lo que me paso?, se me lleno la cinta, revise los servidores y me encontre con que los usuarios respaldaron su musica y videos que nada tienen que ver con su trabajo en ellos y ahi empece a perder espacio.

Ahora lo que hice primero que nada, es borrar toda esa informacion.

Ahora en el sistema de respaldo tenemos 2 opciones para comprimir:
  • Compresion por Hardware
  • Compresion por Software
La primera ya hable de ella, la segunda ese metodo lo hacemos nosotros, ya que antes de mandar los datos a cinta se comprime con alguno de los programas en tengamos a la mano, en el caso de bacula hace uso de gzip, podemos usar otros disponibles en Unix, pero este es el estandard.

Nomas como informacion, no es recomendable hacer uso de los metodos de compresion mezclados, o sea tener hablitado tanto la opcion por hardware como software ya que se han tenido mala experiencia con esto, no quieran ganar mas espacio y perder su informacion por andar de ahorradores.

Para ver si tebemos habilitado la compresion de la cinta en FreeBSD hacemos uso del comando mt asi:

mt -f /dev/nsa0 status

Mode Density Blocksize bpi Compression
Current: 0x40 variable 0 0x1
---------available modes---------
0: 0x40 variable 0 0x1
1: 0x40 variable 0 0x1
2: 0x40 variable 0 0x1
3: 0x40 variable 0 0x1
---------------------------------
Current Driver State: at rest.
---------------------------------
File Number: 0 Record Number: 0 Residual Count 0

Como podran ver, en la primera linea tenemos

Mode Density Blocksize bpi Compression
Current: 0x40 variable 0 0x1

Que esta en hexadecimal y tenemos 0x1 lo cual es Verdadero y por lo tanto tenemos habilitada la compresion por HW o de la cinta.

Si deseamos hacer uso de software para la compresion, tenemos que deshabilitarla de la cinta asi:

mt -f /dev/nsa0 comp off

Volvemos a ejecutar el comando anterior para verificar el cambio y nos da esto:

bacula# mt -f /dev/nsa0 status
Mode Density Blocksize bpi Compression
Current: 0x40 variable 0 disabled
---------available modes---------
0: 0x40 variable 0 0x1
1: 0x40 variable 0 0x1
2: 0x40 variable 0 0x1
3: 0x40 variable 0 0x1
---------------------------------
Current Driver State: at rest.
---------------------------------
File Number: 0 Record Number: 0 Residual Count 0

Ya se deshabilito, asi que ya podemos usar a gzip en bacula para comprimir los datos.

Tener en cuenta que cuando actualizamos a FreeBSD con buildworld, este cambia el estatus de la compresion de la cinta, asi que tomen en cuenta esto, y no vayan por ahi a recibir sorpresas.

Bueno manana corro el respaldo a ver como nos va...Saludos!!!