lunes, 11 de agosto de 2008

Convertir AWR a JPG en Debian

Me enviaron unas fotos en formato AWR de Sony, las cuales obviamente no podía ver, así que buscando en Internet conseguí un script que facilita el proceso de usar imagemagick y dcraw, así que lo comparto. Obviamente debemos tener instalado los dos paquetes que necesitamos, sino, a instalarlos con aptitude ;) (que fácil es en Debian)

#aptitude install imagemagick dcraw

El script original se llama raw2jpg.sh, así que se quedará con ese mismo nombre, aunque podrían colocarle el formato Sony awr, da lo mismo.

El Script Original y los datos de su autor....

#raw2jpg.sh april 2008
#Converts .raw files to .jpg
#Must be installed dcraw and convert utilities before run this program.
#Jorge Muñoz Rodenas Albacete (Spain)
#bash script licensed under GPL v3.0

echo Step 1 of 3: .arw to .ppm conversion, wait...
for file in *.ARW; do
dcraw $file
done

echo Step 2 of 3: .ppm to .jpg conversion, wait...
for file in *.ppm ; do
convert $file ${file/.ppm/%d.jpg}
done

echo Step 3 of 3: Deleting .ppm files, wait...
rm *.ppm
echo done!


Luego podemos ejecutar el script en el directorio donde están las fotos.

pc:/home/pepito/los-awr$ ./raw2jpg.sh

Luego esperar a que convierta las fotos y despues a disfrutarlas :D

Saludos

lunes, 23 de junio de 2008

Debian+Ldap+GOsa+Samba+pam PDC

Paquetes:
# aptitude install rsync perl screen less make gcc locales-all
# aptitude install slapd ldap-utils db4.4-util
# aptitude install apache2 php5 php5-imagick php5-imap php5-pgsql
# aptitude install php5-ldap php5-mysql libapache-mod-php5 php5-common
# aptitude install php5-tidy php5-xmlrpc php5-xls php5-snmp
# aptitude install gosa gosa-schema
# aptitude install smbldap-tools
# aptitude install samba samba-doc
# aptitude install libnss-ldap
# aptitude install libpam-ldap
# aptitude install nscd

### groups.ldif #####################
dn: ou=groups,dc=rodria,dc=com,dc=ve
ou: groups
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
#####################################

### people.ldif #####################
dn: ou=people,dc=rodria,dc=com,dc=ve
ou: people
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
#####################################

### machines.ldif ###################
dn: ou=machines,dc=rodria,dc=com,dc=ve
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
ou: machines
#####################################



Debian+Ldap+GoSA+Samba
Luego de darme algunos golpes con GoSA y LDAP decidí colocar esta receta para ayudar a otros que posiblemente tengan algunos problemitas.

Lo primero es acotar que he usado PHP5 en lugar de usar PHP4 que es el que instala por defecto GoSA.

Los primeros pasos como en todo debian es asegurarse de tener la lista de paquetes actualizada, como esto lo he hecho sobre una máquina virtual en xen y _solo_ tiene el sistema base instalado debo instalar algunos paquetes necesarios y otros que me gusta usar, como rsync y screen por ejemplo ;).

# aptitude update
# aptitude dist-upgrade
# aptitude install rsync perl screen less make gcc locales-all

Ahora los paquetes para el ldap

# aptitude install slapd ldap-utils db4.4-util

Preguntas de SLAPD
* Contraseñe Administrador: 123456
* Verificación Contraseña: 123456

Luego debemos reconfigurar ldap para asegurarnos de que nuestro dominio esté configurado como queremos.

# dpkg-reconfigure slapd

* ¿Desea omitir la configuración del servidor OpenLDAP?: No
* Introduzca su nombre de dominio DNS: rodria.com.ve
* Introduzca el nombre de su organización: Raul Odria Corp.
* Contraseña del administrador: 123456
* Motor de base de datos a utilizar: BDB
* ¿Desea que se borre la base de datos cuando se purgue el paquete slapd? : No
* ¿Desea mover la base de datos antigua? Si
* ¿Permitir el protocolo LDAPv2? Si

# aptitude install apache2 php5 php5-imagick php5-imap php5-pgsql

** Configuring libc-client2002edebian
* Continue installing libc-client without Maildir support? Si

# aptitude install php5-ldap php5-mysql libapache-mod-php5 php5-common
# aptitude install php5-tidy php5-xmlrpc php5-xls php5-snmp

Instalación de GOSA

# aptitude install gosa gosa-schema

Iniciamos ldap y todo debería de funcionar bien

# /etc/init.d/slapd start

Editamos /etc/php5/apache2/php.ini

# nano /etc/php5/apache2/php.ini

Cambiamos memory_limit = 16M por memory_limit = 64M
session.gc_maxlifetime = 86400


Luego copiamos los esquemas que usaremos para gosa

# cp /usr/share/doc/gosa/contrib/openldap/samba3.schema.gz /etc/ldap/schema/
# cp /usr/share/doc/gosa/contrib/openldap/trust.schema /etc/ldap/schema/

