viernes, 11 de diciembre de 2009

Centos 5.x: Pureftpd con soporte para LDAP

Vamos siguiendo mi blog sobre el mismo ldap, asi que al grano.

Instalamos pureftpd desde yum.

1; Vamos configurando pure-ftpd.conf:

ChrootEveryone yes
BrokenClientsCompatibility no
MaxClientsNumber 50
Daemonize yes
MaxClientsPerIP 8
VerboseLog yes
DisplayDotFiles no
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 15
LDAPConfigFile /etc/pure-ftpd/pureftpd-ldap.conf
LimitRecursion 7500 8
AnonymousCanCreateDirs no
MaxLoad 4
AntiWarez yes
Bind 127.0.0.1,21
Umask 133:022
MinUID 500
UseFtpUsers no
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload yes
CreateHomeDir no
MaxDiskUsage 99
CustomerProof yes
IPV4Only yes

2; Ahora vamos sobre pureftpd-ldap.conf

LDAPServer 127.0.0.1
LDAPPort 389
LDAPBaseDN dc=pimpom,dc=loc
LDAPBindDN cn=admin,dc=pimpom,dc=loc
LDAPBindPW ldap-passwd
LDAPFilter (&(objectClass=posixAccount)(uid=\L))
LDAPVersion 3

3; Vamos por syslog:
ftp.* /var/log/pureftpd.log

4; Creamos ese archivo:

touch /var/log/pureftpd.log

5; Reiniciamos syslog

service syslog restart

6; Iniciamos pure-ftpd start

Logearse con algun usuario del dominio, no debe haber problemas, si los tiene chequen su log.

De lo contrario duro con el, animo!!!

miércoles, 9 de diciembre de 2009

Centos 5.x: Dovecot + Postfix +Ldap

Como no hay dns de por medio no problema, si lo hay bien por ustedes.

Nombre del Dominio: example.com
Hostname del Servidor de Correo: mail.example.com
IP del Servidor: 172.16.4.6
Protocolo Inbound: IMAP Puerto: 143
Protocolo Outbound: SMTP Puerto: 25
Criptografia de ldap: crypt

Vamos a usar los mismo directorios particulares de cada usuario, no vamos a usar los virtuales, la mayoria de los ejemplos en linea usan virtuales, pero aqui tenemos ya un monton de archivos en cada usuario en su /home, gracias a samba podemos hacer esto.

Tipo de Mail: Maildir/

Aqui quiero pensar que ya tenemos un servidor ldap corriendo para esta organizacion: example.com estructurada asi:

Users
Groups
Computers
Imap

Samba basa su informacion en ldap asi que debe estar en operacion, lo que vamos hacer es usar esta misma informacion para que dovecot se autentifique via ldap, para ello estamos usando a Mandriva MDS, ya que ellos nos proporcionan el schema para ldap llamado mail.schema + mmc.schema.

Esto esta en otro blog mio.

Por ultimo, todos sabemos que por default sendmail viene como servicio de correo saliente, pero esta vez, postfix va a ser el encargado, asi que debemos detener el servicio de sendmail y deshabilitar que arranque cada que reiniciemos el equipo.

Bien, vamos empezando.

1; Editamos el archivo /etc/hosts y agregamos nuestro hostname:

172.16.4.6 mail.example.com mail

2; Editamos postfix-->main.cf

queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 172.16.0.0/16, 127.0.0.0/8
relay_domains = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP $mail_name
local_destination_concurrency_limit = 1
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man

No necesitamos nada mas de postfix, si desean agregar alias pues editen el archivo /etc/aliases.

3; Editamos dovecot->/etc/dovecot.conf

protocol imap {
listen = *:143
}
disable_plaintext_auth = no
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = local5
ssl_disable = yes
login_user = dovecot
login_greeting = Bienvenidos.
mail_debug = yes
protocol imap {
}

protocol lda {
postmaster_address = postmaster
}
auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain
passdb pam {
}

passdb ldap {
args = /etc/dovecot.ldap
}

userdb passwd {
args = /etc/dovecot.ldap
}

userdb ldap {
args = /etc/dovecot.ldap
}

user = root
}

4; Editamos dovecot para ldap-> dovecot.ldap

hosts = 127.0.0.1
dn = cn=root,dc=example,dc=com
dnpass = password-ldap
tls = no
auth_bind = yes
auth_bind_userdn = cn=%u,ou=example,ou=com
ldap_version = 3
base = ou=Users,dc=example,dc=com
scope = subtree
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=posixAccount)(uid=%u))
default_pass_scheme = CRYPT

5; Agregamos a dovecot en syslog y creamos los archivos de logeo, reinciamos syslog

/etc/syslog.conf:

local5.* /var/log/dovecot.log

touch /var/log/dovecot.log
touch /var/log/dovecot-info.log

service syslog restart

7; Apagar a sendmail y deshabilitar su arranque automatico.

service sendmail stop
chkconfig sendmail off

8; Reiniciamos los servicios: postfix/dovecot.
service postfix start
service dovecot start

Aqui ya tenemos que tener 2 nuevos puertos esperando peticiones de clientes, ademas de ldap. Checamos:

netstat --inet -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ldap *:* LISTEN
tcp 0 0 mail.example.co:netbios-ssn *:* LISTEN
tcp 0 0 localhost:netbios-ssn *:* LISTEN
tcp 0 0 *:imap *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 mail.example.c:microsoft-ds *:* LISTEN
tcp 0 0 localhost:microsoft-ds *:* LISTEN
udp 0 0 mail.example.com:netbios-ns *:*
udp 0 0 *:netbios-ns *:*
udp 0 0 mail.example:netbios-dgm *:*
udp 0 0 *:netbios-dgm

Ahi estan ldap, postfix y dovecot.

Supongamos que tenemos un usuario de nombre pepito, para probar, ese usuario tiene un folder en home:

/home/pepito.

Como aun no ha recibido correo, no existe su estructura tipo mbox, por ello necesittamos crearle su folder llamado Maildir en su folder:

mkdir /home/pepito/Maildir

Cambiamos los permisos:

chmod -R 700 /home/pepito
chown -R pepito:users /home/pepito

Nos vamos a thuderbird y configuramos su cuenta, una vez que nos aparece la ventana donde nos solicita el passwd, se lo damos y nos enviamos un correo de prueba.

Debe de recibirlo el mismo, no creo que haya problemas.

Dovecot tiene habilitado el log:

mail_debug = yes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

Si desean pueden cambiarlos a no, cuando ustedes esten seguros que ya esta operando al 100%.

Pueden leer el archivo /var/log/maillog para que veabn que esta haciendo postfix.

Es todo por el momento, animo!!!

sábado, 28 de noviembre de 2009

Centos 5x: Samba + PDC con LDAP como backend

Vamos a configuar a Centos 5.x para que sea nuestro PDC, para ellos vamos a requerir los siguientes paquetes:

samba
samba-common
samba-client
openldap-servers
openldap-clients
smbldap-tools

El nombre del dominio sera:

pimpom.loc
Una vez hecha la instalacion, vamos hacer unos movimientos, asi me gusta hacerlo a mi, LDAP almacena su BD en:

/var/lib/ldap

Ahi dentro voy a crear un folder con el mismo nombre de mi DOMINIO->PIMPOM pero en minuscula:

mkdir /var/lib/ldap/pimpom

Lo que sigue es copear el archivo de nombre DB_CONFIG.example en el folder creado, este archivo lo localizan donde se instala openldap que es:

/etc/openldap/

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

Observar que necesitamos eliminar la extension del archivo. Ahora necesitamos
cambiar los permisos del folder donde vamos a almacenar la base de datos.

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

LDAP tiene un usuario administrador, aqui le vamos a llamar Manager y ademas debe tener un password, samba por ejemplo necesita saber esta informacion para poder interactuar con LDAP, por ello lo que sigue es crear el password, esta informacion debemos tener a la mano durante todo este tuturial.

Obtenemos nuestro password de una vez:

slappasswd
New password:
Re-enter new password:
{SSHA}afhadskjfhdlaksfhdlskf
Lo que sigue ahora es ya entrar a la configuracion de LDAP, el nombre del archivo que
necesitamos editar es slapd.conf y ya saben donde localizarlo correcto?
slapd.conf
*NOTA: Elimino los comentarios por que usan mucho espacio
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

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

database bdb
suffix "dc=pimpom,dc=loc"
rootdn "cn=Manager,dc=pimpom,dc=loc"
rootpw {SSHA}DSJDASKLJDASKLJDASLKJDASLJDASL
directory /var/lib/ldap/pimpom
loglevel 256

index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

Al principio pueden ver los schemas de ldap, por defult ldap no tiene el de samba asi que
tenemos que darselo.

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

Ahora como hemos habilitado el log de ldap:
loglevel 256

Necesitamos configurar syslog para que acepte los logs de ldap, para ello abrimos el syslog.conf y agregamos esto a el final del archivo:
local4.* /var/log/ldap.log
Creamos ese archivo
touch /var/log/ldap.log
Reiniciamos syslog
service syslog restart
Shutting down kernel logger:                               [  OK  ]
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
Starting kernel logger:                                    [  OK  ]

Vamos revisando lo que hemos hecho:

slapd.conf listo
syslog.conf listo
Bien ya necesitamos iniciar ldap para ver si no hay problemas:
service ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                  [  OK  ]
Starting slapd:                                            [  OK  ]
Checamos que este escuchando el puerto 389.
netstat --inet -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:ldap                      *:*         tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN
Ahi esta "ldap" escuchando, seguimos.
Ya tenemos a LDAP operando, ahora sigue samba,para ellos vamos a configurar smb.conf asi:
SMB.CONF
#Global parameters
[global]
workgroup = PIMPOM
server string = PDC Domain
netbios name = SMBPDC
hosts allow = 172.16.5. 127.
interfaces = eth0
bind interfaces only = Yes

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:ldap://172.16.5.7/
enable privileges = yes
pam password change= Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn * passwd:*all*authentication*tokens*updated*successfully*
unix password sync = Yes

# Log options
log level = 1
log file = /var/log/samba/%m.log
max log size = 500
syslog = 1

