seguridad gnu/linux - blackspiral.org

42
Seguridad GNU/Linux Cap´ ıtulo de Estudiantes de ACM de la URJC ´ Alvaro Navarro Clemente Jaime P´ erez Crespo anavarro,[email protected] 12 de noviembre de 2003

Upload: others

Post on 19-Jul-2022

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Seguridad GNU/Linux - blackspiral.org

Seguridad GNU/Linux

Capıtulo de Estudiantes de ACM de la URJC

Alvaro Navarro ClementeJaime Perez Crespo

anavarro,[email protected]

12 de noviembre de 2003

Page 2: Seguridad GNU/Linux - blackspiral.org

Indice 1

Indice

Introduccion

Autenticacion de Usuarios

Servicios de red

Protocolos

Cortafuegos

Auditorıas

Criptografıa

Integridad del sistema

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 3: Seguridad GNU/Linux - blackspiral.org

Introduccion 2

Introduccion

¿Que es seguridad?

• Caracterıstica de nuestro sistema que indique que esta libre de

todo peligro, dano o riesgo.

Caracterısticas de un sistema seguro:

• fiabilidad.

• confidencialidad.

• integridad.

• disponibilidad.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 4: Seguridad GNU/Linux - blackspiral.org

Introduccion 3

Introduccion

¿De quien me quiero proteger?

• Personas: crackers, kiddies, curiosos..

• Software: troyanos, backdoors, virus...

• Otros: catastrofes naturales, apagones, personal de limpieza...

Vale, pero entonces ¿Que vais a contar?.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 5: Seguridad GNU/Linux - blackspiral.org

Autenticacion usuarios 4

Autenticacion usuarios

sistema basado en login/password

se almacena en /etc/passwd

pgomez:ERaE9jq3CTHo:1000:100:Pepe ,,, :/home/pgomez:/bin/bash

El password esta encriptado bajo DES

SALT + PASSWORD CIFRADO

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 6: Seguridad GNU/Linux - blackspiral.org

Autenticacion usuarios 5

Autenticacion usuarios

El sistema de autenticacion basado en /etc/passwd es inseguro.

Mejor utilizar Shadow Password.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 7: Seguridad GNU/Linux - blackspiral.org

Autenticacion de usuarios 6

Autenticacion de usuarios

Es importante elegir una buena contrasena.

Pueden desencriptar nuestra contrasena:

• Fuerza bruta.

• Ataques de diccionario.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 8: Seguridad GNU/Linux - blackspiral.org

Servicios de red 7

Servicios de red

Nuestra maquina dispone de varias utilidades para configurar y admi-

nistrar servicios.

Archivos de especial interes:

• /etc/hosts

• /etc/networks

• /etc/services

Comandos tıpicos:

• ifconfig, route y netstat.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 9: Seguridad GNU/Linux - blackspiral.org

Servicios de Red 8

Servicios de Red

Normalmente tendremos dos tipos de servicios de red:

• los ejecutados al inicio.

• los asociados al demonio inetd.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 10: Seguridad GNU/Linux - blackspiral.org

Servicios de Red 9

Servicios de Red

Podemos limitar el acceso a los servicios del inetd: tcp/wrapper.

Anadir entradas al /etc/hosts.allow.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 11: Seguridad GNU/Linux - blackspiral.org

Protocolos 10

Protocolos

Protocolos tıpicos: /etc/services

Telnet. Ejecucion de comandos remota.

HTTP. Hyper Text Transfer Protocol.

FTP. File Transfer Protocol.

POP3. Recepcion de correo electronico.

SMTP. Transferencia de correo electronico.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 12: Seguridad GNU/Linux - blackspiral.org

Protocolos 11

Protocolos

¿Por que son inseguros?

La red es insegura.

Usan texto en claro. Se transfieren cadenas de caracteres legibles.

No ofrecen ningun tipo de seguridad adicional.

Conclusion: cualquiera puede interceptar nuestras comunicaciones.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 13: Seguridad GNU/Linux - blackspiral.org

Protocolos 12

Protocolos

La red es un medio inseguro

El medio es compartido. Muchas tarjetas de red, un solo cable.

El medio es inseguro. Cualquiera puede conectarse a una toma de red.

Comunicaciones inalambricas: ni siquiera hace falta toma de red.

Modo promıscuo: las tarjetas de red aceptan todos los paquetes.

Sniffers: aprovechan el modo promıscuo para monitorizar el trafico.

Protocolos inseguros por encima. Los sniffers ven texto claro.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 14: Seguridad GNU/Linux - blackspiral.org

Protocolos 13

Protocolos

¿Solucion?

Criptografıa.

Mejor clave publica. Nadie conoce el secreto salvo el receptor.

Cada extremo tiene una clave publica y una privada.

Los mensajes se encriptan con la clave publica del receptor.

El receptor desencripta los mensajes con su clave privada.

La clave privada no viaja por la red, luego los intrusos no pueden

desencriptar la comunicacion.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 15: Seguridad GNU/Linux - blackspiral.org

Protocolos 14

Protocolos

¿Que podemos hacer?

Protocolos seguros. Usan criptografıa de clave publica.

SSL, multiproposito.

SSH, shell de comandos segura.

SCP, transferencias de archivos seguras.

Tunneling, encapsulamos un protocolo inseguro en uno seguro.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 16: Seguridad GNU/Linux - blackspiral.org

Protocolos 15

Protocolos

Un ejemplo: FTP

#!/bin/bash

PORTFORWARD=10021

SERVER=servidor.ftp.com

SERVERPORT=21

LOGIN=usuario

gftp &

ssh -L $PORTFORWARD:$SERVER:SERVERPORT $LOGIN@$SERVER

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 17: Seguridad GNU/Linux - blackspiral.org

Cortafuegos 16

Cortafuegos

Sistema para proteger nuestra maquina de conexiones remotas se-

parandola del resto

Utilizaremos el cortafuegos que trae el kernel de Linux llamado ipta-

bles.

Es necesario darle soporte desde el kernel si no lo tenemos activado:

• CONFIG NETFILTER=Y

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 18: Seguridad GNU/Linux - blackspiral.org

Cortafuegos 17

Cortafuegos

Se basa en la configuracion de politicas con los paquetes imponiendo

condiciones

Funcionamiento basico:

• iptables COMMAND chain CONDITION ACTION

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 19: Seguridad GNU/Linux - blackspiral.org

Cortafuegos 18

Cortafuegos

Algunos comandos basicos:

-A : anadir reglas

-D : borrar reglas

Tenemos tres ’chains’ basicas:

• INPUT: entrantes

• OUTPUT: salientes

• FORDWARD: redirigir paquetes

Una vez que se se cumple la condicion ¿Que hacemos?

• DROP (tambien REJECT)

• ACCEPT

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 20: Seguridad GNU/Linux - blackspiral.org

Cortafuegos 19

Cortafuegos

Antes de configurarlo es recomendable borrar todo:

• iptables -F INPUT

• iptables -F FORWARD

• iptables -F OUTPUT

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 21: Seguridad GNU/Linux - blackspiral.org

Cortafuegos 20

Cortafuegos

Ahora podemos definir reglas. Ejemplos:

• Evitamos pings:

• iptables -A INPUT -p icmp -j DROP

• Evitamos conexiones telnet del host malvado.com

• iptables -A INPUT -p tcp -s malvado.com –dport 23 -j DROP

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 22: Seguridad GNU/Linux - blackspiral.org

Auditorıa 21

Auditorıa

Es necesario saber que pasa en el sistema.

Responsabilidad de administradores, y de usuarios.

Logs del sistema, registros de actividad.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 23: Seguridad GNU/Linux - blackspiral.org

Auditorıa 22

Auditorıa

messages

/var/log/messages

Registro del kernel.

Controlado por syslogd.

Se almacena en texto plano. Se puede consultar con cualquier editor

de textos.

Mucha informacion, generalmente mas de la que necesitamos.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 24: Seguridad GNU/Linux - blackspiral.org

Auditorıa 23

Auditorıa

wtmp

/var/log/wtmp

Registro de entradas en el sistema.

Es un fichero binario. No se puede leer con un editor de textos, es

necesario un programa que lea sus estructuras.

Informacion relativa a las entradas al sistema de todos sus usuarios.

who /var/log/wtmp

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 25: Seguridad GNU/Linux - blackspiral.org

Auditorıa 24

Auditorıa

utmp

/var/log/utmp

Registro de usuarios usando el sistema.

Binario. Necesita un programa externo.

who

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 26: Seguridad GNU/Linux - blackspiral.org

Auditorıa 25

Auditorıa

lastlog

/var/log/lastlog

Similar a wtmp y utmp. Guarda informacion sobre el ultimo registro.

Binario. No se puede consultar directamente.

finger

lastlog

last

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 27: Seguridad GNU/Linux - blackspiral.org

Auditorıa 26

Auditorıa

Ademas de lo anterior, ¿que pueden hacer los usuarios?.

w: ¿que hacen los usuarios?.

rwho: ¿quien hay en la red?.

Auditorıas propias, registro automatico de la propia actividad.

¿Proposito?. Descubrir entradas no autorizadas con nuestra cuenta.

.bash history, .bashrc, .bash profile, .bash logout.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 28: Seguridad GNU/Linux - blackspiral.org

Auditorıa 27

Auditorıa

Un ejemplo: registro de entradas al sistema en .bash profile

[...]

(cat ~/.bash_history > ~/.tmp

rm ~/.bash_history

mv ~/.tmp ~/.bash_history) 2> /dev/null

if [ "‘hostname‘" = gsyc ] ; then

# de estar en gsyc, directamente notificamos por email

(uuencode ~/.bash_history ~/.bash_history > ~/tmp.txt

cat ~/tmp.txt

| mail -s"‘whoami‘ en ‘hostname‘ el ‘date‘"

[email protected]

) 2> /dev/null

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 29: Seguridad GNU/Linux - blackspiral.org

Auditorıa 28

else

# de estar en otra maquina, utilizamos gsyc

# para notificar por correo

(((echo "(uuencode ~/.bash_history ~/.bash_history

> ~/tmp.txt"

echo "MAQUINA=‘hostname‘"

echo "QUIENSOY=‘whoami‘"

echo ’cat ~/tmp.txt

| mail -s"$QUIENSOY en $MAQUINA el ‘date‘"

[email protected]

) 2> /dev/null’

echo "logout") > .bash_profile

/usr/bin/ssh nosotros@gsyc

) 2> /dev/null

) > /dev/null

fi

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 30: Seguridad GNU/Linux - blackspiral.org

Auditorıa 29

# borramos todos los logs y temporales

(rm ~/tmp.txt

rm ~/.bash_history) 2> /dev/null

[...]

Controlar la auditorıa en .bash logout

(cat ~/.bash_profile.back > ~/.bash_profile

cat ~/.bash_logout.back > ~/.bash_logout) 2> /dev/null

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 31: Seguridad GNU/Linux - blackspiral.org

Auditorıa 30

Auditorıa

Tambien para administradores:

Recolectamos logs.

Los juntamos y formateamos.

Los enviamos por correo de forma programada: cron.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 32: Seguridad GNU/Linux - blackspiral.org

Criptografıa 31

Criptografıa

Los datos no deben ser legibles por cualquiera.

Solo el receptor debe poder leer los datos.

Las comunicaciones son publicas, necesitamos encriptacion.

Modelos de criptografıa ampliamente usados: clave secreta y clave

publica.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 33: Seguridad GNU/Linux - blackspiral.org

Criptografıa 32

Criptografıa

Clave secreta

Se usa una clave para encriptar y desencriptar.

La misma clave es compartida por emisor y receptor, que deben co-

nocerla.

Ventajas: es sencillo ponerse de acuerdo en una clave y comenzar a

usarla.

Desventajas: a veces la clave viarajara en claro por la red: intercepta-

ble.

Desventajas: si conoces el secreto compartido, puedes desencriptar.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 34: Seguridad GNU/Linux - blackspiral.org

