Gerenciar e configurar inetd e serviços relacionados

Um breve, porém detalhado artigo do super daemon inetd.

[ Hits: 22.005 ]

Por: Perfil removido em 01/06/2010


Serviços relacionados



Para reduzir o número de daemons necessários para atender as requisições de serviços, o superdaemon Internet, ou inetd, foi criado. Em vez de rodar daemons individuais para cada serviço, inetd roda como um só serviço, o qual monitora todos os números de portas desejados. Quando uma requisição é recebida, ela é passada para o daemon real para ser processada. Com este esquema, os daemons reais ainda são usados, como antes, mas eles só são executados quando necessário, e são iniciados por inetd, liberando recursos para outras tarefas. Além disso, o uso do inetd simplifica enormemente o código dos vários daemons. Em vez de monitorar conexões e fazer tudo o que é requerido para ser um daemon de rede propriamente, os daemons executados por inetd só precisam ler a partir de stdin e escrever em stdout.

Muitas distribuições do GNU/Linux começam a incluir o xinetd como substituto do inetd. Neste artigo abordarei o uso do inetd. Conforme a aceitação e pedidos adicionarei o xinetd.

O arquivo de configuração de inetd

Inetd geralmente é iniciado durante a inicialização do sistema e continua a rodar indefinidamente. Quando iniciado, inetd lê o seu arquivo de configuração a partir de /etc/inetd.conf, que não é mais do que um arquivo de texto simples que define os serviços gerenciados por inetd. O exemplo abaixo mostra partes do inetd.conf.

#/etc/inetd.conf
#Banco de dados de configuração do servidor de Internet
#Ver inetd(8) para mais informações.

ftp    stream  tcp  nowait  root  /usr/sbin/tcpd  /usr/sbin/in.ftpd
telnet stream  tcp  nowait  root  /usr/sbin/tcpd /usr/sbin/in.telnetd
pop-2  stream  tcp  nowait  root  /usr/sbin/tcpd ipop2d
pop-3  stream  tcp  nowait  root  /usr/sbin/tcpd ipop3d
imap   stream  tcp  nowait  root  /usr/sbin/tcpd imapd

Cada linha não-comentada de inetd.conf deve conter um dos seguintes campos:
  • nome_do_serviço - Este é o nome de um serviço, conforme definido em /etc/services.
  • tipo_do_socket - Esta entrada especifica um de alguns tipos de comunicações que o serviço usará. Geralmente e stream ou dgram.
  • proto - Este campo especifica o protocolo do serviço dentre aqueles em /etc/protocols. Para a maioria dos serviços, será ou tcp ou udp, que correspondem aos sockets.
  • flags - O flag wai/nowait (.max) é usado apenas para serviços de datagramas, onde ele ajuda a controlar a manipulação de requisições, e é normalmente definido como wait (esperar). Você pode limitar o número de instâncias do servidor inetd, dentro de qualquer intervalo de 60 segundos, anexando-se um ponto e numero máximo (.max). Por exemplo, para limitar o serviço a 20 instâncias, use .20 após o flag nowait:

    nowait.20

  • usuário(.grupo) - Esta entrada especifica o nome do usuário e opcionalmente o grupo;
  • server_path - Este campo e o caminho completo ate o daemon executável do programa servidor. Quando wrappers TCP são usados, esta entrada especifica tcpd, como mostrado no exemplo acima.
  • args - Esta última entrada pode consistir de múltiplos campos. Ela contém o nome do daemon servidor e todos os argumentos que dever ser passados a ele. O nome do daemon é na verdade o primeiro argumento, ou argv[0], do ponto de vista do programador.

Wrapper TCP com inetd

Rodar serviços a partir do inetd oferece uma outra conveniência. Em vez de iniciar os daemons alvos diretamente, inetd geralmente é configurado para usar os recurso de controle de acesso dos wrappers TCP. Os wrapper TCP, ou tcpd, permitem que o administrador defina restrições sobre a origem das requisições sendo recebidas. Tcpd pode ser usado para se controlar o acesso aos serviços gerenciados por inetd, por endereço IP ou por nome do domínio. Para cada conexão recebida a um serviço protegido por wrappers TCP, tcpd consulta dois arquivos que definem o acesso:
  • /etc/hosts.allow - Se uma regra deste arquivo for atendida, o acesso ao serviço e permitido.
  • /etc/hosts.deny - Se uma regra deste arquivo for atendido, o acesso ao serviço e negado.

As regras destes arquivos podem ser construídas de forma a corresponder todos os serviços ou, alternativamente, a determinados serviços específicos. Se não houver correspondência nos dois arquivos, o acesso ao(s) serviço(s) é permitido. É comum se especificar regras particulares no arquivo /etc/hosts.allow e especificar uma negativa gera no arquivo hosts.deny, limitando assim o acesso aos clientes que vice especificamente permitir.

A linguagem dos arquivos de controle consiste de uma lista de serviços, seguida por dois-pontos, seguida por uma lista de hosts. Os hosts podem ser especificados por nome ou endereço IP. Por exemplo, para negar acesso a todos os serviços, exceto ao FTP no domínio local, poderiam ser usados estes dois arquivos simples:

/etc/hosts.allow:

ftp: LOCAL

/etc/hosts.deny:

ALL: ALL

O arquivo hosts.deny é consultado depois de hosts.allow, permitindo ao administrador definir regras específicas de permissão, que serão aplicadas antes das regras de proibição ou de uma negativa geral.

Iniciando e interrompendo serviços inetd

Se inetd não estiver rodando, todos os serviços que ele gerencia ficam desativados. Da mesma forma, se inetd for reconfigurado, quaisquer modificações nos serviços gerenciados individuais entram em efeito ao mesmo tempo.

Para fazer inetd reler o seu arquivo de configuração, simplesmente envie um SIGHUP a ele:

# killall -HUP inetd
ou
# killall -1 inetd


Ou em sistemas que possuam o script de inicialização do inetd em /etc/init.d:

# service inetd reload

Todos os serviços inetd que estiverem desativados por comentários ou estiverem ausentes de /etc/inetd.conf serão desabilitados.

Conclusão

O superdaemon inetd é um daemon que facilita a vida do administrador no âmbito de gerenciamento de serviços. É altamente recomendável que se planeje e que se projete quaisquer modificações wrapper TCP em um ambiente de produção.

O formato inetd.conf só permite um número específico de opções, uma vez que o xinetd oferece muito mais opções para serviços do que inetd.

O superdaemin xinetd será abordado em meu próximo artigo.

Abraços.

   

Páginas do artigo
   1. Serviços relacionados
Outros artigos deste autor

Como prevenir o Buffer Overflow

Karl Marx e a concorrência individual no Viva o Linux

Mandrake 10.1 Official - Análise de instalação e uso

Ocomon - Instalação e configuração

Introduzindo um pouco mais a fundo o shell script (revisado)

Leitura recomendada

Chkrootkit - Como determinar se o sistema está infectado com rootkit

Entrevista com um hacker, via Internet

Metasploit Exploitation

OpenBSD IDS - Solução Snort e BASE

Chroot + Bind sem stress

  
Comentários
[1] Comentário enviado por Fujitsu em 01/06/2010 - 16:33h

O artigo fico bao !!!
mas cade o xinetd????

[2] Comentário enviado por removido em 02/06/2010 - 13:54h

To trabalhando nisso


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts