iptables para un servidor FTP

Forums: 

Saludos amigos.

Tengo un servidor de FTP que trabaja con vsftpd en un Centos 5, con el selinux activado, el mismo es solo para FTP y uso ssh para administrarlo desde mi computador personal.

En estos días he estado notando que se me satura mucho y al hacer un iptraf me di cuenta que hay un usuario que está haciendo cosas con el ordinox-se y me está saturando.

Por eso decidí en el iptables seguir el siguiente esquema:

1. cerrar todos los puertos TCP, UDP, ICMP, etc.
2. para todos, explícitamente abrir los puertos para FTP, 20 y 21
3. para mi pc, abrir el puerto 22 para administrar via ssh

Luego de leer y documentarme sobre iptables generé este script:

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

Establecemos politica por defecto
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING DROP
iptables -t nat -P POSTROUTING DROP

Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s IP_SERVER_FTP -j ACCEPT

# Todos usan FTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 20:21 -j ACCEPT

# Administrar via ssh y solo para una pc
iptables -A INPUT -s IP_PC_ADMINISTRAR -p tcp -dport 22 -j ACCEPT

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

No tengo una pc disponible para hacer mis pruebas, espero poder tenerlo el lunes, pero quisiera avanzar al menos posteando aqui mi script para que lo revisen y me den su opinión.

Muchas gracias a todos y no sean tan rudos, en iptables estoy aún en pañales :P

hola a todos, referente a

hola a todos, referente a este tema tengo esta duda, cuando pongo por defecto todo DROP y luego comienzo abrir puertos no me deja hacer nada, aunque habilite el icmp ni ping puedo hacer, que me hace falta, estas son las reglas para un ftp lo tengo en modo pasivo, si lo dejo sin el DROP acceso al ftp sin problemas a los puertos que abro, dejo lo que tengo configurado:
esto lo configuro en el archivo /etc/sysconfig/iptables ahora bien tengo otra duda cual es la diferencia de hacerlo en ese archivo o hacer un script, hay alguna diferencia? bueno les dejo lo que configure:

# Generated by iptables-save v1.4.7 on Fri Jul 18 15:06:35 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0
:OUTPUT ACCEPT [14:921]
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 200.60.20.30 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 50 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30300:30309 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 50 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 30300:30309 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Jul 18 15:06:35 2014