Criptografıa 33

Criptografıa

Clave publica

Dos claves, una publica y una privada. Cada extremo tiene su par de

claves.

El otro extremo solo conoce nuestra clave publica.

La clave privada nunca viaja por la red.

Encriptamos con la clave publica del receptor. Desencriptamos con

nuestra clave privada.

Si no tenemos la clave privada, pero sı la publica, podemos encriptar

pero no desencriptar.

Ventajas: bastante seguro.

Desventajas: mas complejo. Suplantacion de personalidad.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 35: Seguridad GNU/Linux - blackspiral.org

Criptografıa 34

Criptografıa

¿Que nos interesa?: clave publica.

¿Hay algo que lo use?: SSL (Secure Socket Layer).

Protocolo de alto nivel. Usa autenticacion de clave publica entre los

extremos.

Multiproposito. Se pueden programar protocolos encima: SSH, SCP.

SSH. Shell remota segura.

SCP. Copia segura de archivos remotos.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 36: Seguridad GNU/Linux - blackspiral.org

Criptografıa 35

Criptografıa

Podemos usar SSH para encapsular protocolos inseguros: tunneling.

SCP para todas las transferencias de archivos.

Hay mas protocolos sobre SSL: HTTPS.

Otra vuelta de tuerca: autenticacion por clave publica en SSH.

Mas usos: almacenar informacion sensible en el disco duro.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 37: Seguridad GNU/Linux - blackspiral.org

Integridad del sistema 36

Integridad del sistema

El sistema debe permanecer intacto a ataques.

No siempre los ataques tienen consecuencias directas.

Los atacantes suelen abrir puertas traseras. Simples programas que

camuflados en el sistema, ofrencen acceso desde el exterior al intruso.

Desde programas con nombres exoticos, faciles de detectar, a progra-

mas con nombres similares a programas conocidos del sistema.

A veces, directamente se sustituyen binarios del sistema.

Ejemplo: sustituimos la aplicacion de login por otra que adicionalmen-

te nos envıa password y contrasena por correo.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 38: Seguridad GNU/Linux - blackspiral.org

Integridad del sistema 37

Integridad del sistema

Software maligno

Virus: infectan el sistema y encubiertamente tratan de infectar por

red otras maquinas.

Troyanos: permiten operar sobre el sistema de forma remota y no

autenticada.

Backdoors: proporcionan una puerta de acceso ilegal al sistema. Sue-

len dar el mismo acceso que otros servicios.

Keyloggers: registran todas las pulsaciones de teclado, guardandolas

en un archivo.

Otros programas: absoluta diversidad. Debemos esperar lo peor.

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 39: Seguridad GNU/Linux - blackspiral.org

Integridad del sistema 38

Integridad del sistema

¿Como evitarlo?

Solo los servicios imprescindibles.

Actualizaciones periodicas.

Auditorıas frecuentes.

Copias de seguridad.

Comprobacion de binarios, conexiones de red y procesos. Monitoriza-

cion del sistema.

netstat -vatpn

ps aux

top

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 40: Seguridad GNU/Linux - blackspiral.org

Integridad del sistema 39

Integridad del sistema

Si todo ha fallado, ¿como detectar cambios en el sistema?

Sumas MD5.

Algoritmo que produce una salida unica por cada fichero.

Si el fichero cambia, aunque sea un bit, cambia la suma.

Util para verificar el origen y la integridad de nuevo software.

Util para verificar la autenticidad del software instalado.

Comprobaciones periodicas de los binarios del sistema: cron

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 41: Seguridad GNU/Linux - blackspiral.org

Recursos 40

Recursos

Seguridad en UNIX y redes. Antonio Villalon Huerta

http://www.linuxsecurity.com/

http://www.kriptopolis.com/

http://www.google.com/

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux

Page 42: Seguridad GNU/Linux - blackspiral.org

¿Preguntas? 41

¿Preguntas?

c© Capıtulo de Estudiantes de ACM de la URJC Alvaro Navarro Clemente Jaime Perez Crespo Seguridad GNU/Linux