# cd /etc/ldap/schema/
# gunzip samba3.schema.gz

# nano /etc/ldap/slapd.conf

Agregar lo siguiente: (los 4 primeros include ya los tendrán, son colocados como referencia para que sepan el orden en que van)

==================================================
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

#Esquemas de GoSA
include /etc/ldap/schema/samba3.schema
include /etc/ldap/schema/trust.schema
include /etc/ldap/schema/gosystem.schema
include /etc/ldap/schema/gofon.schema
include /etc/ldap/schema/goto.schema
include /etc/ldap/schema/gosa+samba3.schema
include /etc/ldap/schema/gofax.schema
include /etc/ldap/schema/goserver.schema
include /etc/ldap/schema/goto-mime.schema

schemacheck on
password-hash {MD5}

==================================================

Ahora nos falta agregar los ldiff que necesitará GoSA, si usamos ldapadd debemos primero detener slapd

# /etc/init.d/slapd stop

# slapadd -l people.ldif
# slapadd -l machines.ldif
# slapadd -l groups.ldif

# /etc/init.d/slapd start


Ahora Configuraremos GoSA

http://ip_server/gosa/setup.php

Relativamente esto es sencillo, solo hay que hacer unos ajustes simples y todo debe funcionar.
Las dos primeras pantallas son para verificar si nos falta algún módulo que querramos tener, si hace falta alguno, agregarlos. Luego en las siguientes solo hay que agregar lo siguiente:

1.- cambiar [Example] por el Nombre de su Empresa por ejemplo: RO Corp.
2.- luego nos pide el dn y la clave del usuario ldap, que según este ejemplo sería así:
DN: cn=admin, dc=midominio, dc=com, dc=ve
--- "admin" es el nombre que usé para el login del usuarios administrador del LDAP
Passwd: 123456
--- "123456" es la clave que usé para el login del usuarios administrador del LDAP
Este login y clave es el que configuraron cuando reconfiguraron slapd

3.- Base: dc=midominio, dc=com, dc=ve

teóricamente no deben modificar más nada, deben tener en cuenta que al darle check el único error que debe arrojar es que aun no se ha creado un usuario y clave para el administrador de GoSA, así que omitir el error y crear el usuario y clave del admin gosa en la pantalla que corresponde.

Luego les aparecerá una pantalla para generar el gosa.conf, generen este archivo y creen un archivo en el servidor y copien todo de este, o sencillamente copien el archivo en el server gosa en la ruta siguiente:

/etc/gosa/gosa.conf

luego debemos cambiarle los permisos:

# chown root.www-data /etc/gosa/gosa.conf
# chmod 640 /etc/gosa/gosa.conf


Instalando Samba....

# aptitude install smbldap-tools
# aptitude install samba samba-doc


Nombre del dominio o del grupo de trabajo: midominio.com.ve
¿Modificar smb.conf para usar la configuración WINS que proviene de DHCP? No


CREACION DE CARPETAS PARA SAMBA
#mkdir /home/samba/
#mkdir /home/samba/netlogon
#mkdir /home/samba/profiles


INSTALACION DE MKNTPWD
$ cd /opt/
$ wget http://www.silcom.com.pe/soft/mkntpwd.tar.gz
$ tar -zxf mkntpwd.tar.gz
$ cd mkntpwd
$ make
$ cp mkntpwd /usr/local/bin
VERIFICAR
#mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]

-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)

with both options present the encrypted LanManager-Pwd is
printed first, followed by a ‘:’ and the encrypted NT-Pwd.

The second usage behaves like mkntpwd -L pwd -N pwd

The third usage reads the password from STDIN or a File. Printout
is the same as second.

anton@genua.de


CONFIGURACIÓN DE SAMBA
# cd /etc/samba
# cp smb.conf smb.conf.bkp
# vi smb.conf

EL ARCHIVO QUEDARA DE LA SIGUIENTE FORMA:

=========================================================================
# /etc/samba/smb.conf
# archivo de configuracion de samba
[global]
# configuracion basica del servidor
workgroup = RODRIA
netbios name = pdc
server string = Samba PDC Version %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
# configuracion para que la maquina sea el PDC master
os level = 65
preferred master = yes
local master = yes
domain master = yes
domain logons = yes
# configuracion de seguridad y conexion
security = user
guest ok = no
encrypt passwords = yes
null passwords = no
# hosts allow es para que solo permita las maquinas de la LAN (192.168.0.x)
hosts allow = 127.0.0.1 192.168.100.0/255.255.255.0
wins support = yes
name resolve order = wins lmhosts host bcast

dns proxy = no
# otras configuraciones varias para SAMBA
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hide unreadable = yes
hide dot files = yes
# parametros para el soporte de LDAP
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=rodria,dc=com,dc=ve
ldap machine suffix = ou=machines
ldap user suffix = ou=people
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=rodria,dc=com,dc=ve
ldap delete dn = no
enable privileges = yes
# para permitir a los usuarios cambiar su clave desde Windows
ldap password sync = yes
# perfiles moviles de usuario, carpeta home y script de inicio
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = netlogon.bat OR %U.bat
# script para automatizar la adicion de cuentas de maquinas
# al arbol LDAP cuando estas se unan por primera vez al dominio
add machine script = /usr/sbin/smbldap-useradd -w "%u"
unix charset = ISO8859-1

#=== Recursos SAMBA ===
# ruta en donde se alojaran el(los) script(s) de inicio
[netlogon]
path = /home/samba/netlogon
guest ok = no
read only = yes
browseable = no
# carpetas home de los usuarios
[homes]
path = /home/%U
comment = Carpetas HOME
root preexec = /etc/samba/mk_sambadir “/home/%u” “%u” “%g”
browseable = no
writeable = yes
valid users = %S
read only = no
guest ok = no
inherit permissions = yes
# carpeta en donde se guardan los perfiles de los usuarios
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
default case = lower
preserve case = no
short preserve case = no
case sensitive = no
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
create mask = 0600
directory mask = 0700
csc policy = disable

=======================================================================

PROBAR LA CONFIGURACIÓN
#testparm

Load smb config files from /etc/samba/smb.conf
Processing section “[netlogon]”
Processing section “[homes]”
Processing section “[profiles]”
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions


LE DAMOS A CONTRASEÑA DE LDAP A SAMBA
#smbpasswd -w 123456

REINICIAR SAMBA
# /etc/init.d/samba restart


VOLVER A PHPLDAPADMIN Y VERIFICAR LA ENTRADA
sambaDomainName=RODRIA
IDENTIFICAR EL SID DEL DOMINIO ejem :
S-1-5-21-2893205429-3405179508-402743511
CREACIÓN DE GRUPOS DE DOMINIO
DENTRO DE PHPLDAPADMIN EN CONTENEDOR “groups” ELEGIR CREAR “New
Samba3 Group Mapping” Y CREAR LOS SIGUIENTES GRUPOS:

Group: Windows Name: Gid: samba sid:
sambaadmins Domain Admins 20000 512
sambausers Domain Users 20001 513
sambaguests Domain Guests 20002 514
sambamachines Domain Computers 20003 515



INTEGRACIÓN DE LA AUTENTIFICACION Y LDAP
INSTALACIÓN NSS LDAP

#aptitude install libnss-ldap

#dpkg-reconfigure libnss-ldap

Servidor LDAP : 127.0.0.1
Nombre distintivo (DN) : dc=rodria,dc=com,dc=ve
Vercion de LDAP a utilizar : 3
Hace falta un usuario para acceder a la base de datos ldap : No
Dar privilegios especiales de ldap para root : SI
Desea hacer que la configuracion solo pueda leer o escribir el propietario : SI
Cuenta ldap para root : cn=admin,dc=rodria,dc=com,dc=ve
contraseña ldap para root : 123456


CONFIGURACION
#vi /etc/nsswitch.conf

Estas líneas deberán quedar de la siguiente manera:

passwd: compat ldap
group: compat ldap
shadow: compat ldap


COMPROBAR
# getent group

DEBE MOSTRAR
sambaadmins:*:20000:
sambausers:*:20001:
sambaguests:*:20002:
sambamachines:*:20003:


INSTALACION PAM LDAP

# aptitude install libpam-ldap
# dpkg-reconfigure libpam-ldap

Servidor ldap : 127.0.0.1
Nombre distintivo : dc=rodria,dc=com,dc=ve
Vercion de ldap : 3
Make local root Database admin : si
Hace falta un usuario para la base de datos LDAP : no
Ldap account for root : cn=admin,dc=rodria,dc=com,dc=ve
contraseña para la cuenta ldap de root : 123456
Local crypt to use when changing passwords : md5

# vi /etc/pam.d/common-account


COMENTAR
account required pam_unix.so

Y AGREGAR
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass

#vi /etc/pam.d/common-auth

COMENTAR
auth required pam_unix.so nullok_secure

Y AGREGAR
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

# vi /etc/pam.d/common-password
COMENTAR
password required pam_unix.so nullok obscure min=4 max=8 md5

Y AGREGAR AL FINAL
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass


INSTALACION DE NSCD
# aptitude install nscd


REINICIAR SAMBA
/etc/init.d/samba restart

####################################################################################
AGREGAR USUARIOS
En la “UO” users crear un nuevo “Samba3 Account” se creara el usuario
“administrator” que tendra permisos para ingresar maquinas al dominio
y otro usuario “rodria” que pertenecera al grupo adminstradores y otro llamado
“usuario” que solo será un usuario de dominio , esto se hará de la siguiente
forma :

Fist Name : Administrador
Last Name : Global
Comon Name : Administrador
User ID : administrador
UID Number : 0
Samba SID : 512
Password : 123456
Verify Password : 123456
Gid number : sambaadmins
Primary Group ID : sambaadmins
Home Directory : /home/administrador

Fist Name : Raul
Last Name : Odria
Comon Name : Raul Odria
User ID : rodria
UID Number : 10000
Samba SID : 512
Password : 123456
Verify Password : 123456
Gid number : sambaadmins
Primary Group ID : sambaadmins
Home Directory : /home/rodria

