Bienvenido(a) a Alcance Libre 12/09/2025, 03:57

Alcance Libre Foros

 Índice del foro > Todo acerca de Linux > Redes y Servidores New Topic Post Reply
 Reenviar paquetes con Iptables (CentOS 5.4 + Squid)
Tópico anterior Tópico siguiente
   
DaniSpiri
 17/03/10 09:51 (Leído 4,394 veces)  

Nuevo

Estado: desconectado
Forum User

Identificado: 15/07/08
Mensajes: 5
En busca de ayuda aprovecho en saludar a todos los del foro.

Tengo un servidor CentOS 5.4 con Squid funcionando en modo transparente con una sola interface de red eth0 en una intranet.

El esquema de la intranet seria algo así:
PHP Formatted Code

   ----------     -------------------             ----------
  ( Internet )----+ Firewall/Router |            ( Internet )
   ----------     --------+----------             ----------
                           \                           \
                  ----------+------------          -----+------
                  |   Switch (AVAYA)    |          | firewall |
                  -+-+-+-+-+-+-+-+-+-+-+-          -----+------    
                  / / / / / / / / / / /                  \
192.168.a.0/24 --+ / / / / / / / / / /              ------+------
                  / / / / / / / / / /               | SrvCorreo |
192.168.b.0/24 --+ / / / / / / / / /                ------+------
                  / / / / / / / | |                 192.168.20.212
192.168.c.0/24 --+ / / / / / /  | |                        \
                  / / / / / /   | |                     ----+-----
192.168.d.0/24 --+ / / / / /    | +-- 192.168.20.0/24 --+ switch |
                  / / / / /     |                       ----+-----
192.168.e.0/24 --+ / / / /  10.0.0.0/8                      |
                  / / / /       |                           *
192.168.f.0/24 --+ / / /   -----+----
                  / / /    | switch |
192.168.g.0/24 --+ / /     --+---+---
                  / /       /     \
192.168.h.0/24 --+ /       *       \
                  /             10.10.17.2
192.168.i.0/24 --+              ----+----
                                | Proxy |
                                ---------
 


Cada red está en un edificio diferente. El Firewall/Router y Switch (AVAYA) se encuentran en el mismo edificio de la red 10.0.0.0/8 donde tengo el servidor Proxy. Este proxy solo es para el filtrado de este edificio o sea, para la red 10.0.0.0/8.

El Proxy funciona bien, con algunos detalles que pulir y corregir, pero eso lo dejo para otro momento.

El problema: quiero reenviar la salida de correos smtp (25) antes de que haga el enmascaramiento para no configurar el relay del servidor SMTP

Como es transparente, las reglas para iptables:
PHP Formatted Code

#!/bin/sh

##Script de Iptables para hacer forward al puerto 80 (HTTP) y mandarlo al squid

# Binario Iptables
IPTABLES="/sbin/iptables"
# Redes
RED_LOCAL="10.0.0.0/8"
# Interfaces
IF_LOC=eth0
# IP's
IP_LOC="10.10.17.2"
GATEWAY="10.10.15.1"
DNS_TIGO_1="200.85.32.2"
DNS_TIGO_2="200.85.32.3"
IP_SRVCORREO_LAN="192.168.20.212"
# Puerto para squid
PROXYPORT=3128

####################################
##### FUNCION 'FLUSH_IPTABLES' #####
####################################
flush_iptables() {
        echo "Limpiando posibles configuraciones previas..."
        #
        # reset the default policies in the filter table.
        #
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        #
        # reset the default policies in the nat table.
        #
        $IPTABLES -t nat -P PREROUTING ACCEPT
        $IPTABLES -t nat -P POSTROUTING ACCEPT
        $IPTABLES -t nat -P OUTPUT ACCEPT
        #
        # reset the default policies in the mangle table.
        #
        $IPTABLES -t mangle -P PREROUTING ACCEPT
        $IPTABLES -t mangle -P OUTPUT ACCEPT
        #
        # flush all the rules in the filter and nat tables.
        #
        $IPTABLES -F
        $IPTABLES -t nat -F
        $IPTABLES -t mangle -F
        #
        # erase all chains that's not default in filter and nat table.
        #
        $IPTABLES -X
        $IPTABLES -t nat -X
        $IPTABLES -t mangle -X
} # Fin función flush iptables

