Cursos Servidores con Centos 6
Sistema Operativo ALDOS
Dezoft

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

 Índice > Todo acerca de Linux > Seguridad Nuevo tema Publicar Respuesta
 squid como proxy transparente en centos 6
Tema anterior Tema siguiente
   
tuxmax
Publicado en 27/07/12 06:20 (Leído 19652 veces)  

Nuevo
Forum User

Inscrito: 27/07/12 Publicaciones: 2
Estimados:

Estoy configurando un servidor con squid + iptables en modo transparente (por lo que he leído esto se usa para no pasar los parámetros del proxy en cada Pc cliente). pero el problema que tengo es que mis clientes no navegan por internet y debo configurar el proxy en cada pc para que estos puedan navegar por internet, aplique las reglas en iptables para redireccionar pero no a funcionado, es por eso que solicito de su ayuda para areglar este problema, estas son mis configuraciones de iptables y squid 3.1.10

Nota: las reglas de iptables son las que he recopilado de varias paginas con información de iptables

la configuración de red de mis clientes es:

IP: 192.168.1.x
netmask: 255.255.255.0
Puerta de enlace: 192.168.1.1
DNSPrimario: 192.168.1.1

=========================================
eth0 = internet ==> 200.27.4.7
eth1 = Lan ==> 192.168.1.1
===================
PHP Formatted Code
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#### Reglas para encontrar puertos dinamicos de escucha FTP ####
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Ese peazo de bit que hay que habilitar
#echo 1 > /proc/sys/net/ipv4/ip_forward

# Que me haga log de todo el forward
/sbin/iptables -A FORWARD -j LOG
#/sbin/iptables -A INPUT -j LOG
#/sbin/iptables -A OUTPUT -j LOG

# Reenvío de paquetes desde una interfaz  de red local (eth1) hacia una interfaz de red pública (eth0):
#/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

## He aqui el forward para la LAN, una regla mágica
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 192.168.1.1

# Proxy Transparent: peticiones al puerto 80 redirigir al SQUID(3128)
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir

# Operar en localhost sin limitaciones
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -j ACCEPT

# Permitir ping hacia fuera, desde la propia maquina

/sbin/iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT && echo "Aceptamos ICMP request hacia fuera"
/sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT && echo "Aceptamos ICMP reply hacia dentro"

# Permitir ping hacia fuera, desde la red interna
/sbin/iptables -A FORWARD -i eth1 -p icmp --icmp-type echo-request -j ACCEPT && echo "Aceptamos ICMP request a todos"
/sbin/iptables -A FORWARD -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT && echo "Aceptamos ICMP reply a todos"

# Aceptar reenviar los paquetes que son parte de conexiones existentes (ESTABLISHED) o relacionadas de tráfico entrante desde la interfaz eth1 para tráfico saliente por la interfaz eth0:

/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitir paquetes en el propio muro cortafuegos para tráfico saliente a través de la interfaz eth0 que son parte de conexiones existentes o relacionadas:

/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitimos que la maquina pueda salir a la web
/sbin/iptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

# Si se desea permitir conexiones desde clientes Open SSH remotos
/sbin/iptables -A INPUT -p tcp -m tcp --sport 22 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 --tcp-flags ALL SYN -j LOG

# Ya tambien a webs seguras
/sbin/iptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

# Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-p tcp) para los puertos (--destination-port) de los protocolos SMTP (25), HTTP(80), HTTPS (443) y SSH (22):
/sbin/iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 25 --syn -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 80 --syn -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 443 --syn -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 22 --syn -j ACCEPT

## SALIDA FTP - Para que el servidor se pueda conectar a FTPs
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
# ftp activo
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
# ftp pasivo
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


# Permitimos la consulta a un primer DNS
/sbin/iptables -A INPUT -s 200.29.4.65 -p udp -m udp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 200.29.4.65 -p udp -m udp --dport 53 -j ACCEPT

# Permitimos la consulta a un segundo DNS
/sbin/iptables -A INPUT -s 200.29.4.66 -p udp -m udp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 200.29.4.66 -p udp -m udp --dport 53 -j ACCEPT

# A su vez no se desea que el servidor sea victima de ataques de fuerza bruta, se ingresa la siguiente sintaxis, De esta manera se rechazan las conexiones en la tarjeta publica del servidor (eth0) para el servicio SSH después de 2 intentos de conexión en un intervalo de 40 segundos.

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 40 --hitcount 2 -j DROP

## Telnet solo Dejar salir hacia fuera, desde red interna y la propia maquina

/sbin/iptables -A FORWARD -i eth1 -p tcp --dport 23 -s 192.168.1.0/24 -j ACCEPT && echo "Aceptamos telnet a traves"

/sbin/iptables -A OUTPUT -p tcp --dport 23 -j ACCEPT && echo "Aceptamos Telnet hacia fuera"

# Dejar entrar paquetes de las conexiones establecidas, hacia la red interna y la propia maquina

/sbin/iptables -A FORWARD -i eth0 -p tcp -m tcp --sport 23 -m state --state 'RELATED' --state 'ESTABLISHED' -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 23 -m state --state 'RELATED' --state 'ESTABLISHED' -j ACCEPT


# También se pueden denegar algunos puertos élites de crackers por medio de la siguiente sintaxis;

/sbin/iptables -A OUTPUT -o eth1 -p tcp --dport 31337 --sport 31337 -j DROP
/sbin/iptables -A FORWARD -o eth1 -p tcp --dport 31337 --sport 31337 -j DROP
/sbin/iptables -A OUTPUT -o eth1 -p tcp --dport 7100 --sport 31337 -j DROP
/sbin/iptables -A FORWARD -o eth1 -p tcp --dport 7100 --sport 31337 -j DROP
 

===========================================================================


SQUID

PHP Formatted Code
#
# Recommended minimum configuration:
#
visible_hostname proxy
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl permitidos src "/etc/squid/listas/permitidos"
acl limitados src "/etc/squid/listas/limitados"
acl porno url_regex "/etc/squid/listas/porno"
acl dominios-denegados dstdomain "/etc/squid/listas/dominios"
acl extensiones urlpath_regex "/etc/squid/listas/extensiones"

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
#acl localnet src fc00::/7       # RFC 4193 local private network range
#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
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 CONNECT method CONNECT

acl FTP proto FTP
always_direct allow FTP

# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
#http_access allow localhost
http_access allow permitidos
http_access allow limitados !porno !dominios-denegados !extensiones

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 192.168.1.1:3128 intercept

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 5120 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

ftp_passive on
ftp_sanitycheck on

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
 
Perfil
 Citar
Joel Barrios Dueñas
Publicado en 27/07/12 06:53  

Admin
Site Admin

Inscrito: 17/02/07 Publicaciones: 1724
País:Mexico
Gracias a las redes sociales y otros servicios que trabajan por HTTPS, hoy en día resulta poco práctico configurar proxies en modo transparente precisamente porque HTTPS no puede ser puesto en modo transparente a través de Squid.

Para automatizar la configuración de clientes, dale una leída al siguiente manual:

http://www.alcancelibre.org/staticpages/index.php/como-wpad
 
Perfil Sitio Web
 Citar
tuxmax
Publicado en 27/07/12 08:03  

Nuevo
Forum User

Inscrito: 27/07/12 Publicaciones: 2
Muchas gracias,

Por aclarar mi duda leyendo el link me quedo mas claro el tema del proxy transparente.

y para evitar la fatiga de la configuracion de los clientes aproveche el controlador de dominio de la empresa para pasarles la configuracion del proxy a los clientes por medio de una politica de dominio, asi cuando los usuarios inician sus sesiones el DC les da la configuracion del proxy.

por si les interesa esto lo pueden logran en:

-- menu start ==> Programs ==> administrative tools ==> Group policy Management

-- buscar domain policy
-- habilitar user configuration, selecionar Windows Setting, luego internet explorer maintenance, conection/proxy setting

o también

Menu Inicio == ejecutar gpedit.msc y seguie la misma ruta anterior.

espero a alguien mas le pueda servir esto.

Saludos,

y muchas gracias


 
Perfil
 Citar
Contenido generado en: 0,31 segundos Nuevo tema Publicar Respuesta
 Todas las horas son UTC. Hora actual 09:46 .
Tema normal Tema normal
Tema persistente Tema persistente
Tema cerrado Tema cerrado
Nueva publicación Nueva publicación
Persistente con nueva publicación Persistente con nueva publicación
Cerrado con nueva publicación Cerrado con nueva publicación
Ver publicaciones anónimas 
Usuarios anónimos pueden publicar 
Se permite HTML Filtrado 
Contenido censurado