Un blog mas

Bitácora de vuelo

AIDE es una aplicación tipo IDS (Intrusion Detection System),  substituta del conocido Tripwire, que permite tomar una “foto” a la integridad del sistema de archivos en linux y ayuda a identificar cuales fueron modificados desde un punto inicial.

Para  instalar la aplicacion en Ubuntu, ejecutamos el siguiente comando:

sudo apt-get install aide exim4

Por defult AIDE instala postfix como servidor de correo, pero en este caso preferimos utilizar Exim4.

En /etc/aide.conf agregamos una linea con  verbose = 5 para ajustar el nivel de detalle de los informes.

En la instalación por default AIDE genera una carpeta (/etc/aide/aide.conf.d/) con varios archivos de configuración que permiten realizar multiples chequeos. Estos son “armados” mediante una serie de reglas basadas en los siguientes parámetros:

p:      permissions
ftype:  file type
i:      inode
n:      number of links
l:      link name
u:      user
g:      group
s:      size
b:      block count
m:      mtime
a:      atime
c:      ctime
S:      check for growing size
I:      ignore changed filename
md5:    md5 checksum
sha1:   sha1 checksum
sha256: sha256 checksum
sha512: sha512 checksum
rmd160: rmd160 checksum
tiger:  tiger checksum
haval:  haval checksum
crc32:  crc32 checksum
R:      p+ftupe+i+l+n+u+g+s+m+c+md5
L:      p+ftype+i+l+n+u+g
E:      Empty group
>:      Growing logfile p+ftype+l+u+g+i+n+S
acl:    access control list
selinux SELinux security context
xattrs:  extended file attributes
e2fsattrs: file attributes on a second extended file system

continua leyendo…

Sudoers en Ldap

Sin comentarios

Agregar el esquema Sudoers desde un archivo .ldif

Descargamos sudo.ldif y lo copiamos a /opt/sudo.ldif

dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may  run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) )

Importamos el esquema a nuestra base Ldap

ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/sudo.ldif
service slapd restart

Generamos una Unidad Organizacional y la configuración para el usuario Usuario1

##########################################
# ARCHIVO /opt/crearSudoers.ldif 
##########################################
dn: ou=Sudoers,dc=midominio,dc=com,dc=ar
objectClass: organizationalUnit
ou: Sudoers
 
dn: cn=defaults,ou=Sudoers,dc=midominio,dc=com,dc=ar
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: env_keep+=SSH_AUTH_SOCK
 
dn: cn=seguridad,ou=Sudoers,dc=midominio,dc=com,dc=ar
cn: seguridad
objectclass: top
objectclass: sudoRole
sudocommand: /sbin/iptables -L -n
sudohost: ALL
sudouser: usuario1

Agregamos dicha estructura al Ldap

ldapadd -x -D cn=admin,dc=midominio,dc=com,dc=ar -W -f /opt/crearSudoers.ldif

Debería quedar algo similar a la siguiente captura

Captura de pantalla de 2014-09-10 13:10:59

Configuracion del lado del cliente

Instalamos el sudo modificado para ldap, para esto debemos permitir que se elimine sudo

export SUDO_FORCE_REMOVE=yes
apt-get install sudo-ldap

Si ejecutamos sudo -V como root, vemos sus parámetros aplicados, buscamos “–with-ldap-conf-file=NOMBRE_ARCHIVO” (en mi caso /etc/sudo-ldap.conf) que es de donde toma el archivo de configuración y creamos un enlace simbolico a /etc/ldap.conf

ln -s /etc/ldap.conf /etc/sudo-ldap.conf

Definimos el path donde se encuentra la UO de sudoers agregando la siguiente linea en /etc/ldap.conf

sudoers_base ou=Sudoers,dc=midominio,dc=com,dc=ar
sudoers_debug 1

Solo falta modificar la configuración del nsswitch (en /etc/nsswitch.conf) para que busque primero en el archivo /etc/sudoers y en caso de no existir en el directorio Ldap.

sudoers: files ldap

Instalamos los paquetes necesarios del lado del cliente

sudo apt-get install ldap-auth-client nscd

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

sudo auth-client-config -t nss -p lac_ldap

En el archivo /etc/ldap.conf modificamos las siguientes lineas:

host IP_SERVIDOR_LDAP
base dc=midominio,dc=com,dc=ar
uri ldapi://IP_SERVIDOR_LDAP
uri ldap://IP_SERVIDOR_LDAP/
ldap_version 3
rootbinddn cn=admin,dc=midominio,dc=com,dc=ar
pam_password md5
nss_base_passwd	ou=Users,dc=midominio,dc=com,dc=ar?one
nss_base_shadow	ou=Users,dc=midominio,dc=com,dc=ar?one
nss_base_group	ou=Groups,dc=midominio,dc=com,dc=ar?one

