mmmm supongo que si ha de ser una restricción, pero bueno lo pego aquí para mas rápido jejeje
#!/bin/bash # # # Para guardar las reglas #+ iptables-save > reglas #+ iptables-restore < reglas # # Miramos si tenemos un parametro en linea de comando if [ -n "$1" ] && [ "$1" = "q" ] then QUIET="1" else QUIET="0" fi # Registramos el inicio del firewall #FECHA=$(date +"%C%y-%m-%d %H:%M") #echo $FECHA #/usr/bin/logger -p kern.notice -t NETFILTER \ # "====== Iniciado Cortafuegos: $FECHA =========" # PARAMETRIZACION DEL SCRIPT ########################################## ### Definimos constantes para usar en el ###+ script if [ $QUIET = "0" ]; then echo " Cargando parametros..." fi # Binario de iptables IPTABLES=/sbin/iptables # INTERFACES # eth1 - conectado a internet con IP FIJA EXT_IF=eth1 EXT_IP=192.168.2.10 # eth2 - conectado a LAN LAN_IF=eth2 LAN_IP=10.0.0.1 LAN_RED=10.0.0.0/24 # lo - interfaz de loopback LOO_RED=127.0.0.0/8 # cualquier red ANY_RED=0.0.0.0/0 # MAQUINAS INTERNAS IP_SERVIDOR_FTP=10.0.0.12 IP_SERVIDOR_WEB=10.0.0.13 if [ $QUIET = "0" ]; then echo " Cargando modulos..." fi ########################################## ### Nos aseguramos que tenemos cargados ###+ los modulos necesarios modprobe ip_conntrack_irc modprobe ip_conntrack_ftp modprobe ip_nat_irc modprobe ip_nat_ftp if [ $QUIET = "0" ]; then echo " Limpiando FW..." fi ########################################## ### Limpiamos la configuracion existente # Limpiamos (flush) las reglas $IPTABLES -F # Borramos 'cadenas' de usuario $IPTABLES -X # Ponemos a cero paquetes y contadores $IPTABLES -Z # Limpiamos las reglas de NAT $IPTABLES -t nat -F # Borramos 'cadenas' de usuario de NAT $IPTABLES -t nat -X if [ $QUIET = "0" ]; then echo " Estableciendo politicas..." fi ########################################## ### Establecemos las politicas por omision ###+ de las 'cadenas' # Por omision descartamos los paquetes $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT # PREROUTING - NAT sobre la IP destino: normalmente desde inet hacia LAN # POSTROUTING - NAT sobre la IP origen: normalmente desde LAN hacia inet $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT # Relajamos la politica de salida #+ Dejamos salir paquetes de LAN_IP por LAN_IF $IPTABLES -A OUTPUT -o $LAN_IF -s $LAN_IP -j ACCEPT #+ Dejamos salir paquetes de EXT_IP por EXT_IF $IPTABLES -A OUTPUT -o $EXT_IF -s $EXT_IP -j ACCEPT if [ $QUIET = "0" ]; then echo " -> Denegacion de redes invalidas..." fi ########################################## # No admitimos desde el exterior redes locales (RFC 1918) #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 224.0.0.0/4 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 240.0.0.0/5 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s $LOO_RED -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 0.0.0.0/8 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 169.254.0.0/16 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 255.255.255.255 -j DROP #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -s $EXT_IP -j DROP # Desde el interior solo admitimos nuestra red LAN $IPTABLES -t nat -A PREROUTING -i $LAN_IF -s ! $LAN_RED -j ACCEPT if [ $QUIET = "0" ]; then echo " -> Denegacion de broadcast de NetBIOS..." fi ########################################## # Bloquear paquetes broadcast de NetBios salientes iptables -A FORWARD -p tcp --sport 137:139 -o $EXT_IF -j DROP iptables -A FORWARD -p udp --sport 137:139 -o $EXT_IF -j DROP iptables -A OUTPUT -p tcp --sport 137:139 -o $EXT_IF -j DROP iptables -A OUTPUT -p udp --sport 137:139 -o $EXT_IF -j DROP if [ $QUIET = "0" ]; then echo " Activando NAT..." fi ########################################## # Activamos el bit de forward echo 1 > /proc/sys/net/ipv4/ip_forward # Enmascaramos la salida de la LAN $IPTABLES -t nat -A POSTROUTING -s $LAN_RED -o $EXT_IF -j MASQUERADE if [ $QUIET = "0" ]; then echo " Accesos a la maquina local permitidos..." fi ########################################## ### Permitimos ciertos accesos a la maquina if [ $QUIET = "0" ]; then echo " -> loopback..." fi # Permitimos todas las conexiones del interfaz loopback $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A INPUT -i lo -s $LOO_RED -d $LOO_RED -j ACCEPT $IPTABLES -A OUTPUT -o lo -s $LOO_RED -d $LOO_RED -j ACCEPT # Permitimos el PostEnrutado de paquetes enviados localmente $IPTABLES -t nat -A POSTROUTING -o lo -s $LOO_RED -j ACCEPT if [ $QUIET = "0" ]; then echo " -> LAN..." fi # Damos acceso desde la red local $IPTABLES -A INPUT -s $LAN_RED -i $LAN_IF -j ACCEPT $IPTABLES -A OUTPUT -d $LAN_RED -o $LAN_IF -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNS..." fi # Aceptamos conexiones DNS $IPTABLES -A INPUT -s $ANY_RED -i $EXT_IF -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT $IPTABLES -A OUTPUT -d $ANY_RED -o $EXT_IF -p udp -m udp --dport 53 --sport 1024:65535 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> ntpd..." fi # Aceptamos conexiones ntpd $IPTABLES -A INPUT -p udp -m udp --dport 123 -i $EXT_IF -s $ANY_RED -j ACCEPT $IPTABLES -A OUTPUT -p udp -m udp --sport 123 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> icmp..." fi # Permitimos paquetes ICMP (ping, traceroute...) #+ con limites para evitar ataques de DoS # Aceptamos ping y pong $IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT # Aceptamos redirecciones $IPTABLES -A INPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT # Aceptamos tiempo excedido $IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT # Aceptamos destino inalcanzable $IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT if [ $QUIET = "0" ]; then echo " -> ssh..." fi # Abrimos el puerto xxxx para ssh #$IPTABLES -A INPUT -p tcp -i $EXT_IF -s $ANY_RED -m tcp --dport 22 --sport 1024:65535 -j ACCEPT $IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 22 --sport 1024:65535 -m state --state NEW -j LOG --log-prefix "[FW -SSH] " $IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 22 --sport 1024:65535 -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -A OUTPUT -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT if [ $QUIET = "0" ]; then echo " Redirecciones..." fi ########################################## ### Generamos redireccionamientos ###+ transparentes para el resto de maquinas if [ $QUIET = "0" ]; then echo " -> Proxy web transparente (Squid)..." fi #+ Con la redireccion activa (primera linea) #+ no se llega a la segunda linea #+ Para bloquear todo acceso a la web comentar #+ solo la primera linea #+ Para anular el proxy comentar las dos reglas $IPTABLES -t nat -A PREROUTING -i $LAN_IF -s $LAN_RED -p tcp --dport 80 -j REDIRECT --to-port 3128 $IPTABLES -A FORWARD -i $LAN_IF -p tcp --dport 80 -j DROP #if [ $QUIET = "0" ]; then # echo " -> Filtro de correo (P3Scan)..." #fi #+ Con la redireccion activa (primera linea) #+ no se llega a la segunda linea #+ Para bloquear todo acceso a POP comentar #+ solo la primera linea #+ Para anular el filtrado comentar las dos reglas #$IPTABLES -t nat -A PREROUTING -i $LAN_IF -s $LAN_RED -p tcp --dport 110 -j REDIRECT --to-port 8110 #$IPTABLES -A FORWARD -i $LAN_IF -p tcp --dport 110 -j DROP ###$IPTABLES -t nat -A OUTPUT -p tcp --dport 110 -m owner --owner-id p3scan -j ACCEPT ###$IPTABLES -t nat -A OUTPUT -p tcp --dport 110 -j REDIRECT --to-port 8110 if [ $QUIET = "0" ]; then echo " -> DNAT (21 y 20)..." fi # Redirigimos "$EXT_IP":2220-1 a "$IP_SERVIDOR_FTP":20-1 ###$IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 21 -j LOG --log-prefix "[FW - FTP] " $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 20 -j DNAT --to "$IP_SERVIDOR_FTP":20 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 21 -j DNAT --to "$IP_SERVIDOR_FTP":21 # SERVIDOR WEB NACHO $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 80 -j DNAT --to "$IP_SERVIDOR_WEB":80 #$IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 80 -j DNAT --to "$IP_SERVIDOR_WEB":80 # ...y conexiones salientes relacionadas (ftp pasivo) $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT # Permitimos postruteos a "$IP_SERVIDOR_FTP":20-1 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_FTP -p tcp --dport 20 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_FTP -p tcp --dport 21 -j ACCEPT # Permitimos reenvios desde el exterior a "$IP_SERVIDOR_FTP":20-1 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_FTP -p tcp --dport 20 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_FTP -p tcp --dport 21 -j ACCEPT if [ $QUIET = "0" ]; then echo " Reenvios..." fi ########################################## ### Aceptamos algunos reenvios if [ $QUIET = "0" ]; then echo " -> icmp..." fi # Permitimos paquetes ICMP (ping, traceroute...) #+ con limites para evitar ataques de DoS # Aceptamos ping y pong $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A FORWARD -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT # Aceptamos redirecciones $IPTABLES -A FORWARD -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT # Aceptamos tiempo excedido $IPTABLES -A FORWARD -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT # Aceptamos destino inalcanzable $IPTABLES -A FORWARD -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT # Aceptamos todas en LAN_IF $IPTABLES -t nat -A PREROUTING -i $LAN_IF -p icmp --icmp-type any -m limit --limit 2/s -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -p icmp --icmp-type any -m limit --limit 2/s -j ACCEPT if [ $QUIET = "0" ]; then echo " Salida general..." fi ########################################## ### Aceptamos conexiones salientes # Permitimos cualquier salida tcp desde la propia maquina $IPTABLES -A OUTPUT -o $EXT_IF -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # ...y conexiones entrantes relacionadas $IPTABLES -A INPUT -i $EXT_IF -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT # Permitimos el reenvio de paquetes enviados desde la LAN $IPTABLES -A FORWARD -i $LAN_IF -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Permitimos el NAT de paquetes enviados desde la LAN $IPTABLES -t nat -A PREROUTING -i $LAN_IF -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT # Permitimos el NAT de paquetes enviados desde inet hacia la IP publica $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT # Permitimos el NAT de paquetes enviados desde la IP publica hacia inet $IPTABLES -t nat -A POSTROUTING -o $EXT_IF -s $EXT_IP -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A POSTROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT # Permitimos el PostEnrutado de paquetes enviados localmente $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -s $LAN_RED -j ACCEPT if [ $QUIET = "0" ]; then echo " Cerrando puertos restringidos..." fi ########################################## ### Puertos restringidos (telnet, ftp, imap, pop3, etc.) ###+ Reiterativo: para pruebas $IPTABLES -A INPUT -p tcp --dport 1:1024 -j DROP $IPTABLES -A INPUT -p udp --dport 1:1024 -j DROP ###echo " ACTIVADO DEBUG..." ########################################## ### Reglas utilizadas en debug para detectar #+ paquetes no tratados todavia #+ -j LOG --log-prefix "--PR> " ###$IPTABLES -t nat -A PREROUTING -j LOG --log-prefix "[FW - PR] " ###$IPTABLES -t nat -A POSTROUTING -j LOG --log-prefix "[FW - PO] " ###$IPTABLES -A FORWARD -j LOG --log-prefix "[FW - FW] " ###$IPTABLES -A INPUT -j LOG --log-prefix "[FW - IN] " ###$IPTABLES -A OUTPUT -j LOG --log-prefix "[FW - OU] " if [ $QUIET = "0" ]; then echo " Configuracion FW terminada." echo "" echo " A continuacion podria desear:" echo " - verificar reglas: iptables -nvL && iptables -nvL -t nat" echo " - guardar reglas: iptables-save > reglas" echo " - restaurar reglas: iptables-restore < reglas" fi ########################################## exit 0 El 4 de abril de 2011 19:58, Ramón Macías Zamora < ramon.mac...@raykasolutions.com> escribió: > No llega, supongo que una restricción de la lista. > > Podrías pegar el contenido > -- > > > > Ramón Macías Zamora > Tecnología, Investigación y Desarrollo > Guayaquil - Ecuador > msn: ramon_mac...@hotmail.com > skype: ramon_macias > UserLinux# 180926 (http://counter.li.org) > Cel: 593-8-0192238 > Tel: 593 4 6044566 > > <http://www.raykasolutions.com/> > > > WEB SITES, HOSTINGS, DOMINIOS, MANTENIMIENTO DE EQUIPOS, REDES, SERVIDORES > LINUX, SOPORTE. > > > > El 4 de abril de 2011 19:55, Mario Villela Larraza < > mario.villelalarr...@gmail.com> escribió: > >> ahora si aquí esta el archivo adjunto perdón :s >> >> El 4 de abril de 2011 19:37, Ramón Macías Zamora < >> ramon.mac...@raykasolutions.com> escribió: >> >> > No llegó el adjunto :( >> > -- >> > >> > >> > >> > Ramón Macías Zamora >> > Tecnología, Investigación y Desarrollo >> > Guayaquil - Ecuador >> > msn: ramon_mac...@hotmail.com >> > skype: ramon_macias >> > UserLinux# 180926 (http://counter.li.org) >> > Cel: 593-8-0192238 >> > Tel: 593 4 6044566 >> > >> > <http://www.raykasolutions.com/> >> >> > >> > >> > WEB SITES, HOSTINGS, DOMINIOS, MANTENIMIENTO DE EQUIPOS, REDES, >> SERVIDORES >> > LINUX, SOPORTE. >> > >> > >> > >> > El 4 de abril de 2011 16:35, Mario Villela Larraza < >> > mario.villelalarr...@gmail.com> escribió: >> > >> >> Hola amigos ya hace un muy buen rato que estoy batallando con un proxy >> que >> >> quiero levantar pero no encuentro cual es el problema tengo un servidor >> >> con >> >> la squid levantado y un script (que anexo en este correo) con un >> servidor >> >> de >> >> DHCP pero no logro que las maquinas dentro de la red que pasarian por >> el >> >> proxy obtengan señal de internet ya revise y revise la configuracion de >> mi >> >> squid de echo ahorita no esta restringiendo nada, ya tengo una lista >> ACL >> >> que apara todas mis direcciones del squid pero aun asi no obtengo >> >> resultados >> >> diferentes. >> >> >> >> Así que acudo a ustedes para que me ayuden con este pequeño proyecto >> que >> >> traigo en manos esperando que todos estén bien les mando un saludo y >> >> agradesimentos de antemano. >> >> >> >> -- >> >> Mario Villela Larraza >> >> mario.villelalarr...@gmail.com >> >> Cel 0445512591926 >> >> >> >> _______________________________________________ >> >> CentOS-es mailing list >> >> CentOS-es@centos.org >> >> http://lists.centos.org/mailman/listinfo/centos-es >> >> >> >> >> > >> >> >> -- >> Mario Villela Larraza >> mario.villelalarr...@gmail.com >> Cel 0445512591926 >> >> _______________________________________________ >> CentOS-es mailing list >> CentOS-es@centos.org >> http://lists.centos.org/mailman/listinfo/centos-es >> >> > -- Mario Villela Larraza mario.villelalarr...@gmail.com Cel 0445512591926 _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es