Índice
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.
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.
É 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.
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 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.
Pacote:
Utilitários:
oidentd
- Servidor identd
Arquivos de configuração do oidentd:
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.
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.
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.
Mensagens informativas, erros, e outras sobre execuções do serviço oidentd são enviadas ao syslog do sistema.
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
.
Siga os procedimentos de instalação em “Instalação” e os seguintes passos:
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”.
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.
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).
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 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.
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
Copyright © 1999-2020 - Gleydson Mazioli da Silva