13.4. TCP Wrapper
Anterior | Capítulo 13. Segurança | Próxima

## 13.4. TCP Wrapper

Escrito por Tom Rhodes.

O TCP Wrapper é um sistema de controle de acesso baseado em host que estende as habilidades do Seção 29.2, “O super-servidor inetd”. Ele pode ser configurado para fornecer suporte de registro, mensagens de retorno e restrições de conexão para os daemons do servidor sob o controle do inetd. Consulte tcpd(8) para obter maiores informações sobre o TCP Wrapper e seus recursos.

O TCP Wrapper não deve ser considerado um substituto para um firewall configurado adequadamente. Em vez disso, TCP Wrapper deve ser usado em conjunto com um firewall e outros aprimoramentos de segurança para fornecer outra camada de proteção na implementação de uma política de segurança.

### 13.4.1. Configuração Inicial

Para ativar o TCP Wrapper no FreeBSD, adicione as seguintes linhas ao arquivo `/etc/rc.conf`:

    inetd_enable="YES"
    inetd_flags="-Ww"

Então, configure corretamente o arquivo `/etc/hosts.allow`.

### Nota:

Ao contrário de outras implementações do TCP Wrapper, o uso do arquivo `hosts.deny` foi preterido no FreeBSD. Todas as opções de configuração devem ser colocadas no arquivo `/etc/hosts.allow`.

Na configuração mais simples, as políticas de conexão do daemon são configuradas para permitir ou bloquear, dependendo das opções no arquivo `/etc/hosts.allow`. A configuração padrão no FreeBSD é permitir todas as conexões para os daemons iniciados com o inetd.

A configuração básica geralmente assume a forma de `daemon : address : action`, onde `daemon` é o daemon que o inetd iniciou, `address` é um nome de host válido ou um endereço IP ou um endereço IPv6 entre colchetes ([]) e `action` é `allow` ou `deny`. O TCP Wrapper usa uma semântica de correspondência de primeira regra, o que significa que o arquivo de configuração é varrido desde o início para uma regra correspondente. Quando uma correspondência é encontrada, a regra é aplicada e o processo de pesquisa é interrompido.

Por exemplo, para permitir conexões POP3 através do daemon mail/qpopper, as seguintes linhas devem ser anexadas ao arquivo `hosts.allow`:

    # This line is required for POP3 connections:
    qpopper : ALL : allow

Sempre que este arquivo for editado, reinicie o inetd:

    # service inetd restart

### 13.4.2. Configuração Avançada

O TCP Wrapper fornece opções avançadas para permitir mais controle sobre o modo como as conexões são tratadas. Em alguns casos, pode ser apropriado retornar um comentário para determinados hosts ou conexões de daemon. Em outros casos, uma entrada de log deve ser registrada ou um email enviado ao administrador. Outras situações podem exigir o uso de um serviço apenas para conexões locais. Isso tudo é possível através do uso de opções de configuração conhecidas como wildcards, caracteres de expansão e execução de comandos externos.

Suponha que uma situação ocorra onde uma conexão deva ser negada, mas uma razão deve ser enviada ao host que tentou estabelecer essa conexão. Essa ação é possível com a opção `twist`. Quando uma tentativa de conexão é feita, o `twist` executa um comando ou script shell. Existe um exemplo no arquivo `hosts.allow`:

    # The rest of the daemons are protected.
    ALL : ALL \
    	: severity auth.info \
    	: twist /bin/echo "You are not welcome to use %d from %h."

Neste exemplo, a mensagem “You are not allowed to use `daemon name` from `hostname`.” será retornada para qualquer daemon não configurado no `hosts.allow` . Isso é útil para enviar uma resposta de volta ao inicializador de conexão logo após a conexão estabelecida ser descartada. Qualquer mensagem a ser retornada deve ser delimitada por caracteres de aspas duplas (`"`).

### Atenção:

Pode ser possível iniciar um ataque de negação de serviço no servidor se um invasor inunda esses daemons com solicitações de conexão.

Outra possibilidade é usar a opção `spawn`. Como a opção `twist`, a opção`spawn` implicitamente nega a conexão e pode ser usado para executar comandos ou scripts externos do shell. Ao contrário da `twist`, a `spawn` não enviará uma resposta ao host que estabeleceu a conexão. Por exemplo, considere a seguinte configuração:

    # We do not allow connections from example.com:
    ALL : .example.com \
    	: spawn (/bin/echo %a from %h attempted to access %d >> \
    	  /var/log/connections.log) \
    	: deny

Isso negará todas as tentativas de conexão de `*.example.com` e registrará o nome do host, endereço IP e o daemon ao qual o acesso foi tentado no arquivo `/var/log/connections.log`. Este exemplo usa os caracteres de substituição `%a` e `%h`. Consulte hosts_access(5) para a lista completa.

Para corresponder a cada instância de um daemon, domínio ou endereço IP, use `ALL`. Outro wildcard é o `PARANOID`, que pode ser usado para corresponder a qualquer host que forneça um endereço IP que possa ser forjado, porque o endereço IP difere do nome resolvido para o host. Neste exemplo, todas as solicitações de conexão para o Sendmail que possuem um endereço IP que varia de seu nome de host serão negadas:

    # Block possibly spoofed requests to sendmail:
    sendmail : PARANOID : deny

### Cuidado:

Usar o wildcard `PARANOID` resultará em conexões negadas se o cliente ou servidor tiver uma configuração de DNS incorreta.

Para saber mais sobre wildcards e sua funcionalidade associada, consulte hosts_access(5).

### Nota:

Ao adicionar novas linhas de configuração, certifique-se de que quaisquer entradas desnecessárias para esse daemon sejam comentadas no arquivo `hosts.allow`.

Anterior | Acima | Próxima
13.3. Senhas de Uso Unico | Principal | 13.5. Kerberos

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.