Mejora, verificacion y Sugerencia de Script Proxy-Firewall

Forums: 

Hola amigos, queria pedirles ayuda con sugerencias para mi script de configuracion de mi Proxy-firewall, ya que tengo problemas con el paso de FTP por este, me parece que es por el modo pasivo por que logra conectarse, pero no me logra mostrar el arbol de directorios. Tambien me gustaria poder establecer horarios para que accedan a internet. Acontinuacion les pongo el script de mi archivo Firewall asi como mi squid.conf. Gracias de ante mano por su ayuda y/o sugerencias.

firewall

#!/bin/sh
echo "Aplicando Reglas de Firewall..."
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

echo "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

echo "Filtrando Accesos al recurso..."
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
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

echo "Abrimos el acceso a puertos de correo..."
# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrimos el puerto 110 del pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
# Abrimos el puerto 143 del imap
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 143 -j ACCEPT
# Abrimos el puerto 21 del FTP
#iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 21 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

echo "Filtrando accesos al exterior desde nuestra Lan..."
# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
# Aceptamos que vayan a puertos 25
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
# Aceptamos que vayan a puertos 110
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT
# Aceptamos que vayan a puertos 143
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 143 -j ACCEPT
# Aceptamos que vayan a puertos 21 - FTP
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 21 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING
#echo -n Activando Enmascaramiento de la red
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 maquinas 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

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

# Fin del script

squid.conf

#WELCOME TO SQUID 2.6.STABLE5

http_port 3128

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
cache_mem 50 MB
cache_dir ufs /var/spool/squid 400 16 256
ftp_user sistemas@xxx.com
ftp_passive off

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
#permite la conexion, mediante CONNECT, a puertos tipicos SSL: 443 y 563
acl SSL_ports port 443 563 5000 25 110 143 25
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl purge method PURGE
acl CONNECT method CONNECT
#####################################################
#################LISTAS DE ACCESO####################
#Lista de dominios permitidos
acl sitepermitidos dstdomain "/etc/squid/listas/sitepermitidos"
#Lista de extensiones prohibidas para su descarga
acl extNegadas urlpath_regex "/etc/squid/listas/filenopermitidos"
#lista de Red Permitida
acl redpermitida src "/etc/squid/listas/redpermitida"
#Lista de Red No Permitida
acl rednopermitida src "/etc/squid/listas/rednopermitida"
#Lista de Acceso Total
acl webtotal src "/etc/squid/listas/webtotal"
######################################################
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
##############################################
#ESTABLECIENDO PERMISOS
http_access allow localhost

http_access allow webtotal
http_access allow redpermitida sitepermitidos !extNegadas
#http_access deny rednopermitida

http_access deny all
http_reply_access allow all
########################################################
cache_mgr sistemas@xxx.com
icp_access allow all
cache_effective_group proxy
visible_hostname localhost
error_directory /usr/share/squid/errors/Spanish
coredump_dir /var/spool/squid

El script que has posteado

Imagen de damage

El script que has posteado esta bien basico, le faltan algunas cosas entre ellas esto:

/sbin/depmod -a
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

Tienes servicios como correo, y ftp en tu server? porque veo tienes cadenas de INPUT para esos puertos, si no es así quitalas estan demás, debes mejorarlo bastante para evitar muchas cosas te doy algunas cosas más:

modprobe ipt_REJECT
modprobe ipt_TOS
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe iptable_mangle
modprobe iptable_nat
modprobe ip_nat_irc

echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

Todo lo anterior debes colocarlo al inicio del script antes de las politicas por defecto.

Saludos.

Keep The Fire Burning.....
Stryper 1988