You are on page 1of 13

www.codigolibre.

org

AcademiaCdigoLibre

GNU/Instructor Ing. Jose Paredes

www.acl.edu.do

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

Aprendiendo Practicando GNU/Seguridad


En esta practica usted aprender: Elementos de Seguridad y sus Principios, Conocer
los Servicios Abiertos, Concepto de Encriptacion y su Procesos, Lista de Shells,
Autentificacion, Restrincciones, El uso de su, sudo y los permisos SUID, GUID y el
Sticky bit, Permisos con Chattr, Llaves PGP y GPG , Asegurar el Grub, Selinux . Si
completas el 100% de estos ejercicios podremos garantizar su aprendizaje.

Archivos relacionados con seguridad en GNU/Linux.


1. Forma correcta de cambiar root.
[root@JP ~]# su -

2. Para conocer los servicios abiertos.


[root@JP ~]# nmap localhost

3. Para conocer los servicios que se estn ejecutando.


[root@JP ~]# ls /etc/rc2.d/

4. El archivo de contraseas es sin discusin el fichero ms


crtico en Linux .
[root@JP ~]# cat /etc/passwd

5. El archivo de shadow alberga pares de nombres de usuario y


contraseas, as como informacin contable, como la fecha de
expiracin, y otros campos especiales .
[root@JP ~]# cat /etc/shadow

6. El archivo de grupos contiene toda la informacin de pertenencia


a grupos .
[root@JP ~]# cat /etc/group

7. Similar al fichero shadow de contraseas, este fichero contiene


los grupos, contraseas y miembros .
[root@JP ~]# cat /etc/gshadow

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

8. Este fichero te permite definir algunos valores por defecto para


diferentes programas como useradd y expiracin de contraseas.
[root@JP ~]# cat /etc/login.defs

9. El fichero de shells contiene una lista de shells vlidos, si el


shell por omisin de un usuario no aparece listado aqu, no
podr hacer login interactivamente.
[root@JP ~]# cat /etc/shells

10. Este fichero contiene una lista de ttys desde los que el root
puede hacer un login.
[root@JP ~]# cat /etc/securetty

11. para ver la informacin de envejecimiento de la cuenta.


[root@JP ~]# chage

-l estudiantes

12. Modificamos para que la contrasea caduque el 01/11/2013.


[root@JP ~]# chage

-E 15/04/2013 estudiantes

13. Ahora vamos a cambiar los das de aviso antes de que expire la
contrasea.
[root@JP ~]# chage -W 10 estudiantes

14. Modificar el fichero securetty para impedir el acceso de root a


los ttys. Probarlo intentando entrar en consola como root.
Modificamos el fichero /etc/securetty comentamos la lnea de
tty1 por ejemplo, ahora guardamos.
[root@JP ~]# vim /etc/securetty
#tty2
GNUNota:Tratar de hacer Login como Root en la tty comentada.

15. Para bloquear un usuario.


[root@JP ~]# passwd -l estudiantes

16. Para desbloquear un usuario.


[root@JP ~]# passwd -u estudiantes

17. Cambiar la contrasea de un usuario.


[root@JP ~]# passwd estudiantes

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

18. Vamos hacer que solo el usuario estudiantes pueda cambiar al


administrador ROOT
Agregamos el usuario estudiantes al grupo WHEEL
[root@JP ~]# gpasswd -a estudiantes wheel

Slo permiten el acceso root a los miembros del grupo wheel,


ahora estudiante:
[root@JP ~]# vim /etc/pam.d/su

En la linea 6 descomentamos:
auth
required

pam_wheel.so use_uid

GNUNotas:Tratar de hacer Login como Root.

19. hacer que la cuenta de un usuario expire en 30 das desde hoy.


[root@JP ~]# usermod -e 30 estudiantes

20. Para comprobar el estado del usuario .


[root@JP ~]# passwd -S estudiantes
[root@JP ~]# chage -l estudiantes

21. Para confirmar que SELinux est activado .


[root@JP ~]# sestatus

22. El archivo /etc/selinux/config es el archivo de configuracin


principal de SELinux
[root@JP ~]# cat /etc/selinux/config

23. Ver el estatus del servicio iptables.


[root@JP ~]# service iptables status

24. Para encontrar todos los programas setuid .


[root@JP ~]# find / --perm +4000

25. Para encontrar todos los programas setgid .


[root@JP ~]# find / --perm +2000

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

