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

Re: Ayuda con netfilter.



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.


Reply to: