# Guia do Linux/Avançado/Servidor ident/Introdução
## 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 odin@numb.org.

### 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: oidentd
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 [#s-s-ident-opcoescmd Opções de linha de comando, Seção 13.1.11]). 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:
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:
Por padrão o serviço é instalado para ser executado como daemon, para executa-lo através do inetd siga os passos em [#s-s-ident-install-inetd Instalação via Inetd, Seção 13.1.8]. 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 [#s-s-ident-install Instalação, Seção 13.1.7] e os seguintes passos:
* Edite o arquivo /etc/inetd.conf e adicione a seguinte linha:
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 [#s-s-ident-opcoescmd Opções de linha de comando, Seção 13.1.11]). 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 [ch-rede.html#s-rede-servicos-inetd-c /etc/inetd.conf, Seção 4.7.2.1].
* Interrompa a execução do daemon do oidentd atual dando um ./etc/init.d/oidentd stop.
* 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.
* 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 [#s-s-ident-ficha Ficha técnica, Seção 13.1.4]. 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 :