[CentOS-es] Problemas Iptables - Direccionar a maquina interna

Andre Aspée easpee en gmail.com
Mie Jul 23 14:08:24 UTC 2008


Hola,

Ayer me instale el firestarter y logre direccionar el servicio de 
terminal server a una maquina de mi lan, pero se me creo otro problema.
Resulta que tengo squid y el firewall en la misma máquina, entonces con 
las reglas de iptables yo redireccionaba hacia el puerto 8080 todas las 
peticiones de los clientes lan, asi los hacia pasar por el squid y 
lograba filtrar contenido.
Bueno, con el firestarter no logro realizar este paso, puedo direccionar 
lo que viene desde afuera (internet) hacia una maquina interna, pero no 
logro direccionar de mi lan al squid que se encuentra en la misma 
máquina de firewall.
Si me pueden ayudar, ya sea corrigiendo mi script de firewall para poder 
direccionar a maquinas de mi lan, o indicandome si con el firestarter 
puedo lograr que todos los clientes lan pasen por squid antes de salir a 
internet.
Saludos



----- Mensaje original ----
De: Andre Aspée <easpee en gmail.com>
Para: centos-es en centos.org
Enviado: martes, 22 de julio, 2008 19:08:58
Asunto: [CentOS-es] Problemas Iptables - Direccionar a maquina interna

Buenas a todos,
Necesito direccionar a una maquina de mi red para utilizar terminal 
server, desde dentro de la red me basta con ingresar a traves de su ip. 
Pero desde afuera (internet) no me puedo conectar, necesito entonces que 
me puedan ayudar con las reglas de mi firewall, ya que lo que he 
intentado no me resulta.
Les dejo el archivo de mi firewall (si alguien ve algo que no 
corresponda porfavor me avisa)
Saludos

#!/bin/sh

## Configuracion de clientes
# IP: 192.168.10.x
# mascara: 255.255.255.0
# gateway: 192.168.10.1
# dns1: 200.75.0.4
# dns2: 200.75.25.224


# Ruta del archivo iptables
IPTABLES=/sbin/iptables

# IFEXT por donde salgo a internet
# ip externa: 111.111.111.111 (es para ejemplo)
IFEXT="eth1"


# IFINT red interna, la que conecta a los  cliente
IFINT="eth0"
# IP: 192.168.10.1
# Broadcast: 192.168.10.255
# gateway 192.168.10.1


fw_start() {
echo "Iniciando FIREWALL, [DEFAULT ACCEPT Policy]"

# Inicializando
$IPTABLES -F # Limpia todas las cadenas
$IPTABLES -X # Borra cadenas vacias
$IPTABLES -Z # Pone a 0 lo contadores de paquetes y bytes de todas las reglas de todas las cadenas
$IPTABLES -t nat -F 

# Politica por defecto
$IPTABLES -P INPUT ACCEPT && echo "regla: 1 - OK!"
$IPTABLES -P OUTPUT ACCEPT && echo "regla: 2 - OK!"
$IPTABLES -P FORWARD ACCEPT && echo "regla: 3 - OK!"
$IPTABLES -t nat -P PREROUTING ACCEPT && echo "regla: 5 - OK!"
$IPTABLES -t nat -P POSTROUTING ACCEPT && echo "regla: 6 - OK!"

## INICIO DE FILTRADO
# dejamos que vayan al firewall
$IPTABLES -A INPUT -s 192.168.10.0/24 -i $IFINT -j ACCEPT && echo "regla: 7 - OK!" 

## Puertos y SITIOS DENEGADOS
iptables -A FORWARD -s 192.168.10.0/24 -d 64.13.152.67 -p tcp --dport 443 -j DROP #imo.im
iptables -A FORWARD -s 192.168.10.0/24 -d 64.13.152.67 -p udp --dport 443 -j DROP #imo.im

## PUERTOS PERMITIDOS
# Aceptamos que vayan a puertos 80:HTTP, 443:HHTPS, 110:SMTP, 25:POP3, 465:GMAIL, 995:GMAIL, 53:DNS

$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 80 -j ACCEPT && echo "regla: 8 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 443 -j ACCEPT && echo "regla: 9 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 8080 -j ACCEPT && echo "regla: 10 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 110 -j ACCEPT && echo "regla: 11 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 25 -j ACCEPT && echo "regla: 12 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 465 -j ACCEPT && echo "regla: 13 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 995 -j ACCEPT && echo "regla: 14 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 53 -j ACCEPT && echo "regla: 15 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p udp --dport 53 -j ACCEPT && echo "regla: 16 - OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 20:23 -j ACCEPT && echo "FTP TCP OK!!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p udp --dport 20:23 -j ACCEPT && echo "FTP UDP OK!"
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -p tcp --dport 3389 -j ACCEPT && echo "terminal TCP OK"


# CERRAMOS LOS DEMAS PUERTOS
$IPTABLES -A FORWARD -s 192.168.10.0/24 -i $IFINT -j DROP && echo "regla: 17 - OK!"

# NAT
echo 1 > /proc/sys/net/ipv4/ip_forward


$IPTABLES -t nat -A POSTROUTING -s 192.168.10.0/24 -o $IFEXT -j SNAT --to 111.111.111.111

#ICMP 
$IPTABLES -A INPUT -i $IFEXT -p ICMP -j ACCEPT
#dejo pasar al puerto 3389
$IPTABLES -A INPUT -i $IFEXT -p TCP --dport 3389 -m state --state NEW -j ACCEPT
#direcciono a maquina interna
$IPTABLES -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3389 -j DNAT --to 192.168.10.100:3389
#acepto paquetes de conexiones establecidas
$IPTABLES -A INPUT -i $IFEXT -p TCP -m state --state RELATED -j ACCEPT



$IPTABLES -A FORWARD -i $IFEXT -o $IFINT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $IFINT -o $IFEXT -j ACCEPT
$IPTABLES -A FORWARD -j LOG --log-level warning --log-prefix "IPTABLES FORWARD: " 

$IPTABLES -t nat -A PREROUTING -i $IFINT -p tcp --dport 80 -j REDIRECT --to-port 8080


# CERRAMOS LOS ACCESOS INDESEADOS DESDE EL EXTERIOR 0.0.0.0/0 ES 
CUALQUIER RED

$IPTABLES -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
$IPTABLES -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
$IPTABLES -A INPUT -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP 
}

fw_stop() {
echo "Finalizando FIREWALL, [DEFAULT ACCEPT Policy]"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
}

fw_status() {
$IPTABLES -nL
}

case "$1" in
'start')
fw_start
;;
'stop')
fw_stop
;;
'status')
fw_status
;;
*)
echo "Usage: $0 start|stop|status"
esac



Más información sobre la lista de distribución CentOS-es