Curso Avanzado Seguridad Redes

download Curso Avanzado Seguridad Redes

If you can't read please download the document

Transcript of Curso Avanzado Seguridad Redes

Curso Avanzado de Administradores

Seguridad en sistemas GNU/Linux:

Redes

Antonio Durn Terrs

Redes

Conceptos de redes

Seguridad bsica del S.O.

Servicios de red

sniffers y anlisis de protocolos

iptables

Dispositivos de red

Conceptos de redes

Configuracin ideal

trfico de entrada/salida de la red local debera atravesar un nico punto

capacidad de filtrado del trfico deseado

capacidad de logging de las actividades de los usuarios

nico punto de entrada hacia la red interna hace ms facil detectectar y protegerse de amenazas internas

Conceptos de redes

Configuracin ideal

ROUTER SERVIDOR LAN

Configuracin actual

Router y servidor conectados a LAN por igual

Clientes obligados por SW a pasar por el servidor

Clientes que no quieran pueden salir por el router

Ataques externos van del router hacia la mquina directamente, evitando la posibilidad de deteccin en un punto nico

Conceptos de redes

Configuracin actual

Soluciones:

Asegurar el servidor y los clientes con reglas de filtrado

Usar logging en los clientes para detectar posibles intentos de ataque

difcil comprobar logs dispersos en los clientes -> agregacin de logs con syslog

Usar IDS junto al router?

Conceptos de redes

Puertos

Abiertos, a la escucha. Tienen un programa asociado.

Cerrados. No hay ningn programa asociado -> no suponen amenaza.

Abiertos, conectados. Son privados a la conexin y se cierran al terminar sta -> no suponen amenaza.

Los servicios abren puertos, ponindose a la escucha esperando conexiones de los usuarios

Tambin disponibles para posibles atacantes

Conceptos de redes

Cuando un programa se pone a la escucha, lo hace en un puerto y en una o ms direcciones/interfaces (cada interfaz tiene una direccin de red)

servidores locales que slo son accesibles desde localhost

servidores de red que son accesibles desde los interfaces de red, como ethernet.

Seguridad bsica del S.O.

Configuraciones de red que ayudan a la seguridad

Fichero /etc/sysctl.conf

net/ipv4/conf/all/rp_filter = 1

Deshabilita la triangulacin de routing. Las consultas se responden en el mismo interfaz, no en otro.

net/ipv4/conf/all/log_martians = 1

Habilita el logging de paquetes con direcciones IP invlidas

Seguridad bsica del S.O.

Configuraciones de red que ayudan a la seguridad

Fichero /etc/sysctl.conf

net/ipv4/conf/all/send_redirects = 0

Deshabilitar el envo mensajes de redireccin

net/ipv4/conf/all/accept_source_route = 0

Deshabilitar el uso de paquetes enrutados en origen

net/ipv4/conf/all/accept_redirects = 0

No aceptar mensajes ICMP de redireccin

Seguridad bsica del S.O.

Configuraciones de red que ayudan a la seguridad

Fichero /etc/sysctl.conf

net/ipv4/tcp_syncookies = 1

Proteccin contra SYN flood

net/ipv4/icmp_echo_ignore_broadcasts = 1

No responder a pings al broadcast

net/ipv4/ip_forward = 1

Forwarding de paquetes, necesario en servidor

Seguridad bsica del S.O.

Configuraciones de red que ayudan a la seguridad

Fichero /etc/sysctl.conf

Este fichero se lee al arrancar

Si se modifica y se quieren aplicar los cambios inmediatamente:

# sysctl -p

Servicios de red

El primer paso al asegurar los servicios de red ofrecidos es eliminar aquellos que no son necesarios, ya que suponen una amenaza intil.

Auditora del sistema para ver que servicios estamos ejecutando:

#netstat --inet -lp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 localhost:872 *:* LISTEN 2392/famd

tcp 0 0 *:zope *:* LISTEN 2374/python2.2

...

Servicios de red

Datos ms importantes relativos a seguridad en la salida de netstat:

Proto: indica el protocolo, TCP o UDP

Local Address: direccin de red y nmero de puerto en el que est el servicio

localhost indica que el servicio solo es accesible desde la propia mquina, por lo que no supone una amenaza

* indica que escucha en todos los interfaces de la mquina

Servicios de red

Datos ms importantes relativos a seguridad en la salida de netstat:

Foreign Address: casi siempre *:* (posible backdoor si no)

PID/Program name: PID y nombre del programa

backdoors

backdoor o puerta trasera: punto de entrada a un sistema que deja abierto un atacante en el sistema atacado para poder volver a entrar cuando desee, saltndose de algn modo el sistema de seguridad.

Hay muchos tipos segn los sistemas de seguridad que pretendan evitar:

Aadir una cuenta con privilegios de root en /etc/passwd

Dejar un servidor de shell abierto en un puerto no estndar

Dejar en algn directorio un ejecutable SUID ...

backdoors

Puerta trasera SUID despus de conseguir privilegios de root:

# cp /bin/sh /tmp/

# chmod 4755 /tmp/sh

# ls -al /tmp/sh

-rwsr-xr-x 1 root root 628684 2006-05-06 13:59 /tmp/sh

$ whoami

aduran

$ /tmp/sh

# whoami

root

backdoors

Puerta trasera remota usando netcat:

En una sesin el la mquina atacada, dejamos preparado un servidor de shell:

# nc -l -p 2000 -e /bin/bash

Desde fuera, conectamos al servidor:

# nc localhost 2000

# ls

06ig7us1.phtml

08_GA.pdf

....

Servicios de red

Pasos a realizar

netstat del servidor y de los clientes

Ver programas necesarios y no necesarios

Parar los servicios no necesarios

Restringir el acceso a la red local a los servicios que no requieran accesos desde el exterior

Actualmente ya hecho, con tcp wrappers

Mejor con iptables (logging, mayor control, etc)

Servicios de red

elbrocense:/var/www# netstat --inet -nlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:962 0.0.0.0:* LISTEN 26644/rpc.statd

tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN 1133/inetd

tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1075/slapd

tcp 0 0 127.0.0.1:935 0.0.0.0:* LISTEN 1183/famd

tcp 0 0 0.0.0.0:42986 0.0.0.0:* LISTEN -

Servicios de red

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1265/mysqld

tcp 0 0 0.0.0.0:42987 0.0.0.0:* LISTEN 26667/rpc.mountd

tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1158/smbd

tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 1133/inetd

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 831/portmap

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1298/apache

tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 4554/dnsmasq

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1133/inetd

tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 1115/cupsd

tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 1206/(squid)

tcp 0 0 0.0.0.0:825 0.0.0.0:* LISTEN 1069/rpc.rquotad

tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4536/101

Servicios de red

tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 5230/102

tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 5256/103

tcp 0 0 127.0.0.1:6013 0.0.0.0:* LISTEN 5595/104

udp 0 0 0.0.0.0:2049 0.0.0.0:* -

udp 0 0 0.0.0.0:32772 0.0.0.0:* 1206/(squid)

udp 0 0 0.0.0.0:32948 0.0.0.0:* -

udp 0 0 0.0.0.0:53 0.0.0.0:* 4554/dnsmasq

udp 0 0 0.0.0.0:822 0.0.0.0:* 1069/rpc.rquotad

udp 0 0 0.0.0.0:32951 0.0.0.0:* 26667/rpc.mountd

udp 0 0 0.0.0.0:32952 0.0.0.0:* 4554/dnsmasq

udp 0 0 0.0.0.0:3130 0.0.0.0:* 1206/(squid)

Servicios de red

udp 0 0 0.0.0.0:956 0.0.0.0:* 26644/rpc.statd

udp 0 0 0.0.0.0:959 0.0.0.0:* 26644/rpc.statd

udp 0 0 0.0.0.0:67 0.0.0.0:* 4554/dnsmasq

udp 0 0 0.0.0.0:111 0.0.0.0:* 831/portmap

udp 0 0 127.0.0.1:123 0.0.0.0:* 1190/ntpd

udp 0 0 0.0.0.0:123 0.0.0.0:* 1190/ntpd

raw 0 0 0.0.0.0:1 0.0.0.0:* 7 4554/dnsmasq

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 2049 TCP, sin nombre de programa. Que es? Google dice que NFS. Comprobamos:

# rpcinfo -p |grep nfs

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100003 4 udp 2049 nfs

100003 2 tcp 2049 nfs

100003 3 tcp 2049 nfs

100003 4 tcp 2049 nfs

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 962 TCP: statd, necesario para el corecto funcionamiento de NFS. Necesario en LAN.

Puerto 37 TCP: inetd, el superservidor de Internet. Encargado de abrir los puertos para los programas configurados para usarlo. En este caso, el puerto 37 representa el servicio horario:

time stream tcp nowait root internal

Puerto 389 TCP: slapd, servidor LDAP. Necesario en LAN.

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 935 TCP: famd. File alteration monitor daemon. Solo binded en localhost.

Puerto 42986, sin nombre de programa. Comprobamos si tiene algo que ver con RPC:

# rpcinfo -p|grep 42986

100021 1 tcp 42986 nlockmgr

100021 3 tcp 42986 nlockmgr

100021 4 tcp 42986 nlockmgr

Necesario en LAN

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 3306 TCP: mysqld, servidor Mysql

binded en 0.0.0.0

Normalmente, slo uso desde localhost:

Quitar la opcin de red de Mysql

Opcin skip-networking en /etc/mysql/my.cnf

Restringir el acceso con iptables a slo los hosts necesarios

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 42987: mountd, para que los clientes puedan montar los directorios del servidor. Necesario en LAN.

Puerto 9999 TCP: inetd. Comprobamos la configuracin:

# cat /etc/inetd.conf|grep 9999

9999 stream tcp nowait.400 aptproxy /usr/sbin/tcpd /usr/sbin/apt-proxy -l /var/log/apt-proxy.log

Es Apt-Proxy, slo necesario en LAN

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 139 TCP: netbios, para SAMBA. Si no necesitamos exportar recursos desde el servidor, deberamos desactivarlo. En caso contrario, restringirlo a la LAN.

Eliminar su uso:

# /etc/init.d/samba stop

# rm /etc/rc2.d/S20samba

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 111 TCP: portmapper. Demonio para RPC (Remote Procedure Call), protocolo mediante el cal funcionan servicios como NFS. Necesario en LAN.

Puerto 80 TCP: Apache, servidor Web. Depender del uso si necesitamos que pueda ser accesible desde fuera.

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 53 TCP: dnsmasq, servidor DHCP y DNS. Usa este puerto sobre todo para transferencias de zona (trfico normal DNS es UDP)

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 21 TCP: inetd. FTP usa el puerto 21 TCP:

# cat /etc/inetd.conf|grep ftp

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu-ftpd -l

Si no es necesario, debemos desactivarlo comentando la linea y reiniciando inetd:

#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu-ftpd -l

# /etc/init.d/inetd restart

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 21 TCP: inetd. FTP usa el puerto 21 TCP:

Puerto 631: cupsd, servidor de impresin. No es necesario en el servidor, lo eliminamos:

# /etc/init.d/cupsys stop

# rm /etc/rc2.d/S20cupsys

Puerto 3128: squid. Proxy http. Necesario en LAN.

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 825: rpc.rquotad, servidor para que los clientes conozcan las cuotas de los usuarios. Necesario en LAN.

Puerto 2049 UDP: NFS

Puerto 32772 UDP: Squid

Puerto 32948 UDP: nlockmgr, para NFS

Puerto 822 UDP: rpc.rquotad

Servicios de red

Comprobamos, uno a uno, que es cada servicio:

Puerto 32951 UDP: rpc.mountd

Puerto 32952 UDP: dnsmasq

Puerto 3130 UDP: Squid

Puertos 956 y 959 UDP: rpc.statd

Puerto 67 UDP: dnsmasq, para DHCP.

Puerto 111 UDP: portmapper

Puerto 123 UDP: ntpd, para sincronizar la hora

Servicios de red

netstat nos da informacin sobre la red desde dentro de la propia mquina -> es necesario comprobar como se ven las cosas desde fuera

Uso de nmap para obtener informacin sobre mquinas y/o redes

nmap es una herramienta de exploracin de puertos y ms

Informa de los puertos abiertos que tiene una mquina

Puede explorar subredes completas en busca de determinados puertos abiertos

Servicios de red

Ejemplo bsico de uso:

$nmap localhost

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-05-05 19:52 CEST

Interesting ports on localhost (127.0.0.1):

(The 1658 ports scanned but not shown below are in state: closed)

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

111/tcp open rpcbind

Servicios de red

La salida de nmap muestra el nombre del servicio basado en el contenido del fichero /etc/services

No siempre es real el valor, ya que hay aplicaciones que no usan puertos estndar.

En el uso ms simple, no se comprueban todos los puertos, sino algunos considerados los ms comunes

Para comprobarlos todos:

#nmap -sU -sT -p 1-65535 localhost

Servicios de red

#nmap -sU -sT -p 1-65535 localhost

-sU hace un scan UDP

-sT hace un scan TCP normal (connect scan)

-sS hace un SYN scan

-sP hace un Ping scan

-p 1- 65535 indica que se comprueben todos los puertos existentes

Servicios de red

Al realizar la exploracin desde localhost, los resultados obtenidos no sern necesariamente los mismos que si lo hacemos desde otra mquina de la red.

Los servicios pueden escuchar slo en los interfaces externos.

Las reglas iptables se aplican en determinados interfaces y/o direcciones

Ser necesario realizar las comprobaciones desde dentro y desde fuera.

Servicios de red

Exploracin TCP, desde un cliente, del servidor del I.E.S.:

ddprog:/home/aduran# nmap -sT -p 1-65535 www

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-05-09 13:40 CEST

Interesting ports on elbrocense.elbrocense.ex (172.19.232.2):

(The 65520 ports scanned but not shown below are in state: closed)

PORT STATE SERVICE

21/tcp open ftp

22/tcp open ssh

37/tcp open time

Servicios de red

53/tcp open domain

80/tcp open http

111/tcp open rpcbind

389/tcp open ldap

825/tcp open unknown

962/tcp open unknown

2049/tcp open nfs

3128/tcp open squid-http

3306/tcp open mysql

9999/tcp open abyss

42986/tcp open unknown

42987/tcp open unknown

Servicios de red

Exploracin de mquinas que no permiten ping

nmap -P0 maquina

No hace ping antes del scan

Puertos filtrados

Scan mucho ms lento

Puertos UDP

ms lento

nmap no puede saber el estado si estn filtrados, debido al funcionamiento sin confirmacin de UDP

ssh

Tanto en el servidor como en los clientes, deberamos restringir el acceso por ssh al usuario root y al usuario del LDAP administrador, si lo cree necesario.

Fichero /etc/ssh/sshd_config:

AllowUsers root [usuario_ldap]

Deshabilitar la lectura de ficheros ~/.rhosts y ~/.shosts:

IgnoreRhosts yes

Prestar atencin a los certificados

Evitar ataques de suplantacin mediante DNS spoofing

apache

Restringir el acceso al mbito del IES de quellos recursos que necesiten dicha proteccin

Portal interno, SGIEX, movilidad, ...

Utilizas restricciones de acceso de algn tipo dentro del propio IES para los datos que lo requieran

apache

Usar restriccin por IP en SGIEX

Modificar la configuracin de Apache para el directorio deseado:

Allow from 172.19.123.7

Deny from all

apache

Usar autenticacin en movilidad

Crear el fichero de contraseas

# htpasswd -c /etc/apache/users adt

Crear un fichero .htaccess en el directorio que queremos proteger

AuthName "Acceso restringido"

AuthType Basic

AuthUserFile /etc/apache/users

require valid-user

apache

Usar autenticacin en directorios de ficheros y tareas para los clientes

Estos ficheros pueden contener informacin valiosa para un atacatnte

Ficheros de contraseas, informacin sobre programas instalados, configuraciones especficas, etc.

Actualmente disponible para toda la intranet (http abierto para todos)

ftp

FTP es un protocolo inseguro, ya que usa autenticacin en texto plano, y cualquiera con un sniffer puede averiguar las contraseas -> Uso de scp, ms seguro

Si es necesario para los usuarios, restringir su uso a quellos que lo requieran

Denegacin de servicio

Los ataques de denegacin de servicio intentan evitar el normal funcionamiento de los servicios ofrecidos, colapsando algunos o todos los recursos del servidor

SYN Flood

Se llena la tabla de conexiones del kernel y no pueden abrirse nuevas

Ping Flood

Smurfing

Denegacin de servicio

Ataques contra el servidor web inundndolo de peticiones

Llenar el espacio de disco -> importante usar cuotas

Usar fallos en los programas que permitan interrumpir sus servicios

Sniffers y anlisis de protocolos

Que es un snnifer?

Es un programa que permite obtener el trfico que circula por un interfaz de red. Visin orientada a concentradores.

Es un programa que permite obtener el trfico que circula por la red. Visin orientada a conmutadores.

Es un programa que permite obtener el trfico que circula por las redes. Vision orientada a wifi.

Sniffers y anlisis de protocolos

Que es necesario saber para usar un snnifer?

Lo primero es saber que estamos buscando: si vamos a usar un sniffer normalmente ser para ayudarnos en la solucin de algn problema, o para buscar un derminado tipo de trfico potencialmente peligroso.

Conocer, al menos en parte, el funcionamiento del protocolo de red con el que estemos trabajando:

Negociacin TCP y protocolos de aplicacin

HTTP, LDAP, etc.

Protocolos de apliacin sobre UDP

DNS, DHCP, etc.

Sniffers y anlisis de protocolos

Modo promiscuo en ethernet

El interfaz recoge todos los paquetes que pasan por l, incluyendo aquellos que no van dirigidos a su direccin MAC ni a la de difusin.

til en redes en bus: hubs. Desde un ordenador podemos ver todo el trfico del segmento compartido de la red.

En los I.E.S, red conmutada: switches. A una mquina slo llegan los paquetes que van destinados a ella. No podemos ver el trfico completo de la red. Posibles soluciones:

ARP poisoning (dsniff): muy ruidoso.

Sniffers y anlisis de protocolos

Modo promiscuo en ethernet

En los I.E.S, red conmutada: switches. A una mquina slo llegan los paquetes que van destinados a ella. No podemos ver el trfico completo de la red. Posibles soluciones:

Observar el trfico en un punto central: todos los clientes salen a Internet por el servidor, miramos alli el trfico.

Problemas:

no detecta si alguien configura su ruta de salida por el router.

Solucin: Conectar un hub entre el router y la red y poner en l el ordenador con el sniffer.

no detecta trfico interno a la red local.

Sniffers y anlisis de protocolos

Modo monitor en 802.11b/g (wifi)

El trfico wifi circula por el aire

Cualquiera con una tarjeta wireless puede obtener el trfico que circule cerca, incluso de varias redes a la vez (channel hopping)

Uso de encriptacin en todo el trfico que circula por la red wifi:

WEP: no es seguro, muy fcil de crackear.

WPA: mucha mejor seguridad que WEP, mediante el empleo de PSK (secreto compartido)

tcpdump

tcpdump: snnifer csico en GNU/Linux, disponible en todas las distribuciones.

Uso en modo texto por consola.

Rpido y facil de usar en remoto.

En general, til para saber si los paquetes llegan o no llegan, pero menos para mirar dentro de los paquetes.

tcpdump

Muestra algunos o todos los paquetes que pasan por un interfaz de red. El rango de paquetes capturados puede especificarse usando una combinacin de operadores lgicos y parmetros como el origen o destino IP, el tipo de protocolo o el nmero de puerto.

Los paquetes capturados pueden guardarse en formato binario a un fichero, o pueden mostrarse por pantalla. Los ficheros escritos deben ser ledos con tcpdump (u otros programas que soporten el estndar pcap)

tcpdump

Mostrar todos los paquetes que pasan por el interfaz eth0:

#tcpdump -i eth0

Mostrar solo los paquetes del puerto 80:

#tcpdump port 80

Mostrar slo los paquetes con origen o destino en una direccin o nombre de mquina determinados:

#tcpdump host 172.21.232.2

Mostrar slo los paquetes con origen en una direccin o nombre de mquina determinado:

#tcpdump source 172.21.232.2

tcpdump

Mostrar slo los paquetes con un puerto destino determinado:

#tcpdump dst port 21

Mostrar slo paquetes TCP:

#tcpdump tcp

Mostrar todos los paquetes menos algunos:

#tcpdump not port 22

