Seguridad
IPTABLES
Realizado: Kepa Bengoetxea
[email protected]
Iptables

Referencia:
http://doc.ubuntu-es.org/Iptables
https://help.ubuntu.com/community/IptablesHowTo
https://help.ubuntu.com/community/Firestarter
https://help.ubuntu.com/community/Gufw
https://help.ubuntu.com/community/UFW
http://doc.ubuntu.com/ubuntu/serverguide/C/firewall.html
Iptables




Iptables filtra los paquetes de red.
Un fichero antes de ser enviado por la red se descompone en
paquetes red que se reensamblarán de nuevo en el ordenador
destino.
Un paquete de red es una colección de datos en diferentes tamaños
y formatos.
El paquete puede decirle a los ordenadores a lo largo del camino,
así como al ordenador destino, de dónde viene, a dónde va, qué
tipo de paquete es, y otras muchas cosas más.
Iptables.Tablas

El filtro de red del kernel tiene tres tablas:

Filter :La tabla por defecto para el manejo de paquetes de red.
Ejm:Filtrar paquetes que proceden de un puerto, etc...

Nat(Network Address Translation) : se puede utilizar para
modificar las direcciones de origen y destino grabadas en un
paquete. Ejm: que varios ordenadores de una misma red
compartan una sola dirección ip pública, y todos puedan usar
internet simultáneamente.

Mangle: Usada por tipos específicos de alteración de paquetes.
Ejm:para que todo paquete cuya dirección MAC que no
coincida con el IP asignado por el DHCP sea omitido.

Estas tablas tienen asociados un grupo de cadenas internas.

A cada cadena interna se le asocia un conjunto de reglas.
Iptables.Filter.Cadenas

La tabla filter tiene predefinidas las siguientes cadenas internas:


OUTPUT:iptables envia el paquete a esta cadena si el
sistema local es el que genera el paquete de red.
FOWARD: iptables envia el paquete a esta cadena si el
paquete procede de una máquina origen y destino diferente
al sistema local.
Para más información ver el dibujo siguiente que ha sido
recogido de:http://www.siliconvalleyccie.com/linuxhn/iptables-intro.htm#_Toc92808862


INPUT: iptables envia el paquete a esta cadena si el destino
del paquete de red es el sistema local.
Tabla.Cadena.Reglas-Objetivo



A cada cadena interna se le asocia un conjunto de reglas
Si se cumple el conjunto de reglas o regla se realiza el objetivo
(target)
Tipos de objetivos:(simil cartero)

ACCEPT: Acepta el paquete, y va a su aplicación destino

DROP: Niega el paquete, no se avisa de ello

REJECT: Niega el paquete, pero se le avisa con un error al
origen.
Tabla.Cadena.Reglas-Objetivo
Podemos ver la reglas: iptables -L (Por defecto no hay ninguna regla)
Por cada paquete que entra va pasando por todas las reglas
*filter-input
# Todas las conexiones establecidas son aceptadas
sudo iptables -A INPUT -m conntrack --ctstate
ESTABLISHED,RELATED -j ACCEPT
Tabla.Cadena.Reglas-Objetivo

