You are on page 1of 5

Segn la Wikipedia, iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir polticas de filtrado del

trfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errnea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de seguimiento de conexiones, o queue, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prcticamente todas las distribuciones de Linux actuales. Chequear si tenemos iptables instalado:
# dpkg -l iptables

Como obtener la ubicacin del binario:


# which iptables

En caso de que la utilidad no este instalada


# apt-get update & & apt-get install iptables

Los Archivos Principales en Debian * /etc/init.d/iptables INIT script para start|stop|restart el servicio (y salvar las reglas agregadas). Este archivo ya no esta por desde Sarge pero todavbia puede ser obtenido (les voy a ensear como). * /var/lib/iptables Lugar en Debian para las reglas activas e inactivas iptables-save counter files (i.e. las reglas salvadas). * /var/lib/iptables/active Contadores Activos (Mas sobre esto Despues) * /var/lib/iptables/inactive Contadores Inactivos * /sbin/iptables El Binario de la Utilidad de Administracion. Un poco sobre IPTables Para ver cuales reglas tenemos actualmente, ejecutamos: # iptables -nvL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination * INPUT Lleva acabo las reglas para el trafico dirijido a este servidor. * FORWARD Lleva acabo las reglas para el trafico que sera dirijido a una mquina con un IP detras de este servidor (i.e. si esta maquina sirve como firewall para otros servidores). * OUTPUT Lleva acabo las reglas para el trafico que viene de este servidor hacia la internet . Principalmente estaremos tratando con el trfico dirigido a este servidor, y estaremos tratando reglas para la Cadena INPUT. Cuando el trafico pase por el kernel, determinara un OBJETIVO basado en si el paquete cumple con una regla o no. Objetivos generales son

* ACCEPT Trafico aceptado para la entrega. * REJECT Trafico rechasado, enviando up paquete de regreso a su origen. * DROP El trafico es denegado. Nada es enviado al lugar de origen. Configurando Las Reglas Es importante mencionar que el orden en el cual las reglas aparecen es importante. Por Ej. si la primera regla es denegar todo entonces no importa que permitas especificamente, sera denegado. Tambien es importante mencionar que nada que hagas es salvado en disco hasta que ejecutes iptables-save. Todos los contadores/reglas estn en memoria. Cada vez el servidor reinicie, o ejecutemos iptalbes flush todo en lo que trabajaste est perdido. Personalmente yo trabajo con un bash script llamado iptables-rules.sh, que me permite tener todo comentado y organizado. Primero lo Importante Es muy importante que si estn trabajando en este server remotamente por ssh, que hagan el esfuerzo de no bloquearse el acceso. Por eso nuestra primera regla ser para asegurar que pase lo que pase puedan ingresar por medio de ssh desde mi direccion IP.
# iptables -A INPUT -s 192.168.0.10 -d 192.168.0.254 -p tcp --dport 22 -j ACCEPT

Decodifiquemos eso: * -A => Le dice a iptables que abra esta regla para la cadena INPUT * -s => Direccin de origen. Esta regla solo pertenece al trfico proveniente de esta IP. Sustituya con la direccin IP desde donde estamos generando el SSH. * -d => Direccin de Destino. Esta regla solo pertenece al trfico que va en direccin a esta IP. sustituya por la direccin IP de este Servicio. * -p => Protocolo. Trfico especfico el cual es TCP. * dport => Puerto de Destino. Especificando trfico que es TCP puerto 22 (SSH). * -j => Salto. Si todo funciona en esta regla saltar para ACCEPT (aceptar) A continuacin, vamos a usar unas reglas estndar para trfico general de la red. Esto va un poco ms lejos de lo bsico, de cualquier forma iptables puede determinar el state(estado) en el cual est el paquete. Esto tiene que ver con comunicacin TCP. por ejemplo, el saludo de 3 vas entre dos servidores cuando estn transmitiendo datos. * NEW => Server1 conecta con Server2 publicando un paquete SYN (Synchronize). * RELATED => Server 2 recibe un paquete SYN, y despus responde con un paquete SYN-ACK (Synchronize Acknowledgment). * ESTABLISHED => Server 1 recibe el paquete SYN-ACK y despus responde con el paquete final ACK (Acknowledgment). Despus de que este saludo de 3 vas esta completo, el trfico esta ahora ESTABLECIDO. en orden para que este tipo de comunicacin TCP se realice, algo similar a estas 3 reglas es necesario:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

