[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ayuda con netfilter.



Jorge Barreiro Gonzalez escribió:
O Mércores 21 Maio 2008 19:15, Julián Esteban Perconti escribiu:
Hola listeros, recurro a ustedes por el suiguiente motivo:
tengo una maquina debian como router, con el siguiente script..

#!/bin/bash
#/usr/local/sbin/setiptables.bash

iptables -F
iptables -X
iptables -Z
iptables -t nat -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD *DROP*
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
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

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP

# INPUT HP #

iptables -t filter -A INPUT -i eth1 -p tcp --dport 53 -j ACCEPT #DNS
iptables -t filter -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT #DNS
iptables -t filter -A INPUT -i eth1 -p udp --dport 67 -j ACCEPT #DHCP
iptables -t filter -A INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT #SQUID
iptables -t filter -A INPUT -i eth1 -p udp --dport 445 -j ACCEPT
#Microsoft-DS SMB file sharing
iptables -t filter -A INPUT -i eth1 -p tcp --dport 137:139 -j ACCEPT
#NetBios
iptables -t filter -A INPUT -i eth1 -p udp --dport 137:139 -j ACCEPT
#NetBios
iptables -t filter -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT -s
192.168.0.2 #SSH

# OUTPUT HP #

iptables -t filter -A OUTPUT -p tcp --sport 53 -j ACCEPT #DNS
iptables -t filter -A OUTPUT -p udp --sport 53 -j ACCEPT #DNS
iptables -t filter -A OUTPUT -p tcp --sport 3128 -j ACCEPT #SQUID
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT #WWW
iptables -t filter -A OUTPUT -p udp --sport 67 -j ACCEPT #DHCP
iptables -t filter -A OUTPUT -p udp --dport 445 -j ACCEPT #Microsoft-DS
SMB file sharing
iptables -t filter -A OUTPUT -p tcp --dport 137:139 -j ACCEPT #NetBios
iptables -t filter -A OUTPUT -p udp --dport 137:139 -j ACCEPT #NetBios

# FORWARD LAN #

*iptables -t filter -A FORWARD -j ACCEPT*
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 20:21 -j ACCEPT #FTP
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 25 -j ACCEPT #SMTP
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 110 -j ACCEPT #POP3
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 143 -j ACCEPT #IMAP4
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 989:990 -j ACCEPT
#FTPS iptables -t filter -A FORWARD -i eth1 -p tcp --dport 993 -j ACCEPT
#IMAP4S iptables -t filter -A FORWARD -i eth1 -p tcp --dport 995 -j ACCEPT
#POP3S iptables -t filter -A FORWARD -i eth1 -p tcp --dport 465 -j ACCEPT
#SMTPS

# NAT #

# TEGNet
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5479 -j DNAT --to
192.168.0.2:5479

# BitTorrent
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport ? -j DNAT --to
192.168.0.2:?

# eMule's
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 2000 -j DNAT --to
192.168.0.2:2000
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 2010 -j DNAT --to
192.168.0.2:2010
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 3000 -j DNAT --to
192.168.0.3:3000
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 3010 -j DNAT --to
192.168.0.3:3010
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4000 -j DNAT --to
192.168.0.4:4000
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 4010 -j DNAT --to
192.168.0.4:4010
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5000 -j DNAT --to
192.168.0.5:5000
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010 -j DNAT --to
192.168.0.5:5010

# SQUID
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --sport 80 -j REDIRECT
--to-port 3128

*iptables -t filter -A FORWARD -j DROP*

Les llamará la atención seguramente los astericos, estos NO estan en el
script original, pero el problema que estoy teniendo es que, si la
politica por defecto de la cadena FORWARD la pongo en DROP (como esta) y
saco esta linea *iptables -t filter -A FORWARD -j ACCEPT* (que creo que
es lo mismo a que la policy este en accept..) No me me funciona NAT (es
decir el emule me da ID baja por ejemplo),  ni tampoco me fuciona el
FTP.. y sin embargo estan en la cadena forward. pero no hay caso.
¿que estoy haciendo mal?
por este motivo, estoy dejando que pase casi todo a la LAN. con la linea
*...*.
Alguien sabe a que se debe esto?
Muchas gracias.

Cuando haces un PREROUTING, los paquetes que encajan en esa regla son transformados, pero continuan pasando por la cadena de reglas.
Es decir, si quieres que algo como:

iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010 -j DNAT --to 192.168.0.5:5010

funcione, tieens que poner también:

 iptables -t filter -A FORWARD -i ppp0 -p udp --dport 5010 -j ACCEPT

de lo contrario el paquete transformado caerá en el DROP final y no llegará a ningun lado (puedes especificar la ip también aquí, para ser más preciso).

Eso te solucionará el tema del emule ( y resto de redireción de puertos). Sobre el ftp, recuerdo que tenía tela y había un módulo que trataba con él especialmente, pero no recuerdo; no puedo decirte nada por ahora.

Saludos.


Hola Jorge Gracias de antemano, te cuento que probe con la regla

"iptables -t filter -A FORWARD -i ppp0 -p tcp --dport 5000 -j ACCEPT" "iptables -t filter -A FORWARD -i ppp0 -p udp --dport 5010 -j ACCEPT"


y el emule no tuvoi exito, pero es evidente, que la mano viene por la cadena FORWARD, tanto del prerout. como el tema del FTP. ya que si hago que forward deje pasar todo, me anda tanto el emule como ftp..
Yo no sabia que las tablas de nat se relacionaban con las tablas forward.
Segire intentando, Muchas gracias por la ayuda!!
Ah.. una duda que me queda, debido a que iptables es secuencial, segun tengo entendido., estas reglas que mecionas deberian ir antes o despes que las tablas de nat..? yo probe poniendolas antes que las de nat..ahora voy a probar poniendolas despues.
Saludos.


Reply to: