viernes, 30 de noviembre de 2012

OpenLDAP server + phpldapadmin

 Bueno vamos a configurar un servidor de protocolo ligero de acceso a directorios OpenLDAP, la configuración de este servidor será para la autentificación de usuarios  en cualquier equipo que este en nuestra red facilitando la administración de usuarios y el fácil desplazamiento de los mismo a cualquier equipo sin la necesidad de tener una cuenta previamente configurada en cada equipo de la red.
OPENLDAP Servidor
  • Crear el certificado autofirmado CA, este certificado sirve para que el servidor y el cliente ldap puedan comunicarse entre sí, para determinar que puede confiar un cliente en nuestro servidor.

cd /etc/pki/tls/misc
./CA  –newca
Llenarlo con los datos usados por usted en su organización, como se ve en la imagen.
  • yum install openldap* migrationtools nss-pam-ldapd

  • nano /etc/openldap/ldap.conf
  • Aumentamos las líneas que se ven en nuestra imagen, nótese que el URI tiene una dirección de loopback, para la instalación del servidor vamos a usar esta ip, una vez concluido la cambiaremos por la ip de nuestro equipo en la red
  • eliminar los archivos dentro de la carpeta slapd.d, con el objetivo de crear los nuestros luego de una manera limpia.
rm -rf /etc/openldap/slapd.d/*
  • Copiamos los archivos de configuración a la carpeta de nuestro servidor.
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
  • Copiamos el archivo de configuración de la base de datos de OpenLDAP en las librerías del sistema.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  • Generamos un password para el administrador de nuestro servidor LDAP, en el terminal escribir.
slappasswd
Escribimos una clave y nos devolverá una clave encriptada que la usaremos en la configuración del servidor.
Ejemplo:
{SSHA}VunsxK6jm4ezu01KJyBKR259oJVHimvp
·         Editamos el archivo slapd.conf con nuestra clave y agregamos los permisos necesarios para que los usuarios puedan cambiar sus claves.
Modificamos las líneas
·         suffix “dc=uce,dc=com,dc=ec”, la cantidad de parámetros dc domain component (componente de dominio) se usan según el tipo de dominio que tenemos en nuestra organización; en nuestro caso el dominio es uce.com.ec.
·         rootdn  “cn=Manager,dc=uce,dc=com,dc=ec” donde la directiva cn es el identificador mnemotécnico common name (nombre común); Aquí usted puede colocar cualquier nombre, pero recuérdelo porque es el nombre con el cual haremos la administración de los permisos.


Y aumentamos los permisos para nuestros  usuarios en cuanto a la modificación de claves y tipo de login que pueden usar.
  • Creamos un archivo root.ldif para agregarlo en nuestra base de datos.

nano /root/root.ldif
y lo configuramos como se ve en la imagen, recuerde cambiar todos los parámetros con los de su dominio.



  • Agregamos este archivo root.ldif a nuestra base de datos

slapadd -l /root/root.ldif

en caso de falla usar el parámetro –c para que sobrescriba en la base de datos.

slapadd –c -l /root/root.ldif

La terminal retornara un mensaje:

Bdb_db_open: DB_CONFIG for suffix “dc=uce,dc=com.dc=ec” has changed.
_##################### 100.00% eta none elapsed                               none fast!
Closing DB…

Verificar siempre que el porcentaje sea del 100%
  •  Hacer una prueba de los archivos de configuración, esta prueba generara los archivos cn=config y otros en nuestro archivo slapd.d

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

retornara: config file testing succeeded.
  •  Cambiamos de propietario a los directorios y chequeamos el estado del servicio slapd: 

chown -R ldap:ldap /var/lib/ldap
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd status
  • Cambiamos la configuración para que nuestro servidor para que se inicie con nuestro sistema operativo e iniciamos el servicio slapd (nuestro servicio slapd debe estar detenido).

chkconfig  slapd on
service slapd start
  • eliminar los archivos dentro de la carpeta slapd.d, para generarlos nuevamente con una prueba con los nuevos cambios realizados al servidor.

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  • Como los archivos han sido generados nuevamente debemos cambiar el propietario de los mismo en la carpeta slapd.d y reiniciamos el servicio slapd.

chown -R ldap:ldap /etc/openldap/slapd.d
service slapd restart
  • Hasta este momento nuestro servidor posee una sola entrada, pero queremos agregar todas las entradas base del sistema operativo como son los grupos, usuarios, servicios, etc.
  • Editamos el archivo /usr/share/migrationtools/migrate_common.ph 
  • Modificamos el “Default_mail_domain” y el “Default base” como se observa en la imagen.



  • migramos el archivo base
nos ubicamos en la carpeta: cd /usr/share/migrationtools
./migrate_base.pl > /etc/openldap/base.ldif
  •  agregamos la base.ldif en la DB, con el parámetro –c para sobrescribir si este archivo existiere.

ldapadd -x -W -c -D "cn=Manager,dc=uce,dc=com,dc=ec" -f /etc/openldap/base.ldif

La consola retornara mensajes: New entry added.
  • Si deseamos agregar a los usuarios del sistema usamos:
grep huesped /etc/passwd > /etc/openldap/passwd.huesped

./migrate_passwd.pl /etc/openldap/passwd.huesped /etc/openldap/huesped.ldif
ldapadd -x -D "cn=Manager,dc=uce,dc=com,dc=ec" -W -f /etc/openldap/huesped.ldif
  • probamos lo que agregamos

ldapsearch -x -b "dc=uce,dc=com,dc=ec" "objectclass=*"
  • Ahora generamos los certificados usados en los clientes OpenLDAP

rm /etc/pki/tls/certs/slapd.pem
make /etc/pki/tls/certs/slapd.pem
  •  Cambiamos los permisos de acceso al archivo slapd.pem y cambiamos de propietario al mismo.

chmod 650 slapd.pem

chown :ldap slapd.pem

  • Generamos un link de nuestro certificado para que sea usado por el cliente OpenLDAP

ln -s /etc/pki/tls/certs/slapd.pem /etc/openldap/cacerts/slapd.pem
  • Editamos el archivo:

nano /etc/sysconfig /ldap.conf
Buscamos la línea SLAPD_LDAPS=no
Y la cambiamos por SLAPD_LDAPS=yes
  • Editamos el archivo /etc/openldap/slapd.conf

y agregamos las líneas de los certificados TLS que se observan al final de la imagen.
  • Editamos el archivo /etc/openldap/ldap.conf y agregamos las líneas del certificado como se observa en la imagen
Note que se cambia el URI como mencione antes por la ip del servidor, se coloca la carpeta donde están los certificados para el uso del mismo y se indica que no se verifique el certificado nunca (never) ya que es autofirmado.
  • eliminar los archivos dentro de la carpeta slapd.d, para generarlos nuevamente con una prueba con los nuevos cambios realizados al servidor.

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  • Como los archivos han sido generados nuevamente debemos cambiar el propietario de los mismo en la carpeta slapd.d y reiniciamos el servicio slapd.

chown -R ldap:ldap /etc/openldap/slapd.d
service slapd restart
  • Ahora verificamos que datos tenemos en nuestro servidor

ldapsearch -x -ZZ -h localhost
ldapsearch -x -H ldaps://localhost

Obtendremos algo parecido a la imagen, en caso de presentar errores verifique la configuración y que el servicio slapd este iniciado, si el error ocurre durante la prueba ldaps se debe verificar que los certificados fueron creados y tienen los permisos necesarios.



  • Para acceder como usuario debemos configurar la herramienta:

 authconfig-tui


  • Damos permisos para crear los directorios de cada usuario en el primer login.

authconfig –enablemkhomedir --update


Phpldapadmin

·         Descargamos el rpm del repositorio epel, para nuestra distribución de CentOS 6
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
·         Una vez instalado el repositorio epel, descargamos el administrador de LDAP phpldapadmin
yum install phpldapadmin

Editamos el archivo de configuración de phpldap
vim /etc/phpldapadmin/config.php

Des comentamos la línea 397, y comentamos la línea 398 para permitir el acceso como administrador del sistema con nuestro rootdn descrito en el literal 8, guardamos e iniciamos el servicio httpd.
service httpd start
·         Abrimos nuestro navegador web y escribir:

http://127.0.0.1/phpldapadmin

·         Clic en conectar, y nos identificamos con el rootdn que está en el literal 8.
·         Clic en grupos


·         Clic en crear un objeto nuevo, y seleccionamos el grupo posix


·         Damos un nombre al grupo y creamos el objeto 
·         Una vez realizado esto podemos crear usuarios, clic en usuarios y crear un nuevo objeto
·         Clic en Genérico cuenta de usuario
·         Llenamos los campos como se ven en la imagen
Nota: observe que la consola de Login está como /bin/sh, esto nos permitirá conectarnos por telnet o ssh en consola, pero no podremos acceder de manera grafica al pc, para eso debemos modificar la consola login por /bin/bash después de creado nuestro usuario.
·         Clic en el usuario creado, modificar el loginShell y agregar el parámetro shadowAccount.
con estos datos podemos conectarnos a nuestro servidor ldap con el nuevo usuario creado desde cualquier pc.

Próximamente configuración de los clientes Ldap.



domingo, 1 de julio de 2012

Servidor de e-mail Postfix + Dovecot + Novell Evolution


Postfix + Dovecot + Novell Evolution

En esta entrega vamos a configurar un servidor de correo electrónico privado en nuestra red, tenemos que recordar que se necesita usar una entrada MX en nuestro DNS para poder usar el correo electrónico (si se desea configurar un servidor DNS lo puedes ver aquí).
Postfix es un enrutador de correo electrónico usando el protocolo SMTP, fue desarrollado por IBM debido a la necesidad de tener una alternativa más fácil y rápida de administrar al conocido Sendmail.

Dovecot es el servidor de pop3 e imap que usaremos en esta ocasión, dovecot permite la recepción de los correos electrónicos por parte de los usuarios finales ya sea por un web browser (imap) o por un cliente de correo como Novell Evolution (pop).
Empezamos configurando un registro MX en el DNS.

Editamos nuestras zonas forward.zone y reverse.zone en ellas vamos a agregar las líneas:

IN           MX         10           mail.uce.com.ec.

mail        IN           A             192.168.10.107

Nótese que la entrada MX posee un número 10 el cual representa la prioridad del mismo, y también cabe recalcar que este servidor de correo se encuentra en el mismo servidor que el DNS en este caso; usted puede cambiar esta ip por la ip del equipo que será el servidor de correo.

En la zona inversa realizamos tambien los cambios.

                 IN           MX         10           mail.uce.com.ec.

107         IN           PTR        mail.uce.com.ec.
Recargamos el servicio
service named reload

Y probamos con el comando dig que no existan problemas en nuestra configuración.
POSTFIX
Ahora verificamos que nuestro CentOS tenga instalado postfix, escribir:
yum info postfix

Si no la tenemos instalada basta con escribir:
yum install postfix.
Editamos la información del archivo main.cf ubicado en /etc/postfix/main.cf, recorremos el archivo hasta el bloque que dice "INTERNET HOST AND DOMAIN NAMES" y agregamos las líneas:

myhostname = mail.uce.com.ec
mydomain = uce.com.ec

Recordar que son las entradas que agregamos en nuestro DNS.

En la sección “Sending mail” des comentamos la línea
myorigin = $mydomain

En “Receiving mail” des comentamos la línea

inet_interfaces = all

Comentamos:

#inet_interfaces = localhost

Des comentamos:

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.10.0/24, 127.0.0.0/8

En el bloque “Internet or Intranet” en caso de tener nuestro puerto 25 bloqueado por nuestro proveedor de internet, podemos realizar un relayhost a la ip del servidor de correo de nuestro proveedor de internet. El concepto de un relayhost es pasar el mensaje “la pelotita” a otro servidor que tiene privilegios de salida a la internet, en este ejemplo no usaremos un relay host porque es un servidor de correo privado.
Pero de ser necesario dejo la ip del servidor de correo de la CNT #relayhost = 201.219.1.85 para los usuarios de este proveedor, por suerte mi proveedor no tiene bloqueado el puerto 25 J.

En la sección “Delivery to mailbox” des comentamos

home_mailbox = Maildir/

para tener una carpeta específica para el almacenamiento de nuestro correo electrónico según cada cuenta de usuario; Nota (se puede dejar comentado este campo y nuestros correos llegaran a la carpeta /var/spool/mail/ aunque no es muy recomendable).

Actualizamos a postfix como nuestro servidor de correo predeterminado

alternatives – –config mta

Seleccionamos a postfix como predetermina como muestra la imagen

Recargamos el servicio postfix:
postfix reload
y realizamos las pruebas de correo en el servidor. Para evitar problemas de envió de correo electrónico crearemos usuarios del sistema operativo con minúsculas.
Para este ejemplo, crearemos el usuario huésped, conectados en nuestra consola como usuario privilegiado (root), enviamos un mensaje desde la terminal:

echo  “este es el cuerpo del mensaje” | mail –s  “FW: el asunto”   huesped@uce.com.ec
y revisamos el correo en nuestro directorio /home/huésped/Maildir/new/

Como se ve en la imagen tenemos 3 correos en nuestro buzon de entrada, para leerlos basta con escribir:
nano /home/huesped/Maildir/new/NombreDelArchivo
Damos autorización a la comunicación por los puertos 25,  110, 143, escribir

setup network

Seleccionamos la configuracion del cortafuegos, luego seleccionamos "Personalizar"

Marcamos:        [*] SMTP

                             [*] DNS (si está en la misma máquina el DNS y el servidor de correo)

                             [*] IMAP

                             [*] POP

Aceptamos y salimos de la herramienta de configuración.

Hasta aquí lo que es el servidor de correo Postfix; continuamos con Dovecot.

DOVECOT
Instalamos dovecot: yum install dovecot


Editamos el archivo /etc/dovecot/dovecot.conf y des comentamos la línea:
#protocols = imap pop3 lmtp

Y editamos el archivo: /etc/dovecot/conf.d/10-mail.conf y agregamos la línea:
mail_location: maildir:~/Maildir


Iniciamos el servicio y cambiamos la configuración para que el servicio dovecot se inicie con el sistema operativo

service dovecot start
chkconfig dovecot on
EVOLUTION
Por último instalamos el cliente de correo electrónico Evolution.

yum install evolution

El cliente de correo se encuentra en aplicaciones -> oficina -> Evolution, damos 2 click en siguiente (al frente), y configuramos el servidor tal como se ve en las imágenes.



Y aceptamos, se desplegara la ventana de Novell evolution y solicitara la clave de la cuenta para acceder al correo, la clave del correo es la misma que la del usuario en el sistema operativo y listo tenemos nuestros correos en el cliente Evolution.


miércoles, 27 de junio de 2012

DNS (BIND) en CentOS 6.2

Bueno, hoy voy a postear como hacer un servidor de nombres de dominio DNS primario (maestro).
Un servidor de nombres de dominio tiene como principal funcionalidad el transformar nombre fáciles de recordar en ip’s ya que es mucho más fácil recordar un nombre que un numero de dirección ipv4 (imaginemos que pasaría si tendríamos que recordar una ipv6
L), dicho servidor será el BIND una distribución de DNS de la universidad de Berkeley.
Bueno si se ha tenido experiencia previa con CentOS 5.X se notara una diferencia ya que no se necesita el caching-nameserver porque se incorporo en la versión de 9.7 al paquete principal de BIND, y las direcciones de los archivos de configuración del named son más fáciles de encontrar y configurar.



yum install bind*


Verificamos nuestra ip en la red

Ahora configuramos para que nuestro Linux para usar ip estática y no de forma dinámica por DHCP, nos dirigimos a la parte superior derecha del sistema operativo y cambiamos la configuración de la tarjeta de red con una nueva ip

Click en “editar las conexiones”, editamos nuestra tarjeta de red en este caso la eth1 (tener en cuenta de colocar la propia ip en el campo Servidores DNS) y marcar la casilla “disponible para todos los usuarios”


Verificamos en nuestro archivo de configuración ubicado en: /etc/sysconfig/network-scripts/ifcfg-Auto_eth1
Y reiniciamos el servicio: service network restart

Modificaremos el archivo network donde colocaremos el nombre de nuestro equipo con nuestro dominio recordemos usar nombres FQDN, en este usaremos dnsvm1.uce.com.ec para nuestro equipo.

nano  /etc/sysconfig/network

Modificamos nuestro archivo resolv.conf para incluir otro servidor DNS, si se existiera otro adicional en nuestra red con la misma sintaxis nameserver xxx.xxx.xxx.xxx

nano /etc/resolv.conf
Configuramos el archivo hosts para agregar el nombre de nuestro equipo con el dominio según la ip del mismo.

nano /etc/hosts

Ahora a configurar los archivos del demonio named, y permitiendo las consultas de cualquier ip en nuestro dominio.

nano /etc/named.conf

agregamos las líneas:

·         listen-on port 53 { xxx.xxx.xxx.xxx ; };

·         allow-query        { any; };


Copiar los archivos named.localhost, named.loopback con los nombres forward.zone y reverse.zone respectivamente. Estos nuevos archivos sirven para definir las zonas frontales e inversas del DNS.


Al final de este archivo named.conf tenemos una línea “include”, editaremos el archivo que esta especificado ahí.

nano /etc/named.rfc1912.zones

Editamos las zonas localhost.localdomain, hacemos una copia de la zona 1.0.0.127.in-addr.arpa  y editamos dicha copia.






Editamos los archivos forward.zone y reverse.zone como sigue:



Cambiamos de propietario y grupo a los archivos forward y reverse.


Iniciamos el servicio named, si se desea que el servicio se ejecute cada vez que se inicia la maquina ejecutamos:

service named start

chkconfig named on

Probamos el funcionamiento del servidor con los 3 tipos de pruebas dig, nslookup y host
Pruebas de Zona Frontal

·         dig dnsvm1.uce.com.ec

Como resultado obtenemos un NOERROR, en caso de tener NXDOMAIN significa que nuestra zona frontal está mal configurada y debemos revisar la configuración del mismo

·         nslookup dnsvm1.uce.com.ec

·         host dnsvm1.uce.com.ec

Pruebas de Zona Inversa

·         dig –x 192.168.10.107

Como resultado obtenemos un NOERROR, en caso de tener NXDOMAIN significa que nuestra zona inversa está mal configurada y debemos revisar la configuración del mismo

·         nslookup 192.168.10.107

·         host 192.168.10.107