No hacer resolucin de nombres:

#tcpdump -n

tcpdump

Combinacin de condiciones:

tcpdump dst port 80 and source 192.168.1.1

Forzar salida inmediata por pantalla:

#tcpdump -l

No mostrar timestamps:

#tcpdump -t

Formato recomendado:

#tcpdump -nlt [filtro]

tcpdump

Formato de salida

Para datagramas UDP:

15:22:41.400299 orac.erg.abdn.ac.uk.1052 > 224.2.156.220.57392: udp 110

Timestamp: 15:22:41.400299

Direccin origen: orac.erg.abdn.ac.uk

Puerto origen: 1052

Direccin destino: 224.2.156.220

Puerto destino: 57392

Protocolo: udp

Tamao: 110

tcpdump

Formato de salida

Para datagramas TCP:

16:23:01.079553 churchward.erg.abdn.ac.uk.33635 > gordon.erg.abdn.ac.uk.32772: P 12765:12925(160) ack 19829 win 24820 (DF)

Timestamp: 16:23:01.079553

Direccin origen: churchward.erg.abdn.ac.uk

Puerto origen: 33635

Direccin destino: gordon.erg.abdn.ac.uk

Puerto destino: 32772

Indica que la PUSH flag est puesta (P)

tcpdump

Formato de salida

Para datagramas TCP:

16:23:01.079553 churchward.erg.abdn.ac.uk.33635 > gordon.erg.abdn.ac.uk.32772: P 12765:12925(160) ack 19829 win 24820 (DF)

Nmero de secuencia: 12765

Contiene bytes de datos desde el nmero de secuencia hasta 12925, sin incluirlo.

Nmero de bytes de datos en el datagrama (160)

Detalles de asentimientos, tamao de ventana y flags de la cabcera: ack 19829 win 24820 (DF)

tcpdump

Formato de salida

Se puede hacer que tcpdump ofrezca ms informacin:

tcpdump -v

tcpdump -vv

tcpdump -vvv

Tambin se puede aumentar el snaplen, que representa el tamao mximo del paquete que decodifica tcpdump. Esto puede hacer que en la captura veamos paquetes que terminan con [|rip] o [|domain]. Para aumentar el tamao por defecto:

tcpdump -s tamao_en_bytes

tcpdump

Vemos algunos ejemplos de uso:

Comprobar si un cliente conecta con el servidor DNS que debe, y ver el resultado de las consultas.

Ver como se cierra una conexin TCP por el uso de los TCP Wrappers.

Ping a Internet a travs del servidor: viendo los redirects.

ethereal

ethereal es un sniffer con un interfaz grfico ms adecuado para visualizacin del contenido de los paquetes.

Como desventaja, necesita de un entorno grfico para funcionar. No es grave, ya que se puede usar un entorno remoto.

Dispone de una cantidad enorme de definiciones de protocolos, facilitando el anlisis de los datos.

ethereal

Al igual que tcpdump, ethereal puede trabajar capturando paquetes de un interfaz, o abriendo un fichero de datos existente.

Para realizar una nueva captura, pinchamos en el men Capture->Start, y aparece un dilogo para configurar las opciones de la captura.

ethereal

Opciones importantes de la captura:

interfaz: selecciona el interfaz de donde queremos capturar paquetes.

Capturar paquetes en modo promiscuo: poco til en redes conmutadas.

Filtro: filtro igual al usado en tcpdump.

Actualizar vista de paquetes mientras dura la captura.

Activar resolucin de nombres: desaconsejado por el trfico adicional generado.

ethereal

Vista de captura. Se divide en tres partes:

Lista de paquetes capturados. Pueden ordenarse por varios campos.

Detalle decodificado del datagrama seleccionado. Muestra, para cada capa de protocolos presente en el paquete, el contenido de todas sus opciones. Esta es la parte interesante al analizar protocolos.

Detalle en hexadecimal y ASCII del datagrama seleccionado.

ethereal

Detalle decodificado del datagrama seleccionado.

Primero aparce informacin del datagrama en general, como su tamao o cuando se captur.

A continuacin van aparenciendo los datos de los distintos protocolos que contiene el paquete:

Ethernet

IP

TCP

LDAP

ethereal

Ejemplo: observar el trfico LDAP para resolver algn problema.

Ponemos ethereal capturando paquetes con puerto destino 389 TCP.

Comprobamos paso a paso el dilogo LDAP:

Operacin BIND

Comprobando el resultado

Operacin SEARCH

Comprobando el resultado

y los campos devueltos de la entrada solicitada

ethereal

Ethereal tambin puede recomponer conexiones de algunos protocolos para mostrar los datos de manera ms accesible.

Por ejemplo: boton derecho->Follow TCP Stream sobre un paqute de una conexin HTTP, nos mostrar una ventana con la conversacin HTTP entre cliente y servidor en modo texto, juntando todos los paquetes de la conexin.

dsniff

dsniff es una coleccin de herramientas para realizar auditoras de red y penetration testing.

dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, y webspy escuchan pasivamente buscando contraseas

arpspoof, dnsspoof, y macof facilitan la recepcin de trfico en redes conmutadas

sshmitm and webmitm implementan ataques de MITM contra ssh y https

dsniff

Capturar trfico en una red conmutada

