Existe (ou, talvez, foi?) um daemon muito legal chamado SuSE Proxy Suite . Ele estava interceptando o tráfego FTP e permitia que um redirecionasse o ftp-client para algum servidor de back-end específico e, se minha memória me servir, ele também permitia conversões ativas < - > Eu usei o programa em um ambiente bastante pesado por anos sem problemas.
Infelizmente, meu antigo favorito ( link ) parece redirecionar-se para a página da Novell. Vários repositórios de pacotes (FreeBSD, Debian depois do quick googling) parecem ainda incluir o software, então você pode ter alguma esperança.
O FreshPorts parece ter uma boa descrição sobre o software:
EDIT: Mais uma coisa. Eu não tenho ideia se esse pequeno problema foi corrigido mais tarde (não foi em 2004 que usei essa coisa pela última vez), mas por padrão o proxy-suite está sendo executado como root, já que ele precisa se ligar a portas baixas. E estava rodando como Really Root, já que não tirava vantagem das capacidades do Linux.
Hoje deve ser possível definir os recursos do arquivo por meio do comando setcap como este:
sudo setcap 'cap_net_bind_service=+ep' /path/to/file
Mas se isso não funcionar (mesmo que os recursos existissem, o comando setcap não era muito comum quando eu fiz o patch do proxy-suite), aqui está outra solução alternativa.
Em 2004, escrevi um pequeno patch que descartava todos os recursos, exceto o CAP_NET_BIND_SERVICE logo após a inicialização, de modo que até mesmo possíveis falhas de segurança seriam menos perigosas. Você normalmente pode não precisar desse patch, mas se você tem essa doença chamada paranoia de segurança e sua transferência de arquivos ocorre entre alguns cantos escuros da Internet em vez de sua LAN confortável, o patch pode ser uma boa ideia.
Para ver se o ftp-proxy está sendo executado como privilégios de root completos, verifique se getpcaps retorna algo assim:
yourserver root# getpcaps 'pidof ftp-proxy'
Capabilities for '16982': =eip cap_setpcap-eip
Uma versão corrigida deve retornar assim:
yourserver root# getpcaps 'pidof ftp-proxy'
Capabilities for '9522': = cap_net_bind_service+ep
E finalmente, aqui está o patch que eu escrevi milhões de luas atrás, espero que ainda possa ser aplicado.
--- common/com-misc.c.orig 2006-11-20 13:54:59.000000000 +0200
+++ common/com-misc.c 2006-11-20 14:40:47.000000000 +0200
@@ -36,0 +37 @@
+#include <sys/capability.h>
@@ -748,0 +750,18 @@
+ /*
+ * If running as root, drop all the privileges except CAP_NET_BIND
+ */
+ if (geteuid() == 0) {
+ cap_t caps = cap_init();
+ static cap_value_t capv[] = {CAP_NET_BIND_SERVICE};
+ const int numcaps = sizeof(capv) / sizeof(capv[0]);
+ if (caps == NULL)
+ syslog_error("cap_init() failed; errno = %d", errno);
+ if (cap_set_flag(caps, CAP_PERMITTED, numcaps, capv, CAP_SET) < 0)
+ syslog_error("Could not set permitted capabilities;
errno = %d", errno);
+ if (cap_set_flag(caps, CAP_EFFECTIVE, numcaps, capv, CAP_SET) < 0)
+ syslog_error("Could not set effective capabilities;
errno = %d", errno);
+ if (cap_set_proc(caps) < 0)
+ syslog_error("Could not apply capability set; errno =
%d", errno);
+ cap_free(caps);
+ }
+