Fist Name : Pedro
Last Name : Perez
Comon Name : Pedro Perez
User ID : pperez
UID Number : 10001
Samba SID : 513
Password : 123456
Verify Password : 123456
Gid number : sambausers
Primary Group ID : sambausers
Home Directory : /home/sebastian


VERIFICAR LA CREACIÓN DE USUARIOS EN LINUX
# getent passwd
administrador:*:0:20000:Administrador:/home/administrador:
rodria:*:10000:20000:Raul Odria:/home/rodria:
pperez:*:10001:20001:Pedro Perez:/home/pperez:

CREACION DE HOME
# mkdir /home/rodria
# cp /etc/skel/.* /home/rodria/
# chown -R rodria /home/rodria
# chgrp -R sambaadmins /home/rodria

# mkdir /home/pperez
# cp /etc/skel/.* /home/pperez
# chown -R pperez /home/pperez
# chgrp -R sambausers /home/pperez


AUTOMATIZANDO INGRESO DE CUENTAS MAQUINA A LDAP
# cd /usr/share/doc/smbldap-tools/examples
# cp smbldap.conf.gz smbldap_bind.conf /etc/smbldap-tools
# cd /etc/smbldap-tools
# gunzip smbldap.conf.gz
# chown root:root *
# chmod 600 *

HAY QUE EDITAR 2 ARCHIVOS

#vi /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=admin,dc=rodria,dc=com,dc=ve"
slavePw="123456"
masterDN="cn=admin,dc=rodria,dc=com,dc=ve"
masterPw="123456"
smbldap.conf

#vi /etc/smbldap-tools/smbldap.conf

SID="S-1-5-21-2893205429-3405179508-402743511"
sambaDomain="RODRIA"

slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify="none"
cafile=""
clientcert=""
clientkey=""
suffix="dc=rodria,dc=com,dc=ve"
usersdn="ou=people,${suffix}"
computersdn="ou=machines,${suffix}"
groupsdn="ou=groups,${suffix}"
groups
sambaUnixIdPooldn="sambaDomainName=RODRIA,${suffix}"
scope="sub"
hash_encrypt="MD5"
crypt_salt_format="%s"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="20003"
skeletonDir="/etc/skel"
userSmbHome=""
userProfile=""
userHomeDrive="H:"
userScript="logon.bat"
mailDomain="rodria.com.ve"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"



POR ULTIMO
# cp smbldap_bind.conf /etc/
# cp smbldap.conf /etc/

AGREGANDO OBJECTCLASS

Tenemos que ir al phpldapadmin vamos a agragar el atributo SAMBAUNIXIDPOOL para el dominio samba
nos ubicamos en sambaDomainName=RODRIA
En la etiqueta objectClass agragamos un nuevo valor "add value" Seleccionamos SAMBAUNIXIDPOOL
En la Siguiente ventana colocaremos:
GID: 20003 Corresponde al Grupo sambamachines
UID: 30000 Número inicial que usaremos para las cuentas de máquinas
Una vez hecho esto, ya podemos registrar nuestras máquinas win$ el dominio

ANEXO 1
CREACIÓN DE HOMES POR DEFECTO

Crear el archivo /etc/samba/mk_sambadir con lo siguiente:

#!/bin/bash
if [ ! -d $1 ]
then
mkdir $1
fi
chmod 770 $1 -R
chown $2 $1 -R
chgrp $3 $1 -R

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

Luego REINICIAR SAMBA

# /etc/init.d/samba restart


ANEXO2

PRUEBA 1

PODER VALIDAR POR SSH AL PDC, SI BIEN ES CIERTO LOS USUARIOS DEL DOMINIO
NO TIENEN SHELL DEBERIA SER POSIBLE HACER UN INICIO VIA SSH
#ssh -l administrador 192.168.100.5
#ssh -l rodria 192.168.100.5

PRUEBA 2
PODER VALIDAR DESDE UN WIN$ AUN ASI NO SE HALLA UNIDO AL DOMINIO, SIN
PERTENECER AL DOMINIO DEBERÍA PODER VALIDAR COMO UN SIMPLE SERVER DE
ARCHIVOS
\\pdc\rodria


Para Registrar máquinas con Windows XP se debe crear/modificar la siguiente etiqueta de registro usando regedit

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000

Si nos sale este error al tratar de meter el equipo al dominio:
"Las conexiones múltiples para un servidor o recurso compartido compatible por el musmo usuario, usando más de un nombre de usuario, no están permitidas. Desconecte todas las conexiones anteriores al servidor o recursos compartidos y vuelva a intentarlo de nuevo."
Debemos correr esto en una consola DOS:
net use * /d /y

lunes, 16 de junio de 2008

Debian Etch+Xen

El mundo de la virtualización es increible cuando quieres hacer laboratorios y cuando requieres hacer Deployment de Servidores a unas velocidades antes inimaginables, es por eso que he elaborado este pequeño manual para que puedan incluirse en este excelente mundo "virtual" :)

