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.macias@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_macias@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.villelalarraza@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.macias@raykasolutions.com> escribió:
No llegó el adjunto :(
Ramón Macías Zamora Tecnología, Investigación y Desarrollo Guayaquil - Ecuador msn: ramon_macias@hotmail.com skype: ramon_macias UserLinux# 180926 (http://counter.li.org) Cel: 593-8-0192238 Tel: 593 4 6044566
WEB SITES, HOSTINGS, DOMINIOS, MANTENIMIENTO DE EQUIPOS, REDES,
SERVIDORES
LINUX, SOPORTE.
El 4 de abril de 2011 16:35, Mario Villela Larraza < mario.villelalarraza@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.villelalarraza@gmail.com Cel 0445512591926
CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
-- Mario Villela Larraza mario.villelalarraza@gmail.com Cel 0445512591926
CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es