sábado, 24 de julio de 2010

FreeBSD 8: Apache Jail

Ahora vamos a meter un servidor apache en una jail, asi dejamos nuestro src.conf:

WITHOUT_ACCT="yes"
WITHOUT_ACPI="yes"
WITHOUT_AMD="yes"
WITHOUT_APM="yes"
WITHOUT_ASSERT_DEBUG="yes"
WITHOUT_ATM="yes"
WITHOUT_AUDIT="yes"
WITHOUT_AUTHPF="yes"
WITHOUT_BIND="yes"
WITHOUT_BLUETOOTH="yes"
WITHOUT_BOOT="yes"
WITHOUT_CALENDAR="yes"
WITHOUT_CDDL="yes"
WITHOUT_CTM="yes"
WITHOUT_CVS="yes"
WITHOUT_DICT="yes"
WITHOUT_EXAMPLES="yes"
WITHOUT_FLOPPY="yes"
WITHOUT_FORTH="yes"
WITHOUT_FREEBSD_UPDATE="yes"
WITHOUT_GAMES="yes"
WITHOUT_GPIB="yes"
WITHOUT_GROFF="yes"
WITHOUT_HTML="yes"
WITHOUT_INET6="yes"
WITHOUT_INFO="yes"
WITHOUT_IPFILTER="yes"
WITHOUT_IPFW="yes"
WITHOUT_IPX="yes"
WITHOUT_JAIL="yes"
WITHOUT_KVM="yes"
WITHOUT_LEGACY_CONSOLE="yes"
WITHOUT_LPR="yes"
WITHOUT_MAIL="yes"
WITHOUT_MAN="yes"
WITHOUT_NCP="yes"
WITHOUT_NETGRAPH="yes"
WITHOUT_NLS="yes"
WITHOUT_NLS_CATALOGS="yes"
WITHOUT_NC_CACHING="yes"
WITHOUT_NTP="yes"
WITHOUT_PF="yes"
WITHOUT_PMC="yes"
WITHOUT_PPP="yes"
WITHOUT_PROFILE="yes"
WITHOUT_QUOTAS="yes"
WITHOUT_RCMDS="yes"
WITHOUT_RCS="yes"
WITHOUT_RESCUE="yes"
WITHOUT_ROUTED="yes"
WITHOUT_SHAREDOCS="yes"
WITHOUT_SSP="yes"
WITHOUT_SYSCONS="yes"
WITHOUT_SYSINSTALL="yes"
WITHOUT_USB="yes"
WITHOUT_WIRELESS="yes"
WITHOUT_WPA_SUPPLICANT_EAPOL="yes"

Algo que me gustaria marcar es que estamos dejando a esta jail NIS y KERBEROS por que vamos a controlar todo los usuarios via LDAP, de lo contrario para puro apache los dejaria dentro del archivo:

WITHOUT_NIS
WITHOUT_KERBEROS

Bien ya seguimos todos los pasos para configurar mi jail, vamos arrancandola, para ello vamos configurando rc.conf del host de jails, quedaria asi:

jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="apache" # Space separated list of names of jails
jail_set_hostname_allow="NO" # Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail
jail_sysvipc_allow="NO" # Allow SystemV IPC use from within a jail

Ahora vamos a la seccion de la jail de nombre apache:

##############################################################
###################### apache ##############################
jail_apache_rootdir="/jails/apache" # Jail's root directory
jail_apache_hostname="apache. mi. dominio. mx" # Jail's hostname
jail_apache_interface="xl0" # Jail's interface variable to create IP ali
jail_apache_ip="192.168.40.6" # Jail's primary IPv4 and IPv6 address
jail_apache_exec_start="/bin/sh /etc/rc" # command to execute in jail for starting
jail_apache_exec_stop="/bin/sh /etc/rc.shutdown" # command to execute in jail for stopping
jail_apache_devfs_enable="YES" # mount devfs in the jail

Arrancamos las jail:

/etc/rc.d/jail/ start apache

Bien aqui ya tenemos nuestra jail en operacion si es que no tuvieron problemas. Ahora viene la parte de la administracion, tenemos que 1ro que nada configurar esto dentro de la jail:
  • rc.conf
  • resolv.conf
  • ssh
  • ports
Para ello la unica manera de conectarse a la jail es atraves del mismo host, para ello tenemos que saber que # de jail es, para ello ejecutamos el comando jls y nos da:

# jls
JID IP Address Hostname Path
15 192.168.40.6 apache-mi-dominio-com-mx /jails/apache

Vamos accesando:

# jexec 15 csh
csh: Cannot open /etc/termcap.
csh: using dumb terminal settings.
apache#

Como podran ver nos marca un error, revisamos ese archivo podremos ver que esta vacio, pero tenemos la ventaja que lo podemos jalar del host de las jails, para ello nos salimos de la jail para regresarnos y hacer la copia:

Algo que tenemos que notar es que /etc/termcap es un enlace a /usr/share/misc/termcap, asi que vamos haciendo lo siguiente dentro del host:

cp /usr/share/misc/termcap /jails/apache/usr/share/misc/

nos retornamos a el jail:

jexec 15 csh

y van a ver que ya no marca el error, correcto?

Ahora ya entramos a nuestra jail, asi es hora de seguir la operacion.

rc.conf

Este archivo no existe asi que tenemos que crearlo y queda asi el mio:

##############################################################
### Important initial Boot-time options ####################
##############################################################
root_rw_mount="YES" # Set to NO to inhibit remounting root read-write.
fsck_y_enable="YES" # Set to YES to do fsck -y if the initial preen fails.
fsck_y_flags="" # Additional flags for fsck -y
background_fsck="NO" # Attempt to run fsck in the background where possible.
##############################################################
### Network configuration sub-section ######################
##############################################################
### Basic network and firewall/security options: ###
log_in_vain="0" # >=1 to log connects to ports w/o listeners.
tcp_keepalive="YES" # Enable stale TCP connection timeout (or NO).
tcp_drop_synfin="YES" # Set to YES to drop TCP packets with SYN+FIN
# NOTE: this violates the TCP specification
icmp_drop_redirect="YES" # Set to YES to ignore ICMP REDIRECT packets
icmp_log_redirect="NO" # Set to YES to log ICMP REDIRECT packets
network_interfaces="xl0" # List of network interfaces (or "auto").
### Network daemon (miscellaneous) ###
syslogd_enable="YES" # Run syslog daemon (or NO).
syslogd_program="/usr/sbin/syslogd" # path to syslogd, if you want a different o
syslogd_flags="-ss" # Flags to syslogd (if enabled).

sshd_enable="YES" # Enable sshd
sshd_program="/usr/sbin/sshd" # path to sshd, if you want a different one.
sshd_flags="" # Additional flags for sshd.

### Network routing options: ###
defaultrouter="192.168.40.1" # Set to default gateway (or NO).

### IPv6 options: ###
ipv6_enable="NO" # Set to YES to set up for IPv6.

##############################################################
### System console options #################################
##############################################################
keyboard="" # keyboard device to use (default /dev/kbd0).
keyrate="fast" # keyboard rate to: slow, normal, fast (or NO).
cursor="blink" # cursor type {normal|blink|destructive} (or NO).
scrnmap="NO" # screen map in /usr/share/syscons/scrnmaps/* (or NO).
blanktime="NO" # blank time (in seconds) or "NO" to turn it off.
saver="NO" # screen saver: Uses /boot/kernel/${saver}_saver.ko
moused_nondefault_enable="NO" # Treat non-default mice as enabled unless
moused_enable="NO" # Run the mouse daemon.
mousechar_start="NO" # if 0xd0-0xd3 default range is occupied in your

##############################################################
### Mail Transfer Agent (MTA) options ######################
##############################################################
# Settings for /etc/rc.sendmail and /etc/rc.d/sendmail:
sendmail_enable="NONE" # Run the sendmail inbound daemon (YES/NO).

##############################################################
### Miscellaneous administrative options ###################
##############################################################
cron_enable="YES" # Run the periodic job daemon.
cron_program="/usr/sbin/cron" # Which cron executable to run (if enabled).
cron_dst="YES" # Handle DST transitions intelligently (YES/NO)
cron_flags="" # Which options to pass to the cron daemon.
clear_tmp_enable="YES" # Clear /tmp at startup.
kern_securelevel_enable="NO" # kernel security level (see security(7))
kern_securelevel="-1" # range: -1..3 ; `-1' is the most insecure
update_motd="NO" # update version info in /etc/motd (or NO)
dmesg_enable="NO" # Save dmesg(8) to /var/run/dmesg.boot
newsyslog_enable="YES" # Run newsyslog at startup.
newsyslog_flags="-CN" # Newsyslog flags to create marked files
mixer_enable="NO" # Run the sound mixer.


Ahora seguimos con resolv.conf.

resolv.conf

Como tenemos un dns operando los damos de alta y queda asi:

domain mi-dominio-com-mx
nameserver 192.168.40.2

ssh
Parte importante de la operacion, asi no dependeremos del host para administrar nuestra jail, vamos configurando ssh con llave.

Para empezar vamos configurando a sshd_config quedando asi:

# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# $FreeBSD: src/crypto/openssh/sshd_config,v 1.49.2.1.2.1 2009/10/25 01:10:29 kensmith Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

# Note that some of FreeBSD's defaults differ from OpenBSD's, and
# FreeBSD has a few additional options.

#VersionAddendum FreeBSD-20090522

Port 22
#Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
ListenAddress 192.168.40.6

# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:

#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# Change to yes to enable built-in password authentication.
PasswordAuthentication no
PermitEmptyPasswords no

# Change to no to disable PAM authentication
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

# Set this to 'no' to disable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM no

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no
#ChrootDirectory none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem sftp /usr/libexec/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server

AllowUsers root

Ahora antes de seguir vamos dandole password a root. Bien como ssh solo permite accesar via "key" o llave publica y yo ya tengo la mia, para esto tenemos que hacer lo siguiente, crear las llaves del jail por si llegaramos a usarlo, para ello vamos ejecutando el siguiente comando:

# ssh-keygen
Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b8:54:2e:7c:2f:90:b0:54:0f:a5:5d:73:5b:58:4c:e8 root@apache.assiin.com.mx
The key's randomart image is:
+--[ RSA 2048]----+
| o.. o .*+ |
| . = . ooo. |
| o . + .. |
| . + = E |
| . B S |
| . = . |
| . . . |
| . |
| |
+-----------------+

Dar enter hasta que regresemos a el shell, nos vamos a el nuevo folder /root/.ssh/
y dentro creamos el archivo de nombre "authorized_keys" ahi dentro es donde vamos a grabar las llaves publicas que van a poder accesar a este jail.

Una vez hecho esto ya podemos arrancar nuestro ssh y probar de alguna de las llaves.

Bien ya logramos entrar a nuestra jail via ssh.

Ports

Ahora viene la parte donde tenemos que de alguna manera jalar de otro sistema los ports, ya que nuestra jail esta configurada para no hacer uso de sysinstall, lo bueno que los ports es un solo directorio que lo podemos comprimir de otro host o jail y jalarlo a este jail.

Es lo que vamos hacer, tengo otro jail, ya di de alta su llave para accesar via ssh. Comprimo el directorio ports y se lo mando a mi jail:

#cd /usr
#tar -czf ports.tar.gz ports/
#scp ports.tar.gz root@IP-DE-MI-JAIL:/usr

Dentro del jail descomprimo el archivo y tengo listo mis ports para ser usandos.

#cd /usr
#tar -xzf ports.tar.gz

Ahora si ya puedo empezar a instalar los ports que necesito, e 1ro es:

cvsup-without-gui

#cd /usr/ports/net/cvsup-wtihout-gui
#maks install clean

make: no system rules (sys.mk).

1er error, lo mismo que paso con termcap, debemos jalar los archivos que nos van a empezar marcar errores por no tenerlos disponibles. Vamos empezando por este "sys.mk". Buscando en otros jails encontramos este archivo en /usr/share/mk/ y dentro de mi jail esta vacio, asi que jalamos mejor todo ese folder, asi como le hicimos con los ports.

Nos vamos a un sistema donde tengamos este folder con todo su contenido y hacemos el mismo proceso.

#cd /usr/share/
#tar -czf mk.tar.gz
#scp mk.tar.gz root@IP-DE-MI-JAIL:/usr/share

Dentro de la jail:

#cd /usr/share
#tar -xzf mk.tar.gz

Listo ahora si podemos instalar el port, solo poner atencion por si falla algo, lo mas seguro que sea por algunos programitas que no esten, pero recordar que los podemos jalar de otros sistemas.

Aqui va otro:

