Integracion de Canaima GNU/Linux a LDAP

Imagen de jcalles

Tema: 

A continuación de muestra un script para unir maquinas linux debian o derivados a un LDAP. Alguna sugerencia seria bienvenida.


#Dar permiso de ejecución al script chmod +x ./dominio.sh
############################################
#Este script puede modificarlo,copiarlo, eliminarlo, hacer lo que usted estime conveniente
#Licencia GPL
############################################

#!/bin/bash

nombrehost=$1
nombrehostanterior=`cat /etc/hostname`
while [ ! "$nombrehost" ]
do
if [ ! "$nombrehost" ]
then
echo "Introduzca un nombre para el equipo"
read nombrehost
echo $nombrehost
clear
else
echo "El equipo será integrado con el nombre '$nombrehost'"
fi
done
sed s/$nombrehostanterior/$nombrehost/g -i /etc/hostname

###### Control de errores
if [ $? -eq 0 ]
then
echo "Se ha cambiado el nombre del equipo en /etc/hostname con exito a $nombrehost" >> loginstalacion.log
else
echo "ERROR EN LA ESCRITURA DEL FICHERO /ETC/HOSTNAME" >> loginstalacion.log
exit
fi
#sustituimos en el fichero hosts el anterior nombre por el nuevo
sed s/$nombrehostanterior/$nombrehost/g -i /etc/hosts

if [ $? -eq 0 ]
then
echo "Se ha cambiado el nombre del equipo en /etc/hosts con exito a $nombrehost" >> loginstalacion.log
else
echo "ERROR EN LA ESCRITURA DEL FICHERO /ETC/HOSTS" >> loginstalacion.log
exit
fi

#si nuestro dominio emplea un servidor de dominio tb debemos modificar el fichero /etc/dhcp3/dhclient.conf.
echo "prepend domain-name "'"DOMINIO"'"; " >> /etc/dhcp3/dhclient.conf
echo "send host-name "'"'$nombrehost'.dominio.gob.ve"'"; " >> /etc/dhcp3/dhclient.conf

if [ $? -eq 0 ]
then
echo "Se han añadido los nombres de los servidoresdel dominio al final de /etc/dhcp3/dhclient.conf">> loginstalacion.log
else
echo "ERROR EN LA ESCRITURA DE LAS DIRECCIONES DEL SERVIDOR EN EL FICHERO /ETC/DHCP3/DHCLIENT.CONF" >> loginstalacion.log
exit
fi
#modificamos el fichero resolv.conf para que no pueda ser modificado por lanmanager
chattr +i /etc/resolv.conf

echo "//servidorfondopantalla/fondo /mnt/fondo smbfs username=xxxx,password=xxxx 0 0">> /etc/fstab

# modificar el sources.list

echo "deb http://repositorio.dominio.gob.ve/debian lenny main contrib non-free">> /etc/apt/sources.list
echo "deb http://repositorio.dominio.gob.ve/seguridad lenny/updates main contrib non-free">> /etc/apt/sources.list

#Actualizar y instalar los paquetes necesarios

aptitude update
aptitude install libnss-ldap libpam-ldap nscd libpam-dotfile libpam-ccreds nss-updatedb libnss-db puppet

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

#Reconfigurar la libreria.

dpkg-reconfigure libnss-ldap

## Colocar ldap://IP:389
## dc=dominio,dc=gob,dc=ve
## cn=admin,dc=dominio,dc=gob,dc=ve
## clave del ldap

clear
#####################################################################
#Enviar las modificaciones a los diferentes ficheros en pam.d

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
echo "account sufficient pam_ldap.so"> /etc/pam.d/common-account
echo "account sufficient pam_unix.so try_first_pass ">> /etc/pam.d/common-account
#echo "account required pam_deny.so">> /etc/pam.d/common-account
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo "auth sufficient pam_ldap.so"> /etc/pam.d/common-auth
echo "auth sufficient pam_unix.so try_first_pass nullok_secure">> /etc/pam.d/common-auth
#echo "auth required pam_deny.so">> /etc/pam.d/common-auth
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#echo "password required pam_cracklib.so retry=3 minlen=8 difok=3"> /etc/pam.d/common-password
echo "password sufficient pam_ldap.so use_authtok nullok">> /etc/pam.d/common-password
echo "password sufficient pam_unix.so use_authtok nullok obscure min=8 max=40 md5">> /etc/pam.d/common-password
#echo "password required pam_deny.so">> /etc/pam.d/common-password

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

