Capítulo 13. Servidor ident

Índice

Introdução
Versão
Contribuindo
Características
Ficha técnica
Requerimentos de Hardware
Arquivos de log criados pelo Ident
Instalação
Instalação via Inetd
Usando tcpwrappers com oidentd
Iniciando o servidor/reiniciando/recarregando a configuração
Opções de linha de comando
Exemplos

Este capítulo documenta o uso, benefícios, configuração, utilização e exemplos do servidor identd. Também são explicados alguns pontos positivos/negativos de sua utilização para aumentar a segurança quando usado junto com o mecanismo de controle de acesso.

O servidor identd escolhido para ser descrito nesta seção do guia foi o oidentd.

Introdução

O ident (identidade) é um servidor que permite identificar qual o usuário efetuou determinada conexão e o sistema operacional usado. Ele opera na porta 113 por padrão e retorna nomes de usuários localmente válidos, e é consultado por serviços conhecidos como IRC, alguns servidores ftp, smtp e outros. Outro benefício é a utilização de mecanismos de restrições de acesso baseadas em usuários/endereçoIP (o tcpd é um exemplo de serviço que permite esta característica). A sintaxe usada para fazer tal restrição é universal: usuário@endereçoIP onde normalmente aparece o endereçoIP que é usado para bloquear/permitir o acesso.

No momento da conexão, o endereço IP é checado pra ver se confere, e o servidor Ident da máquina que está efetuando a conexão é consultado para checar se o usuário que tem acesso é o mesmo especificado no controle de acesso. Isso aumenta um pouco a segurança do sistema, mas existem algumas implicações e pontos frágeis do identd que serão explicados no decorrer deste capítulo.

Versão

É assumido que esteja usando a versão 1.7 do oidentd. As explicações contidas aqui podem funcionar para versões posteriores, mas é recomendável que leia a documentação sobre modificações no programa (changelog) em busca de mudanças que alterem o sentido das explicações fornecidas aqui.

Contribuindo

A Home page do projeto oidentd é http://ojnk.sourceforge.net Sugestões, críticas, comentários, etc., podem ser enviados para .

Características

Características do oidentd:

  • Pode ser executado tanto como daemon quanto via inetd (este último é indicado para sistemas com pouca memória onde o serviço é pouco solicitado).

  • Pode mapear identificações de usuário via IP Masquerading, tornando este servidor muito versátil podendo ser usado tanto em máquina individuais como em servidores proxy/roteadores.

  • Pode fazer forwarding de conexões para outras máquinas da rede local, quando não é executado no proxy/roteador.

  • Spoofing de nomes: é possível mapear um nome de usuário para outra identificação; por exemplo, o usuário root poderá ser mapeado para outra conta de usuário antes da identificação ser enviada.

Ficha técnica

Pacote:

Utilitários:

  • oidentd - Servidor identd

Arquivos de configuração do oidentd:

identd.spoof

Controla o spoof (falsificação) de nomes de usuários. O formato deste arquivo são dois campos separados por ":", o primeiro contendo a identificação original do usuário e o segundo o nome que será enviado pelo identd. O segundo campo pode ser omitido, neste caso a resposta de identificação é lida através do arquivo ~/.ispoof.

Este arquivo deve ter como dono o usuário do primeiro campo do identd.spoof e a identificação retornada será a contida no arquivo. Esteja certo que o daemon oidentd tem permissões para acessar este arquivo, caso contrário nenhum spoof de identidade será realizado.

Para o spoof ser habilitado, o serviço oidentd deverá ser iniciado com a opção -s ou -S (veja mais detalhes “Opções de linha de comando”).

OBS: Certifique-se de colocar as permissões adequadas para que somente o daemon oidentd tenha acesso a este arquivo (de acordo com o usuário e grupo usado para executar o oidentd), os detalhes de mapeamento de nomes podem ser perigosos em mãos erradas, e garantir o sucesso de uma conexão indesejável.