####################################
##### FUNCION 'START_IPTABLES' #####
####################################
start_iptables()
{
        echo "Configuración existente de interfaces de red:"
        echo " - Interfaz LAN: $IF_LOC - $IP_LOC"
        #
        #RESETEO IPTABLES
        flush_iptables
        #
        #POLITICAS POR DEFECTO
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -t nat -P PREROUTING ACCEPT
        $IPTABLES -t nat -P POSTROUTING ACCEPT
        #
        #OPCIONES DE SYSCTL
        echo "Configurando las opciones sysctl..."
        #Habilita el forwarding en el kernel
        echo 1 > /proc/sys/net/ipv4/ip_forward
        #Deshabilita ataques de IP Spoofing
        #echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
        #No responde a broadcast dirigidos (Smurf-Amplifier-Protection)
        #echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
        #Bloquea source routing
        #echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
        #Elimina timestamps
        #echo 0 > /proc/sys/net/ipv4/tcp_timestamps
        #Habilita SYN Cookies
        ##echo 1 > /proc/sys/net/ipv4/tcp_syncookies
        #Elimina redirects
        ##echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
        #Habilita bad error message protection
        #echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
        #Log martians (paquetes con direcciones no validas)
        #echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
        #Set out local port range
        #echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range
        #Reduce la posbilidad de ataques DoS reduciendo timeouts
        #echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
        #echo 2400 > /proc/sys/net/ipv4/tcp_keepalive_time
        #echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
        #echo 0 > /proc/sys/net/ipv4/tcp_sack
        #
        #REGLAS
        #Reenvio de paquetes
        echo Reenvio de paquetes para correo
        # Regla que falta
        ### Esto no me funciona
        #$IPTABLES -t filter -A FORWARD -p tcp -s $RED_LOCAL --dport 25 -j ACCEPT
        #$IPTABLES -t filter -A FORWARD -p tcp -d $RED_LOCAL --sport 25 -j ACCEPT
        ###
        # Redireccionamiento para SQUID
        echo Redireccionamiento para SQUID
        $IPTABLES -t nat -A PREROUTING -i $IF_LOC -p tcp --dport 80 -j REDIRECT --to-port $PROXYPORT
        # NAT
        $IPTABLES -t nat -A POSTROUTING -o $IF_LOC -j MASQUERADE
} # Fin función start_iptables

case "$1" in
        stop)
                echo "Parando el Firewall... "
                flush_iptables
                echo "HECHO"
                ;;
        status)
                echo ""
                echo "###################"
                echo "## Tabla: filter ##"
                echo "###################"
                $IPTABLES --list
                echo ""
                echo "################"
                echo "## Tabla: nat ##"
                echo "################"
                $IPTABLES -t nat --list
                echo ""
                echo "###################"
                echo "## Tabla: mangle ##"
                echo "###################"
                $IPTABLES -t mangle --list
                echo ""
                ;;
        restart|reload)
                $0 stop $2
                $0 start $2
                ;;
        start)
                echo "Arrancando el Firewall... "
                start_iptables
                echo "HECHO"
                ;;
        *)
                echo "Modo de uso: $0 (start|stop|restart|status)"
                exit 1
                ;;
esac
 


- Redirige del puerto 80 al 3128. Ok!
- Hace el enmascaramiento. Ok!

Agradecería que me ayudaran un poco con las reglas para iptables para reenviar el correo saliente antes de enmascarar.

IP local del Firewall/Router: 10.10.15.1

IP del Proxy: 10.10.17.2
Gateway del Proxy: 10.10.15.1

IP local del Servidor de Correo: 192.168.20.212


De antemano agradezco todo tipo de aportación.
 
Profile Email
 Quote
Joel Barrios Dueñas
 17/03/10 11:32  

Admin

Estado: desconectado
Site Admin

Identificado: 17/02/07
Mensajes: 1761
Localización:Mexico
En mi opinión, sería más sencillo si configuras autenticación en el servidor de correo (olvidate de usar RELAY).

¿Qué estás utilizando como servidor de correo?
 
Profile Email Website
 Quote
DaniSpiri
 17/03/10 01:06  

Nuevo

Estado: desconectado
Forum User

Identificado: 15/07/08
Mensajes: 5
Hola Joel

El servidor de correo no lo administro yo lastimosamente, esta terciarizado. Pero es un servidor CentOS 5.4 usando sendmail. smtp: 192.168.20.212:25 sin autentificación.

El caso es que estas instalaciones, tanto de servidores e infraestructura de red, ya existían antes de mi ingreso a esta institución. Y se me ha encargado la tarea de filtrar internet a todas las redes. Mi idea de momento es tener un proxy por edificio.

El proxy es nuevo, hasta ahora el acceso a internet lo hacia mediante el Firewall/Router, un openSUSE con reglas de filtrado por IPs y MAC.

El servidor de correo está configurado para recibir correo de las redes 192.168.x.y desde 10.0.1.x hasta 10.0.12.x.

Al hacer el enmascaramiento van con IP 10.10.17.2, como no está configurado el servidor de correo para recibir desde esta ip entonces me rechaza, lo mas sencillo seria pedir al administrador de correos que me habilite esta ip, pero me gustaría ver la forma de redirigir antes del enmascaramiento para que el paquete vaya con la ip del cliente.

Si estoy un poco confundido perdónenme por favor
 
Profile Email
 Quote
Contenido generado en: 0.16 segundos New Topic Post Reply
 Todas las horas son CST. Hora actual 03:57 .
Tópico normal Tópico normal
Tópico Pegado Tópico Pegado
Tópico bloqueado Tópico bloqueado
Mensaje Nuevo Mensaje Nuevo
Tópico pegado con nuevo mensaje Tópico pegado con nuevo mensaje
Tópico bloqueado con nuevo mensaje Tópico bloqueado con nuevo mensaje
Ver mensajes anónimos 
Los usuarios anónimos pueden enviar 
Se permite HTML Filtrado 
Contenido censurado