arpspoof maquina_a_suplantar

Se impersona a la pasarela local

Activar forwarding en el host atacante

Todo el trfico que se destina a la pasarela se hace pasar antes por el host que ejecuta arpspoof, mediante ARP poisoning.

Se puede observar con ethereal, tcpdump ...

dsniff

Capturar trfico en una red conmutada

#arpspoof 172.19.2.2

Se impersona a la pasarela local

#echo 1 > /proc/sys/net/ipv4/ip_forward

Todo el trfico que se destina a la pasarela se hace pasar antes por el host que ejecuta arpspoof, mediante ARP poisoning.

#tcpdump -nlt

dsniff

Ataque de DNS spoofing

Hace que creamos que conectamos a una mquina cuando en realidad conectamos a otra

Suplantar una mquina para conseguir clave de root

dnsspoof

Falsea respuestas DNS

# dnsspoof -i lo -f /root/hosts

dnsspoof: listening on lo [udp dst port 53 and not src 127.0.0.1]

172.19.232.10.32780 > 62.81.0.1.53: 31753+ A? google.com

dsniff

Ataque de DNS spoofing

#cat /root/hosts

172.19.232.13 google.com

# host google.com

google.com has address 172.19.232.13

#tcpdump -nl

13:01:09.830481 IP 172.19.232.10.32780 > 62.81.16.197.53: 30399+ A? google.com. (28)

13:01:09.830562 IP 62.81.16.197.53 > 172.19.232.10.32780: 30399 1/0/0 A 172.19.232.13 (44)

iptables

Filtrado de paquetes

Toda la info se transmite en paquetes

Paquete

Cabecera (header). Origen, destino, tipo de paquete...

Cuerpo (body). Datos reales transmitidos.

Protocolos con conexin, como TCP

Usan el concepto de conexin

Paquetes de setup de la conexin antes del envo de datos reales.

iptables

iptables es el software de cortafuegos de GNU/Linux.

Aparte de filtrar paquetes hace ms cosas:

NAT

Redireccin de puertos

Modificacin de paquetes

Integracin con otras herramientas: con iptables+iproute2 podemos tener reservas de ancho de banda por aplicaciones.

iptables

Actualmente, en los IES se usa sobre todo para hacer redireccin de puertos y NAT en el servidor:

Hacer que los clientes pasen por Squid

Hacer que los clientes slo puedan usar los servidores POP y SMTP de la Junta.

Tambin para filtrar en los clientes:

ControlAula incluye una regla para solo permitir acceso VNC al profesor.

iptables

Al poder hacer muchas cosas, iptables es bastante complejo.

Vemos una introduccin que nos permita:

Entender los scripts usados

Crear nuevas reglas para proteger servicios o redirigir trfico.

Establecer una poltica ms segura que la usada actualmente

iptables

iptables es lo que conoce como statefull firewall. Esto significa que realiza un seguimiento de las conexiones, sabiendo que paquetes pertenecen a cada conexin (ms seguro y ms rapido)

Slo se comprueba contra las reglas el primer paquete de la conexin

Una vez permitido este paquete, y establecida la conexin, los siguientes paquetes de la misma se permiten por pertenecer a la misma conexin.

iptables

iptables se divide en dos partes:

parte de kernel: mdulos o compilado en el propio kernel.

iptable_filter.ko, ipt_conntrack.ko, ipt_REDIRECT.ko, ...

parte de usuario: utilidades para aadir, eliminar, modificar o listar reglas.

Comando iptables

iptables

Todos los paquetes pasan por una serie de tablas (colas) para ser procesados. Cada tabla se dedica a un cometido distinto:

mangle: transformaciones de los paquetes

filter: filtrado de paquetes. Tiene 3 cadenas predeterminadas:

FORWARD, INPUT, OUTPUT

nat: traduccin de direcciones. 2 cadenas:

PREROUTING, POSTROUTING

iptables

Al especificar las reglas, es necesario indicar la tabla y la cadena donde colocarla.

Excepcin: si no se indica tabla, se usa por defecto la tabla filter

Ejemplo de como se examinan las reglas cuando llege un paquete:

http://www.siliconvalleyccie.com/linux-hn/iptables-intro.htm

iptables

Cmo atraviesan los filtros los paquetes

El kernel empieza con tres listas de reglas en la tabla filter, llamadas cadenas (chains): INPUT, OUTPUT, FORWARD

iptables

Cmo atraviesan los filtros los paquetes

Cuando un paquete alcanza uno de los crculos del dibujo, se examina esa cadena para decidir el destino del paquete

Si la cadena dice que se tire (DROP) el paquete, ste muere aqu, pero si se acepta (ACCEPT), sigue atravesando el diagrama

Cada tipo de trfico seguir un camino distinto a travs del diagrama.

iptables

Cmo atraviesan los filtros los paquetes

Una cadena es una lista de reglas

Cada regla dice: si la cabecera del paquete es as, hacer esto con el paquete.

Si la regla no coincide con el paquete, se examina la siguiente regla de la cadena

Finalmente, si no quedan ms reglas que consultar, el kernel mira a la poltica (POLICY) de la cadena para decidir que hacer con el paquete.

En un sistema seguro, la poltica suele decir al kernel que tire el paquete