echo "session required pam_mkhomedir.so skel=/etc/skel/ umask=0077"> /etc/pam.d/common-session
echo "session sufficient pam_ldap.so">> /etc/pam.d/common-session
echo "session required pam_unix.so">> /etc/pam.d/common-session
echo "session required pam_group.so">> /etc/pam.d/common-session

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

echo "password sufficient pam_ldap.so">> /etc/pam.d/passwd
echo "password required pam_unix.so nullok obscure min=4 max=8">> /etc/pam.d/passwd

################################################
# Modificar el Nsswitch.
echo "passwd: files ldap"> /etc/nsswitch.conf
echo "group: files ldap">> /etc/nsswitch.conf
echo "shadow: files ldap">> /etc/nsswitch.conf
echo "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4" >> /etc/nsswitch.conf
echo "networks: files">> /etc/nsswitch.conf
echo "protocols: db files">> /etc/nsswitch.conf
echo "services: db files">> /etc/nsswitch.conf
echo "ethers: db files">> /etc/nsswitch.conf
echo "rpc: db files">> /etc/nsswitch.conf
echo "netgroup: nis">> /etc/nsswitch.conf

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

#Modificar el archivo /etc/security/group.conf para acceder a los dispositivos

echo "*; *; *; Al0000-2400; floppy, audio, video, plugdev, powerdev, games,disk, dialout, voice, fax, cdrom, floppy, tape, lp, lpadmin, netdev,saned, scanner">> /etc/security/group.conf

###############################################33

## Modificar los archivos de segurudad de gdm,su, login,sshd para autenticar contra el ldap
# /etc/pam.d/gdm

echo "auth requisite pam_nologin.so">> /etc/pam.d/gdm
echo "auth required pam_env.so readenv=1">> /etc/pam.d/gdm
echo "auth required pam_env.so readenv=1 envfile=/etc/default/locale">> /etc/pam.d/gdm
echo "auth optional pam_group.so">> /etc/pam.d/gdm
echo "auth optional pam_group.so">> /etc/pam.d/login
echo "auth sufficient pam_ldap.so">> /etc/pam.d/sshd
echo "account sufficient pam_ldap.so">> /etc/pam.d/sshd
echo "session sufficient pam_ldap.so">> /etc/pam.d/sshd
echo "password sufficient pam_ldap.so">> /etc/pam.d/sshd

echo "auth sufficient pam_rootok.so" >> /etc/pam.d/su
echo "auth sufficient pam_ldap.so">> /etc/pam.d/su
echo "auth required pam_unix.so use_first_pass">> /etc/pam.d/su

echo "account sufficient pam_ldap.so">> /etc/pam.d/su
echo "account required pam_unix.so">> /etc/pam.d/su

echo "session sufficient pam_ldap.so">> /etc/pam.d/su
echo "session required pam_unix.so">> /etc/pam.d/su

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

if [ -f "/etc/pam.d/kdm" ];
then
echo "auth optional pam_group.so">> /etc/pam.d/kdm
fi

## Modificar el archivo ldap.conf , pam_ldap

echo "BASE dc=dominio,dc=gob,dc=ve">> /etc/ldap/ldap.conf
echo "URI ldap://IP LDAP:389">> /etc/ldap/ldap.conf

#########################################################3

echo "host IP LDAP">> /etc/libnss-ldap.conf
############################################################

echo "host IP LDAP">> /etc/pam_ldap.conf
echo "base dc=dominio,dc=gob,dc=ve">> /etc/pam_ldap.conf
echo "rootbinddn cn=admin,dc=dominio,dc=gob,dc=ve">> /etc/pam_ldap.conf
echo "uri ldap://IP LDAP:389">> /etc/pam_ldap.conf

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

## Editar el archivo de puppet para agregar el servidor

echo "server=xxxx.dominio.gob.ve">> /etc/puppet/puppet.conf

echo "Ahora puede iniciar con su sesion de Dominio"
echo "Disfrutelo"

exec puppetd -t
exec /etc/init.d/puppet restart
exec /etc/init.d/nscd restart
exec nss_updatedb ldap passwd && nss_updatedb ldap group
exec reboot