Sg t1 practicas_linux

19
PRACTICAS SEGURIDAD SERVIDORES LINUX SEGURIDAD TRIMESTRE-1 2º A.S.I.R Débora García García

Transcript of Sg t1 practicas_linux

Page 1: Sg t1 practicas_linux

PRACTICAS SEGURIDAD

SERVIDORES LINUX

SEGURIDAD TRIMESTRE-1 2º A.S.I.R

Débora García García

Page 2: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

1

ÍNDICE

Probar el comando chage y ver cómo se modifica el fichero shadow. .............................................. 3

Modificar los parámetros de contraseña de login.defs y ver cómo afechcta a la creación de nuevos

usuarios. .......................................................................................................................................... 4

3.- Modificar el fichero securetty para impedir el acceso de root a los ttys (pruébalo intentando

entrar en la consola como root). ...................................................................................................... 5

4.- Modificar el fichero de configuración de ssh para impedir el acceso de root por ssh. .................. 6

5.- Crea un grupo wheel si no existe y modifica el fichero PAM para el servicio su, de forma que

sólo los usuarios pertenecientes a ese grupo puedan hacer su. .......................................................... 6

6.- Modificar el fichero PAM adecuado para hacer que los usuarios listados en un fichero sólo

puedan acceder a través de xdm (no deben poder acceder en la consola ni mediante ssh)................. 7

7.- Probar el comando usermod para hacer que la cuenta de un usuario expire en 30 das desde hoy. 8

8.- Crear una cuenta de invitado con acceso restringido. .................................................................. 8

(a) Crear una cuenta normal y en el /etc/passwd cambiar el shell estándar por uno restringido. .... 8

(b) Borrar en el home del usuario todos los cheros (incluidos los .bashrc, .bash prole, etc.) ......... 8

(c) Crear un fichero .bash_profile vacío, con permiso de lectura para propietario, grupo y otros y

cuyo propietario sea root. ............................................................................................................ 9

(d) Modificar el propietario del home del usuario a root, y dar permisos de lectura y ejecución a

grupo y otros (así el usuario sólo puede entrar en la cuenta, pero no hacer nada mas). ................. 9

(e) Crear un directorio bin (propietario root, permiso rx a grupo y otros) dentro del home del

usuario, y en ese directorio ponemos enlaces simbólicos a los comandos que usara el usuario (p.e.

ls, cp, cat, vi). .............................................................................................................................. 9

(f) En él .bash_profile crear la variable PATH para que acceda a ese directorio bin .................... 10

(g) Crea dentro del home un directorio de trabajo work, propiedad del usuario con permisos rwx

para el mismo. ........................................................................................................................... 10

(h) En el .bash_profile haz que el usuario al entrar se redirija a ese directorio work (cd

/home/invitado/work)) ............................................................................................................... 10

9.- Instalar el paquete sudo y ver las páginas de manual de sudo y sudoers .................................... 11

10.- Crear un fichero de configuración con las siguientes características ....................................... 11

(a) los usuarios del grupo wheel deben poder apagar y reiniciar la maquina usando su contraseña

.................................................................................................................................................. 11

(b) un par de usuarios concretos deben poder configurar la red .................................................. 11

(c) debéis utilizar alias para comandos y usuarios ...................................................................... 11

(d) los logs de sudo deben ir a un chero de log concreto ............................................................ 11

11.- Probar a ejecutar los comandos con esos usuarios y examinar los logs generados ................... 12

12.- En el servidor, instalar el paquete tcpd, si no está ya instalado. ............................................... 12

13.- Examinar las páginas de manual de tcpd y hosts Access. ........................................................ 12

14.- Configurar los ficheros hosts.allow y hosts.deny para: ........................................................... 12

a) denegar el acceso a todo el mundo a todos los servicios (en hosts.deny) ver el tiene sobre los

clientes (intentar conectarse por ssh, o autenticarse como usuario LDAP). ................................ 12

Page 3: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

2

b) permitir (en hosts.allow) acceso desde los sistemas de la red local a los siguientes servicios y