Instalar Debian, Preferiblemente con la imagen Etch Bussines Card

Realizamos nuestra instalación básica, instalamos el sistema base, configuramos todo, y NO seleccionamos ningún paquete de instalación... Ni entorno Gráfico, ni sistema Base; dejamos la instalación mínima que nos hará el bussines Card... Recuerden usar un Mirror Local para hacer esto más rápido.

Seleccionamos el kernel linux-kernel-2.6-686
Seleccionamos Grub como gestor de arranque preferiblemente y listo... a reiniciar.

Luego de reiniciar procedemos a instalar los paquetes:

# aptitude install xen-linux-system-2.6.18-4-xen-686
# aptitude install ssh rsync xen-tools locales

Editar Grub, y colocar en esta línea "dom0_men"= "cantidad de RAM para el servidor Xen"
ejemplo para asignarle solo 256MB de RAM al Dom0:

kernel /boot/xen-3.0.3-1-i386-pae.gz dom0_mem=256M

Xen por defecto solo viene para poder crear 4 máquinas virtuales, pero no es propiamente Xen, sino /dev/loop que originalmente viene por defecto para 8 /dev/loop0 ... loop7 pero si requerimos más de 4 máquinas virtuales vamos a tener que crear más loops.

Una forma de hacerlo es que se lo pasemos como parámetro al kernel en Grub.

agregándole esto en la línea del kernel: max_loop=128 en nuestro ejemplo sería algo como:

kernel /boot/xen-3.0.3-1-i386-pae.gz dom0_mem=256M max_loop=128

Para configurar las interfaces:

Editar /etc/xen/xend-config.sxp

Solo dejar las siguientes líneas activas:

Debemos tener solo activado estas lineas:

1.- (network-script network-bridge)
2.- (vif-script vif-bridge)
3.- (dom0-min-mem 196)
4.- (dom0-cpus 0)

En mi caso puse esta porque mi etXh por default es la 2, entonces reemplazo (1.-) por esta:
(network-script 'network-bridge netdev=eth2')

Con esto ya tenemos configurado nuestro Dom0.

Para crear lás máquinas virtuales podemos editar /etc/xen-tools/xen-tools.conf y adaptar una instalación por defecto.

Ejemplo:

****************************************************
## Este es el directorio donde se guardarán los discos de las máquinas virtuales
## Puede ser /home/xen en mi caso /xen
dir = /xen
## Uso el método debootstrap para las instalaciones
debootstrap = 1
## Capacidad del tamaño de disco por defecto:
size = 10Gb
## Tamaño de la memoria por defecto:
memory = 128Mb
## Tamaño del Swap por defecto:
swap = 512Mb
## Sistemas de Archivos a usar por defecto
fs = ext3
## Distribución en este caso de linux a usar por defecto:
dist = etch
#Seleccionamos entre Images full disk o sparse
image = sparse

## Red... Colocamos el Gateway por defecto, y el netmask ... en mi caso....
## ya que las direcciones IP las coloco al momento de crear la máquina virtual
## como se explicará más adelante:
gateway = 192.168.100.1
netmask = 255.255.255.0

## Esto es para que nos pida el passwd del root cuando termine de instalar la VM
passwd = 1

#Kernel a usar
kernel = /boot/vmlinuz-2.6.18-6-xen-686
initrd = /boot/initrd.img-2.6.18-6-xen-686

## Arquitectura
arch=i386
## Dirección del Mirror en el caso de debian, yo uso uno local
mirror = http://192.168.100.10/debian/
## Boot me permite iniciar la VM una ves creada.
boot = 1

****************************************************
Hasta aca el archivo por defecto....

Ejemplo para crear una máquina virtual, obviamente usando xen-tool, y voy a colocar como ejemplo algunos parámetros que voy a modificar en "caliente" sin afectar el archivo de configuración de xen tool.

# xen-create-image --hostname=correo --ip=192.168.100.5 --size=4G --memory=512 --swap=512

Luego:

# xm console correo.cfg

y ya estamos en nuestro servidor llamado correo.

Pronto más tips...

Saludos

lunes, 9 de junio de 2008

Debian+Ldap+GoSA

Luego de darme algunos golpes con GoSA y LDAP decidí colocar esta receta para ayudar a otros que posiblemente tengan algunos problemitas.

Lo primero es acotar que he usado PHP5 en lugar de usar PHP4 que es el que instala por defecto GoSA.

Los primeros pasos como en todo debian es asegurarse de tener la lista de paquetes actualizada, como esto lo he hecho sobre una máquina virtual en xen y _solo_ tiene el sistema base instalado debo instalar algunos paquetes necesarios y otros que me gusta usar, como rsync y screen por ejemplo ;).

# aptitude update
# aptitude dist-upgrade
# aptitude install rsync, perl, screen

Ahora los paquetes para el ldap

#aptitude install slapd ldap-utils db4.4-util

Luego debemos reconfigurar ldap para asegurarnos de que nuestro dominio esté configurado como queremos.

# dpkg-reconfigure slapd