===> Building for libtool-2.2.6b
/bin/sh /usr/ports/devel/libtool22/work/libtool-2.2.6b/libltdl/config/install-sh -d . libltdl/
cp ./libltdl/argz_.h libltdl/argz.h-t
mv libltdl/argz.h-t libltdl/argz.h
make all-recursive
test -f doc/.dirstamp || make doc/.dirstamp
restore=: && backupdir=".am$$" && am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && rm -rf $backupdir && mkdir $backupdir && if (makeinfo --no-split --version) >/dev/null 2>&1; then for f in ./doc/libtool.info ./doc/libtool.info-[0-9] ./doc/libtool.info-[0-9][0-9] ./doc/libtool.i[0-9] ./doc/libtool.i[0-9][0-9]; do if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; done; else :; fi && cd "$am__cwd"; if makeinfo --no-split -I doc -I ./doc -o ./doc/libtool.info ./doc/libtool.texi; then rc=0; CDPATH="${ZSH_VERSION+.}:" && cd .; else rc=$?; CDPATH="${ZSH_VERSION+.}:" && cd . && $restore $backupdir/* `echo "././doc/libtool.info" | sed 's|[^/]*$||'`; fi; rm -rf $backupdir; exit $rc
makeinfo: not found
*** Error code 127

Vamos a jalarlo de otro:

#scp /usr/bin/makeinfo root@192.168.40.6:/usr/bin/
makeinfo 100% 176KB 176.1KB/s 00:00

Regresamos a ver que mas nos falta.

Otro:

install-info --quiet /usr/local/info/libtool.info /usr/local/info/dir
install-info:No such file or directory
*** Error code 1

#scp /usr/bin/install-info root@192.168.40.6:/usr/bin/
install-info 100% 19KB 18.7KB/s 00:00

Aqui aparecio este otro:

R%/usr/local/lib%' -e 's%LIBEXECDIR%/usr/local/libexec%' -e 's%MODULEDIR%/usr/local/libexec/openldap%' -e 's%RELEASEDATE%2010/06/30%' ./$page | (cd .; soelim -) > $page.tmp; done
soelim: not found

# scp /usr/bin/soelim root@192.168.40.6:/usr/bin/
soelim 100% 20KB 19.5KB/s 00:00

Otro mas, estos van apareciendo conforme vamos instalando paquetes:

gmake[1]: Leaving directory `/usr/ports/security/pam_ldap/work/pam_ldap-185'
/usr/bin/fmt: not found
*** Error code 127

Lo copeamos de otro y seguimos.

Al parecer eran todas las pequenas utilerias que necesitabamos, nuestros ports se han instalado sin problemas.

Apache

Sseguimos con el programa principal, vamos a usar la version ./www/apache22, tiene muchos modulos por default ya configurados para trabajar, no hay problema conforme vayamos avazando vamos investigando cada uno de los modulos y podremos ir apagando uno a uno.

apache va a requerir de perl, python, apr. Despues vamos a meter php ya que vamos a tener una paginas dinamicas en el servidor.

Ademas de ellos vamos a alojar squirrelmail ya que tambien vamos a tener un servidor de correo pero este estara en otro jail.

Y todo via ldap, que el servidor ldap estara alojado en el servidor de correo asi vamos armando nuestro rompecabezas.

Bien solo como nota, si vamos a trabajar con LDAP, debemos recordar que cuando aparezca las opciones para apr seleccionar LDAP de lo contrario apache falla en la instalacion por este pequeno programa.


viernes, 23 de julio de 2010

Centos 5.5 Xen Error -> xenconsole: Could not read tty from store: No such file or directory

Aparecio este error cuando quieria accesar mis vm:

xenconsole: Could not read tty from store: No such file or directory

Leyendo resulta que el programa xenconsoled

Solo tenemos que ejecutar esto en la consola del servidorr:

/usr/sbin/xenconsoled

Listo, ahora ahi que ver como hacer para que ese amigo arranque solo ?

Por que no esta en la lista de chkconf.

FreeBSD 8: DNS Jail

Vamos a crear una jail para un dns en FreeBSD 8 i386.

El proceso mas tardado es el builworld, para ello estamos usando esta configuracion:

src.conf

WITHOUT_ACCT="yes"
WITHOUT_ACPI="yes"
WITHOUT_AMD="yes"
WITHOUT_APM="yes"
WITHOUT_ASSERT_DEBUG="yes"
WITHOUT_ATM="yes"
WITHOUT_AUTHPF="yes"
WITHOUT_BLUETOOTH="yes"
WITHOUT_BOOT="yes"
WITHOUT_CALENDAR="yes"
WITHOUT_CDDL="yes"
WITHOUT_CVS="yes"
WITHOUT_DICT="yes"
WITHOUT_EXAMPLES="yes"
WITHOUT_FLOPPY="yes"
WITHOUT_FREEBSD_UPDATE="yes"
WITHOUT_GAMES="yes"
WITHOUT_GPIB="yes"
WITHOUT_GSSAPI="yes"
WITHOUT_HTML="yes"
WITHOUT_INET6="yes"
WITHOUT_IPFILTER="yes"
WITHOUT_IPFW="yes"
WITHOUT_IPX="yes"
WITHOUT_JAILS="yes"
WITHOUT_KERBEROS="yes"
WITHOUT_KVM="yes"
WITHOUT_LPR="yes"
WITHOUT_MAIL="yes"
WITHOUT_NCP="yes"
WITHOUT_NETGRAPH="yes"
WITHOUT_NIS="yes"
WITHOUT_NC_CACHING="yes"
WITHOUT_PF="yes"
WITHOUT_PMC="yes"
WITHOUT_PPP="yes"
WITHOUT_QUOTAS="yes"
WITHOUT_RCMDS="yes"
WITHOUT_RCS="yes"
WITHOUT_SHAREDOCS="yes"
WITHOUT_WIRELESS="yes"
WITHOUT_WPA_SUPPLICANT_EAPOL="yes"

Como podran observar la idea es tener lo necesario para un dns con bind. Mientras menos modulos tengamos mucho mejor asi nuestro servidor sera menos vulnerable, se imaginan que entren por un hoyo en el dns, luego por uno en el ncp, etc,etc.

No vamos a usar bind de los ports sino el que viene por default en FBSD 8 que es:

ns1# named -v
BIND 9.6.1-P1

El buildworld termino sin problemas, asi dejamos la configuracion en el host de los jails para este dns:

#####################################################
### Jail Configuration #######################################
#####################################################
jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="dns" # Space separated list of names of jails
jail_set_hostname_allow="NO" # No quiero que el root de los jails cambie su hostname
jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail
jail_sysvipc_allow="NO" # No necesito SYSV

###########################################
#### jail dns #########
###########################################
jail_dns_rootdir="/jails/dns" # ubicacion fisica del jail
jail_dns_hostname="ns1 . midominio . com . mx" # dns hostname
jail_dns_interface="xl0" # Jail's interface variable to create IP aliases
jail_dns_ip="192.168.40.2" # Jail's primary IPv4 and IPv6 address
jail_dns_exec_start="/bin/sh /etc/rc" # command to execute in jail for starting
jail_dns_exec_stop="/bin/sh /etc/rc.shutdown" # command to execute in jail for stopping
jail_dns_devfs_enable="YES"

Ya solo checamos el handbook y vemos como vaciar nuestro buildworld a este jail, no lo pongo aqui por que el handbook es muy claro y nunca me ha fallado.

Ahora su arrancamos el jail:

/etc/rc.d/jail start dns

fw# jls
JID IP Address Hostname Path
6 192.168.40.2 ns1 . midominio . com . mx /jails/dns

Ahora sigue configurar el rc.conf de esta jail, para ellos debemos entrar a su shell:

jexec 6 /bin/csh
csh: Cannot open /etc/termcap
csh: using dumb terminal settings.
ns1#

Solo tenemos que copear el folder /usr/share/misc/termcap a el jail y listo.

named.conf


domingo, 4 de julio de 2010

FreeBSD: Update sa-update detras de proxy

Si tenemos nuestro spamassassin detras de un proxy con autentificacion, como debemos actualizar spamassassin?

setenv http_proxy "http://usuario:assword@IP-proxy:puerto-proxy" && sa-update -v

Bye!!!

miércoles, 16 de junio de 2010

Centos 5x: Samba 3.3.x+LDAP Windows 7

Aqui de nuevo, ya para Agosto 2010 MS tiene planeado dejar de vender licencias de Windows XP, entonces tenemos que nosotros tambien actualizar nuestros PDC a una version compatible con Windows 7 porque van a empezar a llegar computadoras con este OS.

Que a mi punto de vista es mucho mejor que Windows Vista.

Bien Red Hat por no quedarse atras, decidio tener una version compatible con Windos 7 de Samba, la version 6 de Red Hat ya viene lista para ello, mientras tenemos solo 1 camino, migrar todo a samba 3.3.8 que viene por default o buscar una version mas reciente.

Para saber que dice el equipo de samba aqui tiene el link samba-windows7

Estamos usando la ultima version de Centos, ya que ellos dependen 100% de Red Hat, asi que estamos hablando de la 5.5 Release.

Todo esta hecho dentro de maquinas virtuales, todo corriendo bajo Ubuntu 9.10, para virtualizar tenemos VirtualBox.

Bien vamos suponiendo que ya tenemos nuestro Centos operando y actualizado. Algo que me gustaria aclarar es que ldap no tiene nada que ver con los problemas de samba y windows 7, asi que ldap sigue su operacion normal.

Pero vamos hacer todo desde 0 para no usar otros links y hacerlo muy tedioso.

Empiezo.

NOTA: Por el momento no vamos a usar DNS.

1; Centos actualizado con IP fija y hostname:

IP: 172.16.5.152
Hostname: pdc-srv.pinole.com

2; Modificar el archivo /etc/hosts:

[root@pdc-srv home]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.16.5.152 pdc-srv.pinole.com pdc-srv

3; Instalar los siguientes repos.

Ver siguiente link repos

Una vez instalados correr:

yum update, actualizar y reinciar.

4; Instalar los siguientes paquetes:

samba3x.
samba3x-client
samba3x-common
samba3x-doc
samba3x-winbind
openldap-servers
openldap-clients

Estamos manejando la version 3.3.8 de samba.

5; Configurar ldap.

Nombre del dominio: pinole.com

a) creamos un folder llamado pinole en /var/lib/ldap/

mkdir /var/lib/ldap/pinole

b) Copeamos el archivo de nombre DB_CONFIG.example en el folder creado eliminando la extension.

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

c) Cambiamos el permiso de ese folder hacia el usuario ldap:
chown ldap:ldap /var/lib/ldap/pinole

d) Sacamos el password para el usuario de la BD en ldap:
[root@pdc-srv home]# slappasswd
New password:
Re-enter new password:
{SSHA}garabatosdecaracteres

e) editamos el archivo del servidor de ldap, llamado slapd.conf y lo dejamos asi:
NOTA: Muchos parametros los voy a eliminar para hacer la informacion mas digerible.

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=pinole,dc=com"
rootdn "cn=Manager,dc=pinole,dc=com"
rootpw {SSHA}garabatosdecaracteres

directory /var/lib/ldap/pinole
loglevel 256

# Indices to maintain for this database
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

f) Como estamos habilitando el log de ldap tenemos que actualizar syslog para que se encargue de el:

touch /var/log/ldap.log

Agregar esta linea a /etc/syslog.conf
local4.* /var/log/ldap.log

Salvar y reiniciar a syslog.

service syslog restart

g) Iniciamos el servicio de ldap.

[root@pdc-srv home]# service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

h) Probamos que el servicio este operando:

[root@pdc-srv home]# service ldap status
slapd (pid 29680) is running...

6; Hasta aqui tenemos ya a ldap operable, ahora sigue configurar samba. Para ello tenemos dejar el archivo general(/etc/samba/smb.conf) como sigue:

[global]
workgroup = PINOLE
server string = PDC Domain
netbios name = PDC-SRV
hosts allow = 172.16.5. 127.
interfaces = eth0
bind interfaces only = Yes
hosts deny = 0.0.0.0

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:ldap://172.16.5.152/
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 lmhost

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes

# 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
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 %u

# LDAP-iConfiguration
#ldap delete dn = Yes
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pinole,dc=com
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=pinole,dc=com
idmap backend = ldap:ldap://172.16.5.152
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

#Si tiene clientes windows98 debene habilitar estos parametros (solo para samba 3.3.x+, #samba 3.0.x los tiene por default habilitados.
#lanman auth = Yes
#client lanman auth = Yes

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
Locking = no

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

[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

[Share]
comment = Private Share
path = /opt/share
valid users = @it
write list = @PINOLE\it
force group = @PINOLE\it
read only = No
force create mode = 0770
directory mask = 0770

*Salvamos y salimos.

7; Debemos crear algunos foder ahi dados de alta:

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

8; Crear el archivo usermap y dejarlo asi:

touch /etc/samba/usermap

root = Manager administrator admin
nobody = guest pcguest smbguest

9; Grabar el password de ldap en samba.

[root@pdc-srv home]# smbpasswd -W
Setting stored password for "cn=Manager,dc=pinole,dc=com" in secrets.tdb
New SMB password:
Retype new SMB password:

Este password es el que usamos cuando ejecutamos "slappaswd".

10; Compilar e instalar smbldap-tools, no podemos usar la version que nos propociona centos desde sus repos, por que esa aun depende de samba 3.0.x y les va a decir que eliminen la version que tienen instalada y si lo hacen van a volver de nuevo a el pasado.

Para ello necesitamos nosotros mismos hacer nuestra propia version. Asi:

a) yum install rpm-build
b) wget http://packages.sw.be/smbldap-tools/smbldap-tools-0.9.5-1.rf.src.rpm
c) rpm -ihv smbldap-tools-0.9.5-1.rf.src.rpm
d) Nos movemos a el folder /usr/src/redhat/SPECS
e) abrimos este archivo(smbldap-tools.spec ) y dejamos la siguiente linea asi:
Requires: perl >= 5.6, openldap, openldap-clients, samba3x
f) creamos el rpm:
rpmbuild -bb ./smbldap-tools.spec
g) nos movemos a el siguiente folder
cd /usr/src/redhat/RPMS/noarch
h) Instalamos el rpm
yum --nogpgcheck --enablerepo=rpmforge install smbldap-tools-0.9.5-1.rf.noarch.rpm

Esto nos va a instalar todo lo que necesita smbldap-tools.

11; Ahora necesitamos saber el SID del dominio, se saca asi:

[root@pdc-srv samba]# net getlocalsid
SID for domain PDC-SRV is: S-1-5-21-1790762827-2518552153-1965868529

Esta informacion debemos tenerla a la mano.

12; Configurar smbldap-tools.

a) abrir archivo /etc/smbldap-tools/smbldap.conf y dejarlo asi:

SID="S-1-5-21-1790762827-2518552153-1965868529"
sambaDomain="PINOLE"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="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=pinole,dc=com"
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="\\PDC-SRV\%U"
userProfile=""
userHomeDrive="W:"
userScript=""
mailDomain="pinole.com"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

NOTA: No voy a manejar profiles en la red.

b) Sigue el archivo /etc/smbldap-tools/smbldap_bind.conf

slaveDN="cn=Manager,dc=pinole,dc=com"
slavePw="supassword"
masterDN="cn=Manager,dc=pinole,dc=com"
masterPw="supassword"

13; Crear los grupos y usuarios del dominio:

smbldap-populate -l 99

Al final nos va a pedir el password de ldap, se lo damos y listo.

14; Configuramos centos para que haga uso de ldap para su autentificacion, necesitamos editar 2 archivos, /etc/ldap.conf /etc/openldap/ldap.con, vamos empezando con el primero, que da asi:

host 127.0.0.1
base dc=pinole,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

Ahora /etc/openldap/ldap.conf

HOST 127.0.0.1
URI ldap://127.0.0.1/
BASE dc=pinole,dc=com
TLS_CACERTDIR /etc/openldap/cacerts

15; Configurar Centos para que haga uso de los usuarios de ldap, tenemos una utileria en la consola, se llama authconfig-tui, la ejecutamos y seleccionamos ldap en ambos lados, lo que hace este programa es leer los dos archivos del punto 14 y de saca la informacion de como contactar a ldap.



16; Ldap esta operando, ahora vamos a probar si la estructura de nuestro dominio esta correcta.

[root@pdc-srv samba]# net groupmap list
Domain Admins (S-1-5-21-1790762827-2518552153-1965868529-512) -> Domain Admins
Domain Users (S-1-5-21-1790762827-2518552153-1965868529-513) -> Domain Users
Domain Guests (S-1-5-21-1790762827-2518552153-1965868529-514) -> Domain Guests
Domain Computers (S-1-5-21-1790762827-2518552153-1965868529-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

Ahora los usuarios

[root@pdc-srv samba]# getent passwd | grep Domain
root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false

17; Ejecutando a samba, ya sigue la parte mas importante de todo esto, con esta version de samba, ya divieron el demonio smb y nmb asi que tenemos que iniciar a cada por su cuenta:

[root@pdc-srv samba]# service smb start
Starting SMB services: [ OK ]
[root@pdc-srv samba]# service nmb start
Starting NMB services: [ OK ]
[root@pdc-srv samba]# service winbind start
Starting Winbind services: [ OK ]

Winbind sigue siendo independiente.

18; Agrendo usuarios a el dominio:

[root@pdc-srv samba]# smbldap-useradd -a -m test6
[root@pdc-srv samba]# smbldap-passwd test6
Changing UNIX and samba passwords for test6
New password:
Retype new password:

Debemos tener un folder en /home de este usuario:

[root@pdc-srv samba]# ll /home/
total 32
drwx------ 2 notelaacabas Domain Users 4096 Jun 16 10:19 notelaacabas
drwxr-xr-x 3 root root 4096 Jun 16 09:48 samba
drwx------ 2 test1 Domain Users 4096 Jun 16 10:07 test1
drwx------ 2 test2 Domain Users 4096 Jun 16 10:07 test2
drwx------ 2 test3 Domain Users 4096 Jun 16 10:07 test3
drwx------ 2 test4 Domain Users 4096 Jun 16 10:08 test4
drwx------ 2 test5 Domain Users 4096 Jun 16 10:06 test5
drwx------ 2 test6 Domain Users 4096 Jun 16 13:05 test6

Yo ya tengo varios.

Vamos viendo la informacion de este usuario:

[root@pdc-srv samba]# pdbedit -Lv test6
Unix username: test6
NT username: test6
Account Flags: [U ]
User SID: S-1-5-21-1790762827-2518552153-1965868529-3024
Primary Group SID: S-1-5-21-1790762827-2518552153-1965868529-513
Full Name: test6
Home Directory: \\PDC-SRV\test6
HomeDir Drive: W:
Logon Script:
Profile Path:
Domain: PINOLE
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Mon, 18 Jan 2038 19:14:07 PST
Kickoff time: Mon, 18 Jan 2038 19:14:07 PST
Password last set: Wed, 16 Jun 2010 13:05:30 PDT
Password can change: Wed, 16 Jun 2010 13:05:30 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

[root@pdc-srv samba]# smbldap-usershow test6
dn: uid=test6,ou=Users,dc=pinole,dc=com
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: test6
sn: test6
givenName: test6
uid: test6
uidNumber: 1012
gidNumber: 513
homeDirectory: /home/test6
loginShell: /sbin/nologin
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: test6
sambaSID: S-1-5-21-1790762827-2518552153-1965868529-3024
sambaPrimaryGroupSID: S-1-5-21-1790762827-2518552153-1965868529-513
sambaHomePath: \\PDC-SRV\test6
sambaHomeDrive: W:
sambaLMPassword: F5CF000C05721947AAD3B435B51404EE
sambaAcctFlags: [U]
sambaNTPassword: 059D9B5115D7554D006DD6E6B3403B6C
sambaPwdLastSet: 1276718730
sambaPwdMustChange: 1363032330
userPassword: {SSHA}xcHbH7IIFXLNrpL9S4kbFD+r+ol0ZTUv
shadowLastChange: 14776
shadowMax: 999

Hasta aqui todo va bien.

19; Revisando si samba ya tomo el control del dominio, para esto tenemos que leer el archivo log de nmb:

[root@pdc-srv samba]# tail log.nmbd

Samba server PDC-SRV is now a domain master browser for workgroup PINOLE on subnet 172.16.5.152

*****
[2010/06/16 13:02:33, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(395)
*****

Samba name server PDC-SRV is now a local master browser for workgroup PINOLE on subnet 172.16.5.152

*****

Perfecto.

20; Probando los accesos de los usuarios a cada uno de sus directorios personales:
[root@pdc-srv samba]# smbclient \\\\pdc-srv\\test6 -U test6
Enter test6's password:
Domain=[PINOLE] OS=[Unix] Server=[Samba 3.3.8-0.51.el5]
smb: \> mkdir seis
smb: \> quit
[root@pdc-srv samba]#

Listo no marco error de acceso, para que vean si funciona, vamos tratando hacer lo mismo, pero usando otro usuario:
[root@pdc-srv samba]# smbclient \\\\pdc-srv\\test6 -U test1
Enter test1's password:
Domain=[PINOLE] OS=[Unix] Server=[Samba 3.3.8-0.51.el5]
tree connect failed: NT_STATUS_ACCESS_DENIED

Correcto acceso denegado.

Bien, hasta aqui samba esta listo para recibir a sus clientes, ustedes ya saben como agregar sus equipos con Windows XP a el dominio, es casi el mismo proceso en windows 7, nomas que deben llevar a cabo unos cambios en el register, el principio del blog les puse el link donde dice como hacer esto.

LDAP Slave Server

Ya tenemos un servidor PDC con samba y LDAP, todo funciona correctamente, nuestros clientes se estan conectando, todo mundo esta trabajando sin problemas. Pero resulta que la empresa crecio y ahora los logeos estan un poco lentos.

Samba+LDAP segun la documentacion dice que por cada 50 usuarios debemos tener un BDC para que ayude a los logeos asi el PDC no se sature y alente la red.

La ventaja de LDAP es que tiene la opcion de replica hacia otro LDAP en tiempo real, no es necesario apagar el servicio y hacer rsync o cp o tar para llevar la BD de un servidor a otro.

LDAP tiene muchas maneras de llevar a cabo esto, cual es la mas eficiente no se, solo he trabajado con una muy estable y no estamos cambiando a cada rato los settings del PDC asi que para mi es mas que suficiente.

Esto funciona a grandes razgos asi, el PDC tiene el servidor LDAP maestro, necesitamos un BDC con un servidor LDAP esclavo. Cuando se hace algun cambio en la BD del PDC, el LDAP maestro envia los cambios a el LDAP esclavo que se esta ejecutando en el BDC, asi de simple.

Con esto tendremos redundancia de servidores de logeo, si cae uno el otro hara la chamba, lo unico malo que si el PDC cae y alguien quisiera hacer un cambio en su cuenta va a estar dificil por que el PDC manda, nada es perfecto, nunca me ha tocado esto.

Hacer esto no es nada dificil, lo unico que tenemos que hacer es o siguiente:

1; Datos del BDC:

IP: 172.16.5.153
Hostname: bdc-srv.pinole.com

2; Aqui estamos usando ya PFSENSE, asi que doy de alta los datos de mis equipos en el DNS asi me olvido de editar el /etc/hosts.

3; Software a instalar. Vamos a seguir del PDC los pasos del #4 a el 5-C.

4; Configurando el LDAP esclavo:

Aqui vamos a agregar a el final del archivo slapd.conf esto:

updatedn "cn=Manager,dc=pinole,dc=com"
updateref ldap://pdc-srv.pinole.com:389/

5; Seguir los pasos #14 y #15 para que nuestro BDC accese los usuarios del PDC via LDAP, probar.

6; Copear la BD de LDAP maestro a el esclavo y enviarla a el LDAP esclavo, cargar el LDAP esclavo con el respaldo traido desde el maestro.

a)Maestro.
slapcat -l pinole.ldif
b) Enviar este archivo a el esclavo, aqui yo use ssh para esto con llave publica.
c) slapadd -l pinole.ldif
NOTA: aqui necesitamos cambiar los permisos del directorio /var/lib/ldap/pinole de nuevo:
chown -R ldap:ldap /var/lib/ldap/pinole

7; Seguir paso #5-f.

8; Iniciar el LDAP esclavo.

9; En el LDAP maestro necesitamos apagarlo y agregar lo siguiente a el final del archivo slapd.conf:

#Replicas of this database
replogfile /var/lib/ldap/pinole/replog
replica host=bdc-srv.pinole.com:389
binddn="cn=Manager,dc=pinole,dc=com"
credentials=ldap-password
bindmethod=simple

10; Crear el archivo replog y poner los permisos de ldap:

touch /var/lib/ldap/pinole/replog
chown -R ldap:ldap /var/lib/ldap/pinole/

11; Reiniciar el servicio de ldap:

service ldap restart

Aqui ya tenemos nuestros dos servicios arriba, necesitamos saber si funcionan. Para esto, tanto el PDC como el BDC deben tener dados de alta ambos en el archivo ldap.conf, asi si uno no responde sabran usar el otro.

Asi quedaria el /etc/ldap.conf en ambos, solo se le agrega un parametro solemente:

host 127.0.0.1 bdc-srv.pinole.com

Como podran ver solo agregamos el bdc.

El /etc/openldap/ldap.conf lo mismo:

HOST 127.0.0.1 bdc-srv.pinole.com
URI ldap://127.0.0.1/ ldap://bdc-srv.pinole.com/
BASE dc=pinole,dc=com
TLS_CACERTDIR /etc/openldap/cacerts

Si quieren probar esto apaguen el LDAP maestro y pidan la informacion del algun usuario del dominio, debe arrojarselas aunque el LDAP maestro este apagado.

Ahora de nuevo prendan el LDAP maestro, agreguen un usuario o cambien el password de uno usuario, la replica la hace rapido. Apaguen el LDAP maestro y traten de pedir info del usuario creado, van a ver que en cualquiera de los 2 servidores les mostrara la informacion, lo que significa que funciona.

BDC, ahora seguimos con el BDC, aqui es donde entra Samba. La configuracion es parecida a el PDC, solo unas cosillas cambian, aqui les muestro el smb.conf del BDC.

#Global parameters
[global]
workgroup = PINOLE
server string = BDC Domain
netbios name = BDC-SRV
hosts allow = 172.16.5. 127.
interfaces = eth0, lo
bind interfaces only = Yes
remote announce = 172.16.5.255
hosts deny = 0.0.0.0
smb ports = 139 445

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:"ldap://172.16.5.152/ ldap://172.16.5.153/"
enable privileges = 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 lmhost

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes

# 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 =
cups options =
show add printer wizard = No

# LDAP-Configuration
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pinole,dc=com
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=pinole,dc=com
idmap backend = ldap:ldap://172.16.5.152 ldap://172.16.5.153
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 = No
wins server = 172.16.5.152
domain logons = Yes
domain master = No
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
password level = 6
map to guest = Bad User

Vamos a crear el archivo /etc/samba/usermap y agregar los datos al igual que el PDC.

touch /etc/samba/usermap
root = Manager administrator admin
nobody = guest pcguest smbguest

Guardar el passwd del ldap master:

[root@bdc-srv samba]# smbpasswd -W
Setting stored password for "cn=Manager,dc=pinole,dc=com" in secrets.tdb
New SMB password:
Retype new SMB password:

Guardar el SID del PDC.
[root@bdc-srv samba]# net rpc getsid PINOLE
Storing SID S-1-5-21-1790762827-1111111111-111111111 for Domain PINOLE in secrets.tdb

Unir a el dominio:

[root@bdc-srv samba]# net rpc join -U root
Enter root's password:
Joined domain PINOLE.

o

[root@bdc-srv samba]# net rpc join
Enter root's password:
Joined domain PINOLE.

Vean cual les funciona, la 1ra en otro dominio de prueba marco este error:

net rpc join -U root
Enter root's password:
[2010/06/21 22:50:14, 0] libsmb/clientgen.c:cli_receive_smb(165)
Receiving SMB: Server stopped responding
Could not connect to server SMBPDC
Connection failed: NT_STATUS_IO_TIMEOUT

Usando la 2da version funciono.

Verificamos en el PDC si la cuenta fue creada:
[root@pdc-srv pinole]# smbldap-groupmod -m test7 inv
adding user test7 to group inv
[root@pdc-srv pinole]# pdbedit -Lv bdc-srv$
Unix username: bdc-srv$
NT username: bdc-srv$
Account Flags: [S ]
User SID: S-1-5-21-1790762827-2518552153-1965868529-1003
Primary Group SID: S-1-5-21-1790762827-2518552153-1965868529-515
Full Name: Computer
Home Directory:
HomeDir Drive:
Logon Script:
Profile Path:
Domain: PINOLE
Account desc: Computer
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Mon, 21 Jun 2010 06:17:10 PDT
Password can change: Mon, 21 Jun 2010 06:17:10 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ya solo hechamos a volar el samba y a probar.

smbclient -L \\bdc-srv -U root

sábado, 29 de mayo de 2010

Centos 5x: Instalar Samba 3.4

Tomamos la version que gusten de la rama 3.4 de aqui.

http://ftp.sernet.com/pub/samba/old/centos/5/i386/3.4.7-42/

Lo bajan a su centos 5, ahi tienen para i386 y x64 bits.

wget http://rutadelrpm

Aqui necesitamos instalar asi los paquetes:

rpm -i nombredelpaquete

Este es el orden de instalacion:

1; libwbclient0-3.4.7-42.el5.i386.rpm
2; samba3-client-3.4.7-42.el5.i386.rpm
3; samba3-3.4.7-42.el5.i386.rpm
4; samba3-winbind-3.4.7-42.el5.i386.rpm
5; smbldap-tools *
6; samba3-doc-3.4.7-42.el5.i386.rpm

*Si desean instalar samba-docs deben instalar smbldap-tools, por que este paquete instala librerias perl que samba-doc requiere.

Listo!!!

sábado, 22 de mayo de 2010

FreeBSD 7/8: Apache 2x Update con LDAP

Bueno ya tenemos que actualizar apache22. Pero sale esto en el UPDATING

AFFECTS: users of devel/apr0, devel/apr1, www/apache20, www/apache22
AUTHOR: pgollucci@FreeBSD.org

devel/apr has been renamed to devel/apr1

WITH_APR_FROM_PORTS=yes for www/apache22 has been dissolved and
may be removed from your configs. devel/apr1 is always used now.

Please manually delete apache-2.\* if installed _before_ updating using either
portmaster or portupgrade.

# pkg_delete -f apache-2.\*

If you use portmaster:

portmaster -o devel/apr1 devel/apr

If you use portupgrade:

portupgrade -f -o devel/apr1 devel/apr

Finally re-install apache if you deleted it earlier and update ports as usual.
(where XX is either 20 or 22)

portinstall www/apacheXX
Pero no dice nada hacerca de LDAP?

Cuando seguimos los pasos, y llegamos a la parte donde reinstalamos apache como sugieren en el UPDATING, no mencionan que apache va a tronar con un error que dice que uno de sus modulos debe ser compilado con soporte para LDAP, que resulta ser devel/apr1.

Por lo tanto debemos regresarnos y reinstalar devel/apr1 y agregar esta opcion.

[X] LDAP Enable LDAP support in apr-util

Una vez hecho esto, ahora si nos regresamos a www/apache22 y lo resinstalamos, ya no va a tronar, se ve instalar sin problemas, nomas recordar que antes de hacer esto respaldar el directorio actual de apache /usr/local/etc/apache22/ por que al momento de instarlo de nuevo va a sobre-escribir nuestra configuracion, asi cuando termine la instalacion solo regresamos los archivos de nosotros a su ubicacion original y ya solo reiniciamos apache y listo.

Animo!!!