26. Cmo se ven los servicios activos.


[root@JP ~]# netstat -atu | grep '*:*' | less

27. Para ver qu servicios RPC ofrece actualmente tu mquina ejecuta


el siguiente comando.
[root@JP ~]# rpcinfo -p

28. Explique a
especial.

su

GNU/Instructor

porque

/tmp

tiene

un

permiso

[root@JP ~]# stat /tmp

29. Identifique su mascara de usuario que establece los permisos por


defecto.
[root@JP ~]# umask

30. Archivo contiene los parmetros del kernel.


[root@JP ~]# cat /etc/sysctl.conf

Chattr
31. Para estos ejercicios usted deber crear un directorio y copiar
el archivo passwd.
[jp@oraserv5 ~]$ mkdir chattr
[jp@oraserv5 ~]$ cd chattr/
[jp@oraserv5 chattr]$ cp /etc/passwd .

32. El siguiente mandato agrega el atributo inmutable al archivo


passwd.
[jp@oraserv5 chattr$ chattr +i passwd
GNUNota: Trate de borrar el archivo.

33. Con la opcin +i, aplicamos la inmutabilidad, la opcin -V es


para ver lo que hace justamente.
[jp@oraserv5 chattr]$ chattr -V +i passwd

34. ver el listado de archivos y los atributos


[jp@oraserv5 chattr]$ lsattr

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

GNUPG.
35. Lista claves publicas
[jp@oraserv5 clase]$ gpg --list-key

36. Crea una llave publica y privada.


[jp@oraserv5 clase]$ gpg --gen-key

37. Lista llaves privadas.


[jp@oraserv5 clase]$ gpg -K

38. Exporta clave y con "-o" crea un archivo donde se guardara


"archivo_clave"
[jp@oraserv5 clase]$ gpg --export -o acl_clave

39. Hace la misma funcin anterior pero con "-a" exporta el archivo
en formato ascii para que sea mas ordenado.
[jp@oraserv5 clase]$ gpg --export -o acl_clave2 -a
GNUNota: Realice un cat al archivo acl_clave2.

40. Importa llaves.


[jp@oraserv5 clase]$

gpg --import Ruta donde este la llave

41. Para firmar un archivo creado por nosotros (archivo) y lo firma


archivo.asc
[jp@oraserv5 clase]$ gpg -s -a passwd

42. Desencripta (-d) el archivo creado (-o=archivo de salida,


desencript.asc) y despus el archivo a desencriptar (cript).
Algo muy importante es recordar que con la frase que encriptamos
es con la misma que desencriptamos desencriptamosoosino sacara
error (descifrado fallido: clave incorrecta)
[jp@oraserv5 clase]$ gpg -d -o cript

passwd.asc

GNUNota: Haga cat al archivo cript, y explique al GNU/Instructor su resultado.

43. Para firmar con la llave publica de otra persona.


[jp@oraserv5 clase]$

gpg -R [ID] -e [archivo]

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

44. Listar las claves privadas.


[jp@oraserv5 clase]$ gpg list-secret-keys

45. Exportar una clave publica a un archivo.


[jp@oraserv5 clase]$ gpg --export -a "jose paredes" > publica.key
GNUNota:El nombre de usuario es el parmetro uid que obtenemos al listar las claves
publicas con la opcin list-public-keys.

46. Exportar una clave privada a un archivo.


[jp@oraserv5 clase]$ gpg --export-secret-key -a "jose paredes" > privada.key

47. Importar una clave publica.


[jp@oraserv5 clase]$ gpg --import publica.key
GNUNota:Cambiando el nombre de publica.key por el de la clave que quieren importar

48. Importar una clave privada.


[jp@oraserv5 clase]$ gpg --allow-secret-key-import --import privada.key
GNUNota:Cambiando el nombre de privada.key por el de la clave que quieren importar.

49. Borrar una clave publica.


[jp@oraserv5 clase]$ sudo gpg --delete-key "jose paredes"
GNUNota:CUIDADO!!! con esta una vez borrada no se puede recuperar ms nunca.

50. Listar las Huellas de las claves.


[jp@oraserv5 clase]$ gpg fingerprint
GNUNota:Hace lo mismo que list-keys pero muestra la informacin de la huella de las
claves.

51. Ahora vamos codificar archivo.


[jp@oraserv5 clase]$ gpg -e group

52. Codificarlos con la clave de otro usuario o otra clave pblica


[jp@oraserv5 clase]$ gpg -er "jose paredes" group

Nota: Haga ls para ver el archivo generado.


53. Codificarlos con el criptograma tipo 7-bit ASCII
[jp@oraserv5 clase]$ gpg -a -er "jose paredes" group

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

54. Descodificar.
[jp@oraserv5 clase]$ gpg -d group.gpg

Sudo
55. Vamos a ver el archivo de configuracin de sudo.
[root@JP ~]# cat /etc/sudoers

56. Esto permite a los usuarios comprobar por si mismos si estn o


no autorizados a utilizar sudo.
[root@JP ~]# sudo -v

57. Con esta opcin se nos presenta una lista con las Opciones de
Configuracin (Defaults),
de
/etc/sudoers), , con una corta
descripcin de cada una de ellas.
[root@JP ~]# sudo -L

58. Nos muestra las opciones con las que fue compilado sudo, as
como las direcciones , en la red local, de las distintas
mquinas.
[root@JP ~]# sudo -V

59. Nos muestra una relacin de los comandos que el usuario puede
ejecutar en el presente host.
[root@JP ~]# sudo -l

60. 6-Vamos configurar el SUDO para el usuarios estudiantes:


El archivo de configuracin se encuentra en /etc llamado sudoers.
[root@nixon ~]# visudo

o
[root@nixon ~]# vi /etc/sudoers

Como usted desee:)


61. En la linea 95 donde dice :
## Allow root to run any commands anywhere
root

ALL=(ALL)

ALL

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

Grabamos y salimos y ya tenemos el usuario estudiantes con todos


los privilegios del root utilizando su propia clave.
62. Ahora vamos probar la validez de la misma
[estudiantes@nixon ~]$ shutdown -r now

63. Y ahora con sudo:


[estudiantes@nixon ~]$ sudo shutdown -r now
GNUNota: Explique al GNU/Instructor la opcin NOPASSWD.

64. En la linea 50 agregue estos:

Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, \


/sbin/poweroff, /sbin/reboot, /sbin/init

65. Luego vuelva a la linea donde agrego el usuario y agregue:


estudiantes

ALL=(ALL)

ALL,!SHUTDOWN

66. Ahora probemos otra vez el shutdown con el sudo loguiado con el
usuario estudiantes:
[estudiantes@nixon ~]$ sudo shutdown -r now

Sorry, user estudiantes is not allowed to execute '/sbin/shutdown


-r now' as root on nixon.acl.
67. Por ejemplo, suponga que usted desea verificar si el archivo
nombrado ha sido modificado. Este archivo es el ejecutable que
inicia el servicio DNS en su sistema. Por que el nombrado es un
archivo binario, usted desea asegurar que nadie ha alterado o
reemplazado con un Troyano. En este ejemplo, suponga que usted
esta trabajando con el directorio /home/mojo/. Usted puede
ejecutar el siguiente comando:
[estudiantes@oraserv5 ~]$ md5sum /usr/sbin/chat
GNUNota: La cadena de texto inmediatamente debajo del comando mdsum es hash de 128
bits del archivo /usr/sbin/chat.

68. Donde se encuentran los password encriptado de los usuario.


[root@JP ~]# cat /etc/shadow

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

Ponerle password Grub.


69. Antes de empezar hacer respaldo del grub.
[root@JP ~]#

cp /boot/grub/menu.lst /boot/grub/menu.lst.backup

70. Entramos al shell del Grub.


[root@JP ~]# grub

71. Escribimos md5crypt.


Grub>

md5crypt

GNUNota:Digite su clave y luego copie la salida:


Encrypted: $1$3/ZE51$eNoCLTXlTTi4NXtRMqvUF/

72. Salga del Grub.


Grub>

quit

73. Abrimos el archivo menu.lst y agregamos esta linea..


[root@JP ~]# vim /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Scientific Linux (2.6.32-220.el6.x86_64)
root (hd0,0)
kernel
/vmlinuz-2.6.32-220.el6.x86_64
ro
root=UUID=8bc3f624-0921-491b-867221e3d71fef5c rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD quiet
SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto
rhgb crashkernel=auto quiet
rd_NO_LVM rd_NO_DM
password --md5 $1$3/ZE51$eNoCLTXlTTi4NXtRMqvUF/
initrd /initramfs-2.6.32-220.el6.x86_64.img
GNUNota: Salimos guardando los cambio y reiniciamos para ver efectuado los cambio.