Si llegaste acá buscando como instalar un Ldap, es porque ya sabes que se trata de una base de datos en forma de árbol, bla, bla, bla… así que vamos al grano.

Instalación del servidor Ldap

Lo primero que hay que hacer es instalar el demonio slapd del servidor OpenLdap e instalar ldap-utils, un paquete que contiene utilidades de administración de LDAP.

Esto se hace mediante el siguiente comando, y aunque en la instalación solo nos pide definir la password de administrador (admin), debemos inmediatamente reconfigurarlo para setear algunos parámetros mas.

apt-get install slapd ldap-utils
dpkg-reconfigure slapd

Captura de pantalla de 2014-09-10 13:10:59

Ingresamos el dominio

Captura de pantalla de 2014-09-10 13:11:04

…el nombre de la organización

Captura de pantalla de 2014-09-10 13:11:09

…la contraseña de administrador

Captura de pantalla de 2014-09-10 13:11:17

…repetimos dicha contraseña

Captura de pantalla de 2014-09-10 13:11:25

Escogemos el tipo de base de datos backbend. Si se lee la explicación que da el cuadro de diálogo se observa que se recomienda utilizar la base de datos HDB y no la BDB, además de la justificación de porque escoger dicha opción.

Captura de pantalla de 2014-09-10 13:11:31

…si desea que se borre la base de datos cuando se purgue el paquete slapd

Captura de pantalla de 2014-09-10 13:11:36

Captura de pantalla de 2014-09-10 13:11:40

Captura de pantalla de 2014-09-10 13:11:45

Agregar usuarios, grupos o modificar contraseñas mediante LdapScripts

El paquete ldapscripts contiene scripts configurables para facilitar la gestion de usuarios y grupos LDAP.

apt-get install ldapscripts
cat /etc/ldapscripts/ldapscripts.conf
 
SERVER="ldap://localhost"
BINDDN="cn=admin,dc=midominio,dc=com,dc=ar"
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
USHELL="/bin/bash"
PASSWORDGEN="pwgen"
RECORDPASSWORDS="no"
PASSWORDFILE="/var/log/ldapscripts_passwd.log"
LOGFILE="/var/log/ldapscripts.log"
TMPDIR="/tmp"
LDAPSEARCHBIN="/usr/bin/ldapsearch"
LDAPADDBIN="/usr/bin/ldapadd"
LDAPDELETEBIN="/usr/bin/ldapdelete"
LDAPMODIFYBIN="/usr/bin/ldapmodify"
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
LDAPPASSWDBIN="/usr/bin/ldappasswd"
echo -n 'pass' -- /etc/ldapscripts/ldapscripts.passwd
chmod 400 /etc/ldapscripts/ldapscripts.passwd

Agregar usuario

ldapadduser usuario grupo

Cambiar password

ldapsetpasswd usuario

Migrar usuarios/contraseñas y grupos de Linux y generar el ldif

MigrationTools es un paquete de herramientas que nos ayudaran a agregar los objetos al dominio con plantillas predefinidas, para utilizarlas ejecutaremos los siguientes comandos.

apt-get install migrationtools
cat /etc/migrationtools/migrate_common.ph
 
$NAMINGCONTEXT{'passwd'} = "ou=Users";
$NAMINGCONTEXT{'group'} = "ou=Group";
 
$DEFAULT_MAIL_DOMAIN = "midominio.com.ar";
$DEFAULT_BASE = "dc=midominio,dc=com,dc=ar";
 
$IGNORE_UID_BELOW = 1000;
$IGNORE_UID_ABOVE = 30000;
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd -- /opt/usuariosMigrados.ldif

Instalar phpLdapAdmin, un administrador web

phpLDAPadmin también conocido como PLA, es una herramienta para la administración de servidores LDAP escrito en PHP, disponible bajo licencia GPL, basado en interfaz Web. Trabaja en varias plataformas, pudiendo acceder al servidor LDAP desde cualquier lugar en Internet usando un navegador Web.

Posee una vista jerárquica basada en árbol en donde se puede navegar por toda la estructura de directorio. Permite ver los esquemas LDAP, realizar búsquedas, crear, borrar, copiar y editar entradas LDAP, incluso copiar entradas entre servidores LDAP.

apt-get install phpldapadmin

Editar /etc/phpldapadmin/config.php y modificar las variables “server” y “login”

$servers-- setValue('server','base',array('dc=midominio,dc=com,dc=ar'));
$servers-- setValue('login','bind_id','cn=admin,dc=midominio,dc=com,dc=ar');

Se accede vía ldap.midominio.com.ar/phpldapadmin

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Captura de pantalla de 2014-09-10 13:10:59

Añadir Unidades Organizacionales, Grupos y Usuarios

#####################################################################################
#		ARCHIVO /opt/crearOU_Grupos_Usuarios.ldif
#####################################################################################
#		UNIDADES ORGANIZACIONALES
dn: ou=Users,dc=midominio,dc=com,dc=ar
objectClass: organizationalUnit
ou: Users
#		GRUPOS
dn: ou=Groups,dc=midominio,dc=com,dc=ar
objectClass: organizationalUnit
ou: Groups
 
dn: cn=administradores,ou=Groups,dc=midominio,dc=com,dc=ar
objectClass: posixGroup
cn: administradores
gidNumber: 26000
 
#		USUARIOS
dn: uid=usuario1,ou=Users,dc=midominio,dc=com,dc=ar
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: usuario1
sn: usuario1
givenName: usuario1
cn: Pepe Puertas
displayName: Pepe Puertas
uidNumber: 26001
gidNumber: 26000
userPassword: {crypt}$1$hzFrywwZ$QLx4hBHkTS9NaG.C6bkwe.
gecos: Pepe Puertas
loginShell: /bin/bash
homeDirectory: /home/usuario1
ldapadd -x -D cn=admin,dc=midominio,dc=com,dc=ar -W -f /opt/crearOU_Grupos_Usuarios.ldif

Con esto deberíamos tener andando el servidor Ldap, con el usuario Pepe integrante del grupo Administradores

Instalar un cache de DNS sobre Ubuntu es realmente sencillo gracias a los paquetes de D.J.Bernstein.

En primer lugar debemos instalar el paquete dnscache-run y sus dependencias (daemontools daemontools-run djbdns dnscache-run ucspi-tcp)

apt-get install dnscache-run

El svscan verifica dentro del directorio /service los programas a ejecutar, pero como esta carpeta no es creada durante el proceso de instalación arreglarlo y generar un enlace simbólico a /etc/dnscache

mkdir /service
ln -s /etc/dnscache /service

Ahora debemos configurar las variables de entorno de la siguiente manera:

Editamos /etc/dnscache/env/IP y modificamos el valor por defecto con nuestra IP.

vi /etc/dnscache/env/IP
192.168.1.10

y declaramos que redes pueden utilizar nuestro cache de DNS

touch /etc/dnscache/root/ip/192.168.1
touch /etc/dnscache/root/ip/10.10

El tamaño por default del cache es de 1M, se puede agrandar un poco cambiando las siguientes variables:

echo 100000000 > /service/dnscache/env/CACHESIZE
echo 104857600 > /service/dnscache/env/DATALIMIT

para ponerlo en funcionamiento debemos arrancar el servicio

/sbin/start svscan
update-service --add /etc/dnscache

Si queremos hacerla completa, podemos generar un script que actualice periódicamente los Root Hints. Si pegamos el siguiente código en /opt/actualizar_root_servers.sh y le damos permiso de ejecución (chmod +x /opt/actualizar_root_servers.sh) se puede agregar en el crontab para que se ejecute automáticamente.

#!/bin/bash
# Fuente: http://thedjbway.b0llix.net/djbdns/dnsroots.html
 
dnsip `dnsqr ns . | awk '/answer:/ { print $5; }' |sort` > /opt/root_servers_temp.txt 2>> /opt/actualizar_root_servers.log
echo "`date` - Listado de root servers obtenido:" >> /opt/actualizar_root_servers.log
cat /opt/root_servers_temp.txt >> /opt/actualizar_root_servers.log
echo "`date` - Fin del listado de root servers obtenido" >> /opt/actualizar_root_servers.log
 
# Si la cantidad de root servers es mayor que 8 cambiar la configuración
NRO_ROOT_SERVERS=`wc -l /opt/root_servers_temp.txt |cut -d' ' -f 1`
if [ $NRO_ROOT_SERVERS -ge 8 ]; then
    # echo $NRO_ROOT_SERVERS es mayor o igual que 10
    echo "`date` - Se obtuvieron $NRO_ROOT_SERVERS servidores de DNS raiz que se usaran para actualizar la conf. de root servers" >> /opt/actualizar_root_servers.log
    cp /etc/dnsroots.global /etc/dnsroots.global.old
    cp /opt/root_servers_temp.txt /etc/dnsroots.global
    cp /etc/dnsroots.global /service/dnscache/root/servers/@
    svc -du /service/dnscache
else
    echo "`date` - Se obtuvieron $NRO_ROOT_SERVERS servidores de DNS raiz, no se modifica la conf. de root servers" >> /opt/actualizar_root_servers.log
#    echo $NRO_ROOT_SERVERS es menor que 10
fi

Referencias:

 

Stop SOPA