Correo Electrónico Iptables Squid Ubuntu Server 12.04

Imagen de juand.san
0 puntos

Buenos días, intento montar un servidor ubuntu como servidor proxy para evitar el acceso a páginas de Internet. EL problema radica en que desde los equipos de mi red no logro conectarme a servicios de correo como el de google, outlook, el correo de la empresa e incluso a conexiones ftp mediante filezilla. También sucede que al ejecutar el comando "sudo ufw enable" (que supongo activa el cortafuego) me quedo sin acceso a Internet ni conectarme al servidor mediante putty.

Cuento con dos tarjetas de red eth0 conectada a la red local 192.168.0.1 y eth1 conectada a Internet. El internet entra al servidor del servidor a un switch y del switch al equipo donde estoy haciendo las pruebas con el servidor proxy.

He intentado convertir el squid en proxy transparente, aplicar reglas de iptables, pero subo el firewall y quedo sin la navegación. Debo destacar que soy bastante nuevo en esto de manejo de iptables y linux en general.

Estas son las iptables que estoy usando:

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

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

## Por 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

## Abrir puerto 22 para administrar ssh desde la red local
/sbin/iptables -A INPUT -i 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A OUTPUT -o 192.168.1.0/24 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT

## Permitimos que el servidor y la red interna puedan salir a:
## Internet (navegación)
/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
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT

## 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
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT

## Correo POP3 SMTP
/sbin/iptables -A INPUT -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --sport 587 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 587 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 587 -m state --state RELATED,ESTABLISHED -j ACCEPT

## Habilitar puerto 25
/sbin/iptables -A INPUT -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT

## Habilitar puerto 3128
/sbin/iptables -A INPUT -p tcp -m tcp --sport 3128 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 3128 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 3128 -m state --state RELATED,ESTABLISHED -j ACCEPT

## Reglas necesarias para FTP pasivo y activo.
## Se permiten conexiones entrantes establecidas previamente
/sbin/iptables -A INPUT -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --sport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT

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

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

## FORWARD
## Aceptar los paquetes a hacer forward
/sbin/iptables -A FORWARD -i 192.168.1.0/24 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o 186.112.230.148/24 -j MASQUERADE

## Habilita el forwarding para poder responder
echo 1 > /proc/sys/net/ipv4/ip_forward

#iptables -L -n para verificar las reglas
# Fin del script

Imagen de juand.san
+1
0
-1

Use estas reglas de iptables escritas por @Gabriel_M en este tema: http://www.ubuntu-es.org/node/71441#.U9EVVON5OCg.

============comienzo===============

Suponemos que el servidor tiene dos placas de red
Por eth0 con ip 192.168.1.200 se comunica a internet
Por eth1 con ip 10.0.0.1 se comunica con la red local
El puerto de escucha de squid es 3128

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth0 -p udp --dport 110 -j ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT

==============fin=================

Ahora probaré que las conexiones pasen a través de squid con sus limitaciones y permisos

+1
0
-1
Imagen de juand.san
+1
0
-1

Necesito que la navegacion web pase por el SQUID proxy! algun concejo? he probado poner el squid como transparente tanto con http_port 3128 transparent como el http_port 3128 intercept

+1
0
-1
Imagen de juand.san
+1
0
-1

Necesito que el proxy sea transparente. Porque con la configuración de proxy en el equipo funciona perfectamente. Gracias!

+1
0
-1