0
<ul><li>Curso Avanzado de  Administradores </li></ul><ul><li>Seguridad en sistemas GNU/Linux: </li></ul><ul><li>Redes </li...
Redes <ul><li>Conceptos de redes </li></ul><ul><li>Seguridad básica del S.O. </li></ul><ul><li>Servicios de red </li></ul>...
Conceptos de redes <ul><li>Configuración ideal </li></ul><ul><ul><li>tráfico de entrada/salida de la red local debería atr...
Conceptos de redes <ul><li>Configuración ideal </li></ul><ul><ul><li>ROUTER <-> SERVIDOR <-> LAN </li></ul></ul><ul><li>Co...
Conceptos de redes <ul><li>Configuración actual </li></ul><ul><ul><li>Soluciones: </li></ul></ul><ul><ul><ul><li>Asegurar ...
Conceptos de redes <ul><li>Puertos </li></ul><ul><ul><li>Abiertos, a la escucha. Tienen un programa asociado. </li></ul></...
Conceptos de redes <ul><li>Cuando un programa se pone a la escucha, lo hace en un puerto y en una o más direcciones/interf...
Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.c...
Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.c...
Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.c...
Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.c...
Servicios de red <ul><li>El primer paso al asegurar los servicios de red ofrecidos es eliminar aquellos que no son necesar...
Servicios de red <ul><li>Datos más importantes relativos a seguridad en la salida de netstat: </li></ul><ul><ul><li>Proto:...
Servicios de red <ul><li>Datos más importantes relativos a seguridad en la salida de netstat: </li></ul><ul><ul><li>Foreig...
backdoors <ul><li>backdoor o puerta trasera : punto de entrada a un sistema que deja abierto un atacante en el sistema ata...
backdoors <ul><li>Puerta trasera SUID después de conseguir privilegios de root: </li></ul><ul><ul><li># cp /bin/sh /tmp/ <...
backdoors <ul><li>Puerta trasera remota usando netcat: </li></ul><ul><ul><li>En una sesión el la máquina atacada, dejamos ...
Servicios de red <ul><li>Pasos a realizar </li></ul><ul><ul><li>netstat del servidor y de los clientes </li></ul></ul><ul>...
Servicios de red <ul><li>elbrocense:/var/www# netstat --inet -nlp </li></ul><ul><li>Active Internet connections (only serv...
Servicios de red <ul><li>tcp  0  0 0.0.0.0:3306  0.0.0.0:*  LISTEN  1265/mysqld  </li></ul><ul><li>tcp  0  0 0.0.0.0:42987...
Servicios de red <ul><li>tcp  0  0 127.0.0.1:6011  0.0.0.0:*  LISTEN  5230/102  </li></ul><ul><li>tcp  0  0 127.0.0.1:6012...
Servicios de red <ul><li>udp  0  0 0.0.0.0:956  0.0.0.0:*  26644/rpc.statd  </li></ul><ul><li>udp  0  0 0.0.0.0:959  0.0.0...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 2049 TCP, sin nombre d...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 962 TCP: statd, necesa...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 935 TCP: famd. File al...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 3306 TCP: mysqld, serv...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 42987: mountd, para qu...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 139 TCP: netbios, para...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 111 TCP: portmapper. D...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 53 TCP: dnsmasq, servi...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 21 TCP: inetd. FTP usa...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 21 TCP: inetd. FTP usa...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 825: rpc.rquotad, serv...
Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 32951 UDP: rpc.mountd ...
Servicios de red <ul><li>netstat nos da información sobre la red desde dentro de la propia máquina -> es necesario comprob...
Servicios de red <ul><li>Ejemplo básico de uso: </li></ul><ul><ul><li>$nmap localhost </li></ul></ul><ul><ul><li>Starting ...
Servicios de red <ul><li>La salida de nmap muestra el nombre del servicio basado en el contenido del fichero /etc/services...
Servicios de red <ul><li>#nmap -sU -sT -p 1-65535 localhost </li></ul><ul><ul><li>-sU hace un scan UDP </li></ul></ul><ul>...
Servicios de red <ul><li>Al realizar la exploración desde localhost, los resultados obtenidos no serán necesariamente los ...
Servicios de red <ul><li>Exploración TCP, desde un cliente, del servidor del I.E.S.: </li></ul><ul><ul><li>ddprog:/home/ad...
Servicios de red <ul><ul><li>53/tcp  open  domain </li></ul></ul><ul><ul><li>80/tcp  open  http </li></ul></ul><ul><ul><li...
Servicios de red <ul><li>Exploración de máquinas que no permiten ping </li></ul><ul><ul><li>nmap -P0 maquina </li></ul></u...
ssh <ul><li>Tanto en el servidor como en los clientes, deberíamos restringir el acceso por ssh al usuario root y al usuari...
apache <ul><li>Restringir el acceso al ámbito del IES de áquellos recursos que necesiten dicha protección </li></ul><ul><u...
apache <ul><li>Usar restricción por IP en SGIEX </li></ul><ul><ul><li>Modificar la configuración de Apache para el directo...
apache <ul><li>Usar autenticación  en movilidad </li></ul><ul><ul><li>Crear el fichero de contraseñas </li></ul></ul><ul><...
apache <ul><li>Usar autenticación  en directorios de ficheros y tareas para los clientes </li></ul><ul><ul><li>Estos fiche...
ftp <ul><li>FTP es un protocolo inseguro, ya que usa autenticación en texto plano, y cualquiera con un sniffer puede averi...
Denegación de servicio <ul><li>Los ataques de denegación de servicio intentan evitar el normal funcionamiento de los servi...
Denegación de servicio <ul><li>Ataques contra el servidor web inundándolo de peticiones </li></ul><ul><li>Llenar el espaci...
Sniffers y análisis de protocolos <ul><li>¿Que es un snnifer? </li></ul><ul><ul><li>Es un programa que permite obtener el ...
Sniffers y análisis de protocolos <ul><li>¿Que es necesario saber para usar un snnifer? </li></ul><ul><ul><li>Lo primero e...
Sniffers y análisis de protocolos <ul><li>Modo promiscuo en ethernet </li></ul><ul><ul><li>El interfaz recoge todos los pa...
Sniffers y análisis de protocolos <ul><li>Modo promiscuo en ethernet </li></ul><ul><ul><li>En los I.E.S, red conmutada: sw...
Sniffers y análisis de protocolos <ul><li>Modo monitor en 802.11b/g (wifi) </li></ul><ul><ul><li>El tráfico wifi circula p...
tcpdump <ul><li>tcpdump: snnifer cásico en GNU/Linux, disponible en todas las distribuciones. </li></ul><ul><li>Uso en mod...
tcpdump <ul><li>Muestra algunos o todos los paquetes que pasan por un interfaz de red. El rango de paquetes capturados pue...
tcpdump <ul><li>Mostrar todos los paquetes que pasan por el interfaz eth0: </li></ul><ul><ul><li>#tcpdump -i eth0 </li></u...
tcpdump <ul><li>Mostrar sólo los paquetes con un puerto destino determinado: </li></ul><ul><ul><li>#tcpdump dst port 21 </...
tcpdump <ul><li>Combinación de condiciones: </li></ul><ul><ul><li>tcpdump dst port 80 and source 192.168.1.1 </li></ul></u...
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas UDP: </li></ul><ul><li>15:22:41.400299 orac.erg.abdn.a...
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg....
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg....
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Se puede hacer que tcpdump ofrezca más información: </li></ul><ul><ul>...
tcpdump <ul><li>Vemos algunos ejemplos de uso: </li></ul><ul><ul><li>Comprobar si un cliente conecta con el servidor DNS q...
ethereal <ul><li>ethereal es un sniffer con un interfaz gráfico más adecuado para visualización del contenido de los paque...
ethereal <ul><li>Al igual que tcpdump, ethereal puede trabajar capturando paquetes de un interfaz, o abriendo un fichero d...
ethereal <ul><li>Opciones importantes de la captura: </li></ul><ul><ul><li>interfaz: selecciona el interfaz de donde quere...
ethereal <ul><li>Vista de captura. Se divide en tres partes: </li></ul><ul><ul><li>Lista de paquetes capturados. Pueden or...
ethereal <ul><li>Detalle decodificado del datagrama seleccionado.  </li></ul><ul><ul><li>Primero aparce información del da...
ethereal <ul><li>Ejemplo: observar el tráfico LDAP para resolver algún problema. </li></ul><ul><ul><li>Ponemos ethereal ca...
ethereal <ul><li>Ethereal también puede recomponer conexiones de algunos protocolos para mostrar los datos de manera más a...
dsniff <ul><li>dsniff es una colección de herramientas para  realizar auditorías de red y  penetration testing . </li></ul...
dsniff <ul><li>Capturar tráfico en una red conmutada </li></ul><ul><ul><li>arpspoof maquina_a_suplantar </li></ul></ul><ul...
dsniff <ul><li>Capturar tráfico en una red conmutada </li></ul><ul><ul><li>#arpspoof 172.19.2.2 </li></ul></ul><ul><li>Se ...
dsniff <ul><li>Ataque de DNS spoofing </li></ul><ul><ul><li>Hace que creamos que conectamos a una máquina cuando en realid...
dsniff <ul><li>Ataque de DNS spoofing </li></ul><ul><ul><li>#cat /root/hosts </li></ul></ul><ul><ul><li>172.19.232.13 goog...
iptables <ul><li>Filtrado de paquetes </li></ul><ul><ul><li>Toda la info se transmite en paquetes </li></ul></ul><ul><ul><...
iptables <ul><li>iptables es el software de cortafuegos de GNU/Linux. </li></ul><ul><li>Aparte de filtrar paquetes hace má...
iptables <ul><li>Actualmente, en los IES se usa sobre todo para hacer redirección de puertos y NAT en el servidor: </li></...
iptables <ul><li>Al poder hacer muchas cosas, iptables es bastante complejo. </li></ul><ul><li>Vemos una introducción que ...
iptables <ul><li>iptables es lo que conoce como  statefull firewall . Esto significa que realiza un seguimiento de las con...
iptables <ul><li>iptables se divide en dos partes: </li></ul><ul><ul><li>parte de kernel: módulos o compilado en el propio...
iptables <ul><li>Todos los paquetes pasan por una serie de tablas (colas) para ser procesados. Cada tabla se dedica a un c...
iptables <ul><li>Al especificar las reglas, es necesario indicar  la tabla y la cadena donde colocarla. </li></ul><ul><ul>...
iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>El kernel empieza con tres listas de regla...
iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Cuando un paquete alcanza uno de los círcu...
iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Una cadena es una lista de reglas </li></u...
iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Cuando llega un paquete, primero el kernel...
iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Si el forwarding está activado, y hay que ...
iptables <ul><li>Comando tipo: </li></ul><ul><ul><li>#iptables -Accion Cadena [opciones] -j Target </li></ul></ul><ul><ul>...
iptables <ul><li>Operaciones sobre las cadenas </li></ul><ul><ul><li>Crear una nueva cadena (-N) </li></ul></ul><ul><ul><l...
iptables <ul><li>Operaciones sobre las reglas de una cadena </li></ul><ul><ul><li>Añadir una nueva regla a la cadena (-A) ...
iptables <ul><li>Operaciones sobre las reglas de una cadena </li></ul><ul><ul><li>Añadir reglas </li></ul></ul><ul><ul><ul...
iptables <ul><li>Añadir reglas de filtrado. Ejemplo básico </li></ul><ul><ul><li>Denegar ping desde localhost </li></ul></...
iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes <...
iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes <...
iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes <...
iptables <ul><li>Extensiones de las especificaciones de filtrado. </li></ul><ul><ul><li>-m multiport –sport <port, port......
iptables <ul><li>Extensiones </li></ul><ul><ul><li>nuevos targets </li></ul></ul><ul><ul><li>nuevos tests </li></ul></ul><...
iptables <ul><li>Extensiones TCP </li></ul><ul><ul><li>--dport, --destination-port puerto/rango puertos </li></ul></ul><ul...
iptables <ul><li>Extensiones UDP </li></ul><ul><ul><li>--sport, --source-port, --dport, --destination-port puerto/rango pu...
iptables <ul><li>Targets de las reglas: que hacer con el paquete cuando coincida con la regla </li></ul><ul><ul><li>Lás ma...
iptables <ul><li>Extensiones con nuevos targets </li></ul><ul><ul><li>LOG: logging en kernel de los paquetes que coincidan...
iptables <ul><li>Añadir reglas de filtrado </li></ul><ul><ul><li>iptables -A INPUT -p tcp --dport 21 -j DROP </li></ul></u...
iptables <ul><li>Añadir reglas de redirección de puertos </li></ul><ul><ul><li>iptables -t nat -A PREROUTING -i eth0 -p tc...
iptables <ul><li>Borrar reglas </li></ul><ul><ul><li>iptables -D INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><u...
iptables <ul><li>Eliminación de todas las reglas: </li></ul><ul><ul><li>iptables -F </li></ul></ul><ul><ul><ul><li>elimina...
iptables <ul><li>Establecer la política por defecto: </li></ul><ul><ul><li>iptables -P INPUT DROP </li></ul></ul><ul><ul><...
iptables <ul><li>Mostrar reglas </li></ul><ul><ul><li>iptables -L </li></ul></ul><ul><li>Mostrar reglas de NAT: </li></ul>...
iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>netcat es una pequeña utilidad que lee y escribe datos a...
iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>Ponemos una regla para denegar el acceso a VNC de un alu...
iptables <ul><li>Logging </li></ul><ul><ul><li>iptables puede hacer logging de paquetes a /var/log/messages </li></ul></ul...
iptables <ul><li>Logging </li></ul><ul><ul><li>mucha información de log, debido a los broadcasts </li></ul></ul><ul><ul><l...
iptables <ul><li>Configuración iptables en los clientes </li></ul><ul><ul><li>Restringir el acceso a los servicios de uso ...
iptables <ul><li>Configuración iptables en los clientes </li></ul><ul><ul><li>#iptables -A INPUT -i eth0 -s ! ab201-pro  -...
iptbales <ul><li>Configuración iptables en el servidor </li></ul><ul><ul><li>Restringir el acceso a todos los servicios lo...
iptbales <ul><li>Configuración iptables en el servidor </li></ul><ul><ul><li># iptables -A INPUT -i eth0 -s  172.19.232.0/...
 