oidentd.users

Mapeamento de nomes de usuários efetuando conexões via Masquerading. O formato deste arquivo é o seguinte:

#EndereçoIP/máscara            Usuário    Sistema
192.168.1.1                    john        WINDOWS
192.168.1.2                    usuario1    WINDOWS
192.168.1.1/32                 usuario2    UNIX
192.168.1.0/24                 usuario3    UNIX
192.168.1.0/16                 usuario4    UNIX

As conexões vindas dos endereços da primeira coluna são mapeados para o nome/sistema da segunda/terceira coluna e enviados a máquina que requisitou a identificação. Para o suporta a mapeamento de usuários via Masquerading funcionar, o daemon oidentd deverá ser iniciado com a opção -m.

Requerimentos de Hardware

O oidentd requer pouca memória e pode ser executado sem problemas em um sistema com o mínimo de memória necessária para rodar o kernel do Linux (2 MB para 2.2 e 4MB para as séries 2.4 do kernel). Mesmo assim é interessante considerar 1 MB a mais que o mínimo requerido pelo kernel para uma folga na execução do serviço de identificação junto a outros do sistema.

Arquivos de log criados pelo Ident

Mensagens informativas, erros, e outras sobre execuções do serviço oidentd são enviadas ao syslog do sistema.

Instalação

Para instalar o daemon do oidentd digite:

apt-get install oidentd

Por padrão o serviço é instalado para ser executado como daemon, para executa-lo através do inetd siga os passos em “Instalação via Inetd”. O serviço será executado sob o usuário nobody e grupo nogroup por motivos de segurança, alterações de nome/grupo que executará o oidentd podem ser feitas no arquivo /etc/defaults/oidentd ou /etc/init.d/oidentd.

Instalação via Inetd

Siga os procedimentos de instalação em “Instalação” e os seguintes passos:

  1. Edite o arquivo /etc/inetd.conf e adicione a seguinte linha:

    #:INFO: Info services
    auth		stream	tcp	nowait.40	nobody.nogroup	/usr/sbin/oidentd oidentd -q -i -t 40
    

    A opção -i permite o oidentd aceitar requisições via inetd (sem ela ele será executado no modo daemon). As opções -s e -m devem também ser especificadas caso desejar os recursos de falsificação de identificação (mapeamento de nomes) e masquerading (veja “Opções de linha de comando”). Aqui foi definido um parâmetro máximo de 40 requisições por minuto (típico de um serviço poucos usado no sistema), caso este limite seja ultrapassado o serviço será desativado na seção atual do inetd). Os outros campos são descritos em “/etc/inetd.conf”.

  2. Interrompa a execução do daemon do oidentd atual dando um ./etc/init.d/oidentd stop.

  3. Remova os links dos runlevels em /etc/rc?.d que iniciam/interrompem a execução do daemon com o comando: update-rc.d -f oidentd remove. Neste ponto o daemon oidentd não será mais iniciado. Para reverter esta ação, execute o comando: udpate-rc.d oidentd defaults.

  4. De um comando killall -HUP inetd para fazer o serviço inetd recarregar o arquivo de configuração /etc/inetd.conf. O serviço de identd já estará funcionando.

OBS: A configuração da distribuição Debian permite detectar quando o serviço ident (auth) está sendo executado no /etc/inetd.conf através de seus scripts de inicialização. Você poderá fazer as coisas manualmente baseado nisso se desejar.

Usando tcpwrappers com oidentd

Especifique a opção -W para fazer o oidentd utilizar o mecanismo de acesso em hosts.allow e hosts.deny para garantir/bloquear ao serviço de acordo com endereços/hosts especificados.

OBS O oidentd é somente executado após a conferência de todos os parâmetros de endereços nestes arquivos de acesso, não utilize a sintaxe "usuário@endereço" como endereço na linha de acesso do serviço oidentd (por motivos óbvios).

Iniciando o servidor/reiniciando/recarregando a configuração

O arquivo que controla o funcionamento do daemon do oidentd é controlado pelo arquivo /etc/init.d/oidentd.

A execução do oidentd através de inetd é automática quando é feita uma requisição para a porta 113.

Opções de linha de comando

Opções de linha de comando do oidentd:

  • -a [endereçoIP] - Espera por requisições somente no nome ou endereço IP da interface especificada.

  • -A Quando o spoofing esta ativado, permite os usuários falsificaram o ident em conexões para portas privilegiadas.

  • -c [páginacodigo] - Especifica uma página de código alternativa. O padrão é "US-ASCII".

  • -d - Ativa o modo de depuração, mais detalhes serão exibidos.

  • -e - Retorna "UNKNOWN-ERROR" (erro desconhecido) para qualquer tipo de erro.

  • -f [porta] - Redireciona requisições de máquinas usando MASQUERADE para o computador na porta especificada.

  • -F - O mesmo que -f, mas usa a porta 113 como padrão.

  • -g [gid] - Executa o daemon do oidentd no grupo especificado.

  • -i - Permite ser executado através do inetd.

  • -m - Ativa o suporta a IP Masquerading.

  • -n - Retorna números UID ao invés de nomes de usuários.

  • -N - Permite ocultar a identificação de determinados usuários através de arquivos ~/.noident.

  • -o - Retorna "OTHER" (outro qualquer) ao invés do sistema operacional especificado.

  • -p [porta] - Espera por conexões na porta especificadas (a padrão é a 113 - serviço auth).

  • -q - Oculta o logging normal.

  • -P [proxy] - O proxy especificado (endereço IP) faz redirecionamento de conexões para a máquina executando o oidentd.

  • -r - Retorna respostas aleatórias de identd. As opções -n e -r não podem ser usadas juntas.

  • -s - Permite utilizar os mecanismos de spoofing (falsificação) do oidentd.

  • -S - O mesmo que -s mas permitem todos os usuários EXCETO os especificados em /etc/identd.spoof falsificarem suas respostas.

  • -t [segundos] - Espera o tempo especificado antes de ser encerrado.

  • -T [segundos] - O oidentd permanecerá aceitando conexões quando é executado com a opção -w pelo número de segundos especificado.

  • -u [uid] - Executa o servidor oidentd com a uid especificada.

  • -v/-V - Mostra detalhes sobre a versão do servidor.

  • -w - Modo de espera de conexões.

  • -x [texto] - Se uma requisição falha, o texto especificado é retornado.

  • -W - Utiliza os mecanismos de acesso hosts.allow e hosts.deny do tcpd.

  • -h - Mostra as opções de linha de comando do oidentd.

Exemplos

Não faz muito sentido exemplos de arquivo de configuração do oidentd por estes serem muito simples e estarem bem explicados em “Ficha técnica”. No entanto acho interessante mostrar alguns exemplos de configurações do hosts.allow e hosts.deny fazendo uso dos recursos de restrições baseadas em usuário@endereço :

# Arquivo hosts.allow
#
# Permite requisições talk de qualquer lugar
in.ntalkd: ALL
in.talkd: ALL
#
# Permite que o usuário john acesse os serviços de ftp de qualquer máquina da 
# rede 191.168.1.*
in.ftpd: john@192.168.1.
#
# O serviço telnet está permitido somente para john conectando de 192.168.1.1
in.telnetd: john@192.168.1.1
# Todos podem acessar os serviços samba (nomes e compartilhamentos) exceto 
# o usuário evil conectando de qualquer host com o endereço cracker.com.*
smbd, nmbd: ALL EXCEPT evil@cracker.com.


# Arquivo hosts.deny
# Qualquer finger é bloqueado exceto vindos do usuário admin feitos em qualquer 
# máquina da rede 192.168.1.*
in.fingerd: ALL EXCEPT admin@192.168.1.
# Qualquer outra coisa é bloqueada
ALL: ALL