• Nenhum resultado encontrado

q

1 Capaz de iniciar vários serviços de modo dinâmico. 1 Configurado pelo inetd.conf.

1 Formato das linhas:

<porta> <socket> <protocolo> <wait/nowait> \ <usuário[.grupo]> <programa> <opções do \ programa>

1 Exemplo:

smtp stream tcp nowait mail /usr/sbin/exim \ exim -bs

O inetd é um daemon especial, porque, ao contrário dos outros, não oferece um serviço específico. Ele pode ser configurado para escutar em determinadas portas e iniciar outros programas quando uma conexão é iniciada em uma dessas portas.

Em geral, o inetd é utilizado em serviços com uma taxa de solicitação baixa, para evitar que os daemons ou processos desses serviços sejam mantidos em memória o tempo todo. Por uma questão de desempenho, não se recomenda a utilização do inetd nos serviços que recebem muitas solicitações em intervalos curtos de tempo, já que para cada solicitação o inetd atenderá à requisição e chamará o programa para atender ao serviço, criando uma carga adicional e desnecessária de trabalho.

O daemon inetd é configurado através do arquivo /etc/inetd.conf. Cada linha desse arquivo (exceto as linhas vazias e de comentários) descreve um serviço e possui o seguinte formato:

Figura 5.2

Utilizando o rcconf.

Nos sistemas baseados na distribuição Debian, o administrador poderá utilizar o comando

rcconf para selecionar

os serviços que devem ser iniciados durante a inicialização do sistema. O padrão do rcconf é alterar os serviços apenas para o run-level atual (normalmente o run-level 3).

Ca pí tu lo 5 - S eg ur an ça – I nt ro du çã o

<porta> <tipo de socket> <protocolo> <wait/nowait> < usuário[. grupo]> <programa> <opções do programa>

1 O parâmetro <porta> indica em que porta esse serviço será executado; é possível usar um valor numérico ou o nome do serviço, desde que ele esteja descrito no arquivo /etc/services; 1 O <tipo de socket> pode ser stream, dgram, raw, rdm ou seqpacket. Em geral, é utilizado

o tipo stream para serviços que usam o protocolo TCP e o dgram para serviços que uti- lizam o UDP;

1 O campo “<protocol>” indica o tipo de protocolo de transporte;

1 O campo seguinte pode conter os valores wait ou nowait e indica se o daemon inetd deve continuar escutando nessa porta ou se deve esperar a finalização da conexão em andamento;

1 O inetd pode executar processos com permissões de outro usuário ou grupo; 

1 Por fim, os dois últimos campos indicam o programa que deve ser executado e as opções que devem ser passadas para ele. 

O exemplo a seguir configura o serviço de e-mail (porta 25) com o programa exim:  smtp stream tcp nowait mail /usr/sbin/exim exim –bs

Para desabilitar um serviço no inetd, basta remover ou comentar sua linha no arquivo

/etc/inetd.conf e reiniciar o inetd (/etc/init.d/inetd restart).

Veremos a seguir como controlar o acesso de máquinas a um serviço.

tcpwrapper

q

1 Duas formas: daemon tcpd e biblioteca libwrap. 1 tcpd + inetd.

1 smtp stream tcp nowait mail \ /usr/sbin/tcpd /usr/sbin/exim exim -bs 1 Daemon sshd: “linkado” com a libwrap.

1 Controle de acesso é feito pelos arquivos hosts.allow e hosts.deny. 1 hosts.allow:

2 Lista o que pode ser acessado e é consultado primeiro. 1 hosts.deny:

2 Lista o que deve ser negado e é consultado após o hosts.allow. Cada linha tem a forma:

1 <daemon>: <hosts / redes>

Nos itens anteriores vimos apenas como executar ou não um serviço, mas não como sele- cionar quem pode ter acesso ao serviço. Para resolver esse problema, foi criado o tcpwrapper. Existem duas formas de utilização: 

1 O programa tcpd é chamado antes do programa que atenderá a requisição (por exemplo, no inetd);

1 O tcpwrapper é utilizado através da compilação dos daemons “linkados” com a biblio- teca libwrap. 

Ad m in is tr aç ão d e S is te m as L in ux : R ed es e S eg ur an ça

Tomando o exemplo do item anterior, para controlar o acesso com o tcpwrapper ao serviço de e-mail utilizando o inetd, basta escrever a seguinte linha no inetd.conf: 

smtp stream tcp nowait mail /usr/sbin/tcpd /usr/sbin/exim exim -bs

Para os daemons que não utilizam o inetd, mas são “linkados” com a libwrap, não é neces-inetd, mas são “linkados” com a libwrap, não é neces-, mas são “linkados” com a libwrap, não é neces-libwrap, não é neces-, não é neces-

sário utilizar o programa tcpd. Basta utilizar o comando ldd </caminho/binario_daemon> para verificar se um daemon foi “linkado” com a libwrap. O exemplo a seguir mostra que o daemon sshd foi “linkado” com a libwrap: 

# ldd /usr/sbin/sshd 

linux-gate.so.1 => (0x00156000)

libwrap.so.0 => /usr/lib/libwrap.so.0 (0x007c3000) <——- libpam.so.0 => /lib/libpam.so.0 (0x007b9000) 

libdl.so.2 => /lib/libdl.so.2 (0x007b3000)  [...] 

Em ambos os casos de utilização (via libwrap ou tcpd), o controle de acesso aos serviços é configurado através dos arquivos /etc/hosts.allow e /etc/hosts.deny.

/etc/hosts.allow e hosts.deny 

O arquivo /etc/hosts.allow lista os hosts que podem acessar determinados serviços prote- gidos pelo tcpwrapper. Cada linha de configuração tem a forma:

<serviço>: <hosts e/ou redes>.

O exemplo a seguir permite o acesso ao daemon SSH para os hosts 192.168.0.1 e 10.0.0.2:  sshd: 192.168.0.1 10.0.0.2 

De maneira análoga, o arquivo /etc/hosts.deny nega o acesso de hosts a serviços e a sua sintaxe é igual à sintaxe do arquivo /etc/hosts.allow.

Ambos os arquivos aceitam algumas palavras-chave com significados especiais, sendo as principais as palavras ALL, que significa qualquer serviço ou qualquer host, e EXCEPT, para excluir algum serviço ou algum host. Segue um exemplo utilizando essas palavras: 

ALL: 127.0.0.1

ALL EXCEPT sshd: 192.168.0. 10.0.0.0/255.255.255.0 EXCEPT 10.0.0.1 Observe que foram utilizadas duas formas de designar redes: a primeira simples- mente terminando a rede com “.”; e a segunda, usando uma máscara de rede. O tcpwrapper consulta primeiro o arquivo /etc/hosts.allow e, em seguida, o arquivo

/etc/hosts.deny. Para uma configuração bem restritiva, poderíamos colocar somente os ser-

Ca pí tu lo 5 - S eg ur an ça – I nt ro du çã o

Exemplo de configuração

q

sshd: 192.168.0.1 10.0.0. Palavras-chaves especiais: 1 ALL, EXCEPT 1 ALL: 127.0.0.1

1 ALL EXCEPT sshd: 10.0.0. EXCEPT 10.0.0.1 1 ALL: ALL

Como liberar o SSH e negar todos os outros serviços? Testando a configuração:

1 tcpdmatch e tcpdchk 2 tcpdchk –v

2 tcpdmatch sshd 192.168.0.3