Contador de Visitas


Contador web
Ranking Página

GuLcPy

No te olvides de visitar la pagina de GULCPY http://www.gulcpy.org.py
Donde podras encontrar informaciones y tutoriales referentes a GNU/Linux y conocer el camino hacia la libertad!!!!




Configurar IPTables para hacer NAT

Aclaro que encontre esta información buscando algo al respecto y me pareció muy importante para poder compartirlo con ustedes ya que seguramente a mas de uno le va a interesar y le servirá en algun u otro momento.. Bueno primeramente partamos de que es... [b]Qué es iptables?[/b][color=red][/color] [b]iptables[/b] es un conjunto de herramientas (comandos) que le permiten al usuario enviar mensajes al kernel del s.o.. El kernel tiene todo el manejo de paquetes TCP/IP metido dentro de él, no es algo aparte como lo es en otros sistemas operativos, por lo tanto todos los paquetes que van destinados a un Linux o lo atraviesan son manejados por el mismo kernel. Esto tiene sus ventajas y desventajas, si bien no me considero un experto en el tema, puedo arriesgar algunos pros y contras ... pero no nos vayamos de tema, el hecho de que el kernel maneje cada paquete de red nos permite (a través de iptables) decirle al kernel qué debe hacer con cada uno de los paquetes. Entonces, iptables es una forma de indicarle al kernel algunas cosas que debe hacer con cada paquete, esto se hace en base a las características de un paquete en particular. Los paquetes de red tienen muchas características, algunas pueden ser los valores que tienen en sus encabezados (a donde se dirigen, de donde vienen, números de puertos, etc., etc.), otra puede ser el contenido de dicho paquete (la parte de datos), y existen otras características que no tienen que ver con un paquete en particular sino con una sumatoria de ellos. La idea es lograr identificar un paquete y hacer algo con el mismo. Por lo tanto, siguiendo con el arduo (?!) trabajo de llegar a una definición de lo que es iptables, podríamos decir que ``iptables es un conjunto de comandos que permiten decirle al kernel qué hacer con ciertos paquetes que cumplan con ciertas características''. Ahora bien, las acciones que podemos indicar con iptables no son tan amplias, con iptables vamos a poder decirle al kernel que acepte un paquete (lo deje pasar), lo deniegue (lo descarte), lo rechace, lo marque o lo modifique. Hay ciertas cosas que no vamos a poder indicarle, por ejemplo que lo ``reenvie'' por alguna ruta estática TCP/IP definida. Con lo cual, con iptables vamos a poder filtrar o modificar paquetes, nada más. [b]Bueno ahora a continuación les dejo una indicación de como configurarlo[/b][size=18][color=blue][/color][/size] #!/bin/bash # # Script # Local para el ejecutable del IPTables IPT=`which iptables`; # Interfaz de red interna IF_INTERNA="eth0"; # Interfaz de red externa IF_EXTERNA="eth1"; # Definición de red interna RED_INTERNA="192.168.1.0/24" fw_start() { #activa el ruteamiento dinamico echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_dynaddr # ================ POLITICAS POR DEFECTO =================== $IPT -t filter -P INPUT DROP $IPT -t filter -P FORWARD DROP $IPT -t filter -P OUTPUT ACCEPT $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -P OUTPUT ACCEPT $IPT -t mangle -P PREROUTING ACCEPT $IPT -t mangle -P POSTROUTING ACCEPT $IPT -t mangle -P OUTPUT ACCEPT $IPT -t mangle -P INPUT ACCEPT $IPT -t mangle -P FORWARD ACCEPT # Crea una cadena con las normas de seguridad $IPT -N BLOCK $IPT -A BLOCK -p icmp --icmp-type echo-request -j DROP $IPT -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT $IPT -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT $IPT -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT $IPT -A BLOCK -m unclean -j DROP $IPT -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A BLOCK -j LOG --log-prefix "FW_ALERT: " $IPT -A BLOCK -j DROP #Cambiar la prioridad de los paquetes (Type Of Service) para agilizar Las cosas $IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j TOS --set-tos 0x10 # Libera todo el trafico local $IPT -t filter -A INPUT -i lo -j ACCEPT $IPT -t filter -A INPUT -i $IF_INTERNA -j ACCEPT $IPT -t filter -A FORWARD -i $IF_INTERNA -j ACCEPT # Libera solo FTP, SSH e WEB $IPT -t filter -A INPUT -i $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j ACCEPT # Libera la conexión para la red interna $IPT -t nat -A POSTROUTING -s $RED_INTERNA -j MASCARA # Crea un NAT para el SSH de una maquina de red interna $IPT -t filter -A FORWARD -p tcp -d 0/0 --dport 2222 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp -d 0/0 --dport 2222 -j DNAT --to 192.168.1.2:22 # Reglas para evitar packet flood $IPT -A INPUT -j BLOCK $IPT -A FORWARD -j BLOCK } fw_stop() { $IPT -t filter -P INPUT ACCEPT $IPT -t filter -P FORWARD ACCEPT $IPT -t filter -P OUTPUT ACCEPT $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -P OUTPUT ACCEPT $IPT -t mangle -P PREROUTING ACCEPT $IPT -t mangle -P POSTROUTING ACCEPT $IPT -t mangle -P OUTPUT ACCEPT $IPT -t mangle -P INPUT ACCEPT $IPT -t mangle -P FORWARD ACCEPT $IPT -t filter -F $IPT -t nat -F $IPT -t mangle -F $IPT -t filter -X $IPT -t nat -X $IPT -t mangle -X $IPT -t filter -Z $IPT -t nat -Z $IPT -t mangle -Z } fw_usage() { echo echo "$0 (start | stop | restart | clear)" echo echo "start - Ativa el firewall" echo "stop - Desativa el firewall" echo "restart - Reactiva el firewall" echo "clear - Limpa los contactores" } fw_clear() { $IPT -t filter -Z $IPT -t nat -Z $IPT -t mangle -Z } case $1 in start) fw_start; ;; stop) fw_stop; ;; restart) fw_stop; fw_start; ;; clear) fw_clear; ;; *) fw_usage; exit; ;; esac Fuente: Linux Imprimir

0 comentarios:

Publicar un comentario