Proxy Iptables y SQUID

Proxy Iptables



− MANGLE
− NAT: reglas PREROUTING, POSTROUTING
− FILTER: reglas INPUT, OUTPUT, FORWARD

Comandos:



También está la opción de bloquear la dirección IP 192.168.1.10 para realizar ping desde nuestro nuestro servidor:

  • iptables -A INPUT -s 192.168.1.10 -p icmp -j DROP

Después, bloquear las direcciones IP 192.168.1.20, 192.168.1.30, 192.168.1.40, 192.168.1.50 para que no realicen PING a nuestro servidor (en una sola regla):

  • iptables -A INPUT -s 192.168.1.20,192.168.1.30,192.168.1.40,192.168.1.50 -p icmp -j DROP

Bloquear toda la subred 192.168.2.0/24 para que no realicen PING a nuestro servidor, excepto la dirección IP 192.168.2.20 que sí se permitiría:

  • iptables -A INPUT -s 192.168.2.20 -p icmp -j ACCEPT
    iptables -A INPUT -s 192.168.2.0/24 -p icmp -j DROP

También para bloquear la dirección IP de 192.168.4.50 para que nosotros no podamos hacer ping.

  • iptables -A OUTPUT -d 192.168.4.50 -p icmp -j DROP

Y bloquear las direcciones IP 192.168.4.51 y 192.168.4.52 para que nosotros no podamos hacer ping.

  • iptables -A OUTPUT -d 192.168.4.51,192.168.4.52 -p icmp -j DROP

Bloquear el acceso a www.google.es desde iptables.

Tal y como podéis ver, el funcionamiento es bastante sencillo con las reglas basadas en IP con origen y destino. También podríamos usar el módulo iprange para configurar un rango de IPs:

Bloquear un rango de direcciones IP que van desde 192.168.5.1 hasta la dirección 192.168.5.50 para que no puedan hacer ping desde nuestro servidor.

  • iptables -A OUTPUT -m iprange –dst-range 192.168.5.1-192.168.5.50 -p icmp -j DROP

También podemos filtrar de forma más avanzada el protocolo ICMP. Imaginemos que tenemos un usuario que quiere poder hacer ping a cualquier host, pero, sin embargo, no quiere que NADIE le pueda hacer ping a él. ¿Cómo lo podemos hacer con iptables si el propio PING tiene comunicación bidireccional?

  • iptables -A INPUT -s IP -p icmp –icmp-type echo-request -j DROP

SQUID

Cómo configurar un Servidor Proxy con Squid en Ubuntu 24.04 LTS









Instalación con Mariano:
 
sudo apt-get install squid -y

sudo systemctl status squid

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.orin

sudo nano /etc/squid/squid.conf

Control+W Y buscamos "http_port 3128" y vemos que es el puerto que utiliza

sudo ufw allow 3128/tcp

sudo ufw allow 3128

sudo gedit /etc/squid/squid.conf
 








sudo apt install squid


system start


system enable


ss -antpl | grep 3128


/etc/squid/squid.conf


http_acces allow all


acl backlist1 dstdomain link


Sudo ufw allow puerto del grephttp_acces deny backlist1 




PROXY TRANSPARENTE:

Adjunto archivos pdf.

sudo cat /proc/sys/net/ipv4/ip_forward
0

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

sudo cat /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

sudo sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

sudo sysctl -a


Squid puede implementar un proxy transparente mediante las directivas de aceleración web con las
opciones siguientes:
• Especificación de la IP del servidor web.
• Asignación como puerto de escucha de peticiones web el 80.
• Activación del servicio proxy (on).
• Activación relativa a la utilización de las cabeceras HTTP/1.1 para el envío de peticiones (on).

Basta con añadir estas líneas en el archivo de configuración de Squid /etc/squid/squid.conf:
httpd_accel_host 192.168.1.1
#se habilita la caché acelerada para el
#puerto 80, es decir, se utiliza la
#caché web como ampliación
http_accel_port 80
http_accel_with_proxy on
http_accel_uses_host_header on




SEGURIDAD CON SQUID:


acl Safe_ports port 80 21
acl SSL_ports port 443 563
acl conexion method CONNECT
http_access deny !Safe_ports
http_access deny conexion !SSL_ports






squid + iptables (transparente) 0 tarjeta de red única eth0


SQUID

sudo service squid stop
[sudo] password for profes:
squid3 stop/waiting



crear sus directorios de caché:

sudo squid -z



sudo gedit /etc/squid/squid.conf

3128 es el puerto de Squid y debemos indicar la dirección IP del servidor

http_port  192.168.1.150:3128


Si nuestra máquina tiene suficiente memoria, le quitamos la
almohadilla a la opción cache_men, y utilizamos un valor coherente a
nuestra máquina.

cache_mem 256 MB


La opción cache_dir y la ajustamos como en la siguiente línea, aunque
aquí los valores de caché dependerán de nuestras preferencias y
máquina.

cache_dir ufs /var/spool/squid 2048 16 256


Y activamos las siguientes opciones, para asegurar que ningún usuario
pueda acceder a los recursos gestionados por Squid.

cache_effective_user proxy
cache_effective_group proxy


Descomentamos la opción half_closed_clients y la dejamos en off, esto
permitirá a Squid cerrar las peticiones de los clientes que se queden
a medias cuando cierran la conexión TCP.

half_closed_clients off

Ahora limitamos el tamaño máximo de los objetos que se guardarán en
memoria, esto puede ahorrarnos problemas con el tamaño de la caché.
Descomentamos la siguiente línea y la dejamos en 1024 KB.

maximum_object_size 1024 KB

También vamos a indicar cuando debe Squid vaciar la caché, esto nos
permitirá un mejor mantenimiento. Descomentamos las siguientes líneas.

cache_swap_low 90
cache_swap_high 95

En mi caso dejo los valores que nos dan por defecto. Como última
modificación en las opciones de configuración de Squid, buscamos la
opción memory_pools, la descomentamos y la ponemos en off.

memory_pools off

Esta opción, hará que Squid libere la memoria RAM que no esté utilizando.

Por último, tras la siguiente línea,

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

Añadiremos la regla para permitir el acceso a Internet de nuestra red interna.

acl ai1 src 192.168.1.0/24
http_access allow ai1

Y con esto ya podemos reiniciar Squid.

sudo service squid start

sudo service squid status

IPTABLES

Con sudo previamente:

# Limpia las reglas anteriores
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

sudo -i
echo 1 > /proc/sys/net/ipv4/ip_forward
exit

# Politica de filtro por defecto
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# Acceso ilimitado a loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Establece el servidor como router para la red
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0  -j ACCEPT

# acceso ilimitado a la LAN
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT


# Redirige las peticiones de la red interna hacia el proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to
192.168.1.150

# Redirige la entrada al proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
--to-port 3128


# Redirige la entrada al proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
--to-port 3128


Guarda y recupera reglas de iptables
sudo iptables-save > transparente150.txt

sudo  iptables-restore < transparente150.txt

cat /var/log/squid/access.log

/etc/squid/squid.conf

Squid (3) configuracion

/var/log/squid/access.log

Squid (3) registro de accesos

/var/spool/squid

Squid (3) cache_dir directorio de caché

Comentarios

Entradas populares de este blog

SERVIDOR DNS PRINCIPAL Y SECUNDARIO

AWS WINDOWS SERVER FTP

HTTP-WINDOWS SERVER IIS