# aptitude install apache2 php5 php5-imagick php5-imap php5-pgsql
# aptitude install php5-ldap php5-mysql libapache-mod-php5 php5-common
# aptitude install php5-tidy php5-xmlrpc php5-xls php5-snmp

# aptitude install gosa gosa-schema

Iniciamos ldap y todo debería de funcionar bien

# /etc/init.d/slapd start

Editamos /etc/php5/apache2/php.ini

# nano /etc/php5/apache2/php.ini

Cambiamos memory_limit = 16M por memory_limit = 64M

Luego copiamos los esquemas que usaremos para gosa

# cp /usr/share/doc/gosa/contrib/openldap/samba3.schema.gz /etc/ldap/schema/
# cp /usr/share/doc/gosa/contrib/openldap/trust.schema /etc/ldap/schema/

# cd /etc/ldap/schema/
# gunzip samba3.schema.gz

# nano /etc/ldap/slapd.conf

Agregar lo siguiente: (los 4 primeros include ya los tendrán, son colocados como referencia para que sepan el orden en que van)

==================================================
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

#Esquemas de GoSA
include /etc/ldap/schema/samba3.schema
include /etc/ldap/schema/trust.schema
include /etc/ldap/schema/gosystem.schema
include /etc/ldap/schema/gofon.schema
include /etc/ldap/schema/goto.schema
include /etc/ldap/schema/gosa+samba3.schema
include /etc/ldap/schema/gofax.schema
include /etc/ldap/schema/goserver.schema
include /etc/ldap/schema/goto-mime.schema

schemacheck on
password-hash {MD5}

=================================================

Ahora nos falta agregar los ldiff que necesitará GoSA, podemos usar ldapadd

# /etc/init.d/slapd stop

pueden crear los archivos ldiff como siguen:

=============== groups.ldif ================
dn: ou=groups,dc=midominio,dc=com,dc=ve
objectClass: organizationalUnit
ou: groups
#FIN

=============== people.ldif ================
dn: ou=people,dc=midominio,dc=com,dc=ve
objectClass: organizationalUnit
ou: people
#FIN

============= machines.ldif =================
dn: ou=machines,dc=midominio,dc=com,dc=ve
objectClass: organizationalUnit
ou: machines
#FIN

nótese que en el dn de cada ldif los dc pertenecen al dominio que configuramos al hacer
dpkg-recongfigure slapd, en este ejemplo el dominio es: midominio.com.ve, podemos probar el nombre del dominio con:

# slapcat

Agregamos los ldiff ue acabamos de crear con "vi" o "nano"

# slapadd -l people.ldif
# slapadd -l machines.ldif
# slapadd -l groups.ldif

# /etc/init.d/slapd start

Si deciden hacerlo con phpldapadmin:

#aptitude install phpldapadmin

luego desde el firefox/iceweasel

http://ip_del_server/phpldapadmin

la versión que instalé no se si tenga o no un error, pero cuando accedía a mi cuenta de ldap me aparecía dc=nodomain estándo autenticado con mi cn y dc respectivos, entonces comenté una línea que me corrigó el error en el archivo config.php del phpldapadmin.

# nano /etc/phpldapadmin/config.php

$ldapservers->SetValue($i,'server','base',array('dc=nodomain'));

la cambié por:

//$ldapservers->SetValue($i,'server','base',array('dc=nodomain'));

y volví a ingresar al phpldapadmin desde el browser y todo funcionó bien. Ya luego ahí cree los OU respectivos que va usar GoSA, que son "groups" y "people".

Una vez que ya hayamos creado los OU de cualquiera de las dos maneras explicadas, pasamos a configurar GoSA.

desde el Browser:

http://ip_server/gosa/setup.php

Relativamente esto es sencillo, solo hay que hacer unos ajustes simples y todo debe funcionar.
Las dos primeras pantallas son para verificar si nos falta algún módulo que querramos tener, luego en las siguientes solo hay que agregar lo siguiente:

1.- cambiar [Example] por el Nombre de su Empresa por ejemplo: RO Corp.
2.- luego nos pide el dn y la clave del usuario ldap, que según este ejemplo sería así:
DN: cn=admin, dc=midominio, dc=com, dc=ve
--- "admin" es el nombre que usé para el login del usuarios administrador del LDAP
Passwd: 123456
--- "123456" es la clave que usé para el login del usuarios administrador del LDAP
Este login y clave es el que configuraron cuando reconfiguraron slapd

3.- Base: dc=midominio, dc=com, dc=ve

teóricamente no deben modificar más nada, deben tener en cuenta que al darle check el único error que debe arrojar es que aun no se ha creado un usuario y clave para el administrador de GoSA, así que omitir el error y crear el usuario y clave del admin gosa en la pantalla que corresponde.

Luego les aparecerá una pantalla para generar el gosa.conf, generen este archivo y creen un archivo en el servidor y copien todo de este, o sencillamente copien el archivo en el server gosa en la ruta siguiente:

/etc/gosa/gosa.conf

luego debemos cambiarle los permisos:

# chown root.www-data /etc/gosa/gosa.conf
# chmod 640 /etc/gosa/gosa.conf

