LinuxParty
La ventaja principal del proxy transparente es que no tienes que configurar nada en los navegadores individuales para trabajar con estos proxies.
Esta simple guía explica cómo configurar un proxy transparente con el cortafuego IPTables y Squid (DNAT) en tres fáciles pasos.
Mi programa de instalación:
i) Sistema: Sistema CPU dual Xeon HP con 8 GB de RAM (suficiente para squid).
ii) Eth0: IP: 192.168.1.1
iii) Eth1: IP: 192.168.2.1 ( red 192.168.2.0/24 (aproximadamente 150 sistemas Windows))
iv) Sistema operativo Red Hat Enterprise Linux (Siguiendo la instrucción debería funcionar con Debian y todas las otras distribuciones Linux)
Eth0 conectado a internet y eth1 conectado a lan es decir, actúan como sistema local router.
Configuración del servidor
- Paso # 1: configuración de Squid para que actúe como un proxy transparente
- Paso # 2: configuración Iptables
- a) Configurar Sistema como enrutador
- b) Remitir todas las peticiones HTTP a 3128 (DNAT)
- Paso # 3: ejecutar secuencias de comandos y se inicia el servicio de squid
En primer lugar, el servidor Squid instalado (squid uso up2date) y configurar agregando siguientes directivas para presentar:
# vi /etc/squid/squid.conf
Modificar o añadir siguientes directivas de squid:
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on acl lan src 192.168.1.1 192.168.2.0/24 http_access allow localhost http_access allow lan
Donde:
- httpd_accel_host virtuales: Squid como un acelerador de httpd
- httpd_accel_port 80: 80 es el puerto que desea enrutar
- httpd_accel_with_proxy on: Usar Squid tanto como un acelerador de httpd local y como un proxy.
- httpd_accel_uses_host_header on: Cabecera está encendido, que es el nombre de host de la URL.
- acl lan src 192.168.1.1 192.168.2.0/24: lista de control de acceso, sólo se permiten equipos de la LAN para utilizar el squid
- http_access allow localhost: acceso Squid para LAN y localhost ACL sólamente
- http_access allow lan: - ídem -
Aquí está la lista completa de squid.conf para su referencia (grep eliminará todos los comentarios y sed eliminará todas las líneas vacías)
# grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'
O intente con sed:
# cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'
Salida:
hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY hosts_file /etc/hosts refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 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 acl purge method PURGE acl CONNECT method CONNECT cache_mem 1024 MB 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 acl lan src 192.168.1.1 192.168.2.0/24 http_access allow localhost http_access allow lan http_access deny all http_reply_access allow all icp_access allow all visible_hostname myclient.hostname.com httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on coredump_dir /var/spool/squid
Configuración de iptables
A continuación, añadir las siguentes reglas para desviar todas las peticiones http (próximos al puerto 80) al puerto del servidor Squid 3128:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Aquí está el script completo. Primero configurar el sistema Linux como router y reenvía todas las peticiones HTTP con el puerto 3128
#!/bin/sh # squid server IP SQUID_SERVER="192.168.1.1" # Interface connected to Internet INTERNET="eth0" # Interface connected to LAN LAN_IN="eth1" # Squid port SQUID_PORT="3128" # DO NOT MODIFY BELOW # Clean old firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # Load IPTABLES modules for NAT and IP conntrack support modprobe ip_conntrack modprobe ip_conntrack_ftp # For win xp ftp client #modprobe ip_nat_ftp echo 1 > /proc/sys/net/ipv4/ip_forward # Setting default filter policy iptables -P INPUT DROP iptables -P OUTPUT ACCEPT # Unlimited access to loop back iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Allow UDP, DNS and Passive FTP iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT # set this system as a router for Rest of LAN iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT # unlimited access to LAN iptables -A INPUT -i $LAN_IN -j ACCEPT iptables -A OUTPUT -o $LAN_IN -j ACCEPT # DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT # if it is same system iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT # DROP everything and Log it iptables -A INPUT -j LOG iptables -A INPUT -j DROP
Guardar script de shell. Ejecutar secuencia de comandos para que el sistema actúe como un router y redirigir los puertos:
# chmod +x /etc/fw.proxy # /etc/fw.proxy # service iptables save # chkconfig iptables on
Iniciar o reiniciar el squid:
# /etc/init.d/squid restart # chkconfig squid on
Configuración de la computadora de escritorio / cliente
Apunte todos los clientes de escritorio a su dirección IP eth1 (192.168.2.1) como Router / Gateway (utilice DHCP para distribuir esta información). Usted no tendrá que configurar los navegadores individuales para trabajar con el servidor proxy.
¿Cómo puedo probar si mi proxy squid está funcionando correctamente?
Ver archivo de registro de acceso /var/log/squid/access.log:
# tail -f /var/log/squid/access.log
El comando de arriba supervisará todas las peticiones entrantes y los ingresa al archivo de registro /var/squid/access_log. Ahora bien, si alguien accede a un sitio web a través del navegador, squid registrarán información.
Problemas y soluciones
(A) Cliente FTP de Windows
Todo cliente de Escritorio que solicite una sesión FTP terminará con un error: Comando PORT ilegal.
Esto es por que no había cargado el módulo del kernel ip_nat_ftp. Sólo tienes que escribir el siguiente comando y pulsar Enter y ¡voilá!
# modprobe ip_nat_ftp
Tenga en cuenta que comando modprobe ya se añade a un script de shell (arriba).
(B) Redirección del puerto 443:
Tuve a bloquear todas las solicitudes de conexión del router a excepción de nuestro servidor proxy (192.168.1.1). Así que todos los puertos incluyendo el 443 (HTTPS / SSL). No se puede redirigir el puerto 443, extraje a partir de la lista de correo Debian: "Respuesta larga: SSL está específicamente diseñado para impedir el ataque "man-in-the-middle", y consecuente el uso de squid, de tal manera que sería lo mismo que un ataque "hombre en el medio". Puede que se puede llegar a alcanzar con éxito esto, pero no sin romper el cifrado y la certificación de que es el punto detrás de SSL ".
Por lo tanto, yo había reabrir rápidamente el puerto 443 del (firewall router) para todos mis equipos de la LAN y problema estaba resuelto.
(C) la autenticación Squid Proxy en un modo transparente
No se puede interceptar la autenticación de squid con un proxy transparente.
-
Seguridad
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros
Comentarios
# Así lo permites.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
# Así lo bloqueas
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j DROP
Aquesta instrucció esborrarà les línies que comencen amb el símbol # (comentaris) i també eliminarà les línies en blanc.
Fichero1 és el fitxer a processar (squid.conf), fichero2 serà el fitxer de destí.
¿Cómo configuramos el script i las instrucciones iptables si nuestro ordenador proxy sólo tiene una tarjeta de red?
El "script completo" es el que luego guardamos como fw.proxy, ¿verdad?
Si se reinicia el pc, ¿hay que ejecutar de nuevo el script?