Añadir reglas para filtrar paquetes de red:
-Se ACEPTA todos los paquetes que vienen por la INTERFACE
loopback:( (La interfaz loopback' es un tipo especial de interfaz que le
permite hacer conexiones consigo mismo. Por ejemplo, puede que
desee probar algún tipo de programa sin interferir con alguien más en
su red. Por convención, la dirección de red IP 127.0.0.1 ha sido
asignada específicamente para el dispositivo de pruebas)
sudo iptables -I INPUT -i lo -j ACCEPT
-Se ACEPTA todos los paquetes que entran por el PUERTO 80:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Iptables.Configuración
#internet control message protocol (Se utiliza para indicar condiciones
de error, usado en el protocolo ip)
sudo iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
#dns
sudo iptables -A INPUT -p udp --dport 5353 -d 10.10.13.6 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 5353 -d 10.20.13.6 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 5353 -d 10.30.13.6 -j ACCEPT
#ipp(internet printer protocol)-impresora conectada en red con cups
sudo iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
Iptables.Configuración
#EVITANDO INTENTOS DE SSH
#creamos una cadena SSH y SSHSCAN
sudo iptables -t filter -N SSH
sudo iptables -t filter -N SSHSCAN
#todos los paquetes que tienen como destino el puerto 22 son
enviados a la cadena SSH
sudo iptables -A INPUT -p tcp --dport 22 -j SSH
#si provienen de la mismo origen y se producen 6 intentos
#en menos de 1 minuto son tratadas por SSHSCAN
Iptables.Configuración
#se acepta todo lo que no se supone escaneo
sudo iptables -A SSH -m state --state NEW -m recent --name SSH -rsource --set -j ACCEPT
#los escaneos se logean con una indicación clara de DEMASIADOS
SSH
sudo iptables -A SSHSCAN -m limit --limit 1/minute --limit-burst 2
-j LOG --log-prefix "OJO, HAY DEMASIADOS SSH: "
#se descartan a modo que no pasan del firewall y no saturan nuestro
equipo
sudo iptables -A SSHSCAN -j DROP
Iptables.Configuración
#Se RECHAZAN TODOS los paquetes que no han sido aceptados
hasta ahora, NOTIFICANDO AL ORIGEN un mensaje de
icmp-host-prohibited:
sudo iptables -A INPUT -j REJECT --reject-with icmp-hostprohibited
-Se RECHAZAN TODOS sin notificación:
sudo iptables -A INPUT -j DROP
Iptables. Guardando

Ver el resultado obtenido:
$sudo iptables -L -v
Si apagas la máquina todas las reglas que has generado desaparecen,
para salvar la reglas usa: iptables-save y iptables-restore.
sudo bash -c "iptables-save > /etc/iptables.rules"
Nota: Si quieres utilizar iptables, desinstala firestarter
Desabilitar el firewall temporalmente vaciando las reglas del iptables:
sudo iptables -F
Iptables. Guardando

Y para que se guarden después de apagar la red o apliquen antes arrancar
la red de manera automática:
sudo gedit /etc/network/if-pre-up.d/iptablesload
#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0
sudo gedit /etc/network/if-post-down.d/iptablessave
#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
-A - Append this rule to a rule chain. Valid chains for what we're doing are INPUT, FORWARD and OUTPUT, but we
mostly deal with INPUT in this tutorial, which affects only incoming traffic.
-L - List the current filter rules.
-m conntrack - Allow filter rules to match based on connection state. Permits the use of the --ctstate option.
--ctstate - Define the list of states for the rule to match on. Valid states are:
NEW - The connection has not yet been seen.
RELATED - The connection is new, but is related to another connection already permitted.
ESTABLISHED - The connection is already established.
INVALID - The traffic couldn't be identified for some reason.
-m limit - Require the rule to match only a limited number of times. Allows the use of the --limit option. Useful for
limiting logging rules.
--limit - The maximum matching rate, given as a number followed by "/second", "/minute", "/hour", or "/day" depending
on how often you want the rule to match. If this option is not used and -m limit is used, the default is "3/hour".
-p - The connection protocol used.
--dport - The destination port(s) required for this rule. A single port may be given, or a range may be given as start:end,
which will match all ports from start to end, inclusive.
-j - Jump to the specified target. By default, iptables allows four targets:
ACCEPT - Accept the packet and stop processing rules in this chain.
REJECT - Reject the packet and notify the sender that we did so, and stop processing rules in this chain.
DROP - Silently ignore the packet, and stop processing rules in this chain.
LOG - Log the packet, and continue processing more rules in this chain. Allows the use of the --log-prefix
and --log-level options.
--log-prefix - When logging, put this text before the log message. Use double quotes around the text to use.
--log-level - Log using the specified syslog level. 7 is a good choice unless you specifically need something
else.
-i - Only match if the packet is coming in on the specified interface.
-I - Inserts a rule. Takes two options, the chain to insert the rule into, and the rule number it should be.
-I INPUT 5 would insert the rule into the INPUT chain and make it the 5th rule in the list.
-v - Display more information in the output. Useful for if you have rules that look similar without using -v.
-s --source - address[/mask] source specification
-d --destination - address[/mask] destination specification
Descargar

Seguridad - Departamento de Lenguajes y Sistemas