Upcoming SlideShare
Loading in...5
×

Curso Avanzado Seguridad Redes

6,359

Published on

1 Comment
5 Likes
Statistics
Notes
  • buena presentacion .......la bajare
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
6,359
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
688
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Transcript of "Curso Avanzado Seguridad Redes"

  1. 1. <ul><li>Curso Avanzado de Administradores </li></ul><ul><li>Seguridad en sistemas GNU/Linux: </li></ul><ul><li>Redes </li></ul><ul><li>Antonio Durán Terrés </li></ul>
  2. 2. Redes <ul><li>Conceptos de redes </li></ul><ul><li>Seguridad básica del S.O. </li></ul><ul><li>Servicios de red </li></ul><ul><li>sniffers y análisis de protocolos </li></ul><ul><li>iptables </li></ul><ul><li>Dispositivos de red </li></ul>
  3. 3. Conceptos de redes <ul><li>Configuración ideal </li></ul><ul><ul><li>tráfico de entrada/salida de la red local debería atravesar un único punto </li></ul></ul><ul><ul><ul><li>capacidad de filtrado del tráfico deseado </li></ul></ul></ul><ul><ul><ul><li>capacidad de logging de las actividades de los usuarios </li></ul></ul></ul><ul><ul><ul><li>único punto de entrada hacia la red interna hace más facil detectectar y protegerse de amenazas internas </li></ul></ul></ul>
  4. 4. Conceptos de redes <ul><li>Configuración ideal </li></ul><ul><ul><li>ROUTER <-> SERVIDOR <-> LAN </li></ul></ul><ul><li>Configuración actual </li></ul><ul><ul><li>Router y servidor conectados a LAN por igual </li></ul></ul><ul><ul><li>Clientes obligados por SW a pasar por el servidor </li></ul></ul><ul><ul><ul><li>Clientes que no quieran pueden salir por el router </li></ul></ul></ul><ul><ul><li>Ataques externos van del router hacia la máquina directamente, evitando la posibilidad de detección en un punto único </li></ul></ul>
  5. 5. Conceptos de redes <ul><li>Configuración actual </li></ul><ul><ul><li>Soluciones: </li></ul></ul><ul><ul><ul><li>Asegurar el servidor y los clientes con reglas de filtrado </li></ul></ul></ul><ul><ul><ul><li>Usar logging en los clientes para detectar posibles intentos de ataque </li></ul></ul></ul><ul><ul><ul><ul><li>difícil comprobar logs dispersos en los clientes -> agregación de logs con syslog </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Usar IDS junto al router? </li></ul></ul></ul></ul>
  6. 6. Conceptos de redes <ul><li>Puertos </li></ul><ul><ul><li>Abiertos, a la escucha. Tienen un programa asociado. </li></ul></ul><ul><ul><li>Cerrados. No hay ningún programa asociado -> no suponen amenaza. </li></ul></ul><ul><ul><li>Abiertos, conectados. Son privados a la conexión y se cierran al terminar ésta -> no suponen amenaza. </li></ul></ul><ul><li>Los servicios abren puertos, poniéndose a la escucha esperando conexiones de los usuarios </li></ul><ul><ul><li>También disponibles para posibles atacantes </li></ul></ul>
  7. 7. Conceptos de redes <ul><li>Cuando un programa se pone a la escucha, lo hace en un puerto y en una o más direcciones/interfaces (cada interfaz tiene una dirección de red) </li></ul><ul><ul><li>servidores locales que sólo son accesibles desde localhost </li></ul></ul><ul><ul><li>servidores de red que son accesibles desde los interfaces de red, como ethernet. </li></ul></ul>
  8. 8. Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.conf </li></ul><ul><ul><li>net/ipv4/conf/all/rp_filter = 1 </li></ul></ul><ul><ul><ul><li>Deshabilita la triangulación de routing. Las consultas se responden en el mismo interfaz, no en otro. </li></ul></ul></ul><ul><ul><li>net/ipv4/conf/all/log_martians = 1 </li></ul></ul><ul><ul><ul><li>Habilita el logging de paquetes con direcciones IP inválidas </li></ul></ul></ul>
  9. 9. Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.conf </li></ul><ul><ul><li>net/ipv4/conf/all/send_redirects = 0 </li></ul></ul><ul><ul><ul><li>Deshabilitar el envío mensajes de redirección </li></ul></ul></ul><ul><ul><li>net/ipv4/conf/all/accept_source_route = 0 </li></ul></ul><ul><ul><ul><li>Deshabilitar el uso de paquetes enrutados en origen </li></ul></ul></ul><ul><ul><li>net/ipv4/conf/all/accept_redirects = 0 </li></ul></ul><ul><ul><ul><li>No aceptar mensajes ICMP de redirección </li></ul></ul></ul>
  10. 10. Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.conf </li></ul><ul><ul><li>net/ipv4/tcp_syncookies = 1 </li></ul></ul><ul><ul><ul><li>Protección contra SYN flood </li></ul></ul></ul><ul><ul><li>net/ipv4/icmp_echo_ignore_broadcasts = 1 </li></ul></ul><ul><ul><ul><li>No responder a pings al broadcast </li></ul></ul></ul><ul><ul><li>net/ipv4/ip_forward = 1 </li></ul></ul><ul><ul><ul><li>Forwarding de paquetes, necesario en servidor </li></ul></ul></ul>
  11. 11. Seguridad básica del S.O. <ul><li>Configuraciones de red que ayudan a la seguridad </li></ul><ul><li>Fichero /etc/sysctl.conf </li></ul><ul><ul><li>Este fichero se lee al arrancar </li></ul></ul><ul><ul><li>Si se modifica y se quieren aplicar los cambios inmediatamente: </li></ul></ul><ul><ul><ul><li># sysctl -p </li></ul></ul></ul>
  12. 12. Servicios de red <ul><li>El primer paso al asegurar los servicios de red ofrecidos es eliminar aquellos que no son necesarios, ya que suponen una amenaza inútil. </li></ul><ul><li>Auditoría del sistema para ver que servicios estamos ejecutando: </li></ul><ul><ul><li>#netstat --inet -lp </li></ul></ul><ul><ul><li>Active Internet connections (only servers) </li></ul></ul><ul><ul><li>Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name </li></ul></ul><ul><ul><li>tcp 0 0 localhost:872 *:* LISTEN 2392/famd </li></ul></ul><ul><ul><li>tcp 0 0 *:zope *:* LISTEN 2374/python2.2 </li></ul></ul><ul><ul><li>... </li></ul></ul>
  13. 13. Servicios de red <ul><li>Datos más importantes relativos a seguridad en la salida de netstat: </li></ul><ul><ul><li>Proto: indica el protocolo, TCP o UDP </li></ul></ul><ul><ul><li>Local Address: dirección de red y número de puerto en el que está el servicio </li></ul></ul><ul><ul><ul><li>localhost indica que el servicio solo es accesible desde la propia máquina, por lo que no supone una amenaza </li></ul></ul></ul><ul><ul><ul><li>* indica que escucha en todos los interfaces de la máquina </li></ul></ul></ul>
  14. 14. Servicios de red <ul><li>Datos más importantes relativos a seguridad en la salida de netstat: </li></ul><ul><ul><li>Foreign Address: casi siempre *:* (posible backdoor si no) </li></ul></ul><ul><ul><li>PID/Program name: PID y nombre del programa </li></ul></ul>
  15. 15. backdoors <ul><li>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, saltándose de algún modo el sistema de seguridad. </li></ul><ul><li>Hay muchos tipos según los sistemas de seguridad que pretendan evitar: </li></ul><ul><ul><li>Añadir una cuenta con privilegios de root en /etc/passwd </li></ul></ul><ul><ul><li>Dejar un servidor de shell abierto en un puerto no estándar </li></ul></ul><ul><ul><li>Dejar en algún directorio un ejecutable SUID ... </li></ul></ul>
  16. 16. backdoors <ul><li>Puerta trasera SUID después de conseguir privilegios de root: </li></ul><ul><ul><li># cp /bin/sh /tmp/ </li></ul></ul><ul><ul><li># chmod 4755 /tmp/sh </li></ul></ul><ul><ul><li># ls -al /tmp/sh </li></ul></ul><ul><ul><li>-rwsr-xr-x 1 root root 628684 2006-05-06 13:59 /tmp/sh </li></ul></ul><ul><ul><li>$ whoami </li></ul></ul><ul><ul><li>aduran </li></ul></ul><ul><ul><li>$ /tmp/sh </li></ul></ul><ul><ul><li># whoami </li></ul></ul><ul><ul><li>root </li></ul></ul>
  17. 17. backdoors <ul><li>Puerta trasera remota usando netcat: </li></ul><ul><ul><li>En una sesión el la máquina atacada, dejamos preparado un servidor de shell: </li></ul></ul><ul><ul><ul><li># nc -l -p 2000 -e /bin/bash </li></ul></ul></ul><ul><ul><li>Desde fuera, conectamos al servidor: </li></ul></ul><ul><ul><ul><li># nc localhost 2000 </li></ul></ul></ul><ul><ul><ul><ul><li># ls </li></ul></ul></ul></ul><ul><ul><ul><ul><li>06ig7us1.phtml </li></ul></ul></ul></ul><ul><ul><ul><ul><li>08_GA.pdf </li></ul></ul></ul></ul><ul><ul><ul><ul><li>.... </li></ul></ul></ul></ul>
  18. 18. Servicios de red <ul><li>Pasos a realizar </li></ul><ul><ul><li>netstat del servidor y de los clientes </li></ul></ul><ul><ul><li>Ver programas necesarios y no necesarios </li></ul></ul><ul><ul><li>Parar los servicios no necesarios </li></ul></ul><ul><ul><li>Restringir el acceso a la red local a los servicios que no requieran accesos desde el exterior </li></ul></ul><ul><ul><ul><li>Actualmente ya hecho, con tcp wrappers </li></ul></ul></ul><ul><ul><ul><li>Mejor con iptables (logging, mayor control, etc) </li></ul></ul></ul>
  19. 19. Servicios de red <ul><li>elbrocense:/var/www# netstat --inet -nlp </li></ul><ul><li>Active Internet connections (only servers) </li></ul><ul><li>Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name </li></ul><ul><li>tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - </li></ul><ul><li>tcp 0 0 0.0.0.0:962 0.0.0.0:* LISTEN 26644/rpc.statd </li></ul><ul><li>tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN 1133/inetd </li></ul><ul><li>tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1075/slapd </li></ul><ul><li>tcp 0 0 127.0.0.1:935 0.0.0.0:* LISTEN 1183/famd </li></ul><ul><li>tcp 0 0 0.0.0.0:42986 0.0.0.0:* LISTEN - </li></ul>
  20. 20. Servicios de red <ul><li>tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1265/mysqld </li></ul><ul><li>tcp 0 0 0.0.0.0:42987 0.0.0.0:* LISTEN 26667/rpc.mountd </li></ul><ul><li>tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1158/smbd </li></ul><ul><li>tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 1133/inetd </li></ul><ul><li>tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 831/portmap </li></ul><ul><li>tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1298/apache </li></ul><ul><li>tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 4554/dnsmasq </li></ul><ul><li>tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1133/inetd </li></ul><ul><li>tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 1115/cupsd </li></ul><ul><li>tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 1206/(squid) </li></ul><ul><li>tcp 0 0 0.0.0.0:825 0.0.0.0:* LISTEN 1069/rpc.rquotad </li></ul><ul><li>tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4536/101 </li></ul>
  21. 21. Servicios de red <ul><li>tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 5230/102 </li></ul><ul><li>tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 5256/103 </li></ul><ul><li>tcp 0 0 127.0.0.1:6013 0.0.0.0:* LISTEN 5595/104 </li></ul><ul><li>udp 0 0 0.0.0.0:2049 0.0.0.0:* - </li></ul><ul><li>udp 0 0 0.0.0.0:32772 0.0.0.0:* 1206/(squid) </li></ul><ul><li>udp 0 0 0.0.0.0:32948 0.0.0.0:* - </li></ul><ul><li>udp 0 0 0.0.0.0:53 0.0.0.0:* 4554/dnsmasq </li></ul><ul><li>udp 0 0 0.0.0.0:822 0.0.0.0:* 1069/rpc.rquotad </li></ul><ul><li>udp 0 0 0.0.0.0:32951 0.0.0.0:* 26667/rpc.mountd </li></ul><ul><li>udp 0 0 0.0.0.0:32952 0.0.0.0:* 4554/dnsmasq </li></ul><ul><li>udp 0 0 0.0.0.0:3130 0.0.0.0:* 1206/(squid) </li></ul>
  22. 22. Servicios de red <ul><li>udp 0 0 0.0.0.0:956 0.0.0.0:* 26644/rpc.statd </li></ul><ul><li>udp 0 0 0.0.0.0:959 0.0.0.0:* 26644/rpc.statd </li></ul><ul><li>udp 0 0 0.0.0.0:67 0.0.0.0:* 4554/dnsmasq </li></ul><ul><li>udp 0 0 0.0.0.0:111 0.0.0.0:* 831/portmap </li></ul><ul><li>udp 0 0 127.0.0.1:123 0.0.0.0:* 1190/ntpd </li></ul><ul><li>udp 0 0 0.0.0.0:123 0.0.0.0:* 1190/ntpd </li></ul><ul><li>raw 0 0 0.0.0.0:1 0.0.0.0:* 7 4554/dnsmasq </li></ul>
  23. 23. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 2049 TCP, sin nombre de programa. ¿Que es? Google dice que NFS. Comprobamos: </li></ul></ul><ul><ul><ul><li># rpcinfo -p |grep nfs </li></ul></ul></ul><ul><ul><ul><li>100003 2 udp 2049 nfs </li></ul></ul></ul><ul><ul><ul><li>100003 3 udp 2049 nfs </li></ul></ul></ul><ul><ul><ul><li>100003 4 udp 2049 nfs </li></ul></ul></ul><ul><ul><ul><li>100003 2 tcp 2049 nfs </li></ul></ul></ul><ul><ul><ul><li>100003 3 tcp 2049 nfs </li></ul></ul></ul><ul><ul><ul><li>100003 4 tcp 2049 nfs </li></ul></ul></ul>
  24. 24. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 962 TCP: statd, necesario para el corecto funcionamiento de NFS. Necesario en LAN. </li></ul></ul><ul><ul><li>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: </li></ul></ul><ul><ul><ul><li>time stream tcp nowait root internal </li></ul></ul></ul><ul><ul><li>Puerto 389 TCP: slapd, servidor LDAP. Necesario en LAN. </li></ul></ul>
  25. 25. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 935 TCP: famd. File alteration monitor daemon. Solo binded en localhost. </li></ul></ul><ul><ul><li>Puerto 42986, sin nombre de programa. Comprobamos si tiene algo que ver con RPC: </li></ul></ul><ul><ul><ul><li># rpcinfo -p|grep 42986 </li></ul></ul></ul><ul><ul><ul><li>100021 1 tcp 42986 nlockmgr </li></ul></ul></ul><ul><ul><ul><li>100021 3 tcp 42986 nlockmgr </li></ul></ul></ul><ul><ul><ul><li>100021 4 tcp 42986 nlockmgr </li></ul></ul></ul><ul><ul><li>Necesario en LAN </li></ul></ul>
  26. 26. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 3306 TCP: mysqld, servidor Mysql </li></ul></ul><ul><ul><ul><li>binded en 0.0.0.0 </li></ul></ul></ul><ul><ul><ul><li>Normalmente, sólo uso desde localhost: </li></ul></ul></ul><ul><ul><ul><ul><li>Quitar la opción de red de Mysql </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Opción skip-networking en /etc/mysql/my.cnf </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Restringir el acceso con iptables a sólo los hosts necesarios </li></ul></ul></ul></ul></ul>
  27. 27. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 42987: mountd, para que los clientes puedan montar los directorios del servidor. Necesario en LAN. </li></ul></ul><ul><ul><li>Puerto 9999 TCP: inetd. Comprobamos la configuración: </li></ul></ul><ul><ul><ul><li># cat /etc/inetd.conf|grep 9999 </li></ul></ul></ul><ul><ul><ul><li>9999 stream tcp nowait.400 aptproxy /usr/sbin/tcpd /usr/sbin/apt-proxy -l /var/log/apt-proxy.log </li></ul></ul></ul><ul><ul><ul><li>Es Apt-Proxy, sólo necesario en LAN </li></ul></ul></ul>
  28. 28. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 139 TCP: netbios, para SAMBA. Si no necesitamos exportar recursos desde el servidor, deberíamos desactivarlo. En caso contrario, restringirlo a la LAN. </li></ul></ul><ul><ul><li>Eliminar su uso: </li></ul></ul><ul><ul><ul><li># /etc/init.d/samba stop </li></ul></ul></ul><ul><ul><ul><li># rm /etc/rc2.d/S20samba </li></ul></ul></ul>
  29. 29. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 111 TCP: portmapper. Demonio para RPC (Remote Procedure Call), protocolo mediante el cúal funcionan servicios como NFS. Necesario en LAN. </li></ul></ul><ul><ul><li>Puerto 80 TCP: Apache, servidor Web. Dependerá del uso si necesitamos que pueda ser accesible desde fuera. </li></ul></ul>
  30. 30. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 53 TCP: dnsmasq, servidor DHCP y DNS. Usa este puerto sobre todo para transferencias de zona (tráfico normal DNS es UDP) </li></ul></ul>
  31. 31. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 21 TCP: inetd. FTP usa el puerto 21 TCP: </li></ul></ul><ul><ul><ul><li># cat /etc/inetd.conf|grep ftp </li></ul></ul></ul><ul><ul><ul><li>ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu-ftpd -l </li></ul></ul></ul><ul><ul><ul><li>Si no es necesario, debemos desactivarlo comentando la linea y reiniciando inetd: </li></ul></ul></ul><ul><ul><ul><ul><li>#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu-ftpd -l </li></ul></ul></ul></ul><ul><ul><ul><ul><li># /etc/init.d/inetd restart </li></ul></ul></ul></ul>
  32. 32. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 21 TCP: inetd. FTP usa el puerto 21 TCP: </li></ul></ul><ul><ul><li>Puerto 631: cupsd, servidor de impresión. No es necesario en el servidor, lo eliminamos: </li></ul></ul><ul><ul><ul><li># /etc/init.d/cupsys stop </li></ul></ul></ul><ul><ul><ul><li># rm /etc/rc2.d/S20cupsys </li></ul></ul></ul><ul><ul><li>Puerto 3128: squid. Proxy http. Necesario en LAN. </li></ul></ul>
  33. 33. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 825: rpc.rquotad, servidor para que los clientes conozcan las cuotas de los usuarios. Necesario en LAN. </li></ul></ul><ul><ul><li>Puerto 2049 UDP: NFS </li></ul></ul><ul><ul><li>Puerto 32772 UDP: Squid </li></ul></ul><ul><ul><li>Puerto 32948 UDP: nlockmgr, para NFS </li></ul></ul><ul><ul><li>Puerto 822 UDP: rpc.rquotad </li></ul></ul>
  34. 34. Servicios de red <ul><li>Comprobamos, uno a uno, que es cada servicio: </li></ul><ul><ul><li>Puerto 32951 UDP: rpc.mountd </li></ul></ul><ul><ul><li>Puerto 32952 UDP: dnsmasq </li></ul></ul><ul><ul><li>Puerto 3130 UDP: Squid </li></ul></ul><ul><ul><li>Puertos 956 y 959 UDP: rpc.statd </li></ul></ul><ul><ul><li>Puerto 67 UDP: dnsmasq, para DHCP. </li></ul></ul><ul><ul><li>Puerto 111 UDP: portmapper </li></ul></ul><ul><ul><li>Puerto 123 UDP: ntpd, para sincronizar la hora </li></ul></ul>
  35. 35. Servicios de red <ul><li>netstat nos da información sobre la red desde dentro de la propia máquina -> es necesario comprobar como se ven las cosas desde fuera </li></ul><ul><li>Uso de nmap para obtener información sobre máquinas y/o redes </li></ul><ul><ul><li>nmap es una herramienta de exploración de puertos y más </li></ul></ul><ul><ul><li>Informa de los puertos abiertos que tiene una máquina </li></ul></ul><ul><ul><li>Puede explorar subredes completas en busca de determinados puertos abiertos </li></ul></ul>
  36. 36. Servicios de red <ul><li>Ejemplo básico de uso: </li></ul><ul><ul><li>$nmap localhost </li></ul></ul><ul><ul><li>Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-05-05 19:52 CEST </li></ul></ul><ul><ul><li>Interesting ports on localhost (127.0.0.1): </li></ul></ul><ul><ul><li>(The 1658 ports scanned but not shown below are in state: closed) </li></ul></ul><ul><ul><li>PORT STATE SERVICE </li></ul></ul><ul><ul><li>22/tcp open ssh </li></ul></ul><ul><ul><li>80/tcp open http </li></ul></ul><ul><ul><li>111/tcp open rpcbind </li></ul></ul>
  37. 37. Servicios de red <ul><li>La salida de nmap muestra el nombre del servicio basado en el contenido del fichero /etc/services </li></ul><ul><ul><li>No siempre es real el valor, ya que hay aplicaciones que no usan puertos estándar. </li></ul></ul><ul><li>En el uso más simple, no se comprueban todos los puertos, sino algunos considerados los más comunes </li></ul><ul><li>Para comprobarlos todos: </li></ul><ul><ul><li>#nmap -sU -sT -p 1-65535 localhost </li></ul></ul>
  38. 38. Servicios de red <ul><li>#nmap -sU -sT -p 1-65535 localhost </li></ul><ul><ul><li>-sU hace un scan UDP </li></ul></ul><ul><ul><li>-sT hace un scan TCP normal (connect scan) </li></ul></ul><ul><ul><ul><li>-sS hace un SYN scan </li></ul></ul></ul><ul><ul><ul><li>-sP hace un Ping scan </li></ul></ul></ul><ul><ul><ul><li>-p 1- 65535 indica que se comprueben todos los puertos existentes </li></ul></ul></ul>
  39. 39. Servicios de red <ul><li>Al realizar la exploración desde localhost, los resultados obtenidos no serán necesariamente los mismos que si lo hacemos desde otra máquina de la red. </li></ul><ul><ul><li>Los servicios pueden escuchar sólo en los interfaces externos. </li></ul></ul><ul><ul><li>Las reglas iptables se aplican en determinados interfaces y/o direcciones </li></ul></ul><ul><li>Será necesario realizar las comprobaciones desde dentro y desde fuera. </li></ul>
  40. 40. Servicios de red <ul><li>Exploración TCP, desde un cliente, del servidor del I.E.S.: </li></ul><ul><ul><li>ddprog:/home/aduran# nmap -sT -p 1-65535 www </li></ul></ul><ul><ul><li>Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-05-09 13:40 CEST </li></ul></ul><ul><ul><li>Interesting ports on elbrocense.elbrocense.ex (172.19.232.2): </li></ul></ul><ul><ul><li>(The 65520 ports scanned but not shown below are in state: closed) </li></ul></ul><ul><ul><li>PORT STATE SERVICE </li></ul></ul><ul><ul><li>21/tcp open ftp </li></ul></ul><ul><ul><li>22/tcp open ssh </li></ul></ul><ul><ul><li>37/tcp open time </li></ul></ul>
  41. 41. Servicios de red <ul><ul><li>53/tcp open domain </li></ul></ul><ul><ul><li>80/tcp open http </li></ul></ul><ul><ul><li>111/tcp open rpcbind </li></ul></ul><ul><ul><li>389/tcp open ldap </li></ul></ul><ul><ul><li>825/tcp open unknown </li></ul></ul><ul><ul><li>962/tcp open unknown </li></ul></ul><ul><ul><li>2049/tcp open nfs </li></ul></ul><ul><ul><li>3128/tcp open squid-http </li></ul></ul><ul><ul><li>3306/tcp open mysql </li></ul></ul><ul><ul><li>9999/tcp open abyss </li></ul></ul><ul><ul><li>42986/tcp open unknown </li></ul></ul><ul><ul><li>42987/tcp open unknown </li></ul></ul>
  42. 42. Servicios de red <ul><li>Exploración de máquinas que no permiten ping </li></ul><ul><ul><li>nmap -P0 maquina </li></ul></ul><ul><ul><ul><li>No hace ping antes del scan </li></ul></ul></ul><ul><li>Puertos filtrados </li></ul><ul><ul><li>Scan mucho más lento </li></ul></ul><ul><li>Puertos UDP </li></ul><ul><ul><li>más lento </li></ul></ul><ul><ul><li>nmap no puede saber el estado si están filtrados, debido al funcionamiento sin confirmación de UDP </li></ul></ul>
  43. 43. ssh <ul><li>Tanto en el servidor como en los clientes, deberíamos restringir el acceso por ssh al usuario root y al usuario del LDAP administrador, si lo cree necesario. </li></ul><ul><ul><li>Fichero /etc/ssh/sshd_config: </li></ul></ul><ul><ul><ul><li>AllowUsers root [usuario_ldap] </li></ul></ul></ul><ul><li>Deshabilitar la lectura de ficheros ~/.rhosts y ~/.shosts: </li></ul><ul><ul><li>IgnoreRhosts yes </li></ul></ul><ul><li>Prestar atención a los certificados </li></ul><ul><ul><li>Evitar ataques de suplantación mediante DNS spoofing </li></ul></ul>
  44. 44. apache <ul><li>Restringir el acceso al ámbito del IES de áquellos recursos que necesiten dicha protección </li></ul><ul><ul><li>Portal interno, SGIEX, movilidad, ... </li></ul></ul><ul><li>Utilizas restricciones de acceso de algún tipo dentro del propio IES para los datos que lo requieran </li></ul>
  45. 45. apache <ul><li>Usar restricción por IP en SGIEX </li></ul><ul><ul><li>Modificar la configuración de Apache para el directorio deseado: </li></ul></ul><ul><ul><ul><li><Directory /var/www/sgiex> </li></ul></ul></ul><ul><ul><ul><li>Allow from 172.19.123.7 </li></ul></ul></ul><ul><ul><ul><li>Deny from all </li></ul></ul></ul><ul><ul><ul><li></Directory> </li></ul></ul></ul>
  46. 46. apache <ul><li>Usar autenticación en movilidad </li></ul><ul><ul><li>Crear el fichero de contraseñas </li></ul></ul><ul><ul><ul><li># htpasswd -c /etc/apache/users adt </li></ul></ul></ul><ul><ul><ul><li>Crear un fichero .htaccess en el directorio que queremos proteger </li></ul></ul></ul><ul><ul><ul><ul><li>AuthName &quot;Acceso restringido&quot; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AuthType Basic </li></ul></ul></ul></ul><ul><ul><ul><ul><li>AuthUserFile /etc/apache/users </li></ul></ul></ul></ul><ul><ul><ul><ul><li>require valid-user </li></ul></ul></ul></ul>
  47. 47. apache <ul><li>Usar autenticación en directorios de ficheros y tareas para los clientes </li></ul><ul><ul><li>Estos ficheros pueden contener información valiosa para un atacatnte </li></ul></ul><ul><ul><ul><li>Ficheros de contraseñas, información sobre programas instalados, configuraciones específicas, etc. </li></ul></ul></ul><ul><ul><li>Actualmente disponible para toda la intranet (http abierto para todos) </li></ul></ul>
  48. 48. ftp <ul><li>FTP es un protocolo inseguro, ya que usa autenticación en texto plano, y cualquiera con un sniffer puede averiguar las contraseñas -> Uso de scp, más seguro </li></ul><ul><li>Si es necesario para los usuarios, restringir su uso a áquellos que lo requieran </li></ul>
  49. 49. Denegación de servicio <ul><li>Los ataques de denegación de servicio intentan evitar el normal funcionamiento de los servicios ofrecidos, colapsando algunos o todos los recursos del servidor </li></ul><ul><ul><li>SYN Flood </li></ul></ul><ul><ul><ul><li>Se llena la tabla de conexiones del kernel y no pueden abrirse nuevas </li></ul></ul></ul><ul><ul><li>Ping Flood </li></ul></ul><ul><ul><ul><li>Smurfing </li></ul></ul></ul>
  50. 50. Denegación de servicio <ul><li>Ataques contra el servidor web inundándolo de peticiones </li></ul><ul><li>Llenar el espacio de disco -> importante usar cuotas </li></ul><ul><li>Usar fallos en los programas que permitan interrumpir sus servicios </li></ul>
  51. 51. Sniffers y análisis de protocolos <ul><li>¿Que es un snnifer? </li></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por un interfaz de red. Visión orientada a concentradores. </li></ul></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por la red. Visión orientada a conmutadores. </li></ul></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por las redes. Vision orientada a wifi. </li></ul></ul>
  52. 52. Sniffers y análisis de protocolos <ul><li>¿Que es necesario saber para usar un snnifer? </li></ul><ul><ul><li>Lo primero es saber que estamos buscando: si vamos a usar un sniffer normalmente será para ayudarnos en la solución de algún problema, o para buscar un derminado tipo de tráfico potencialmente peligroso. </li></ul></ul><ul><ul><li>Conocer, al menos en parte, el funcionamiento del protocolo de red con el que estemos trabajando: </li></ul></ul><ul><ul><ul><li>Negociación TCP y protocolos de aplicación </li></ul></ul></ul><ul><ul><ul><ul><li>HTTP, LDAP, etc. </li></ul></ul></ul></ul><ul><ul><ul><li>Protocolos de apliación sobre UDP </li></ul></ul></ul><ul><ul><ul><ul><li>DNS, DHCP, etc. </li></ul></ul></ul></ul>
  53. 53. Sniffers y análisis de protocolos <ul><li>Modo promiscuo en ethernet </li></ul><ul><ul><li>El interfaz recoge todos los paquetes que pasan por él, incluyendo aquellos que no van dirigidos a su dirección MAC ni a la de difusión. </li></ul></ul><ul><ul><li>Útil en redes en bus: hubs. Desde un ordenador podemos ver todo el tráfico del segmento compartido de la red. </li></ul></ul><ul><ul><li>En los I.E.S, red conmutada: switches. A una máquina sólo llegan los paquetes que van destinados a ella. No podemos ver el tráfico completo de la red. Posibles soluciones: </li></ul></ul><ul><ul><ul><li>ARP poisoning (dsniff): muy ruidoso. </li></ul></ul></ul>
  54. 54. Sniffers y análisis de protocolos <ul><li>Modo promiscuo en ethernet </li></ul><ul><ul><li>En los I.E.S, red conmutada: switches. A una máquina sólo llegan los paquetes que van destinados a ella. No podemos ver el tráfico completo de la red. Posibles soluciones: </li></ul></ul><ul><ul><ul><li>Observar el tráfico en un punto central: todos los clientes salen a Internet por el servidor, miramos alli el tráfico. </li></ul></ul></ul><ul><ul><ul><li>Problemas: </li></ul></ul></ul><ul><ul><ul><ul><li>no detecta si alguien configura su ruta de salida por el router. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Solución: Conectar un hub entre el router y la red y poner en él el ordenador con el sniffer. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>no detecta tráfico interno a la red local. </li></ul></ul></ul></ul>
  55. 55. Sniffers y análisis de protocolos <ul><li>Modo monitor en 802.11b/g (wifi) </li></ul><ul><ul><li>El tráfico wifi circula por el aire </li></ul></ul><ul><ul><li>Cualquiera con una tarjeta wireless puede obtener el tráfico que circule cerca, incluso de varias redes a la vez (channel hopping) </li></ul></ul><ul><ul><li>Uso de encriptación en todo el tráfico que circula por la red wifi: </li></ul></ul><ul><ul><ul><li>WEP: no es seguro, muy fácil de crackear. </li></ul></ul></ul><ul><ul><ul><li>WPA: mucha mejor seguridad que WEP, mediante el empleo de PSK (secreto compartido) </li></ul></ul></ul>
  56. 56. tcpdump <ul><li>tcpdump: snnifer cásico en GNU/Linux, disponible en todas las distribuciones. </li></ul><ul><li>Uso en modo texto por consola. </li></ul><ul><li>Rápido y facil de usar en remoto. </li></ul><ul><li>En general, útil para saber si los paquetes llegan o no llegan, pero menos para mirar dentro de los paquetes. </li></ul>
  57. 57. tcpdump <ul><li>Muestra algunos o todos los paquetes que pasan por un interfaz de red. El rango de paquetes capturados puede especificarse usando una combinación de operadores lógicos y parámetros como el origen o destino IP, el tipo de protocolo o el número de puerto. </li></ul><ul><li>Los paquetes capturados pueden guardarse en formato binario a un fichero, o pueden mostrarse por pantalla. Los ficheros escritos deben ser leídos con tcpdump (u otros programas que soporten el estándar pcap) </li></ul>
  58. 58. tcpdump <ul><li>Mostrar todos los paquetes que pasan por el interfaz eth0: </li></ul><ul><ul><li>#tcpdump -i eth0 </li></ul></ul><ul><li>Mostrar solo los paquetes del puerto 80: </li></ul><ul><ul><li>#tcpdump port 80 </li></ul></ul><ul><li>Mostrar sólo los paquetes con origen o destino en una dirección o nombre de máquina determinados: </li></ul><ul><ul><li>#tcpdump host 172.21.232.2 </li></ul></ul><ul><li>Mostrar sólo los paquetes con origen en una dirección o nombre de máquina determinado: </li></ul><ul><ul><li>#tcpdump source 172.21.232.2 </li></ul></ul>
  59. 59. tcpdump <ul><li>Mostrar sólo los paquetes con un puerto destino determinado: </li></ul><ul><ul><li>#tcpdump dst port 21 </li></ul></ul><ul><li>Mostrar sólo paquetes TCP: </li></ul><ul><ul><li>#tcpdump tcp </li></ul></ul><ul><li>Mostrar todos los paquetes menos algunos: </li></ul><ul><ul><li>#tcpdump not port 22 </li></ul></ul><ul><li>No hacer resolución de nombres: </li></ul><ul><ul><li>#tcpdump -n </li></ul></ul>
  60. 60. tcpdump <ul><li>Combinación de condiciones: </li></ul><ul><ul><li>tcpdump dst port 80 and source 192.168.1.1 </li></ul></ul><ul><li>Forzar salida inmediata por pantalla: </li></ul><ul><ul><li>#tcpdump -l </li></ul></ul><ul><li>No mostrar timestamps: </li></ul><ul><ul><li>#tcpdump -t </li></ul></ul><ul><li>Formato recomendado: </li></ul><ul><ul><li>#tcpdump -nlt [filtro] </li></ul></ul>
  61. 61. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas UDP: </li></ul><ul><li>15:22:41.400299 orac.erg.abdn.ac.uk.1052 > 224.2.156.220.57392: udp 110 </li></ul><ul><ul><li>Timestamp: 15:22:41.400299 </li></ul></ul><ul><ul><li>Dirección origen: orac.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto origen: 1052 </li></ul></ul><ul><ul><li>Dirección destino: 224.2.156.220 </li></ul></ul><ul><ul><li>Puerto destino: 57392 </li></ul></ul><ul><ul><li>Protocolo: udp </li></ul></ul><ul><ul><li>Tamaño: 110 </li></ul></ul>
  62. 62. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>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) </li></ul><ul><ul><li>Timestamp: 16:23:01.079553 </li></ul></ul><ul><ul><li>Dirección origen: churchward.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto origen: 33635 </li></ul></ul><ul><ul><li>Dirección destino: gordon.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto destino: 32772 </li></ul></ul><ul><ul><li>Indica que la PUSH flag está puesta (P) </li></ul></ul>
  63. 63. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>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) </li></ul><ul><ul><li>Número de secuencia: 12765 </li></ul></ul><ul><ul><li>Contiene bytes de datos desde el número de secuencia hasta 12925, sin incluirlo. </li></ul></ul><ul><ul><li>Número de bytes de datos en el datagrama (160) </li></ul></ul><ul><ul><li>Detalles de asentimientos, tamaño de ventana y flags de la cabcera: ack 19829 win 24820 (DF) </li></ul></ul>
  64. 64. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Se puede hacer que tcpdump ofrezca más información: </li></ul><ul><ul><li>tcpdump -v <expresion> </li></ul></ul><ul><ul><li>tcpdump -vv <expresion> </li></ul></ul><ul><ul><li>tcpdump -vvv <expresion> </li></ul></ul><ul><li>También se puede aumentar el snaplen , que representa el tamaño máximo del paquete que decodifica tcpdump. Esto puede hacer que en la captura veamos paquetes que terminan con [|rip] o [|domain]. Para aumentar el tamaño por defecto: </li></ul><ul><ul><li>tcpdump -s tamaño_en_bytes </li></ul></ul>
  65. 65. tcpdump <ul><li>Vemos algunos ejemplos de uso: </li></ul><ul><ul><li>Comprobar si un cliente conecta con el servidor DNS que debe, y ver el resultado de las consultas. </li></ul></ul><ul><ul><li>Ver como se cierra una conexión TCP por el uso de los TCP Wrappers. </li></ul></ul><ul><ul><li>Ping a Internet a través del servidor: viendo los redirects. </li></ul></ul>
  66. 66. ethereal <ul><li>ethereal es un sniffer con un interfaz gráfico más adecuado para visualización del contenido de los paquetes. </li></ul><ul><li>Como desventaja, necesita de un entorno gráfico para funcionar. No es grave, ya que se puede usar un entorno remoto. </li></ul><ul><li>Dispone de una cantidad enorme de definiciones de protocolos, facilitando el análisis de los datos. </li></ul>
  67. 67. ethereal <ul><li>Al igual que tcpdump, ethereal puede trabajar capturando paquetes de un interfaz, o abriendo un fichero de datos existente. </li></ul><ul><li>Para realizar una nueva captura, pinchamos en el menú Capture->Start, y aparece un diálogo para configurar las opciones de la captura. </li></ul>
  68. 68. ethereal <ul><li>Opciones importantes de la captura: </li></ul><ul><ul><li>interfaz: selecciona el interfaz de donde queremos capturar paquetes. </li></ul></ul><ul><ul><li>Capturar paquetes en modo promiscuo: poco útil en redes conmutadas. </li></ul></ul><ul><ul><li>Filtro: filtro igual al usado en tcpdump. </li></ul></ul><ul><ul><li>Actualizar vista de paquetes mientras dura la captura. </li></ul></ul><ul><ul><li>Activar resolución de nombres: desaconsejado por el tráfico adicional generado. </li></ul></ul>
  69. 69. ethereal <ul><li>Vista de captura. Se divide en tres partes: </li></ul><ul><ul><li>Lista de paquetes capturados. Pueden ordenarse por varios campos. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Detalle en hexadecimal y ASCII del datagrama seleccionado. </li></ul></ul>
  70. 70. ethereal <ul><li>Detalle decodificado del datagrama seleccionado. </li></ul><ul><ul><li>Primero aparce información del datagrama en general, como su tamaño o cuando se capturó. </li></ul></ul><ul><ul><li>A continuación van aparenciendo los datos de los distintos protocolos que contiene el paquete: </li></ul></ul><ul><ul><ul><li>Ethernet </li></ul></ul></ul><ul><ul><ul><li>IP </li></ul></ul></ul><ul><ul><ul><li>TCP </li></ul></ul></ul><ul><ul><ul><li>LDAP </li></ul></ul></ul>
  71. 71. ethereal <ul><li>Ejemplo: observar el tráfico LDAP para resolver algún problema. </li></ul><ul><ul><li>Ponemos ethereal capturando paquetes con puerto destino 389 TCP. </li></ul></ul><ul><ul><li>Comprobamos paso a paso el diálogo LDAP: </li></ul></ul><ul><ul><ul><li>Operación BIND </li></ul></ul></ul><ul><ul><ul><ul><li>Comprobando el resultado </li></ul></ul></ul></ul><ul><ul><ul><li>Operación SEARCH </li></ul></ul></ul><ul><ul><ul><ul><li>Comprobando el resultado </li></ul></ul></ul></ul><ul><ul><ul><ul><li>y los campos devueltos de la entrada solicitada </li></ul></ul></ul></ul>
  72. 72. ethereal <ul><li>Ethereal también puede recomponer conexiones de algunos protocolos para mostrar los datos de manera más accesible. </li></ul><ul><li>Por ejemplo: boton derecho->Follow TCP Stream sobre un paqute de una conexión HTTP, nos mostrará una ventana con la conversación HTTP entre cliente y servidor en modo texto, juntando todos los paquetes de la conexión. </li></ul>
  73. 73. dsniff <ul><li>dsniff es una colección de herramientas para realizar auditorías de red y penetration testing . </li></ul><ul><ul><li>dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, y webspy escuchan pasivamente buscando contraseñas </li></ul></ul><ul><ul><li>arpspoof, dnsspoof, y macof facilitan la recepción de tráfico en redes conmutadas </li></ul></ul><ul><ul><li>sshmitm and webmitm implementan ataques de MITM contra ssh y https </li></ul></ul>
  74. 74. dsniff <ul><li>Capturar tráfico en una red conmutada </li></ul><ul><ul><li>arpspoof maquina_a_suplantar </li></ul></ul><ul><li>Se impersona a la pasarela local </li></ul><ul><ul><li>Activar forwarding en el host atacante </li></ul></ul><ul><li>Todo el tráfico que se destina a la pasarela se hace pasar antes por el host que ejecuta arpspoof, mediante ARP poisoning. </li></ul><ul><ul><li>Se puede observar con ethereal, tcpdump ... </li></ul></ul>
  75. 75. dsniff <ul><li>Capturar tráfico en una red conmutada </li></ul><ul><ul><li>#arpspoof 172.19.2.2 </li></ul></ul><ul><li>Se impersona a la pasarela local </li></ul><ul><ul><li>#echo “1” > /proc/sys/net/ipv4/ip_forward </li></ul></ul><ul><li>Todo el tráfico que se destina a la pasarela se hace pasar antes por el host que ejecuta arpspoof, mediante ARP poisoning. </li></ul><ul><ul><li>#tcpdump -nlt </li></ul></ul>
  76. 76. dsniff <ul><li>Ataque de DNS spoofing </li></ul><ul><ul><li>Hace que creamos que conectamos a una máquina cuando en realidad conectamos a otra </li></ul></ul><ul><ul><ul><li>Suplantar una máquina para conseguir clave de root </li></ul></ul></ul><ul><ul><li>dnsspoof </li></ul></ul><ul><ul><ul><li>Falsea respuestas DNS </li></ul></ul></ul><ul><ul><li># dnsspoof -i lo -f /root/hosts </li></ul></ul><ul><ul><li>dnsspoof: listening on lo [udp dst port 53 and not src 127.0.0.1] </li></ul></ul><ul><ul><li>172.19.232.10.32780 > 62.81.0.1.53: 31753+ A? google.com </li></ul></ul>
  77. 77. dsniff <ul><li>Ataque de DNS spoofing </li></ul><ul><ul><li>#cat /root/hosts </li></ul></ul><ul><ul><li>172.19.232.13 google.com </li></ul></ul><ul><ul><li># host google.com </li></ul></ul><ul><ul><li>google.com has address 172.19.232.13 </li></ul></ul><ul><ul><li>#tcpdump -nl </li></ul></ul><ul><ul><li>13:01:09.830481 IP 172.19.232.10.32780 > 62.81.16.197.53: 30399+ A? google.com. (28) </li></ul></ul><ul><ul><li>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) </li></ul></ul>
  78. 78. iptables <ul><li>Filtrado de paquetes </li></ul><ul><ul><li>Toda la info se transmite en paquetes </li></ul></ul><ul><ul><li>Paquete </li></ul></ul><ul><ul><ul><li>Cabecera (header). Origen, destino, tipo de paquete... </li></ul></ul></ul><ul><ul><ul><li>Cuerpo (body). Datos reales transmitidos. </li></ul></ul></ul><ul><ul><li>Protocolos con conexión, como TCP </li></ul></ul><ul><ul><ul><li>Usan el concepto de conexión </li></ul></ul></ul><ul><ul><ul><li>Paquetes de setup de la conexión antes del envío de datos reales. </li></ul></ul></ul>
  79. 79. iptables <ul><li>iptables es el software de cortafuegos de GNU/Linux. </li></ul><ul><li>Aparte de filtrar paquetes hace más cosas: </li></ul><ul><ul><li>NAT </li></ul></ul><ul><ul><li>Redirección de puertos </li></ul></ul><ul><ul><li>Modificación de paquetes </li></ul></ul><ul><ul><li>Integración con otras herramientas: con iptables+iproute2 podemos tener reservas de ancho de banda por aplicaciones. </li></ul></ul>
  80. 80. iptables <ul><li>Actualmente, en los IES se usa sobre todo para hacer redirección de puertos y NAT en el servidor: </li></ul><ul><ul><li>Hacer que los clientes pasen por Squid </li></ul></ul><ul><ul><li>Hacer que los clientes sólo puedan usar los servidores POP y SMTP de la Junta. </li></ul></ul><ul><li>También para filtrar en los clientes: </li></ul><ul><ul><li>ControlAula incluye una regla para solo permitir acceso VNC al profesor. </li></ul></ul>
  81. 81. iptables <ul><li>Al poder hacer muchas cosas, iptables es bastante complejo. </li></ul><ul><li>Vemos una introducción que nos permita: </li></ul><ul><ul><li>Entender los scripts usados </li></ul></ul><ul><ul><li>Crear nuevas reglas para proteger servicios o redirigir tráfico. </li></ul></ul><ul><ul><li>Establecer una política más segura que la usada actualmente </li></ul></ul>
  82. 82. iptables <ul><li>iptables es lo que conoce como statefull firewall . Esto significa que realiza un seguimiento de las conexiones, sabiendo que paquetes pertenecen a cada conexión (más seguro y más rapido) </li></ul><ul><ul><li>Sólo se comprueba contra las reglas el primer paquete de la conexión </li></ul></ul><ul><ul><li>Una vez permitido este paquete, y establecida la conexión, los siguientes paquetes de la misma se permiten por pertenecer a la misma conexión. </li></ul></ul>
  83. 83. iptables <ul><li>iptables se divide en dos partes: </li></ul><ul><ul><li>parte de kernel: módulos o compilado en el propio kernel. </li></ul></ul><ul><ul><ul><li>iptable_filter.ko, ipt_conntrack.ko, ipt_REDIRECT.ko, ... </li></ul></ul></ul><ul><ul><li>parte de usuario: utilidades para añadir, eliminar, modificar o listar reglas. </li></ul></ul><ul><ul><ul><li>Comando iptables </li></ul></ul></ul>
  84. 84. iptables <ul><li>Todos los paquetes pasan por una serie de tablas (colas) para ser procesados. Cada tabla se dedica a un cometido distinto: </li></ul><ul><ul><li>mangle: transformaciones de los paquetes </li></ul></ul><ul><ul><li>filter: filtrado de paquetes. Tiene 3 cadenas predeterminadas: </li></ul></ul><ul><ul><ul><li>FORWARD, INPUT, OUTPUT </li></ul></ul></ul><ul><ul><li>nat: traducción de direcciones. 2 cadenas: </li></ul></ul><ul><ul><ul><li>PREROUTING, POSTROUTING </li></ul></ul></ul>
  85. 85. iptables <ul><li>Al especificar las reglas, es necesario indicar la tabla y la cadena donde colocarla. </li></ul><ul><ul><li>Excepción: si no se indica tabla, se usa por defecto la tabla filter </li></ul></ul><ul><li>Ejemplo de como se examinan las reglas cuando llege un paquete: </li></ul><ul><ul><li>http://www.siliconvalleyccie.com/linux-hn/iptables-intro.htm </li></ul></ul>
  86. 86. iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>El kernel empieza con tres listas de reglas en la tabla filter, llamadas cadenas (chains): INPUT, OUTPUT, FORWARD </li></ul></ul>
  87. 87. iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Cuando un paquete alcanza uno de los círculos del dibujo, se examina esa cadena para decidir el destino del paquete </li></ul></ul><ul><ul><ul><li>Si la cadena dice que se tire (DROP) el paquete, éste muere aquí, pero si se acepta (ACCEPT), sigue atravesando el diagrama </li></ul></ul></ul><ul><ul><li>Cada tipo de tráfico seguirá un camino distinto a través del diagrama. </li></ul></ul>
  88. 88. iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Una cadena es una lista de reglas </li></ul></ul><ul><ul><ul><li>Cada regla dice: si la cabecera del paquete es así, hacer esto con el paquete. </li></ul></ul></ul><ul><ul><ul><li>Si la regla no coincide con el paquete, se examina la siguiente regla de la cadena </li></ul></ul></ul><ul><ul><ul><li>Finalmente, si no quedan más reglas que consultar, el kernel mira a la política (POLICY) de la cadena para decidir que hacer con el paquete. </li></ul></ul></ul><ul><ul><ul><ul><li>En un sistema seguro, la política suele decir al kernel que tire el paquete </li></ul></ul></ul></ul><ul><ul><ul><ul><li>En los I.E.S. tenemos política de aceptar por defecto, en clientes y servidor </li></ul></ul></ul></ul>
  89. 89. iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Cuando llega un paquete, primero el kernel mira su destino: esto se llama enrutamiento (routing) </li></ul></ul><ul><ul><li>Si está destinado a esta máquina, el paquete baja a la cadena INPUT. Si la pasa, el paquete llegará al proceso que lo está esperando </li></ul></ul><ul><ul><li>Si no, si el forwarding no está activado, o el kernel no sabe como reenviar el paquete, el paquete se tira </li></ul></ul>
  90. 90. iptables <ul><li>Cómo atraviesan los filtros los paquetes </li></ul><ul><ul><li>Si el forwarding está activado, y hay que reenviar el paquete, éste pasa a la cadena FORWARD. Si se acepta, el paquete se reenvía. </li></ul></ul><ul><ul><li>Un programa que se ejecuta en la máquina 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. </li></ul></ul>
  91. 91. iptables <ul><li>Comando tipo: </li></ul><ul><ul><li>#iptables -Accion Cadena [opciones] -j Target </li></ul></ul><ul><ul><ul><li>Acción: añadir, borrar, insertar ... </li></ul></ul></ul><ul><ul><ul><li>Cadena: cadena donde realizar la acción </li></ul></ul></ul><ul><ul><ul><li>Target: destino para los paquetes que coincidan con la regla: </li></ul></ul></ul><ul><ul><ul><ul><li>ACCEPT y DROP: Aceptar y tirar </li></ul></ul></ul></ul><ul><ul><ul><ul><li>SNAT, DNAT, MASQUERADE: Traduccción de direcciones </li></ul></ul></ul></ul><ul><ul><ul><ul><li>REJECT: Rechazar </li></ul></ul></ul></ul><ul><ul><ul><ul><li>LOG: registrar </li></ul></ul></ul></ul>
  92. 92. iptables <ul><li>Operaciones sobre las cadenas </li></ul><ul><ul><li>Crear una nueva cadena (-N) </li></ul></ul><ul><ul><li>Borrar una cadena vacía (-X) </li></ul></ul><ul><ul><li>Cambiar la política de una cadena (-P) </li></ul></ul><ul><ul><li>Listar las reglas en una cadena (-L) </li></ul></ul><ul><ul><li>Eliminar las reglas de una cadena (-F) </li></ul></ul><ul><ul><li>Borrar los contadores de todas las reglas de una cadena (-Z) </li></ul></ul>
  93. 93. iptables <ul><li>Operaciones sobre las reglas de una cadena </li></ul><ul><ul><li>Añadir una nueva regla a la cadena (-A) </li></ul></ul><ul><ul><li>Insertar una regla en una posición determinada de la cadena (-I) </li></ul></ul><ul><ul><li>Reemplazar una regla en alguna posición de la cadena (-R) </li></ul></ul><ul><ul><li>Borrar una regla en alguna posición de la cadena (-D) </li></ul></ul><ul><ul><li>Borrar la primera regla que coincida en una cadena (-D) </li></ul></ul>
  94. 94. iptables <ul><li>Operaciones sobre las reglas de una cadena </li></ul><ul><ul><li>Añadir reglas </li></ul></ul><ul><ul><ul><li>iptables -A ... </li></ul></ul></ul><ul><ul><ul><ul><li>La regla se añade al final de la lista, y se mirará, si se mira, la última. </li></ul></ul></ul></ul><ul><ul><li>Borrar reglas </li></ul></ul><ul><ul><ul><li>iptables -D ... </li></ul></ul></ul><ul><ul><ul><ul><li>Se borra la primera regla de la cadena que coincida con la definición dada. </li></ul></ul></ul></ul>
  95. 95. iptables <ul><li>Añadir reglas de filtrado. Ejemplo básico </li></ul><ul><ul><li>Denegar ping desde localhost </li></ul></ul><ul><ul><ul><li>iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP </li></ul></ul></ul><ul><ul><ul><ul><li>-s indica dirección de origen </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-p icmp indica protocolo ICMP </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-j DROP hace que se tire el paquete </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Nota: no se usa REJECT en ICMP para evitar tormentas ICMP: </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><li>Paquete ICMP malo </li></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><li>Paquete ICMP de respuesta malo para el otro lado </li></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><li>El otro lado vuelve a enviar un paquete ICMP malo </li></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><li>.... </li></ul></ul></ul></ul></ul></ul>
  96. 96. iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes </li></ul><ul><ul><li>Direcciones origen y destino </li></ul></ul><ul><ul><ul><li>-s, --source, --src: dirección origen del paquete </li></ul></ul></ul><ul><ul><ul><li>-d, --destination, --dst: dirección destino del paquete </li></ul></ul></ul><ul><ul><li>Pueden especifcarse: </li></ul></ul><ul><ul><ul><li>nombre DNS (linex.org) </li></ul></ul></ul><ul><ul><ul><li>dirección IP (127.0.0.1) </li></ul></ul></ul><ul><ul><ul><li>Grupos de direcciones, usando máscaras (172.19.232.0/22, 172.19.232.0/255.255.252.0) </li></ul></ul></ul>
  97. 97. iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes </li></ul><ul><ul><li>Especificando inversión </li></ul></ul><ul><ul><ul><li>Muchas opciones, incluyendo origen y destino, pueden tener los argumentos precedidos de ! (negación) para flitrar direcciones distintas de las proporcionadas </li></ul></ul></ul><ul><ul><ul><ul><li>-s ! localhost </li></ul></ul></ul></ul><ul><ul><li>Protocolo </li></ul></ul><ul><ul><ul><li>- p indica el protocolo de los paquetes. Puede usarse un número (si se conocen los valores numéricos de los protocolos IP), o TCP, UDP o ICMP. Acepta !. </li></ul></ul></ul>
  98. 98. iptables <ul><li>Especificaciones de filtrado. Opciones que se usan para especificar las características de los paquetes </li></ul><ul><ul><li>Interface </li></ul></ul><ul><ul><ul><li>-i o –in-interface: interfaz de entrada </li></ul></ul></ul><ul><ul><ul><li>-o –out-interface: interfaz de salida </li></ul></ul></ul><ul><ul><li>Los paquetes que atraviesan INPUT no tienen interfaz de salida. Los de OUTPUT no lo tienen de entrada. Sólo los de FORWARD tienen los dos. </li></ul></ul><ul><ul><li>Se pueden usar interfaces no existentes en las reglas (se activarán al levantar el interfaz) </li></ul></ul>
  99. 99. iptables <ul><li>Extensiones de las especificaciones de filtrado. </li></ul><ul><ul><li>-m multiport –sport <port, port...> </li></ul></ul><ul><ul><li>-m multiport –dport <port, port...> </li></ul></ul><ul><ul><li>-m multiport –ports <port, port...> </li></ul></ul><ul><ul><li>-m state –state <estado> </li></ul></ul><ul><ul><ul><li>Established </li></ul></ul></ul><ul><ul><ul><li>New </li></ul></ul></ul><ul><ul><ul><li>Related </li></ul></ul></ul><ul><ul><ul><li>Invalid </li></ul></ul></ul>
  100. 100. iptables <ul><li>Extensiones </li></ul><ul><ul><li>nuevos targets </li></ul></ul><ul><ul><li>nuevos tests </li></ul></ul><ul><ul><ul><li>despues de la opción -p </li></ul></ul></ul><ul><li>Extensiones TCP </li></ul><ul><ul><li>--tcp-flags [!] campos_examinar campos presentes </li></ul></ul><ul><ul><ul><li># iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY </li></ul></ul></ul><ul><ul><li>--sport, --source-port puerto/rango de puertos </li></ul></ul>
  101. 101. iptables <ul><li>Extensiones TCP </li></ul><ul><ul><li>--dport, --destination-port puerto/rango puertos </li></ul></ul><ul><li>Denegando el establecimiento de conexiones desde una máquina que hace de servidor y no debería iniciar conexiones: </li></ul><ul><ul><li># iptables -A INPUT --protocol tcp -s 192.168.1.1 –syn -j DENY </li></ul></ul>
  102. 102. iptables <ul><li>Extensiones UDP </li></ul><ul><ul><li>--sport, --source-port, --dport, --destination-port puerto/rango puertos </li></ul></ul><ul><li>Extensiones ICMP </li></ul><ul><ul><li>--icmp-type tipo ICMP [númerio o por nombre (-p icmp --help)] </li></ul></ul>
  103. 103. iptables <ul><li>Targets de las reglas: que hacer con el paquete cuando coincida con la regla </li></ul><ul><ul><li>Lás mas simples: </li></ul></ul><ul><ul><ul><li>DROP y ACCEPT </li></ul></ul></ul><ul><ul><li>Cadenas definidas por el usuario: </li></ul></ul><ul><ul><ul><li>se puede hacer que el paquete pase a otra cadena de reglas definida por el usuario si cumple una condición </li></ul></ul></ul><ul><ul><li>Extensiones con nuevos targets </li></ul></ul>
  104. 104. iptables <ul><li>Extensiones con nuevos targets </li></ul><ul><ul><li>LOG: logging en kernel de los paquetes que coincidan. </li></ul></ul><ul><ul><ul><li>--log-level </li></ul></ul></ul><ul><ul><ul><li>--log-prefix </li></ul></ul></ul><ul><ul><li>REJECT </li></ul></ul><ul><ul><ul><li>Como DROP, pero se envía un mensaje ICMP de port unreachable, en UDP, o un RESET, en TCP. </li></ul></ul></ul>
  105. 105. iptables <ul><li>Añadir reglas de filtrado </li></ul><ul><ul><li>iptables -A INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><ul><li>Deniega conexiones FTP a esta máquina: </li></ul></ul></ul><ul><ul><ul><ul><li>AL no haber opción -t, se usa la tabla por defecto, filter. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>INPUT indica que la regla debe aplicarse al tráfico cuyo destino es local. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-p tcp indica que la regla debe aplicarse a paquetes TCP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>--dport 21 indica que la regla debe aplicar a paquetes con puerto destino 21. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-j DROP indica la acción a realizar con el paquete, en este caso tirarlo. Las opciones son: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ACCEPT, DROP, REJECT, REDIRECT y MASQUERADE (sólo para la tabla nat) </li></ul></ul></ul></ul></ul>
  106. 106. iptables <ul><li>Añadir reglas de redirección de puertos </li></ul><ul><ul><li>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 </li></ul></ul><ul><ul><ul><li>-t nat usar la tabla de nat </li></ul></ul></ul><ul><ul><ul><li>PREROUTING, el cambio de puerto hay que hacerlo antes de enrutar. </li></ul></ul></ul><ul><ul><ul><li>REDIRECT, hace que el paquete sea redirigido a otro puerto en la misma máquina. </li></ul></ul></ul><ul><ul><ul><li>--to-port 3128 hace que el paquete sea redirigido al puerto 3128. </li></ul></ul></ul>
  107. 107. iptables <ul><li>Borrar reglas </li></ul><ul><ul><li>iptables -D INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><ul><li>Se especifica la misma regla, cambiando -A por -D. </li></ul></ul></ul><ul><ul><li>iptables -D INPUT 1 </li></ul></ul><ul><ul><ul><li>Borra la primera regla de la cadena </li></ul></ul></ul>
  108. 108. iptables <ul><li>Eliminación de todas las reglas: </li></ul><ul><ul><li>iptables -F </li></ul></ul><ul><ul><ul><li>elimina las reglas de filtrado, ya que por defecto se usa la tabla filter. </li></ul></ul></ul><ul><ul><li>iptables -X </li></ul></ul><ul><ul><ul><li>elimina las cadenas definidas por el usuario </li></ul></ul></ul><ul><ul><li>iptables -Z </li></ul></ul><ul><ul><ul><li>resetea los contadores </li></ul></ul></ul><ul><ul><li>iptables -t nat -F </li></ul></ul><ul><ul><ul><li>elimina las reglas de NAT. </li></ul></ul></ul>
  109. 109. iptables <ul><li>Establecer la política por defecto: </li></ul><ul><ul><li>iptables -P INPUT DROP </li></ul></ul><ul><ul><li>iptables -P OUTPUT ACCEPT </li></ul></ul><ul><ul><li>iptables -P FORWARD DROP </li></ul></ul><ul><li>Estas reglas se aplican a los paquetes que no coinciden con ninguna regla. </li></ul>
  110. 110. iptables <ul><li>Mostrar reglas </li></ul><ul><ul><li>iptables -L </li></ul></ul><ul><li>Mostrar reglas de NAT: </li></ul><ul><ul><li>iptables -t nat -L </li></ul></ul>
  111. 111. iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>netcat es una pequeña utilidad que lee y escribe datos a través 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. </li></ul><ul><ul><ul><li>Crear una conexión para comprobar si el servidor ssh es accesible: </li></ul></ul></ul><ul><ul><ul><ul><ul><li>$nc 172.21.232.2 22 </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Todo lo que escribas se manda al servidor remoto, y todo lo que el servidor envíe se muestra por pantalla. </li></ul></ul></ul>
  112. 112. iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>Ponemos una regla para denegar el acceso a VNC de un alumno a otro: </li></ul><ul><ul><ul><li>#iptables -A INPUT -i eth0 -s ! $PROFESOR -p tcp --destination-port 5900 -j DROP </li></ul></ul></ul><ul><li>Comprobamos que realmente hace lo que debe: </li></ul><ul><ul><ul><ul><li>Poner netcat escuchando en el puerto 5900 (VNC) en un alumno. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>$netcat -l -p 5900 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Comprobar que desde otro alumno no podemos acceder al servicio: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>$netcat aula-o01 5900 </li></ul></ul></ul></ul></ul>
  113. 113. iptables <ul><li>Logging </li></ul><ul><ul><li>iptables puede hacer logging de paquetes a /var/log/messages </li></ul></ul><ul><ul><li>Las reglas de log no pueden tirar paquetes, por lo que es común ver dos reglas iguales seguidas, asi: </li></ul></ul><ul><ul><ul><li># iptables -A INPUT -j LOG </li></ul></ul></ul><ul><ul><ul><li># iptables -A INPUT -j DROP </li></ul></ul></ul><ul><ul><ul><ul><li>Fallo: no indicado interfaz, se aplicará a localhost también </li></ul></ul></ul></ul>
  114. 114. iptables <ul><li>Logging </li></ul><ul><ul><li>mucha información de log, debido a los broadcasts </li></ul></ul><ul><ul><li>Mejor loguear sólo lo que viene a la máquina: </li></ul></ul><ul><ul><ul><li># iptables -A INPUT -i eth0 -d 172.19.232.10 -j LOG </li></ul></ul></ul><ul><ul><li>Mucha info aún, mejor loguear solo los inicios de conexión: </li></ul></ul><ul><ul><ul><li># iptables -A INPUT -i eth0 -d 172.19.232.10 -m state --state NEW -j LOG </li></ul></ul></ul>
  115. 115. iptables <ul><li>Configuración iptables en los clientes </li></ul><ul><ul><li>Restringir el acceso a los servicios de uso específico </li></ul></ul><ul><ul><ul><li>Sólo permitir GH desde el profesor </li></ul></ul></ul><ul><ul><li>Permitir acceso al resto de los servicios sólo desde la LAN </li></ul></ul><ul><ul><li>Loguear todos los intentos de apertura de conexiones, para tener informacion en caso de problemas </li></ul></ul>
  116. 116. iptables <ul><li>Configuración iptables en los clientes </li></ul><ul><ul><li>#iptables -A INPUT -i eth0 -s ! ab201-pro -p tcp --destination-port 5900 -j LOG </li></ul></ul><ul><ul><li>#iptables -A INPUT -i eth0 -s ab201-pro -p tcp --destination-port 5900 -j ACCEPT </li></ul></ul><ul><ul><li># iptables -A INPUT -i eth0 -s ! 172.19.232.0/22 -m state --state NEW -j LOG </li></ul></ul><ul><ul><li># iptables -A INPUT -i eth0 -s 172.19.232.0/22 -m state -j ACCEPT </li></ul></ul><ul><ul><li># iptables -P INPUT DROP </li></ul></ul><ul><ul><li># iptables -P OUTPUT ACCEPT </li></ul></ul>
  117. 117. iptbales <ul><li>Configuración iptables en el servidor </li></ul><ul><ul><li>Restringir el acceso a todos los servicios locales a la red local, permitiendo sólo el acceso desde el exterior via HTTP </li></ul></ul><ul><ul><li>Asegurar, como ya se vió, los directorios privados de /var/www </li></ul></ul><ul><ul><li>Loguear todos los inicios de conexión que se hagan hacia el servidor </li></ul></ul>
  118. 118. iptbales <ul><li>Configuración iptables en el servidor </li></ul><ul><ul><li># iptables -A INPUT -i eth0 -s 172.19.232.0/22 -m state --state NEW -j ACCEPT </li></ul></ul><ul><ul><li># iptables -A INPUT -i eth0 -m state --state NEW -p tcp --destination-port 80 -j ACCEPT </li></ul></ul><ul><ul><li>#iptables -A INPUT -i eth0 -p tcp --destination-port ! 80 -j LOG </li></ul></ul><ul><ul><li>#iptables -P INPUT DROP </li></ul></ul><ul><ul><li>#iptables -P OUTPUT ACCEPT </li></ul></ul><ul><ul><li>#iptables -P FORWARD ACCEPT </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×