Limite las conexiones ftp con pf firewall en FreeBSD

Limite las conexiones ftp con pf firewall en FreeBSD

Quiero limitar las conexiones FTP simultáneas a mi servidor FreeBSD con el firewall pf. Por ejemplo, solo son posibles 10 conexiones simultáneas al puerto 20 o 21 desde una IP de origen.

Utilizo para esto esta regla:

pass in quick proto tcp from any to em0 port {20, 21} keep state (max-src-conn 10)

El problema es que cada carga o descarga produce una entrada de estado con el estadoFIN_WAIT_2:FIN_WAIT_2cuando esté terminado. Este estado sólo será eliminado cuando eltcp.finwaitse alcanza el tiempo de espera. Después de 10 de estos estados FIN_WAIT no acepta la nueva conexión de datos del servidor. Esto es un problema cuando intenta descargar o cargar varios archivos secuencialmente con un único inicio de sesión ftp.

¿Alguien tiene una buena solución para este problema?

Respuesta1

Esto podría hacerse fácilmente con rctl. Ejecutaría el demonio ftp con un UID único y limitaría la cantidad de procesos a este UID. Eso es todo.

Es posible que necesites recompilar el kernel con

options RACCT
options RCTL

y luego puedes usar rctl así:

rctl -a user:ftp:maxproc:deny=11

Échale un vistazo man rctly te encantará ;)

información relacionada