En los I.E.S. tenemos poltica de aceptar por defecto, en clientes y servidor

iptables

Cmo atraviesan los filtros los paquetes

Cuando llega un paquete, primero el kernel mira su destino: esto se llama enrutamiento (routing)

Si est destinado a esta mquina, el paquete baja a la cadena INPUT. Si la pasa, el paquete llegar al proceso que lo est esperando

Si no, si el forwarding no est activado, o el kernel no sabe como reenviar el paquete, el paquete se tira

iptables

Cmo atraviesan los filtros los paquetes

Si el forwarding est activado, y hay que reenviar el paquete, ste pasa a la cadena FORWARD. Si se acepta, el paquete se reenva.

Un programa que se ejecuta en la mquina local puede enviar paquetes. stos pasan inmediatamente por la cadena OUTPUT. Si se acepta, el paquete continua su camino hacia el interfaz al que fuera destinado.

iptables

Comando tipo:

#iptables -Accion Cadena [opciones] -j Target

Accin: aadir, borrar, insertar ...

Cadena: cadena donde realizar la accin

Target: destino para los paquetes que coincidan con la regla:

ACCEPT y DROP: Aceptar y tirar

SNAT, DNAT, MASQUERADE: Traducccin de direcciones

REJECT: Rechazar

LOG: registrar

iptables

Operaciones sobre las cadenas

Crear una nueva cadena (-N)

Borrar una cadena vaca (-X)

Cambiar la poltica de una cadena (-P)

Listar las reglas en una cadena (-L)

Eliminar las reglas de una cadena (-F)

Borrar los contadores de todas las reglas de una cadena (-Z)

iptables

Operaciones sobre las reglas de una cadena

Aadir una nueva regla a la cadena (-A)

Insertar una regla en una posicin determinada de la cadena (-I)

Reemplazar una regla en alguna posicin de la cadena (-R)

Borrar una regla en alguna posicin de la cadena (-D)

Borrar la primera regla que coincida en una cadena (-D)

iptables

Operaciones sobre las reglas de una cadena

Aadir reglas

iptables -A ...

La regla se aade al final de la lista, y se mirar, si se mira, la ltima.

Borrar reglas

iptables -D ...

Se borra la primera regla de la cadena que coincida con la definicin dada.

iptables

Aadir reglas de filtrado. Ejemplo bsico

Denegar ping desde localhost

iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

-s indica direccin de origen

-p icmp indica protocolo ICMP

-j DROP hace que se tire el paquete

Nota: no se usa REJECT en ICMP para evitar tormentas ICMP:

Paquete ICMP malo

Paquete ICMP de respuesta malo para el otro lado

El otro lado vuelve a enviar un paquete ICMP malo

....

iptables

Especificaciones de filtrado. Opciones que se usan para especificar las caractersticas de los paquetes

Direcciones origen y destino

-s, --source, --src: direccin origen del paquete

-d, --destination, --dst: direccin destino del paquete

Pueden especifcarse:

nombre DNS (linex.org)

direccin IP (127.0.0.1)

Grupos de direcciones, usando mscaras (172.19.232.0/22, 172.19.232.0/255.255.252.0)

iptables

Especificaciones de filtrado. Opciones que se usan para especificar las caractersticas de los paquetes

Especificando inversin

Muchas opciones, incluyendo origen y destino, pueden tener los argumentos precedidos de ! (negacin) para flitrar direcciones distintas de las proporcionadas

-s ! localhost

Protocolo

-p indica el protocolo de los paquetes. Puede usarse un nmero (si se conocen los valores numricos de los protocolos IP), o TCP, UDP o ICMP. Acepta !.

iptables

Especificaciones de filtrado. Opciones que se usan para especificar las caractersticas de los paquetes

Interface

-i o in-interface: interfaz de entrada

-o out-interface: interfaz de salida

Los paquetes que atraviesan INPUT no tienen interfaz de salida. Los de OUTPUT no lo tienen de entrada. Slo los de FORWARD tienen los dos.

Se pueden usar interfaces no existentes en las reglas (se activarn al levantar el interfaz)

iptables

Extensiones de las especificaciones de filtrado.

-m multiport sport

-m multiport dport

-m multiport ports

-m state state

Established

New

Related

Invalid

iptables

Extensiones

nuevos targets

nuevos tests

despues de la opcin -p

Extensiones TCP

--tcp-flags [!] campos_examinar campos presentes

# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY

--sport, --source-port puerto/rango de puertos

iptables

Extensiones TCP

--dport, --destination-port puerto/rango puertos

Denegando el establecimiento de conexiones desde una mquina que hace de servidor y no debera iniciar conexiones:

# iptables -A INPUT --protocol tcp -s 192.168.1.1 syn -j DENY

iptables

Extensiones UDP

--sport, --source-port, --dport, --destination-port puerto/rango puertos

Extensiones ICMP

--icmp-type tipo ICMP [nmerio o por nombre (-p icmp --help)]

iptables

Targets de las reglas: que hacer con el paquete cuando coincida con la regla

Ls mas simples:

DROP y ACCEPT

Cadenas definidas por el usuario:

se puede hacer que el paquete pase a otra cadena de reglas definida por el usuario si cumple una condicin

Extensiones con nuevos targets

iptables

