Proxy Iptables y SQUID
Proxy Iptables
− NAT: reglas PREROUTING, POSTROUTING
− FILTER: reglas INPUT, OUTPUT, FORWARD
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.
- iptables -A OUTPUT -d www.google.es -p icmp -j DROP
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
Sudo ufw allow puerto del grephttp_acces deny backlist1
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
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
Publicar un comentario