La ltima regla obviamente permite que cualquier trfico salga del servidor. Ahora que tenemos esto bsico establecido, miremos lo que iptables tiene en lista para nuestras reglas:
# iptables -nvL

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp 192.168.0.10 192.168.0.254 tcp dpt:ssh ACCEPT all anywhere anywhere state RELATED,ESTABLISHED Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all anywhere anywhere state RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all anywhere anywhere state NEW,RELATED,ESTABLISHED Algunos ejemplos MYSQL (Allow Remote Access To Particular IP): iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.254 -p tcp dport 3306 -j ACCEPT SSH: iptables -A INPUT -d 192.168.0.254 -p tcp dport 22 -j ACCEPT Sendmail/Postfix: iptables -A INPUT -d 192.168.0.254 -p tcp dport 25 -j ACCEPT FTP: (Notice how you can specify a range of ports 20-21) iptables -A INPUT -d 192.168.0.254 -p tcp dport 20:21 -j ACCEPT Passive FTP Ports Maybe: (Again, specifying ports 50000 through 50050 in one rule) iptables -A INPUT -d 192.168.0.254 -p tcp dport 50000:50050 -j ACCEPT HTTP/Apache iptables -A INPUT -d 192.168.0.254 -p tcp dport 80 -j ACCEPT SSL/Apache iptables -A INPUT -d 192.168.0.254 -p tcp dport 443 -j ACCEPT IMAP iptables -A INPUT -d 192.168.0.254 -p tcp dport 143 -j ACCEPT IMAPS iptables -A INPUT -d 192.168.0.254 -p tcp dport 993 -j ACCEPT POP3 iptables -A INPUT -d 192.168.0.1 -p tcp dport 110 -j ACCEPT POP3S iptables -A INPUT -d 192.168.0.254 -p tcp dport 995 -j ACCEPT Any Traffic From Localhost: iptables -A INPUT -d 192.168.0.254 -s 127.0.0.1 -j ACCEPT ICMP/Ping: iptables -A INPUT -d 192.168.0.254 -p icmp -j ACCEPT

Salvando las Reglas Con el script init, salvar las reglas es relamente facil. una vez estes contento con tu configuracin , solo hacer lo siguiente: El antiguo script init ya no esta en Sarge por defecto, pero todavia esta por ahi para su uso por legado. La nueva forma de uso es /etc/network/if-up.d y /etc/network/if-down.d para el script iptables. En caso de que quieran utilizar init
gunzip /usr /share/doc/iptables/examples/oldinitdscript.gz chmod +x /etc/init.d/iptables mkdir /var/lib/iptables chmod 700 /var/lib/iptables -c > /etc/init.d/iptables

Reglas Activas Las reglas Activas son aquellas que se cargan cuando iptables esta iniciando:
/etc/init.d/iptables save active

Esto salva tus reglas en /var/lib/iptables/active. Reglas Inactivas Tambin pueden configurar un segundo grupo de reglas cuando paran iptables llamado inactivo. iptables realmente no para, solamente limpia las reglas que estn activas y carga las inactivas.
/etc/init.d/iptables stop

Por eso, pueden poner reglas inactivas, y salvarlas con:


/etc/init.d/iptables save inactive

Salvado Manual y Restauracion Tambien pueden usar manualmente las utilidades iptables-save y iptables-restore de esta forma: Salvar las reglas a un archivo
iptables-save > /root/iptables -save.out

Restaurar las reglas


iptables-restore -c /root/iptables -save.out

la -c dice iptables-restore que este es el archivo creado usando iptables-save, que manda las reglas como contadores. Tips And Tricks Redireccionamiento de puertos Supongamos que quisieran acomodar a clientes que no pueden connectarse en el puerto 25 por medio de su ISP. esto redireccionara cualquier trafico dirigido al IP 10.1.1.1 (puerto 26) y enviarlo hacia el IP 10.1.1.1 (puerto 25): iptables -A PREROUTING -p tcp -m tcp -d 10.1.1.1 dport 26 -j DNAT to 10.1.1.1:25

O talvez necesiten hacer esto: iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp dport 26 -j REDIRECT to-ports 25 Mascara NAT iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -d ! 10.10.10.0/24 -j MASQUERADE sysctl -w net.ipv4.ip_forward=1 Donde 10.10.10.0 es la red a la cual estan sirviendo de mscara.

You might also like