15
Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 1 Lo que pretendemos hacer con esta práctica es reforzar la seguridad de las contraseñas de los usuario. Nosotros vamos a trabajar sobre un sistema operativo linux, concretamente la versión Debian 6.0 Squeeze. 1. Para empezar vamos a hacer es asignar el número de días que deben transcurrir hasta que el usuario deba cambiar la contraseña obligatoriamente, el número mínimo de días que deben transcurrir para que el usuario pueda cambiar la contraseña desde la última vez que lo hizo y asignar también el número mínimo de días de antelación en los que se avisará al usuario de que debe cambiar la contraseña. Para poder modificar los parámetros adecuados lo primero que debemos hacer es acceder al fichero en el que se encuentran, el /etc/login.defs - nano /etc/login.defs Los parámetros que vamos a modificar son: 1 - PASS_MAX_DAYS (es donde especificamos el número de días en que el usuario deberá cambiar la contraseña) 2- PASS_MIN_DAYS (especificamos el número de días en que el usuario puede volver a cambiar la contraseña desde la última vez que lo hizo) 3- PASS_WARN_AGE (asignamos el número de días con antelación en que se le notificará que debe cambiar la contraseña) Y los valores que les vamos a asignar serán 60, 1 y 15 respectivamente.

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

  • Upload
    vutu

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

1

Lo que pretendemos hacer con esta práctica es reforzar la seguridad de las

contraseñas de los usuario.

Nosotros vamos a trabajar sobre un sistema operativo linux, concretamente la versión

Debian 6.0 Squeeze.

1. Para empezar vamos a hacer es asignar el número de días que deben transcurrir hasta que

el usuario deba cambiar la contraseña obligatoriamente, el número mínimo de días que deben

transcurrir para que el usuario pueda cambiar la contraseña desde la última vez que lo hizo y

asignar también el número mínimo de días de antelación en los que se avisará al usuario de

que debe cambiar la contraseña.

Para poder modificar los parámetros adecuados lo primero que debemos hacer es acceder al

fichero en el que se encuentran, el /etc/login.defs

- nano /etc/login.defs

Los parámetros que vamos a modificar son:

1 - PASS_MAX_DAYS (es donde especificamos el número de días en que el usuario deberá

cambiar la contraseña)

2- PASS_MIN_DAYS (especificamos el número de días en que el usuario puede volver a cambiar

la contraseña desde la última vez que lo hizo)

3- PASS_WARN_AGE (asignamos el número de días con antelación en que se le notificará que

debe cambiar la contraseña)

Y los valores que les vamos a asignar serán 60, 1 y 15 respectivamente.

Page 2: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

2

2. El siguiente paso que vamos a realizar es especificar que la cuenta se bloquee si un usuario

no cambia su contraseña dos semanas después de haber caducado, puesto que se entendería

que la cuenta no está siendo utilizada y así minimizamos el riesgo de accesos indebidos.

Para poder realizar este paso debemos acceder al fichero /etc/default/useradd y

modificaremos el parámetro INACTIVE, nosotros le asignaremos como valor 14 puesto que

hemos decidido que se bloquee a las 2 semanas.

- nano /etc/default/useradd

3. Si un usuario ha sido desactivado y queremos volver a activarlo debemos eliminar la

expiración y poner una nueva contraseña.

Para activar la cuenta debemos cambiar la fecha de último cambio de clave a una fecha

reciente, idealmente justo para que estén obligados a cambiar la clave en el próximo login. Un

ejemplo:

- chage - d 2012 - 1 -2 1 usuario

Page 3: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

3

Otra forma sería:

- chage - E -1 usuario

- passwd usuario

Para comprobar el estado del usuario ponemos:

- passwd - S usuario

- chage - l usuario

Page 4: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

4

4. Ahora controlaremos que el usuario no reutilice las últimas N contraseñas, para ello

llevaremos un control de contraseñas históricas. Además validaremos también la robustez de

las contraseñas. Para poder hacer todo esto debemos instalarel paquete libpam-crackilb:

- aptitude install libpam-crackilb

Y lo actualizaremos:

-update cracklib

Page 5: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

5

El módulo pam_cracklib está hecho específicamente para esta tarea, se inserta en la fase

passwd de PAM y antes de aceptar una clave nueva le corre una serie de pruebas para

determinar si es suficientemente fuerte

Para poder modificar los parámetros adecuados debemos editar el fichero

/etc/pam.d/common-password y modificar los siguientes parámetros:

- nano /etc/pam.d/common-password

- password required pam_cracklib.so retry=3 minlen=8 difok=1 lcredit=0 ucredit=1

dcredit=1 ocredit=2

- password requisite pam_unix.so use_authtok obscure md5 remember=12

Page 6: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

6

Lo que hemos hecho es que el usuario tiene que repetir 3 veces la contraseña para realizar el

cambio; ponerle una logitud mínima de 8 caracteres; que al menos 1 carácter debe ser

diferente al password anterior. Según el manual el parámetro "obscure" provoca que se

realicen las siguientes validaciones:

• Palindrome: Verifica que la nueva contraseña no es un palíndromo(es decir, el reverso

de la anterior).

• Case Change Only: Verifica que la nueva contraseña no es la misma que la anterior con

un cambio en los carácteres(p.ej cambiar solo las minúculas por mayúculas y viceversa,

en una contraseña).

• Similar: Verifica que si la nueva contraseña es demasiado parecido a la anterior.

• Simple: Verifica si la contraseña es demasiado simple. Esto se basa en la longitud de la

contraseña y si se utilizan diferentes tipos de caracteres (p.ej: símbolos, caracteres alfa

numérico, etc.)

• Rotated: Verifica si la nueva contraseña es una versión girada de la antigua contraseña

(Por ejemplo, "Clave", "Vecla" o “vacle”)

Por su parte, cracklib realiza estas otras comprobaciones:

• Que los cambios de passwords no se simplemente invertir la palabra o cambiar

mayúsculas por minúsculas.

• Que los cambios de passwords no se simplemente invertir la palabra o cambiar

mayúsculas por minúsculas.

• Comprobaciones contra un diccionario interno, construido a partir de datos que hay en

los ficheros del sistema (update-cracklib).

Finalmente remember=12 hace que el sistema recuerde las últimas 12 contraseñas y no deja

que el usuario las repita. Para que todo funcione vamos a tener que realizar algunas

modificaciones:

Page 7: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

7

- touch /etc/security/opasswd

- chown root:root /etc/security/opasswd

- chmod 600 /etc/security/opasswd

- ls -l /etc/security/opasswd (para comprobar que las modificaciones se han realizado

correctamente)

Ahora, veremos el estado actual de nuestra máquina. Para ello debemos utilizar el comando:

- chage -l usuario

Page 8: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

8

5. Una vez que hemos creado un usuario podremos modificar sus opciones. Para hacer la

modificación utilizaremos el comando chage con sus opciones. Un ejemplo:

- chage - M 60 - W 15 - I 14 - m 1 usuario

Con esto, lo que haremos será modificar los parámetros PASS_MAX_DAYS, PASS_MIN_DAYS,

PASS_WARN_AGE que, como hemos dicho anteriormente, se encuentran especificados en el

fichero /etc/login.defs, y el valor del parámetro INACTIVE que está en el fichero

/etc/default/useradd.

6. Lo que haremos ahora será gestionar el acceso de los usuarios. Después de que un usuario

ponga 3 veces mal su contraseña se bloqueará la cuenta para los siguientes 30 segundos,

durante los cuales será denegado su acceso aunque ponga correctamente la clave.

Para realizar este paso utilizaremos pam_tally y editando el fichero /etc/pam.d/common-

auth. Los parámetros que debemos modificar son:

- # 3 auth attempts, after that user will be locked for 30 seconds for each new failed

attempt

- auth required pam_tally.so onerr=succeed deny=3 unlock_time=30 per_user

- auth sufficient pam_unix.so

- auth sufficient pam_opie.so

- auth required pam_deny.so

- # Reset user lock if auth suceeds

- account required pam_tally.so onerr=succeed

El parámetro per_user hará que tally valide si se ha establecido algún valor individual

(diferente de 0) al usuario mediante faillog. Por ejemplo, para limitar el número de reintentos

fallidos y establecer el tiempo de bloqueo para un usuario concreto utilizaremos el comando:

Page 9: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

9

- faillog ‐‐maximum 5 ‐‐lock‐time 120 ‐u unusuario

Otro ejemplo, para no permitir que un usuario se bloquee aunque sobrepase los valores por

defecto de intentos fallidos de autenticación utilizaremos el comando:

- faillog ‐‐maximum ‐1 ‐u unusuario

Para ver el estado de los usuarios podemos utilizar:

- pam_tally

- pam_tally ‐‐user unsusuario

Page 10: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

10

- faillog ‐a

- faillog ‐u unusuario

Para desbloquear un usuario:

- pam_tally ‐‐user unusuario ‐‐reset

- faillog ‐u unusuario ‐r

Es importante eliminar todos los parámetros ‘nullok’ o ‘nullok_secure’ del modulo pam_unix.o

dado que permiten passwords en blanco (tanto en commonpassword como en common-auth).

7. En este punto gestionaremos usuarios. Para crear un usuario, asignarle un password y

algunas políticas de seguridad directamente ejecutaremos el siguiente comando:

- useradd -g usuario‐d /home/ana -m -s /bin/bash ana

- passwd ana (X4n4dub3)

Page 11: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

11

Comprobación de que funciona el usuario:

Page 12: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

12

Si no se nos ocurren contraseñas podemos establecerlas usando el programa makepasswd.

Para ello lo primero que tenemos que hacer es instalar dicho programa:

- aptitude install makepasswd

Una vez instalado debemos especificar la cantidad de caracteres que queremos que tenga la

contraseña. Para ello utilizaremos en comando char de la siguiente forma:

- makepasswd –chars=8

8. Consejos para evitar que alguien obtenga privilegios root del sistema:

Page 13: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

13

- No darle la contraseña a personas no autorizadas.

