1. PRACTICAS
SEGURIDAD
SERVIDORES LINUX
SEGURIDAD TRIMESTRE-1 2º A.S.I.R
Débora García García
2. SEGURIDAD TRIMESTRE-1 Débora García García
Í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
1
3. SEGURIDAD TRIMESTRE-1 Débora García García
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
2
4. SEGURIDAD TRIMESTRE-1 Débora García García
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
3
5. SEGURIDAD TRIMESTRE-1 Débora García García
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.
4
6. SEGURIDAD TRIMESTRE-1 Débora García García
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
5
7. SEGURIDAD TRIMESTRE-1 Débora García García
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:
6
8. SEGURIDAD TRIMESTRE-1 Débora García García
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.
7
9. SEGURIDAD TRIMESTRE-1 Débora García García
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
8
10. SEGURIDAD TRIMESTRE-1 Débora García García
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
9
11. SEGURIDAD TRIMESTRE-1 Débora García García
(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
10
12. SEGURIDAD TRIMESTRE-1 Débora García García
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
11
13. SEGURIDAD TRIMESTRE-1 Débora García García
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)
12
14. SEGURIDAD TRIMESTRE-1 Débora García García
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.
13
15. SEGURIDAD TRIMESTRE-1 Débora García García
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).
14
16. SEGURIDAD TRIMESTRE-1 Débora García García
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
15
17. SEGURIDAD TRIMESTRE-1 Débora García García
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
16
18. SEGURIDAD TRIMESTRE-1 Débora García García
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
17
19. SEGURIDAD TRIMESTRE-1 Débora García García
(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
18