#!/bin/bash if [ ! "`lsmod |grep iptable`" ]; then modprobe ipt_MASQUERADE fi iptables=/usr/bin/iptables echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/ip_forward EXTIP=`/sbin/ifconfig | grep -A 4 eth0 | awk '/inet/ { print $2 } ' | sed -e s/addr://` #echo IP externa: $EXTIP # se limpian las tablas $iptables -F INPUT $iptables -F OUTPUT $iptables -F FORWARD $iptables -t nat -F # por defecto, se deniega la entrada a todo $iptables --policy INPUT ACCEPT $iptables --policy OUTPUT ACCEPT $iptables --policy FORWARD DROP # Cerramos el Squid $iptables -A INPUT -i eth0 -p udp --dport 8080 -j DROP $iptables -A INPUT -i eth0 -p tcp --dport 8080 -j DROP # Puertos por encima del 1024 $iptables -A INPUT -i eth0 -p tcp ! --syn --dport 1024: -j ACCEPT $iptables -A INPUT -i eth0 -p udp --dport 1024: -j ACCEPT $iptables -A INPUT -i eth0 -p tcp --dport 1024: -j ACCEPT #Esto es para que funcione la base de datos $iptables -A INPUT -s 127.0.0.1 -p tcp --dport 5432 -j ACCEPT $iptables -A OUTPUT -s 127.0.0.1 -p tcp --dport 5432 -j ACCEPT # Y esto otro para el webmin $iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 1023 -j ACCEPT $iptables -A OUTPUT -s 192.168.10.0/24 -p tcp --dport 1023 -j ACCEPT # servicios que tienen que estar abiertos para todos $iptables -A INPUT -p tcp --dport www -j ACCEPT $iptables -A INPUT -p tcp --dport 443 -j ACCEPT $iptables -A INPUT -p tcp --dport smtp -j ACCEPT $iptables -A INPUT -p tcp --dport domain -j ACCEPT $iptables -A INPUT -p udp --dport domain -j ACCEPT $iptables -A INPUT -p tcp --dport pop3 -j ACCEPT # Opciones para la red local RED Local #$iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport ssh -j ACCEPT #$iptables -A INPUT -p tcp -s 213.4.119.201 --dport ssh -j ACCEPT $iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport pop3 -j ACCEPT $iptables -A INPUT -p tcp -s 213.4.119.201 --dport pop3 -j ACCEPT $iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 8080 -j ACCEPT $iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 8080 -j ACCEPT $iptables -A INPUT -p tcp -s 213.4.119.192/255.255.255.192 --dport 8080 -j ACCEPT $iptables -A INPUT -p udp -s 213.4.119.192/255.255.255.192 --dport 8080 -j ACCEPT # BackHand $iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 4445 -j ACCEPT # Webmin $iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 1023 -j ACCEPT # aceptamos respuestas a ping $iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT $iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # connection tracking $iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $iptables -A INPUT -s localhost -j ACCEPT # Para nosotros, todo aceptado #$iptables -A INPUT -s 192.168.10.0/255.255.255.0 -j ACCEPT #$iptables -A INPUT -s 213.4.119.201 -j ACCEPT #$iptables -A INPUT -s 213.4.119.203 -j ACCEPT $iptables -A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT # Permitir a la red el forward $iptables -A FORWARD -s 192.168.10.0/255.255.255.0 -j ACCEPT $iptables -A FORWARD -s 213.4.119.201 -j ACCEPT $iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # NAT $iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Lo mismo pero con SNAT #$iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 0.0.0.0:1-65535 # Transparent Proxy $iptables -t nat -A PREROUTING -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080 # Posible flood $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT # Escaneo de puertos $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # Ping chungo $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # By Rusty Russell, forward de ftp de una máquina a otra if [ ! "`lsmod |grep ip_nat_ftp`" ]; then modprobe ip_nat_ftp fi # FTP bounce! $iptables -A FORWARD -d 213.4.119.201 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp --dport ftp ! -s 192.168.10.0/24 -j DNAT --to 213.4.119.201 $iptables -t nat -A POSTROUTING -p tcp --dport ftp ! -s 192.168.10.0/24 -d 213.4.119.201 -j SNAT --to 213.4.119.202 # FTP bounce! (kingu) $iptables -A FORWARD -d 192.168.10.51 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp --dport 5800 ! -s 192.168.10.0/24 -j DNAT --to 192.168.10.51 $iptables -t nat -A POSTROUTING -p tcp --dport 5800 ! -s 192.168.10.0/24 -d 192.168.10.51 -j SNAT --to 192.168.10.1 $iptables -t nat -A PREROUTING -p tcp --dport 5900 ! -s 192.168.10.0/24 -j DNAT --to 192.168.10.51 $iptables -t nat -A POSTROUTING -p tcp --dport 5900 ! -s 192.168.10.0/24 -d 192.168.10.51 -j SNAT --to 192.168.10.1 # IRC bounce! (jorge) $iptables -A FORWARD -d 192.168.10.5 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp --dport 6667 ! -s 192.168.10.0/24 -j DNAT --to 192.168.10.5 $iptables -t nat -A POSTROUTING -p tcp --dport 6667 ! -s 192.168.10.0/24 -d 192.168.10.5 -j SNAT --to 192.168.10.1 # Cerramos todo lo no abierto explícitamente $iptables -A INPUT -j DROP