domingo, 10 de octubre de 2010

Gestión de contraseñas en sistemas Linux

Una buena regla relacionada con las contraseñas es utilizar al menos un punto ,un caracter especial ,una     mayuscula y un numero,sin embargo no podemos confiar que todos los usuarios saben y aplicaran esta regla.La gente suele elegir contraseñas facil de recordar,pero hay una predisposicion a utilizar contraseñas que existen en los diccionarios de hackers.
Muchos diran que la ``brute force´´no se puede hacer porque no hay acceso externo a ssh(secure shell), o han puesto en practica varios metodos para prevenir el acceso después de muchos intentos de conexion fallidos (como se verá más adelante), pero existe la posibilidad de que un fallo del sistema (un servidor de seguridad que permite el acceso a cualquier persona) y luego son vulnerables sin saberlo.Una buena estrategia de seguridad (en todos los equipos) es el diseño sin contar con los otros equipos y tecnologías (firewalls, IDS, IPS) por lo que incluso si un equipo se bloquea (sé que hay soluciones para la conmutación)la seguridad de los datos no sea comprometida.Utilizando la guia siguente el usuario puede ser obligado a elegir una contraseña lo suficiente compleja que no es facil de romper.El usuario debe ser aconsejado en usar algo facil de recordar (¡atencion! facil de recordar pero que cumplan los requisitos de complejidad) sin tener que apuntar la contraseña en la oficina o en el ordenador.
Con la teoria hecha vamos a la parte tecnica.
Añadir en    / etc / las siguientes líneas pam.d / system-auth:
password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=7 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0
Requisitos de calidad para la contraseña:
minlen = n N es el número de caracteres que tiene una contraseña
dcredit N = n> = 0 si n <0 n es el número mínimo de dígitos que deben contener una contraseña
ucredit = n si n <0 es el número mínimo de mayusculas que debe contener una contraseña
ocredit = n si n <0 es el número mínimo de caracteres especiales que debe contener la contraseña
lcredit N = n> = 0 n es el número de caracteres normales

Para llevar a cabo un cierre patronal en caso de que  una contraseña sea incorrecta demasiadas veces (cierre patronal - Bloquear usuario) se utiliza el PAM con módulo pam_tally2 para proporcionar oportunidades de lockout daemon, esta medida debe aplicarse con cuidado, ya que ofrecen la posibilidad de ataques tin DoS en el servidor.
En el archivo /etc/pam.d/system-auth buscamos la línea
auth sufficient pam_unix.so try_first_pass nullok
 i la modificamos para tener el siguente aspecto:
  auth required pam_unix.so nullok try_first_pass
En el mismo fichero comentamos o eliminamos las siguientes líneas:
    auth requisite pam_succeed_if.so uid >= 500 quiet
    auth required pam_deny.so
entonces se debe editar el archivo individual de configuración /etc/pam.d (sshd) añadir al final de la seccion:
   auth required pam_tally2.so deny=5 onerr=fail
donde deny=5 especifica el numero de errores en la autenticación a continuación, en la sección final:
   account required pam_tally2.so
Para desbloquear un usuario bloqueado por el módulo pam_tally2:
   /sbin/pam_tally2 --user username --reset

lunes, 4 de octubre de 2010

Gestion de usuarios de Linux

Las cuentas de usuario se dividen en tres grandes categorias segun su uso:
     - Cuentas de acceso a la maquina ( a través de SSH o otros protocolos utilizados
      para la gestión y establecido como shell default bash o csh...)
     - Cuentas utilizadas para acceder a otros servicios (por ejemplo, FTP cuenta
      de FTP no puede conectarse al sistema a través de SSH,  cuenta para el
      acceso a las cuentas de otros servicios, las cuentas que tienen el shell por defecto :  default / sbin /nologin)
     - Cuentas sin derecho de acceso a maquina u otros servicios

Para agregar una cuenta de usuario s necesario escribir:
useradd -s <shell> <username>  donde shell representa el nombre del servicio usado ex  Bash para usuarios que
necesitan acceso a la configuración de la maquina y /sbin/nologin para los que necesita acceso un servicio tipo FTP
<username> nombre de usuario para agregar.

Para una buena gestion de los usuarios es bien añadir y otros parámetros tales como:
     -c para especificar el nombre de la persona que va tener la cuenta ,el departamento y su funccion
     -d para especificar donde desea estar la carpeta en el directorio de login del usuario.
     -g para especificar el grupo a cual pertenece el usuario o
     -G para especificar grupos adicionales del usuario.

Para eliminar un usuario se utiliza el comando userdel <nombre>
Para comprobar un usuario se utiliza uno de los comandos id <username> que devuelve informacion como la pertenencia a un grupo ,
y el comando finger <username> que devuelve informacion de tipo cuando entro la ultina vez ,si tiene correo nuevo etc,..

Los comandos useradd, userdell, finger, id utilizan estos archivos para extraer la información necesaria:
  /etc/passwd - detalles de la cuenta de usuario
  /etc/shadow -informacion encriptada acerca del usuario
  /etc/group -informacion acerca del grupo o grupos
  /etc/gshadow -informacion encriptada acerca del grupo
  /etc/default/useradd - valores por defecto utilizados para crear una cuenta de usuario
  /etc/skel/ -el directorio que contiene los valores por defecto que se necesita compilar en la creacion de un usuario.

Cada usuario necesita una contraseña para que funcione correctamente. Para establecer una contraseña
para la cuenta utilizamos:
    passwd [-l|-u] <username>
     -l para bloquear una cuenta
     -u para desboquear la cuenta
Se recomienda que las contraseñas contengan al menos un número (123), un carácter especial (#$%^&*),
mayusculas(ASDFG) para aumentar el tiempo necesario contra un ataque de fuerza bruta.