Esto es todo, aunque hay algunos tunnig que faltan, pero con esto ya podrán trabajar ;)

Saludos.

miércoles, 4 de junio de 2008

EVDO CDU-680 Movilnet y Debian

Existen muchas alternativas para conectarse con los dispositivos EVDO de Movilnet, específicamente el modelo de Cmotech CDU-680, que a su ves es un dispositivo de almacenamiento donde trae los "drivers" para conectarse con Ubuntu/Guindos pero que para otras distros no funciona.

Aquí les dejo una menera super fácil de configurar estos dispositivos, lo explicaré con Debian, pero debe funcionar para cualquier distro.

# aptitude install wvdial pppconfig

estos son los programas que usaremos para la conexión.

en pppconfig seleccionaremos lo siguiente:

Create a Connection:
Provider Name: aba
Configure Name Servers: dynamic
Authentication Method: PAP
User Name: 1234567@cantv.net ## 1234567=numero movilnet sin el 0416
Password: 12345 ##clave del usuario movilnet (EVDO)
Speed: 115200
Pulse or Tone: Tone
Phone Numbre: #777
Mode Com Port: /dev/ttyACM0

Con esto hemos terminado de configurar el archivo de configuración que se encontrará en:

/etc/ppp/peers/aba

Será algo como esto:
-------------------------------------------------------------------------------
# This optionfile was generated by pppconfig 2.3.18.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/aba"
debug
/dev/ttyACM0
115200
defaultroute
noipdefault
user "1234567@cantv.net"
remotename aba
nodeflate
nobsdcomp
ipparam aba
persist
--------------------------------------------------------------------------
Claro, que este del ejemplo tiene otros parámetros que debemos agregar, como por ejemplo "nodeflate" "nobsdcomp" y "persist"

con esto hemos terminado la parte "difícil"

Lo segundo es escribir:

#pon aba

y a navegar... pero esto no es todo, hay algo que debemos ejecutar para que active el "modem" en ttyACM0, para ello debemos ejecutar un archivo que viene dentro del Cmotech en el directorio linux... este es itfchg, aunque podemos copiarlo en /usr/bin para no tener que usarlo desde el Cmotech.

Si lo tenemos en /usr/bin solo tendremos que escribir:

# itfchg /dev/sdX

Donde X es la letra donde ha reconocido el Cmotech USB, generalmente es "a" sin embargo, si tenemos algún pendrive colocado o un disco usb posiblemente lo reconozca como sdb sdc sdd, o si tenemos por ejemplo disco sata, lo más seguro es que no lo monte como sda, que sería el disco principal sata. así que podrían hacer un dmesg para verificar en que dispositivo lo ha reconocido... supongamos que es en /dev/sda haríamos lo siguiente:

# itfchg /dev/sda

con esto ya quedaría activo ttyACM0 y con tan solo escribir luego

# pon aba y esperar a que sincronice el dispositivo, ya estaríamos navegando.

para terminar la conexión basta con esxribir:

# poff aba

eso es todo, sin muchos dolores de cabeza ;)

Saludos.

domingo, 18 de mayo de 2008

Xen+Windows

Configuración del servidor dom0
Para ello debemos tener ya corriendo Xen (hypervisor) más detalles en mi antiguo blog rodria1 Es imprescindible tener un procesador INTEL VT o AMD Pacífica.
Para comprobar que nuestro procesador soporta tecnología de virtualización podremos verificarlo de las siguientes maneras.

# xm info | grep xen_caps
xen_caps : xen-3.0-x86_64 hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64

o

# cat /proc/cpuinfo

en la primera opción verificar si tenemso "hvm" y en la segunda verificar si tiene el flag vmx


Si podemos ver hvm en xen_caps entonces seguiremos con:

# apt-get install xen-ioemu-3.0.3-1

Configuración de la VM domU

Requeriremos de una imagen del CD de windows, y crear el disco para la VM

# dd if=/dev/cdrom0 of=w2k.iso

# lvcreate -L 10G -n w2k-dsk vg0

(si no tienes lvm entonces puedes usar dd)

# dd if=/dev/zero of=w2k-dsk.img bs=1M count 10000

Luego crearemos el archivo de configuración de la máquina virtual para windows.

# nano /etc/xen/w2k.cfg

#
# Archivo de configuración para Windows 2000
#
#

# Kernel y memoria
#
kernel = ‘/usr/lib/xen-default/boot/hvmloader’
builder = ‘hvm’
memory = ‘256′
#
# Disk device(s).
#
disk = [ 'phy:/dev/vg0/w2k-dsk,ioemu:hda,w', 'file:/root/w2k.iso,hdc:cdrom,r' ]
#
# Hostname
#
name = ‘w2k’

vcpus = 1

#
# Networking
#
dhcp = ‘dhcp’
vif = [ 'type=ioemu, mac=00:a1:b2:c3:e4:ff' ]
#
# Behaviour
#
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’
# New stuff
device_model = ‘/usr/lib/xen-3.0.3-1/bin/qemu-dm’
boot = ‘d’
ne2000 = 1
acpi = 1
sdl = 0
vnc = 1
vncviewer = 0
nographic = 0

Lo nuevo en esta configuración son los parámetros :

boot = 'd' para que arranque por la unidad "d", la emulación de la tarjeta de red ne2000, activar ACPI y que nos permita conectarnos por VNC, con ello lograremos terminar la instalación.

Debemos editar el archivo de configuración de Xen para permitir la conexión de vnc desde otra máquina que no sea el localhost.

# nano /etc/xen/xend-config.sxp y cambiar la línea

(vnc-listen '127.0.0.1') por (vnc-listen '0.0.0.0')

Luego:

# /etc/init.d/xend restart (para que tome en cuenta los cambios)

Recordemos que VNC no está protegido por contraseña y cualquiera con acceso al servidor se podría conectar.

Instalación del S.O.
El primer paso será arrancar la nueva máquina virtual:

# xm create windows.cfg

Desde nuestro PC podremos conecarnos por VNC al domU y continuar con la instalación de w2k. Ejemplo:

# vncviewer xen-w2k (suponiendo que nuestro server se llama xen-w2k)

Ahora podremos continuar la instalación como la conocemos normalmente en una máquina sola :)
Una vez terminada la instalación, configuramos todo lo necesario para poder conectarnos por RDP con el usuario permitido. y desactivaremos la opción del vnc en la configuración de la VM

# nano /etc/xen/w2k.cnf

vnc = 0
nographic = 1

# nano /etc/xen/xend-config.sxp

(vnc-listen '127.0.0.1')

y volvemos a reiniciar el hypervisor

/etc/init.d/xend restart


martes, 6 de mayo de 2008

Debian+ddclient+whatismyip.org

Uno de los problemas que tenemos cuando tenemos una dirección IP dinámica que nos entrega nuestro proveedor de Internet (ISP) es que en el momento más crítico (ley de Morphy) este proveedor nos cambia la dirección IP y morimos en el intento de conectarnos.

Bueno, existen servidores de DNS Dinámico como DynDNS, ZoneEdit, No-IP, entre muchos otros que nos facilitan la tarea de configurarnos un nombre a nuestra dirección IP y que estos a su vez se encarguen de actualizar la dirección al nombre asociado para que mantengamos el nombre con cualesquiera de las direcciones que nos entregue nuestro ISP. El problema de esto es que necesitamos tener un programa que esté informándole a estos servidores de nombres los cambios de nuestra dirección IP.

En Debian tenemos una estupenda alternativa para hacer esto y es lo que les explicaré a continuación.

Requisitos:

  1. Tener una cuenta en uno de estos servidores de nombres dinámicos configurada con el nombre del host que quieras tener. Por ejemplo mi_host.dyndns.org. No es parte de este HowTo el como crear ni configurar una cuenta de dyndns.org no-ip.com, zoneedit.org o cualquier otro. Este manual no contempla explicar como crearse una cuenta en un servidor de DNS dinámico, y tampoco como crearse un hostname en él.
  2. Tener obviamente un sistema Linux, yo explicaré como usar ddclient con debian lenny.
  3. Conexión a Internet ;)

Lo primero será instalar ddclient en nuestro Debian.

# aptitude install ddclient (recuerde usar aptitude en lugar de apt)

Luego el sistema nos preguntará la información de la cuenta que creamos, en este caso en dyndns.org.

  • Proveedor de Servicio: www.dyndns.org
  • Nombre Completo del Dominio: mi_host.dyndns.org
  • Nombre de Usuario: mi_usuario_en_dyndns.org (el login en www.dyndns.org)
  • Contraseña para el Servicio: mi_contraseña_en_dyndns.org
  • Interfaz Usada por el Servicio DNS Dinámico: eth0
Para este caso, la eth0 sería la que está conectada a la WAN, si su WAN está en una interface diferente, especifiquela ahí.
  • Ejecutar ddclient: Si
  • Ejecutar ddclient como demonio: Si
  • Ejecutar cada: 3m

Mostraré un ejemplo de como quedaría el archivo de condiguración de ddclient.

#cat /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
use=if, if=eth0
server=members.dyndns.org
login=milogin
password='mipasswd'
mihost.dyndns.org,mihost2.dyndns.org

Nótese que en este ejemplo he configurado dos host con diferentes nombres que he creado en mi cuenta dyndns.

Ahora bien, un problema que tenemos cuando estamos detrás de un proxy o nat es que nuestra dirección IP de la WAN puede ser una dirección privada al estilo de 192.168.0.1, lo cual no nos sirve de nada, ya que use=if tomará esa IP privada 192.168.0.1 y es la que registrará en el servidor dyndns. para ello debemos modificar la linea 'use=if, if=eth0' por algo como esto.

use=web, web='http://whatismyip.org' ó
'http://www.whatismyip.com/automation/n09230945.asp'

Con esto solucionamos ese problema, y les pasará si por ejemplo están derás de un "router" lynksys por dar una idea....

Espero que le sirva a algún novato.

Saludos