Limita as conexões ftp com o firewall pf no FreeBSD

1

Eu quero limitar conexões FTP simultâneas ao meu servidor FreeBSD com o firewall pf. Por exemplo, apenas 10 conexões simultâneas são possíveis para a porta 20 ou 21 de um IP de origem.

Eu uso para isso, esta regra:

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

O problema é que cada upload ou download produz uma entrada de estado com o estado FIN_WAIT_2: FIN_WAIT_2 quando ele é concluído. Esse estado só será removido quando o tempo limite de tcp.finwait for atingido. Após 10 dos estados FIN_WAIT, não aceita a nova conexão de dados do servidor. Este é um problema quando você tenta baixar ou colocar vários arquivos seqüencialmente com um único login no ftp.

Alguém tem uma boa solução para esse problema?

    
por user3098388 17.12.2013 / 08:59

1 resposta

0

Isso pode ser feito facilmente com rctl . Você executaria o daemon de ftp com um UID exclusivo e limitaria o número de processos a esse UID. É isso.

Você pode precisar recompilar o kernel com

options RACCT
options RCTL

e você pode usar o rctl assim:

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

Dê uma olhada em man rctl e você vai adorar;)

    
por 20.12.2013 / 17:05