- Desactivar o no usar demasiado el comando “sudo” y de usarlo debe configurarlo

correctamente para que no guarde las contraseñas.

- Desactivar el acceso como root desde kdm/gdm/etc... (por defeco debería estar desactivado,

pero no está de más comprobar).

- Ponerle contraseña al cargador de arranque, ya que en “grub” y “lilo” se puede editar los

parámetros de arranque, y con single o 1 da un shell con los privilegios root.

- Bloquear el acceso a BIOS (poner contraseña al SETUP) y establecer el arranque directo desde

el HD.(Desactivar inicio mediante CD-ROM o dispositivos USB).

Contraseñas del gestor de arranque

A continuación se muestran las razones principales por las cuales proteger el gestor de

arranque GNU/Linux:

• Previene el acceso en modo monousuario — Si un atacante puede arrancar en modo

monousuario, se convierte en el superusuario de forma automática sin que se le

solicite la contraseña de acceso.

• Previene el acceso a la consola de GRUB — Si la máquina utiliza GRUB como el gestor

de arranque, un atacante puede usar la interfaz del editor para cambiar su

configuración o para reunir información usando el comando cat.

• Previene el acceso a sistemas operativos inseguros — Si es un sistema de arranque

dual, un atacante puede seleccionar un sistema operativo en el momento de arranque,

tal como DOS, el cual ignora los controles de acceso y los permisos de archivos.

Protegiendo GRUB con contraseñas

Puede configurar GRUB para solucionar los primeros dos problemas listados en la añadiendo

una directiva de contraseña a su archivo de configuración. Para hacer esto, primero seleccione

una contraseña, luego abra un indicador de comandos del shell, conéctese como root y

escriba:

- /sbin/grub‐md5‐crypt

Cuando se le pida, escriba la contraseña GRUB y presione la tecla ENTER. Esto retornará un

hash MD5 para la contraseña.

Luego, modifique el archivo de configuración GRUB /boot/grub/grub.conf. Abra el archivo y

debajo de la línea timeout en la sección principal del documento, añada la siguiente línea:

- password ‐‐md5 <password‐hash>

Reemplace <password-hash> con el valor retornado por /sbin/grub-md5-crypt.

La próxima vez que el sistema arranque, el menú de GRUB no le permitirá accesar el editor o la

interfaz de comandos sin primero presionar seguido por la contraseña de GRUB.

Lamentablemente, esta solución no previene a un atacante de arrancar en un sistema

operativo inseguro, si se está en un ambiente de arranque dual. Para esto, necesita editar una

parte diferente del archivo /boot/grub/grub.conf.

Page 14: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

14

Busque la línea title del sistema operativo inseguro y añada una línea que diga lock

directamente debajo de ella.

Para un sistema DOS, la estrofa debería comenzar con algo similar a:

- title DOS

- lock

Aviso:

Debe tener una línea password en la sección principal del archivo /boot/grub/grub.conf para

que esto funcione adecuadamente. De otra forma un atacante podrá acceder a la interfaz del

editor de GRUB y eliminar la línea de bloqueo.

Para crear una contraseña diferente para un kernel o sistema operativo particular, añada una

línea lock a la estrofa, seguido por una línea de contraseña.

Cada estrofa que usted proteja con una contraseña única debería comenzar con líneas

similares a las del ejemplo siguiente:

- title DOS

- lock

- password ‐‐md5 <password‐hash>

Notas:

1- Debido a que los sistemas BIOS varian de acuerdo al fabricante, algunos pueden que no

soporten la protección con contraseñas de ningún tipo, mientras que otras pueden soportar un

tipo pero no el otro.

2- GRUB también acepta contraseñas no encriptadas, pero se recomienda que utilice un hash

md5 para mayor seguridad.

Sobre seguridad en sistemas GNU/Linux. http://foro.jovenclub.cu/showthread.php?tid=6598

3 de 4 05/01/2012 10:19

Fuente:

You are not allowed to view links. Register or Login to view.

Métodos para evitar acceder directamente como root:

1. Deshabilitar el acceso root a través de cualquier dispositivo terminal ver el fichero:

- /etc/securetty

El archivo indica los terminales (ttys, pts, . . . ) en los que se puede conectar como root , si es

un fichero vacío, root no podrá entrar mediante servicios de la red que abran un terminal o

pseudoterminal, para impedir el acceso de root a través de un Display Manager (xdm, gdm,

etc.) o ssh tendremos que añadir la línea siguiente al fichero /etc/pam.d /{xdm,gdm,kdm,ssh}

Page 15: Práctica 3.2 - Seguridad y Alta Disponibilidad 2012 · 2012-01-22 · Nosotros vamos a trabajar sobre un sistema operativo ... Para poder modificar los parámetros adecuados lo primero

Práctica 3.2 - Seguridad y Alta Disponibilidad 2012

15

- auth required pam_securetty.so

2. Deshabilitar conexiones root SSH

- /etc/ssh/sshd_config

Modificar el archivo y fijar el parámetro

- PermitRootLogin no

- a

- PermitRootLogin 14