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

Script de iptables



	Hola

ya estoy desesperado... he mirado en google, la documentación, algún
libro... pero no consigo configurar correctamente el cortafuegos :(

Os cuento: Tengo una red privada en casa y me gustaría montar un
cortafuegos. Hasta ahora he tenido lo siguiente:

<--- 
#!/bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE -o ppp0
/sbin/iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 4661 -j DNAT
--to 172.16.0.3:4661
/sbin/iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 4662 -j DNAT
--to 172.16.0.3:4662
/sbin/iptables -A PREROUTING -t nat -p udp -i ppp0 --dport 4665 -j DNAT
--to 172.16.0.3:4665

# INBOUND POLICY

# Accept inbound packets that initiate SSH sessions
/sbin/iptables -A INPUT -p tcp -j ACCEPT --dport 22 -m state --state NEW

# Accept inbound packets that initiate HTTP sessions
/sbin/iptables -A INPUT -p tcp -j ACCEPT --dport 80 -m state --state NEW
;;
--->

Pero como todo quedaba demasiado abierto me he decidido a cerrar un poco
más los accesos. El resultado lo teneis en el adjunto iptables_full

Problemas que me han aparecido:
-Aunque me permite acceder a la web de mi casa, no me permite navegar
fuera de mi red.
-No me permite enviar correo: una máquina lo envía mediante exim
directamente y la otra mediante evolution+smtp de un isp. La prueba la
he hecho con la primera.
-Es posible que si me permita recibir correo desde servidores externos
pop3 (en un log de snort aparece la conexión a los buzones)
-No me permite utilizar clientes de mensajería instantanea (tipo MSN,
etc)
-No me permite acceder a las cuentas FTP de otros sitios, teniendo que
conectarme mediante ssh al cortafuegos para poder establecer la conexión
FTP con los servidores externos.
-Por último, eMule. No estoy seguro porque estaba descargando pero mucho
me temo que tal y como está el panorama... me dará low-id 

Se me olvidaba... una de las máquinas tiene que trabajar de vez en
cuando con WinXP. La salida a internet la hace mediante SAMBA. Imagino
que también tendrá que aparecer algo en el cortafuegos ¿me equivoco?

Desde luego he conseguido lo que buscaba... cerrar más los accesos al
sistema... pero los he cerrado demasiado :'( Ya no se qué hacer, qué
cambiar ni qué tocar... ¿alguna ayuda?

Gracias por adelantado. Un saludo.
-- 
Fermín Manzanedo | Badajoz - Spain |   Utilice formatos libres para
http://efiex.homelinux.org/~fermin | compartir información. No utilice
Llave pública gpg en pgp.rediris.es |      .doc .xls .gif...
Powered by Debian GNU/Linux "Sid" |    así, gana la humanidad ;)
#!/bin/sh
#
# last modified 28 Dec 2003
#

IPTABLES=/sbin/iptables
test -x $IPTABLES || exit 5

case "$1" in
start)
echo -n "Cargando el filtrado de paquetes de la red"

# SETUP -- Necesario para todos los host

# Carga los módulos del núcleo
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ipt_MASQUERADE

# Elimina reglas antiguas y tablas
$IPTABLES --flush
$IPTABLES -F -t nat
$IPTABLES --delete-chain

# Establece reglas de denegación por defecto para las tres cadenas
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Permite loopback
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# Permite actuar de pasarela
/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE -o ppp0

$IPTABLES -A FORWARD -i eth0 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -s 172.16.0.0/12 -j ACCEPT
$IPTABLES -A FORWARD -d 172.16.0.0/12 -j ACCEPT

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

# Permite conectarse a idefix al eMule
/sbin/iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 4661 -j DNAT --to 172.16.0.3:4661
/sbin/iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 4662 -j DNAT --to 172.16.0.3:4662
/sbin/iptables -A PREROUTING -t nat -p udp -i ppp0 --dport 4665 -j DNAT --to 172.16.0.3:4665

# Para evitar (de manera rudimentaria) ip-spoofing
$IPTABLES -A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -s 255.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -s 0.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 127.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -s 127.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 192.168.0.0/16 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -s 192.168.0.0/16 -j DROP

# Tengo que añadir la interface a la que me refiero para que permita las 
# conexiones desde la red interna.
$IPTABLES -A INPUT -i ppp0 -s 172.16.0.0/12 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -i ppp0 -s 172.16.0.0/12 -j DROP

$IPTABLES -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTABLES -A INPUT -s 10.0.0.0/8 -j DROP

# No permitir el paso de paquetes con el indicativo --syn
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth scan attempt?"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Política de filtrado de paquetes:

# POLÍTICA DE ENTRADA 

# Aceptar paquetes entrantes que sean parte de una sesión previamente autorizada

$IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

# Aceptar paquetes entrantes que inicien sesión SSH
$IPTABLES -A INPUT -p tcp -j ACCEPT --dport 22 -m state --state NEW

# Permitir paquetes entrantes que inicien sesión HTTP
$IPTABLES -A INPUT -p tcp -j ACCEPT --dport 80 -m state --state NEW

# Hacer log de todo lo que no se acepte
$IPTABLES -A INPUT -j LOG --log-prefix "Dropped by default:"

# POLITICA DE SALIDA

# Si es parte de una conexión aprovada, dejar salir.
$IPTABLES -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Permitir consultad de DNS
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

# Hacer log de todo lo que no se acepte
$IPTABLES -A OUTPUT -j LOG --log-prefix "Dropped by default:"
;;

wide_open)
echo -n "PELIGRO! Unloading Packet Filters!!"
# Unload filters and reset default policies to ACCEPT.
# FOR EMERGENCY USE ONLY -- else use 'stop' !!
$IPTABLES --flush
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
;;

stop)
echo -n "Filtrado detenido..."
# Unload all fw rules, leaving default drop policies
$IPTABLES --flush
$IPTABLES -F -t nat
;;

status)
echo "Preguntando por el estado de iptables (via iptables --list)..."
$IPTABLES --line-numbers -v --list
;;

*)
echo "Utilizacion: $0 {start|stop|wide_open|status}"
exit 1
;;
esac

Attachment: signature.asc
Description: Digital signature


Reply to: