Servidor FTPS no DMZ. Forçar endereços IP diferentes para o modo passivo

1

Estou configurando um servidor FTP com criptografia TLS / SSL (FTPS, não SFTP). O servidor seria colocado na DMZ. Isso significa que ele tem essas interfaces: uma para conexões da rede da empresa e outra (estaticamente NAT para um endereço IP válido na Internet em um roteador de borda) para conexões da Internet.

Uma pequena arte ASCII para ilustrar a configuração:

                  |<----------------------------- DMZ --------------------->|

Inet  <---------> |    border router       |  <-------> FTPS server <------->  Internal network
        1.2.3.4   | 1.2.3.4 <NAT> 10.0.1.1 |     10.0.1.1         10.0.2.2

O modo ativo funciona bem. Mas para o modo passivo, o servidor FTP tem que enviar seu endereço IP para o cliente. O primeiro problema é que o servidor não sabe seu endereço externo (1.2.3.4), apenas DMZ-external (10.0.1.1). O software do servidor FTP permite definir este endereço (ForceIpAddress em pure-ftpd), mas neste caso os usuários da rede interna não poderão trabalhar com este FTP (porque ele irá enviar para eles 1.2.3.4 ao invés de 10.0.2.2)

Então, a questão é se existe um método para escolher o IP para enviar de acordo com o endereço IP do cliente ou a interface, a solicitação veio? Observe que, se um cliente se conectar pela Internet, ele deverá obter um endereço IP válido para a Internet (1.2.3.4), instado do servidor interno (10.0.1.1). Estou usando o pure-ftpd, mas posso mudar para qualquer outra coisa.

Eu usei dois servidores FTP em portas diferentes e redirecionei o pedido usando o iptables, mas essa não é a melhor maneira, eu acho. Alguns clientes FTP (ex. WinSCP) também permitem forçar o endereço do servidor, mas não todos eles.

Alguma opção para resolver a situação?

    
por HUB 13.07.2011 / 19:36

1 resposta

1

O protocolo FTP foi criado quando todas as máquinas na Internet eram globalmente endereçáveis com um endereço IP exclusivo. A única razão pela qual o FTP por trás dos appliances NAT funciona agora é que o appliance NAT filtra o tráfego FTP e corrige o texto não criptografado da conexão do comando FTP (porta 21) para permitir os endereços não roteáveis envolvidos.

Como você está envolvendo o tráfego FTP em SSL, o dispositivo NAT não pode ler esse tráfego e, portanto, não pode corrigir o endereçamento IP não compatível. Sua solução virá do seu servidor FTP.

O pure-ftpd tem um sinalizador -N que força o modo "ativo", significando que o servidor FTP inicia a transferência de dados (porta 20) e recusará o modo "passivo". O modo passivo é o que os clientes FTP por trás do NAT têm que usar para fazer o download de um site FTP público, com o qual você não será mais compatível.

O proftpd (o melhor de todos os servidores FTP possíveis com os quais eu me incomodei em brincar) tem uma configuração para resolver este problema. Você pode adicionar a diretiva "MasqueradeAddress xxx.xxx.xxx.xxx" ao arquivo de configuração que fará com que o proftpd informe a todos os clientes que o MasqueradeAddress é o endereço IP do servidor FTP. Certifique-se de ter a porta 20 neste endereço encaminhada com NAT para o seu servidor FTP.

De acordo com a sua nota: A diretiva "MasqueradeAddress" pode ser usada no escopo da diretiva "VirtualHost", permitindo que você forneça o acesso interno, bem como o acesso NAT externo.

    
por 15.07.2011 / 00:31

Tags