Você está na página 1de 7

para tener acceso a todos los servers iptable-tnat-A-postrouting-s #RED/#mascara -o eth0 -j snat - to #ip publica #Acceso del cliente

con ip 192.168.100.9 al servicio web iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 80 -j SNAT --to 200.60.198.204 #Acceso del cliente con ip 192.168.100.9 al SSH iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 22 -j SNAT --to 200.60.198.204 #Acceso del cliente con ip 192.168.100.9 al FTP iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 21 -j SNAT --to 200.60.198.204 #acceso denegado para filtrar y q ue no acceda a nada iptable -A forward -s 192.168.2.6 -j drop // el forward no esta en la tabla nat iptable -A forward -j dorp #Para negar el acceso de usuarios al puerto 5325 al servio Firewall Iptable -A forward -d #RED/#MASCARA -P TCP -j DROP dport 5325

OTRO DE IPTABLES MAS LARGO IPTABLES Cmo trabajar con IPtables: /etc/init.d/iptables Para configurar Netfilter crearemos un script de inicio que contenga las reglas de IPtables, lo ubicaremos en /etc/init.d/iptables, le daremos permisos de ejecu cin y crearemos el enlace /etc/rc2.d/S92iptables. Veamos un /etc/init.d/iptables sencillo de ejemplo, para una poltica por defecto de DENEGAR. Es la configuracin ms segura para un firewall: por defecto todo est den egado y slo se permitir pasar por el firewall aquello que se permita explcitamente. #!/bin/sh # Configuracion de netfilter con iptables # case "$1" in start) echo "Aplicando reglas del firewall..." # Borrar la configuracion actual iptables -F iptables -X iptables -Z

# Definir la politica por defecto iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Permitir acceso a las conexiones ya establecidas iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT # Permitir acceso desde la propia maquina iptables -A INPUT -m state --state NEW -i lo -j ACCEPT # Permitir acceso al puerto 80 TCP (http) iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 80 -j ACCEPT # Permitir acceso al puerto 53 UDP (dns) iptables -A INPUT -m state --state NEW -i eth0 -p udp --dport 53 -j ACCEPT # Permitir acceso a los puertos 20 y 21 TCP (ftp) iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 20:21 -j ACCEPT # Permitir acceso a 3306 TCP (mysql) desde IP 231.45.134.23 iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT # Para compartir la conexin ppp0 a Internet desde la red local iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j MASQUERADE # y activamos el bit de forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # Loguear todo el FORWARD (maximo 1 paquete/segundo) iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix "Forward: " # Terminado echo "OK. Reglas del firewall aplicadas." ;; stop) echo "Borrando reglas del firewall..." # Borrar iptables iptables iptables la configuracin actual -F -X -Z

# Configuracin por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Terminado echo "OK. Restaurada configuracion del firewall por defecto." ;; status) iptables -nL iptables -t nat -nL ;; *) echo "Uso: $0 { start | stop | status }"

exit 1 ;; esac exit 0 CONFIGURACION DE FIREWALL Convenciones: eth0 - name of your external interface (connected to the world) eth1 - name of your internal interface (connected to the LAN) eth3 - name of your servers interface (connected to the LAN) ip_address_of_eth0 - numeric dotted quad IP address of your eth0 in the form of x .x.x.x ip_address_of_eth1 - numeric dotted quad IP address of your eth1 in the form of x.x.x.x ip_address_of_eth1 - numeric dotted quad IP address of your eth1 in the form of x.x.x.x Crear nuevo canal: iptables -N name_of_chain Borrar un canal vaco Solo para canales del usuarioiptables -X name_of_chain* *if name_of_chain is omitted, it deletes all custom chains. Change the default policy for a built-in chainiptables -P name_of_chain name_of_po licy* *DROP or ACCEPT List the rules in a chainiptables -L name_of_chain Flush the rules out of a chainiptables -F name_of_chain**if name_of_chain is omitte d, it flushes all chains. Zero the packet and byte counters on all rules in a chainiptables -Z name_of_chain Para configurar las reglas del firewall en linux utilizaremos iptables, mediante un archivo de comandos: #!/bin/sh echo "1" > /proc/sys/net/ipv4/ip_forward modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe iptable_nat modprobe ip_nat_ftp # Limpiar todas las reglas iptables -t nat -F iptables -F # Acceso total al cliente con ip 192.168.100.9 iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 -j SNAT --to 200.60.198. 204 # Acceso total a toda la red iptables -t nat -A POSTROUTING -s 192.168.100.9/255.255.255.0 -o eth0 -j SNAT -to 200.60.198.204 #Acceso del cliente con ip 192.168.100.9 al servicio web iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 80 -j SNAT --t o 200.60.198.204 #Acceso del cliente con ip 192.168.100.9 al SSH iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 22 -j SNAT --t o 200.60.198.204 #Acceso del cliente con ip 192.168.100.9 al FTP iptables -t nat -A POSTROUTING -s 192.168.100.9 -o eth0 p TCP dport 21 -j SNAT --t o 200.60.198.204 #Estableciendo politicas de los canales por defecto iptables P INPUT ACCEPT iptables P OUTPUT ACCEPT iptables P FORWARD ACCEPT

iptables t nat P PREROUTING ACCEPT iptables t nat P POSTROUTING ACCEPT #Configuracion de acceso a servidores internos #Servidor FTP iptables -t nat -A PREROUTING -p TCP -d 200.60.198.197 --dport 20 -j DNAT --to 1 0.1.0.65 iptables -t nat -A PREROUTING -p TCP -d 200.60.198.197 --dport 21 -j DNAT --to 1 0.1.0.65 #Servidor WEB iptables -t nat -A PREROUTING -p TCP -d 200.60.198.197 --dport 80 -j DNAT --to 1 0.1.0.65 #Salida para todos los servidores iptables -t nat -A POSTROUTING -s 10.1.0.65 -o eth0 -j SNAT --to 200.60.198.204 Obtencion de logs de acceso: Es necesario redirecionar la salida de los logs del kernel hacia un archivo en /etc/syslog.conf y luego reiniciar el servicio syslog mcedit /etc/syslog.conf Editar la linea 3 kern.* /var/log/kernel.log Agregar las siguientes reglas con iptables: iptables -A INPUT -j LOG --log-prefix =INPUT= iptables -A OUTPUT -j LOG --log-prefix =OUTPU= Obtencion de logs de acceso: Es necesario redirecionar la salida de los logs del kernel hacia un archivo en /etc/syslog.conf y luego reiniciar el servicio syslog mcedit /etc/syslog.conf Editar la linea 3 kern.* /var/log/kernel.log Agregar las siguientes reglas con iptables: iptables -A INPUT -j LOG --log-prefix =INPUT= iptables -A OUTPUT -j LOG --log-prefix =OUTPU=

EJEMPLO 01:::::::::: Saludo a la aficin (echo) Borrado de las reglas aplicadas actualmente (flush) Aplicacin de polticas por defecto para INPUT, OUPUT, FORWARD Listado de reglas iptables. Ojo con el orden de las reglas! #!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para proteger la propia mquina ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # A nuestra IP le dejamos todo iptables -A INPUT -s 195.65.34.234 -j ACCEPT # A un colega le dejamos entrar al mysql para que mantenga la BBDD iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT # A un diseador le dejamos usar el FTP iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Y el resto, lo cerramos iptables -A INPUT -p tcp --dport 20:21 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 22 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script EJEMPLO 02::::::::: Nota para freaks y geeks: siiii, que ya lo se, se puede mejorar este script usan do variables, se puede poner el comando con el path completo, pero limtense a hac er copy-paste. Para el resto de mortales, no olvidarse de ponerle flags de ejecu cin: chmod +x firewall1.sh o chmod 750 firewall1.sh En fin, ya se ve, un script d e los ms simple, con unas pocas reglas con las que cerramos puertos al pblico a lo s que no tienen porque tener acceso, salvo el 80. Pero cualquiera con algo de oj o se habr dado cuenta de que ni se filtra el UDP ni el ICMP. Apostara cualquier co sa a que el sistema tiene algn puerto udp abierto, y adems peligroso como el SNMP. Como he dicho anteriormente, en este tipo de firewall es recordable hacer un net stat para ver que puertos estn en estado de escucha (abiertos), y salve que un ro otkit nos haya modificado los binarios, netstat nos dar la informacin precisa que necesitamos. Hay gente que se decanta por hacerse un nmap as mismos. Cuidado: dep endiendo de cmo lo ejecutemos quiz no nos muestre todos los puertos, ya que suele mirar los bien conocidos. Imaginemos que hemos dado un repaso a nuestro sistema, y ahora si que tenemos me jor identificados los puertos tcp y udp abiertos. Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024, los reservados tanto para tcp como udp. #!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para proteger la propia mquina ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # A nuestra IP le dejamos todo

iptables -A INPUT -s 195.65.34.234 -j ACCEPT # A un colega le dejamos entrar al mysql para que mantenga la BBDD iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT # A un diseador le dejamos usar el FTP iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Cerramos rango de los puertos privilegiados. Cuidado con este tipo de # barreras, antes hay que abrir a los que si tienen acceso. iptables -A INPUT -p tcp --dport 1:1024 iptables -A INPUT -p udp --dport 1:1024 # Cerramos otros puertos que estan abiertos iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script EJEMPLO 03:::::::::: Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascara miento en iptables), con lo que se hara dos veces NAT en el firewall y en el router. Entre el router y el firewal l lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades p uede que los dos tengan IP pblica. El router se supone que hace un NAT completo hacia dentro (quiz salvo puerto 23), o sea que desde el exterior no se llega al router si no que de forma transparente se "choca" contra el firewall. Lo norm al en este tipo de firewalls es poner la poltica por defecto de FORWARD en denegar (DROP), pero eso lo vemos ms adelante. Veamos como sera este firewall-gateway: #!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet ## ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea

# que otras mquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Você também pode gostar