comprobar que funcionan: ......................................................................................................... 12

SSH (demonio sshd) .................................................................................................................. 12

LDAP (demonio slapd) .............................................................................................................. 12

NFS (demonios portmap, nfsd y mountd) .................................................................................. 12

c) en hosts.allow indicar que todas las conexiones de FTP sean denegadas, y que se envíe un mail

a un usuario mostrando un mensaje de intento de conexión. ...................................................... 13

d) probar los comandos tcpdchk y tcpdmatch ............................................................................ 14

15.- Examina los ficheros de configuración de PAM en el sistema real. ......................................... 14

16.- Modifica el archivo /etc/security/time.conf para que el acceso por ssh al servidor esté prohibido

para todos los usuarios excepto root los fines de semana y fuera de horas de trabajo. .................... 14

17.- Instalar el paquete acl , ver las páginas de manual de setfac y getfacl ..................................... 15

18.- Remontar la partición /home con soporte ACL ....................................................................... 15

19.- Crear varios cheros y probar diferentes permisos por medio de las ACLs ............................... 15

20.- Definir permisos por defecto para un directorio y ver como se propagan los permisos a los

ficheros creados en ese directorio .................................................................................................. 16

21.- Ejecuta un bash en chroot ....................................................................................................... 17

(a) Crea un directorio /var/chroot/shell ...................................................................................... 17

(b) Crea dentro de este directorio los directorios necesarios para ejecutar bash .......................... 17

por lo menos debes crear /var/chroot/shell/bin y copiar /bin/bash a ese directorio ...................... 17

usa la opción -p de cp para preservar permisos de los cheros que copias .................................... 17

(c) comprueba con ldd las libreras necesarias para ejecutar bash y cópialas al directorio adecuado

.................................................................................................................................................. 17

(d) ejecuta bash con: .................................................................................................................. 17

# chroot /var/chroot/shell /bin/bash ............................................................................................ 17

mira en /proc que el directorio raíz del shell lanzado ................................................................. 17

(e) Añade el comando ls a la jaula ............................................................................................. 17

(f) Ejecuta el shell como un usuario no privilegiado con chrootuid ............................................ 17

22.- Instala Apache2 chroot usando makejail ................................................................................. 17

(a) Instala los paquetes apache2 y makejail................................................................................ 17

(b) Copia el chero /usr/share/doc/makejail/examples/apache.py a /etc/makejail ......................... 18

(c) Modifica el chero para adaptarlo a apache2, indicándole los paquetes apropiados ................ 18

(d) Sigue las instrucciones en www.debian.org/doc/manuals/securingdebian- ............................ 18

howto/ap-chroot-apache-env.en.html para realizar la instalación y lanzar el apache en chroot .... 18

Page 4: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

3

Probar el comando chage y ver cómo se modifica el fichero shadow.

Chage debora -l

Archivo: /etc/shadow

Se han modificado el número de días con: chage –M 5 debora

Page 5: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

4

Modificar los parámetros de contraseña de login.defs y ver cómo afecta a la creación de nuevos usuarios.

Vemos como está por defecto.

Modificación: /etc/logins.defs Estos son los parámetros por defecto.

Page 6: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

5

Esta es la modificación.

Comprobamos con: chage –l usuario

Modificar el fichero securetty para impedir el acceso de root a los ttys (pruébalo intentando entrar en la consola como root).

Editar archivo: /etc/securetty Añadimos la siguiente línea

Comprobamos: sudo login root

Page 7: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

6

Modificar el fichero de configuración de ssh para impedir el acceso de root por ssh.

Modificar el archivo: /etc/ssh/sshd_config Fijar el parámetro PermitRootLogin no

Añadir al archivo: /etc/securetty

Comprobamos:

Crea un grupo wheel si no existe y modifica el fichero PAM para el servicio su, de forma que sólo los usuarios pertenecientes a ese grupo puedan hacer su. Crear el grupo Wheel: addgroup Wheel Crear un usuario para Wheel: adduser usu Añadir el usuario al grupo: usermod –G Wheel usu Abrir el archivo /etc/pam.d/su y descomentar la línea:

Page 8: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

7

Modificar el fichero PAM adecuado para hacer que los usuarios listados en un fichero sólo puedan acceder a través de xdm (no deben poder acceder en la consola ni mediante ssh).

Crear un fichero que contenga la lista de usuarios bloqueados: nano /etc/bloqueados. Introducimos los nombres en la lista.

Para negar el acceso editamos el fichero /etc/pam.d/login Añadimos: auth required pam listfile.so ítem=user sense=deny file=/etc/bloqueados onerr=succeed

Al logearnos, no nos lo permite.

Page 9: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

8

Probar el comando usermod para hacer que la cuenta de un usuario expire en 30 das desde hoy.

Hay que ejecutar el comando en el terminal para que la cuenta de “usu” expire en el tiempo indicado: usermod –e $(date + %Y)-11-03 usu.

Crear una cuenta de invitado con acceso restringido.

(a) Crear una cuenta normal y en el /etc/passwd cambiar el shell estándar por uno restringido. Crear cuenta de usuario: adduser normal Modificar: /etc/password

El usuario normal está restringido

(b) Borrar en el home del usuario todos los cheros (incluidos los .bashrc, .bash prole, etc.) Ver ficheros: ls –a /home/normal

Page 10: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

9

Borrar todos los ficheros: rm –R /home/normal/

(c) Crear un fichero .bash_profile vacío, con permiso de lectura para propietario, grupo y otros y cuyo propietario sea root. Crear el fichero: > /home/normal/.bash_profile

Permisos: chmod 444 /home/normal/.bash_profile

(d) Modificar el propietario del home del usuario a root, y dar permisos de lectura y ejecución a grupo y otros (así el usuario sólo puede entrar en la cuenta, pero no hacer nada mas).

Chown root /home/normal (en nuestro caso ya está por defecto como vemos en el apartado anterior). Chmod 755 /home/normal/

(e) Crear un directorio bin (propietario root, permiso rx a grupo y otros) dentro del home del usuario, y en ese directorio ponemos enlaces simbólicos a los comandos que usara el usuario (p.e. ls, cp, cat, vi).

Crear directorio: mkdir /home/normal/bin Permisos: chmod 755 /home/normal/bin

Enlaces simbólicos: ln –s Borrar enlaces simbólicos: unlink enlace

Page 11: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

10

(f) En él .bash_profile crear la variable PATH para que acceda a ese directorio bin Crear variable: PATH=$PATH:/home/normal/bin/

(g) Crea dentro del home un directorio de trabajo work, propiedad del usuario con permisos rwx para el mismo. Crear directorio: mkdir work Permisos: chmod 755 work Propiedad: chown normal work

(h) En el .bash_profile haz que el usuario al entrar se redirija a ese directorio work (cd /home/invitado/work)) Añadir al archivo: /home/normal/.bash_profile cd /home/normal/work

Page 12: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

11

Sudo login normal

Instalar el paquete sudo y ver las páginas de manual de sudo y sudoers Instalar apt-get install sudo Para ver el manual de los comando utilizamos la orden man sudo y man sudoers

Crear un fichero de configuración con las siguientes características

(a) los usuarios del grupo wheel deben poder apagar y reiniciar la maquina usando su contraseña

ALL, !SERVERS=NOPASSWD: SHUTDOWN

(b) un par de usuarios concretos deben poder configurar la red

CLIENTS=ip_cliente/mascara_red

(c) debéis utilizar alias para comandos y usuarios

Users_Alias AYUDANTES=pepe,juan

Cmnd_Alias SHUTDOWN=/sbin/shutdown –h now ,/sbin/halt

Cmnd_Alias USERS=/usr/sbin/adduser,/, /usr/sbin/deluser

(d) los logs de sudo deben ir a un chero de log concreto

Defaults logfile=/var/log/sudolog

Page 13: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

12

Probar a ejecutar los comandos con esos usuarios y examinar los logs generados

En el servidor, instalar el paquete tcpd, si no está ya instalado. Apt-get install tcpd

Examinar las páginas de manual de tcpd y hosts Access. Man tcpd y man hosts_access.

Configurar los ficheros hosts.allow y hosts.deny para:

a) denegar el acceso a todo el mundo a todos los servicios (en hosts.deny) ver el tiene sobre los clientes (intentar conectarse por ssh, o autenticarse como usuario LDAP). Descomentar ALL: PARANOID

Si sustituimos paranoid por all denegamos el acceso a todos los servicios.

b) permitir (en hosts.allow) acceso desde los sistemas de la red local a los siguientes servicios y comprobar que funcionan:

SSH (demonio sshd)

LDAP (demonio slapd)

NFS (demonios portmap, nfsd y mountd)

Page 14: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

13

Comprobación:

c) en hosts.allow indicar que todas las conexiones de FTP sean denegadas, y que se envíe un mail a un usuario mostrando un mensaje de intento de conexión.

Page 15: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

14

En el fichero /etc/banners debe de haber un fichero in.ftpd el cual incluirá un mensaje que podrá visualizar el cliente.

d) probar los comandos tcpdchk y tcpdmatch tcpdchk: chequea la configuración de hosts.allow y hosts.deny Tdpdmatch: predice como se comportarían las reglas ante una petición determinada.

Examina los ficheros de configuración de PAM en el sistema real.

Modifica el archivo /etc/security/time.conf para que el acceso por ssh al servidor esté prohibido para todos los usuarios excepto root los fines de semana y fuera de horas de trabajo. Editar: /etc/security/time.conf, añadir ssh;*;root;wk1500-2000 (servicio, usuario, fin de semana, de las 15h a las 20h).

Page 16: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

15

Instalar el paquete acl , ver las páginas de manual de setfac y getfacl

Apt-get install acl

Man setfac

Man getfacl

Remontar la partición /home con soporte ACL

Mount –o remount,acl /

Crear varios ficheros y probar diferentes permisos por medio de las ACLs

Lectura y escritura al usuario “usu”: setfacl –m user:usu:rw prueba1.txt

Lectura al grupo “Wheel”: setfacl –m group:Wheel:r prueba2.txt

Page 17: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

16

Setfacl –m mask::r –x prueba3.txt Getfacl –omit-header prueba3.txt

Definir permisos por defecto para un directorio y ver como se propagan los permisos a los ficheros creados en ese directorio

Se crea el directorio acls y los archivos

Cambiamos los permisos del directorio chmod 700 acls Setfacl –d –m g:users:rw acls Cd acls Touch acl1 Getfacl acl1

Page 18: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

17

Ejecuta un bash en chroot

(a) Crea un directorio /var/chroot/Shell

(b) Crea dentro de este directorio los directorios necesarios para ejecutar bash por lo menos debes crear /var/chroot/shell/bin y copiar /bin/bash a ese directorio

usa la opción -p de cp para preservar permisos de los ficheros que copias

(c) comprueba con ldd las libreras necesarias para ejecutar bash y cópialas al directorio adecuado

(d) ejecuta bash con:

# chroot /var/chroot/shell /bin/bash

mira en /proc que el directorio raíz del shell lanzado

(e) Añade el comando ls a la jaula

(f) Ejecuta el shell como un usuario no privilegiado con chrootuid

Instala Apache2 chroot usando makejail

(a) Instala los paquetes apache2 y makejail

Apt-get install apache2

Apt-get install makejail

Page 19: Sg t1 practicas_linux

SEGURIDAD TRIMESTRE-1 Débora García García

18

(b) Copia el chero /usr/share/doc/makejail/examples/apache.py a /etc/makejail

(c) Modifica el chero para adaptarlo a apache2, indicándole los paquetes apropiados

(d) Sigue las instrucciones en www.debian.org/doc/manuals/securingdebian-

howto/ap-chroot-apache-env.en.html para realizar la instalación y lanzar el apache en chroot