# Name resolution
name resolve order = wins hosts bcast

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes
veto files = /*.eml/*.nws/*.{*}/
veto oplock files = /*.doc/*.xls/*.mdb/
deadtime = 120

# Dos-Attribute
map hidden = No
map system = No
map archive = No
map read only = No
store dos attributes = Yes

# printers - configured to use CUPS and automatically load them
load printers = No
printcap name =
printing =
cups options =
show add printer wizard = No

# scripts invoked by samba
add user script = /usr/sbin/smbldap-useradd -m %u
delete user script = /usr/sbin/smbldap-userdel %u
add group script = /usr/sbin/smbldap-groupadd -p %g
delete group script = /usr/sbin/smbldap-groupdel %g
add user to group script = /usr/sbin/smbldap-groupmod -m %u %g
delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g
set primary group script = /usr/sbin/smbldap-usermod -g %g %u
add machine script = /usr/sbin/smbldap-useradd -w %m

# LDAP-iConfiguration
#ldap delete dn = Yes
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pimpom,dc=loc
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=Manager,dc=pimpom,dc=loc
idmap backend = ldap:ldap://172.16.5.7
idmap uid = 10000-20000
idmap gid = 10000-20000

# logon options
logon script =
logon path =
logon path =
logon home =
logon drive =

# setting up as domain controller
username map = /etc/samba/usermap
preferred master = Yes
wins support = Yes
domain logons = Yes
domain master = Yes
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
password level = 6

#========== Share Definitions

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
locking = no

[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No

[Profiles]
comment = Network Profiles Service
path = /home/samba/profiles
read only = No
profile acls = yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
profile acls = Yes

[Public]
comment = Public Folder
path = /opt/public
available = Yes
browseable = Yes
public = Yes
read only = No
guest ok = Yes
writeable = yes
create mode = 0775
directory mode = 0775
admin users = root

Bien lo que sigue es crear el contenido del archivo que lleva por nombre: usermap, este lo vamos a colocar en /etc/samba/

touch /etc/samba/usermap

Y vamos a agregar esta informacion:

# Unix_name = SMB_name1 SMB_name2 ...
root = Manager administrator admin
nobody = guest pcguest smbguest

Salvamos y salimos.

Ahora segun la configuracion necesitamos crear unos directorios, estos son:
samba, netlogon y profiles.

mkdir /home/samba
mkdir /home/samba/profiles
mkdir /home/samba/netlogon

Necesitamos darle a samba el password de LDAP, recuerdan aquel que usuaron cuando ejecutaron: slappasswd?

smbpasswd smbpasswd -W
Setting stored password for "cn=Manager,dc=pimpom,dc=loc" in secrets.tdb
New SMB password:
Retype new SMB password:

Ahora necesitamos obtener un dato muy importante, el SID que cada dominio tiene uno "UNICO", para ello necesitamos ejectar el siguiente comando.

net getlocalsid
SID for domain SMBPDC is:"S-1-5-21-1234567890-1234567890-1234567890"

De nuevo no perder este dato que mas adelante lo vamos a necesitar.

Vamos de nuevo verificando:

ldap corriendo.
smb.conf editado.
samba,profiles,netlogon creados.
usermap creado.
smbpasswd ejecutado.

Bien parece que vamos bien. Lo que sigue es ver si smb.conf no tiene inconsitencias, para ello ejecutamos el comando testparm, si tiene el se los va a indicar, de lo contrario les va a desplegar toda la configuracion de smb.conf, si no arreglen sus detalles, lo mas comun es algo mal escrito.

Aun no vamos a ejecutar a samba, ya que prefiero terminar todo el proceso completo. Existe una utileria completa para administrar todo de ldap, esta es llamada smbldap-tools, vamos a seguir con esta aplicacion.

Existen 2 archivos en /etc/smbldap-tools/ los cuales necesitamos editar.

Vamos empezando con el mas sencillo.

smbldap.conf
*NOTA: El primer parametro es nuestro SID, si lo recuerdan?

SID="S-1-5-21-1234567890-1234567890-1234567890"

sambaDomain="PIMPOM"

##############################################################################
#
# LDAP Configuration
#
##############################################################################
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"# Master LDAP port
masterPort="389"
ldapTLS="0"
ldapSSL="0"
verify="require"
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem"
clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key"
suffix="dc=pimpom,dc=loc"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
scope="sub"#
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/sbin/nologin"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="999"
userSmbHome="\SMBDC\%U"
userProfile="\\SMBPDC\profiles\%U"
userHomeDrive="W:"

Ahora el siguiente archivo:

smbldap_bind.conf

slaveDN="cn=Manager,dc=pimpom,dc=loc"
slavePw="mi-password"
masterDN="cn=Manager,dc=pimpom,dc=loc"
masterPw="mi-password"

Recuerden el inicio, que cuando estabamos configurando ldap usamos un password, es el que nos pide smbldap_bind.conf.

Sigue la parte mas importante, vamos a crear nuestro dominio, la siguiente instruccion lo que haces es dar de alta todos los grupos del dominio para emular un dominio nt4 en samba.

Aqui de nuevo nos va a pedir el password del administrador de ldap.

E
smbldap-populate

Populating LDAP directory for domain PIMPOM
(S-1-5-21-1234567890-1234567890-1234567890)
(using builtin directory structure)

adding new entry: dc=pimpom,dc=local
adding new entry: ou=Users,dc=pimpom,dc=local
adding new entry: ou=Groups,dc=pimpom,dc=local
adding new entry: ou=Computers,dc=pimpom,dc=local
adding new entry: ou=Idmap,dc=pimpom,dc=local
adding new entry: uid=root,ou=Users,dc=pimpom,dc=local
adding new entry: uid=nobody,ou=Users,dc=pimpom,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=pimpom,dc=local
adding new entry: sambaDomainName=PIMPOM,dc=pimpom,dc=local

Ahora para que centos pueda usar los usuarios de LDAP, necesitamos hacer unos cambios, existen 2 archivos de nombre ldap.conf, uno en /etc y otro /etc/openldap/,

Vamos empezando con /etc/ldap.conf:

/etc/ldap.conf
*NOTA: De nuevo omito todos los comentarios.

host 127.0.0.1
base dc=pimpom,dc=loc
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,
nscd,gdm,apache
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

El que sigue:

/etc/openldap/ldap.conf
HOST 127.0.0.1
BASE dc=pimpom,dc=loc
URI ldap://127.0.0.1/

Ahora ya con esto es solo cuestion de configurar a centos para que haga uso de LDAP, para ello tenemos una utileria llamada authconfig-tui, vamos a seguir las siguientes imagenes para mayor claridad:

Figura 1: Configurando Centos con LDAP.
Asi deben dejar su configuracion, de esta manera Centos hara uso de los usuarios de LDAP.

O bien si se siente vikingos y desean hacerlo a mano, deben editar el archivo nsswitch.conf que esta en /etc/
Y quedaria asi:
NOTA: Recordar guardar una copia por si algo sale mal o desean retornar su sistema a su estado inicial.

nsswitch.conf

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

#hosts:     db files nisplus nis dns
hosts:      files wins dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files ldap

publickey:  nisplus

automount:  files ldap
aliases:    files nisplus

Salvan y listo.

Una vez hecho esto lo que sigue es arrancar todo y probar.

1; Reiniciar ldap

service ldap restart

2; Arrancar samba

service smb start

Pruebas

1; net groupmap list nos debe mostrar nuestros grupos creados:

net groupmap list
Domain Admins (S-1-5-21-1234567890-1234567890-1234567890-512) -> Domain Admins
Domain Users (S-1-5-21-1234567890-1234567890-1234567890-513) -> Domain Users
Domain Guests (S-1-5-21-1234567890-1234567890-1234567890-514) -> Domain Guests
Domain Computers (S-1-5-21-1234567890-1234567890-1234567890-515) -> Domain Computers
Administrators (S-1-5-32-544) -> Administrators
Account Operators (S-1-5-32-548) -> Account Operators
Print Operators (S-1-5-32-550) -> Print Operators
Backup Operators (S-1-5-32-551) -> Backup Operators
Replicators (S-1-5-32-552) -> Replicators

2; pdbedit -Lv nos debe dar los usuarios basicos:
smbldap-tools]# pdbedit -Lv
---------------
Unix username: root
NT username: root
Account Flags: [U ]
User SID: S-1-5-21-1234567890-1234567890-1234567890-500
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890-513
Full Name: root
Home Directory: \\SMBPDC\root
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\root
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Mon, 24 May 2010 18:32:27 PDT
Password can change: Mon, 24 May 2010 18:32:27 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username: nobody
NT username: nobody
Account Flags: [NDU ]
User SID: -2998
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890-513
Full Name: nobody
Home Directory: \\SMBPDC\nobody
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\nobody
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: 0
Password can change: 0
Password must change: 0
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

3; Vamos creando un usuario.

smbldap-useradd -a -m pepito
-Ahora le damos el password.
smbldap-passwd pepito
Changing UNIX and samba passwords for pepito
New password:
Retype new password:

Aqui debemos tener un usuario creado y con su directorio en /home, vamos revisando el directorio:

ls /home
pepito samba

Bien ahora vamos viendo que dice pdbedit de ese usuario:
pdbedit -Lv pepito
Unix username: pepito
NT username: pepito
Account Flags: [U ]
User SID: S-1-5-21-1234567890-1234567890-1234567890-3002
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890 -513
Full Name: pepito
Home Directory: \\SMBPDC\pepito
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\pepito
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Tue, 25 May 2010 12:32:56 PDT
Password can change: Tue, 25 May 2010 12:32:56 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ahora que smbldap-tools nos de informes de el:

smbldap-usershow pepito
dn: uid=pepito,ou=Users,dc=mueblex,dc=com
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: pepito
sn: pepito
givenName: pepito
uid: pepito
uidNumber: 1001
gidNumber: 513
homeDirectory: /home/pepito
loginShell: /sbin/nologin
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: pepito
sambaSID: S-1-5-21-1234567890-1234567890-1234567890-3002
sambaPrimaryGroupSID: S-1-5-21-1234567890-1234567890-1234567890-513
sambaProfilePath: \\SMBPDC\profiles\pepito
sambaHomePath: \\SMBPDC\pepito
sambaHomeDrive: W:
sambaLMPassword: B6202951EB466F13AAD3B435B51404EE
sambaAcctFlags: [U]
sambaNTPassword: C6243CD48B29A825CCD68E4053321A66
sambaPwdLastSet: 1274815976
sambaPwdMustChange: 1361129576
userPassword: {SSHA}IQwFvKBbbKv+0AnVZse6ycYoNTV0cU92
shadowLastChange: 14754
shadowMax: 999

Pueden ver el dato que dice:

sambaHomeDrive: W:

Este salio de smbldap.conf ahi lo configuramos. Ahora vamos a ver que dice centos de este usuario.

id pepito
uid=1001(pepito) gid=513(Domain Users) groups=513(Domain Users)

Parece que todo esta funcionando correctamente, vamos a revisar a samba

smbclient -L \\SMBPDC -U%
Domain=[PIMPOM] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
netlogon Disk Network Logon Service
Profiles Disk Network Profiles Service
Public Disk Public Folder
IPC$ IPC IPC Service (PDC Domain)
Domain=[PIMPOM] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------
JGARCIAVM
SMBPDC PDC Domain
SMB-VMXPKLABAZA

Workgroup Master
--------- -------
PIMPOM SMBPDC

Bien todo parece estar operando como esperabamos.

Domain Admins

Si desean que un usuario sea Administrador del dominio "Domain Admins" ese l grupo ahi debemos agregar nuestro usuario.

Supongamos que nuestro usuario es "sysadm", entonces seria asi:

smbldap-groupmod -m sysadm "Domain Admins"
adding user sysadm to group Domain Admins

Listo, cuando necesitemos hacer algo como administrador entramos como tal.



miércoles, 25 de noviembre de 2009

Printers: HP 4000 Errores

Error 79.0803. en pantalla!!!

Un cold reset y listo!!!

Centos/FreeBSD: PHP Execution Time

Si tus scripts necesitan mas del tiempo que tiene php para ejecutar un script, debemos modificar este valor de php

max_execution_time

Lo encuentran en php.ini y en centos esta en /etc y en freebsd esta en /usr/local/etc

Por default es 60 segundos o 1 minutos pero ahi veces que necesitamos mas, esto ustedes lo sabran no hay ciencia exacta solo la experiencia propia, pero como recomendacion nunca le den la opcion que sea ilimitado.

Cuado hagan el cambio deben reiniciar apache para que agarre el valor nuevo.

Saludos!!!

miércoles, 18 de noviembre de 2009

Centos 5.x: Migrando LDAP.

Paquetes que se necesitan instalar antes de empezar todo en el nuevo servidor:

openldap-servers
openldap-clients
samba
samba-common
smbldap-tools
Mandriva MDS
Apache
ntpd

Voy a mover una bd de ldap de gentoo hacia centos.

En gentoo me traje los archivo de respaldo que sale ejecutando:

slapcat -l respaldo.ldif

Copie la misma configuracion que tenia en el gentoo hacia centos hablando de openldap y samba, hasta los schemas, si no hacen esto van a tener problemas, debe quedar igual que el server donde esta operando.

No necesite traer el contenido de la base de datos /var/lib/openldap-directory, por que con el puro archivo respaldo.ldif se van a recuperar los datos.

Lo unico que copie fue DB_CONFIG.example hacia el folder donde ldap va a almacenar sus datos /var/lib/ldap, pero ese lo instala openldap-servers.

Por ultimo activar el syslog para que ldap logie, asi si pasa algo podremos saber mas facil por donde buscarle para reparar el dano.

Agregamos esto a el /etc/syslog.conf

local4.* -/var/log/ldap.log

Salvamos, creamos ese archivo en /var/log

touch /var/log/ldap.conf

Reiniciamos syslogd

/etc/init.d/syslog restart

Cambiamos los permisos para que ldap sea el unico con derechos en ese folder

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

Jalamos el respaldo

slapadd -l respaldo.ldif

De aqui que nos se les pase configurar a centos para que se autentifique con ldap para el es necesario configurar /etc/nsswitch.conf

slapd.conf

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/misc.schema
include /etc/openldap/schema/mail.schema
include /etc/openldap/schema/samba.schema


#################################
schemacheck on
allow bind_v2

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

#######################################################################
# Logging Options (disable when everything is working fine)
#######################################################################
loglevel 256

#######################################################################
# LDBM database definitions
#######################################################################
database bdb
directory "/var/lib/ldap/mydominio"
cachesize 100000
dbcachesize 1000000
lastmod on
suffix "dc=midominio,dc=com"
rootdn "cn=root,dc=midominio,dc=com"

password-hash {crypt}
password-crypt-salt-format "$1$%.8$"
rootpw {CRYPT}asdasdasdasdasdasd.


access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=root,dc=oakwest,dc=com" write
by anonymous auth
by self write
by * none

access to *
by * read

index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index sambaGroupType,sambaSIDList,uniqueMember eq

Sin lo esto:
access to *
by * read
Centos no podra accesar la informacion de los usuarios.

Respaldando Samba

Bien seguimos con samba, necesitamos traernos el respaldo de samba, ahi como lo ven samba tambien tiene sus archivos importantes que se deben respaldar si lo van a mover a otro servidor.

No solo el folder /etc/samba se debe respaldar, el tiene aparte unos archivos con extension "tdb" que regularmente los almacena en "/var/cache", "/var/lib/samba".

Este link les puede servir si desean adentrarse mas y entender a samba y sus archivos critcos.

Samba TDB

Segun dice que los importantes y sus rutas son en Centos:

account_policy --> /var/cache/samba
group_mapping --> /var/cache/samba
ntdrivers --> /var/cache/samba
ntforms --> /var/cache/samba
ntprinters --> /var/cache/samba
passdb --> No lo uso por que mi db es LDAP
registry --> /var/cache/samba
secrets --> /etc/samba
share_info --> /var/cache/samba
winbindd_idmap --> /var/cache/samba

Vamos iniciando por respaldar el archivo secrets.tdb, nos movemos a ese folder y hacemos esto:

cd /var/lib/samba/private
tdbbackup -s bak secrets.tdb

Si observa se acaba de crear ahi mismo un archivo de nombre secrets.tdbbak

Si leemos el man de esta herramienta dice que fue hecha para trabajar hasta cuando el servicio de samba esta operando, o sea que no es necesario apagar a samba para usarla, lo cual es beneficioso para nosotros que administramos este tipo de servicios.

Ahora seguimos con el folder /var/cache/samba/, un cd hasta haya y

tdbbackup -s bak *.tdb

Aqui son mas archivos, creamos ahi dentro un folder de nombre "cache-bak" y movemos todos los archivos con extension tdbbak hacia ahi:

mv *.tdbbak cache-bak/

Ya que jalemos este folder a el nuevo servidor, eliminamos los archivos que nos utiles segun la pagina de samba para que no nos causen problemas, de todos modos cuando samba arranca los crea por ello nos son importantes.

creamos un tar de cache-bak y lo jalamos a el nuevo servidor.

tar -cf cache-bak.tar /var/cache/cache-bak

Movemos ambos archivos a el nuevo servidor con Centos 5.4, ahi cambian las cosas poquito, porque el secrets lo marca en /etc/samba/ el cache esta donde mismo /var/cache/samba.

Copeamos cada archivo a su lugar, nos olvidamos de los temporales.

A la hora de copear solo debe asegurarse que tenga la extension tdb y no los muevan tal cual estan:

mv secrets.baktdb /etc/samba/secrets.tdb

Asi pueden mover todos los demas, cada uno a su respectivo sitio.

Como vamos a mover a samba, debemos checar su archivo de configuracion a ver si no es necesario hacerle algun cambio.

Si todo esta bien, ejecutamos samba.

service smb start

El proceso normal para leventar un PDC con samba es sacar el SID del servidor y darlo de alta en varias aplicaciones como samba, smbldap-tools. Aqui cambia un poco por que el SID ya lo tenemos, si lo modificamos tendriamos que modificar cada uno de nuestros clientes por que el SID es la firma del servidor.

Asi que en este caso lo que vamos hacer es grabar el que tenemos en el servidor de produccion, como ya tenemos este dato de los archivos de configuracion se lo tenemos que dar comando para eso es:

net setlocalsid
SID for domain PDC-SRV is: S-1-5-21-4251888864-2409518005-1441902238

net setlocalsid "TODA LA NUMERACION DEL VIEJO SERVIDOR"

Reiniciamos samba, no debe marcar error.

SMBLDAP-TOOLS

Lo configuramos igual que el servidor de produccion, pero no ejecutamos el smbldap-populate por que ya tenemos la estructura del dominio. Solo verficar que este igual que el de produccion.

Ya que lo tenga listo prueban un smbldap-usershow, smbldap-passwd, etc.

Autentificacion Local

Tenemos que configurar a centos para que se autentifique localmente, para ello debemos tambien modificar el archivo /etc/openldap/ldap.conf y /etc/ldap.conf

/etc/openldap/ldap.conf

HOST 127.0.0.1
BASE dc=oakwest,dc=com
URI 127.0.0.1

/etc/ldap.conf

host 127.0.0.1
base dc=oakwest,dc=com
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

Ejecutan

authconfig-tui

User Information --> ldap
Authentication --> agregan LDAP

Next--> checan los parametros, si todo esta correcto le dicen ok y listo, ya podra Centos usar los parametros del ldap localmente.

Probando

Bien, vamos viendo si ldap esta operando sin problemas:


lunes, 16 de noviembre de 2009

Centos 5.x: Activar disco con Raid en modo rescate

Tenemos que accesar nuestro arreglo con el disco de rescate de Centos 5.x, por default cuando lo ejecutamos el no lo hace, asi que nos toca hacerlo.

Para ello necesitamos crear el archivo mdadm.conf de lo contrario no va a querer, asi:

mdadm --examine --scan > /etc/mdadm.conf

Lo creamos y ahora si iniciamos los arreglos para poder accesarlos.

mdadm --assemble --scan /dev/md0
mdadm --assemble --scan /dev/md1

Listo!!!