[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ próximo ]
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: oidentd
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, 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.
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, 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
.
Siga os procedimentos de instalação em Instalação, Seção 13.1.7 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, 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 /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.
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, 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 :
# 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
[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ próximo ]
Guia Foca GNU/Linux
Versão 6.43 - domingo, 05 de setembro de 2010gleydson@guiafoca.org