Extensiones con nuevos targets

LOG: logging en kernel de los paquetes que coincidan.

--log-level

--log-prefix

REJECT

Como DROP, pero se enva un mensaje ICMP de port unreachable, en UDP, o un RESET, en TCP.

iptables

Aadir reglas de filtrado

iptables -A INPUT -p tcp --dport 21 -j DROP

Deniega conexiones FTP a esta mquina:

AL no haber opcin -t, se usa la tabla por defecto, filter.

INPUT indica que la regla debe aplicarse al trfico cuyo destino es local.

-p tcp indica que la regla debe aplicarse a paquetes TCP.

--dport 21 indica que la regla debe aplicar a paquetes con puerto destino 21.

-j DROP indica la accin a realizar con el paquete, en este caso tirarlo. Las opciones son:

ACCEPT, DROP, REJECT, REDIRECT y MASQUERADE (slo para la tabla nat)

iptables

Aadir reglas de redireccin de puertos

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

-t nat usar la tabla de nat

PREROUTING, el cambio de puerto hay que hacerlo antes de enrutar.

REDIRECT, hace que el paquete sea redirigido a otro puerto en la misma mquina.

--to-port 3128 hace que el paquete sea redirigido al puerto 3128.

iptables

Borrar reglas

iptables -D INPUT -p tcp --dport 21 -j DROP

Se especifica la misma regla, cambiando -A por -D.

iptables -D INPUT 1

Borra la primera regla de la cadena

iptables

Eliminacin de todas las reglas:

iptables -F

elimina las reglas de filtrado, ya que por defecto se usa la tabla filter.

iptables -X

elimina las cadenas definidas por el usuario

iptables -Z

resetea los contadores

iptables -t nat -F

elimina las reglas de NAT.

iptables

Establecer la poltica por defecto:

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

Estas reglas se aplican a los paquetes que no coinciden con ninguna regla.

iptables

Mostrar reglas

iptables -L

Mostrar reglas de NAT:

iptables -t nat -L

iptables

Probando las reglas con netcat

netcat es una pequea utilidad que lee y escribe datos a travs de conexiones de red, usando los protocolos tcp y udp. Muy til a la hora de solucionar problemas relacionados con la accesibilidad o para comprobar si las reglas de filtrado funcionan como esperamos.

Crear una conexin para comprobar si el servidor ssh es accesible:

$nc 172.21.232.2 22

Todo lo que escribas se manda al servidor remoto, y todo lo que el servidor enve se muestra por pantalla.

iptables

Probando las reglas con netcat

Ponemos una regla para denegar el acceso a VNC de un alumno a otro:

#iptables -A INPUT -i eth0 -s ! $PROFESOR -p tcp --destination-port 5900 -j DROP

Comprobamos que realmente hace lo que debe:

Poner netcat escuchando en el puerto 5900 (VNC) en un alumno.

$netcat -l -p 5900

Comprobar que desde otro alumno no podemos acceder al servicio:

$netcat aula-o01 5900

iptables

Logging

iptables puede hacer logging de paquetes a /var/log/messages

Las reglas de log no pueden tirar paquetes, por lo que es comn ver dos reglas iguales seguidas, asi:

# iptables -A INPUT -j LOG

# iptables -A INPUT -j DROP

Fallo: no indicado interfaz, se aplicar a localhost tambin

iptables

Logging

mucha informacin de log, debido a los broadcasts

Mejor loguear slo lo que viene a la mquina:

# iptables -A INPUT -i eth0 -d 172.19.232.10 -j LOG

Mucha info an, mejor loguear solo los inicios de conexin:

# iptables -A INPUT -i eth0 -d 172.19.232.10 -m state --state NEW -j LOG

iptables

Configuracin iptables en los clientes

Restringir el acceso a los servicios de uso especfico

Slo permitir GH desde el profesor

Permitir acceso al resto de los servicios slo desde la LAN

Loguear todos los intentos de apertura de conexiones, para tener informacion en caso de problemas

iptables

Configuracin iptables en los clientes

#iptables -A INPUT -i eth0 -s ! ab201-pro -p tcp --destination-port 5900 -j LOG

#iptables -A INPUT -i eth0 -s ab201-pro -p tcp --destination-port 5900 -j ACCEPT

# iptables -A INPUT -i eth0 -s ! 172.19.232.0/22 -m state --state NEW -j LOG

# iptables -A INPUT -i eth0 -s 172.19.232.0/22 -m state -j ACCEPT

# iptables -P INPUT DROP

# iptables -P OUTPUT ACCEPT

iptbales

Configuracin iptables en el servidor

Restringir el acceso a todos los servicios locales a la red local, permitiendo slo el acceso desde el exterior via HTTP

Asegurar, como ya se vi, los directorios privados de /var/www

Loguear todos los inicios de conexin que se hagan hacia el servidor

iptbales

Configuracin iptables en el servidor

# iptables -A INPUT -i eth0 -s 172.19.232.0/22 -m state --state NEW -j ACCEPT

# iptables -A INPUT -i eth0 -m state --state NEW -p tcp --destination-port 80 -j ACCEPT

#iptables -A INPUT -i eth0 -p tcp --destination-port ! 80 -j LOG

#iptables -P INPUT DROP

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD ACCEPT