Otra forma es en texto plano, no es recomendada.


74. Abrimos el archivo menu.lst y agregamos esta linea passwd y al
lado la clave que pondremos al grub.
[root@JP ~]# vim /boot/grub/menu.lst
password kikla
GNUNota: Salimos guardando los cambio y reiniciamos para ver efectuado los cambio.

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

SeLinux:
75. Verifiquemos en que estado esta nuestro SElinux.
root@lilo-mcruz:~# getenforce

76. Pongamos nuestro SElinux en modo permisivo.


root@lilo-mcruz:~# setenforce 1
Permissive

77. Verifiquemos que esta denegando SElinux.


root@lilo-mcruz:~# getsebool

78. Permitamos una aplicacin con SElinux.


root@lilo-mcruz:~# setsebool mail_read_content on

79. Verifiquemos que otras aplicaciones estn siendo denegadas por


SElinux.
root@lilo-mcruz:~# sealert -a /var/log/audit/audit.log

80. Crearemos una regla para permitirlas todas.


root@lilo-mcruz:~# audit2allow -M reglas -l -i /var/log/audit/audit.log

81. Ahora instalaremos el modulo ya creado.


root@lilo-mcruz:~# semodule -i reglas.pp

82. Existen muchas opciones provistas por el kernel para proveernos


de seguridad. Muchas de estas son manejadas directamente desde
el pseudo sistema de archivos /proc/sys. Para habilitar se
coloca simplemente un 1 y por lo contrario un 0. Las
relacionadas
con
redes
se
encuentran
en
el
directorio
/proc/sys/net/ipv4, algunos ejemplos:
icmp_echo_ignore_all: No responder a pings
icmp_echo_ignore_BROADCAST: No responder a peticiones de
broadcast o difusin
ip_forward: Controlar el reenvo de paquetes
rp-filter: Determina si direccin fuente es verificable. Protege
contra ataques de IP Spoofing.

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

www.acl.edu.do

El archivo de configuracin para establecer los valores deseados a


los parmetros del kernel es /etc/sysctl.conf y el programa para
controlar en tiempo real estos parmetros es /sbin/sysctl. Un
ejemplo para puntualizar es:
root@lilo-mcruz:~#

echo 0 > /proc/sys/net/ipv4/ip_forward

root@lilo-mcruz:~#

sysctl

-w kernel.domainame=codigolibre.org

Glosario de Seguridad:
Desbordamiento de buffer es un error de software, se produce cuando se copia una cantidad de
datos en rea no lo suficientemente grande, sobrescribiendo de esta manera otras zonas de memoria.
Esto se debe en general a un fallo de programacin.
Criptografa: Enmascarar texto de forma discreta para que no pueda ser interpretado solo por
quienes tienen la llave.
Denegacin de Servicio: Ataque que consume mucho recurso para as no poder atender los
verdaderos usuarios.
IP Spoofing: Ataque que confunde su PC en crear que el atacante es alguien conocido.
Escaneado de Puertos: accin de analizar por medio de un programa el estado de los puertos de
una mquina conectada a una red de comunicaciones. Detecta si un puerto est abierto, cerrado, o
protegido por un cortafuego.
Filtrado de Paquetes: La accin de seleccionar paquetes por tipo y as poder aceptar, denegar o
desviar.
Pasarelas: Servidor por donde toda comunicacin desde y hacia Internet es llevada a cabo.
Set User-ID/Set Group-ID: Bits de permisos especializados para permitir que un usuario o grupo
pueda ejecutar una aplicacin como otro.
Troyano: Programa que se presenta legtimo cuando en realidad al ejecutarlo lo que hace es causar
daos.
Vulnerabilidad: Son agujeros de seguridad que si no son atendidos pueden ser vulnerados por
intrusos.
Corta Fuego - Firewall: Equipo con programas dedicados para restringir el acceso entre una red
protegida e Internet.
chroot: El cambio del directorio raz por otro directorio, sin afectar los procesos anteriores solo los
hijos.
Exploit: Cdigo que aprovecha un error del sistema.

GNU/Instructor Ing. Jose Paredes

www.codigolibre.org

AcademiaCdigoLibre

Para

cualquier sugerencia info@acl.edu.do

GNU/Instructor Ing. Jose Paredes

www.acl.edu.do