Serviços de rede é o que está disponível para ser acessado pelo usuário. No TCP/IP, cada serviço é associado a um número chamado porta que é onde o servidor espera pelas conexões dos computadores clientes. Uma porta de rede pode se referenciada tanto pelo número como pelo nome do serviço.
Abaixo, alguns exemplos de portas padrões usadas em serviços TCP/IP:
21
- FTP (transferência de arquivos)
23
- Telnet (terminal virtual remoto)
25
- Smtp (envio de e-mails)
53
- DNS (resolvedor de nomes)
79
- Finger (detalhes sobre usuários do sistema)
80
- http (protocolo www - transferência de páginas
Internet)
110
- Pop-3 (recebimento de mensagens)
119
- NNTP (usado por programas de noticias)
O arquivo padrão responsável pelo mapeamento do nome dos serviços e das portas
mais utilizadas é o /etc/services
(para detalhes sobre o
seu formato, veja a “/etc/services”).
Serviços de rede iniciados como daemons ficam residente o
tempo todo na memória esperando
que alguém se conecte
(também chamado de modo standalone). Um exemplo de
daemon é o servidor proxy squid e o
servidor web Apache operando no modo
daemon.
Alguns programas servidores oferecem a opção de serem executados como daemons ou através do inetd. É recomendável escolher daemon se o serviço for solicitado freqüentemente (como é o caso dos servidores web ou proxy).
Para verificar se um programa está rodando como daemon,
basta digitar ps ax
e procurar o nome do programa, em caso
positivo ele é um daemon.
Normalmente os programas que são iniciados como daemons possuem seus próprios recursos de segurança/autenticação para decidir quem tem ou não permissão de se conectar.
Serviços iniciados pelo inetd são carregados para a
memória somente quando são solicitados. O controle de quais serviços podem ser
carregados e seus parâmetros, são feitos através do arquivo
/etc/inetd.conf
.
Um daemon chamado inetd
lê as
configurações deste arquivo e permanece residente na memória, esperando pela
conexão dos clientes. Quando uma conexão é solicitada, o daemon
inetd verifica as permissões de acesso nos arquivos
/etc/hosts.allow
e /etc/hosts.deny
e
carrega o programa servidor correspondente no arquivo
/etc/inetd.conf
. Um arquivo também importante neste
processo é o /etc/services
que faz o mapeamento das portas
e nomes dos serviços.
Alguns programas servidores oferecem a opção de serem executados como
daemons ou através do inetd. É
recomendável escolher inetd se o serviço não for
solicitado freqüentemente (como é o caso de servidores ftp
,
telnet
, talk
, etc).
O arquivo /etc/inetd.conf
é um arquivo de configuração
para o daemon servidor inetd. Sua função é dizer ao
inetd o que fazer quando receber uma requisição de conexão
para um serviço em particular. Para cada serviço que deseja aceitar conexões,
você precisa dizer ao inetd qual daemon servidor executar
e como executa-lo.
Seu formato é também muito simples. É um arquivo texto com cada linha descrevendo um serviço que deseja oferecer. Qualquer texto em uma linha seguindo uma "#" é ignorada e considerada um comentário. Cada linha contém sete campos separados por qualquer número de espaços em branco (tab ou espaços). O formato geral é o seguinte:
serviço tipo_soquete proto opções.num usuário caminho_serv. opções_serv.
É o serviço relevante a este arquivo de configuração pego do arquivo
/etc/services
.
Este campo descreve o tipo do soquete que este item utilizará, valores
permitidos são: stream
, dgram
,
raw
, rdm
, ou
seqpacket
. Isto é um pouco técnico de natureza, mas como
uma regra geral, todos os serviços baseados em tcp usam
stream
e todos os protocolos baseados em
udp usam dgram
. Somente alguns tipos
de daemons especiais de servidores usam os outros valores.
O protocolo é considerado válido para esta item. Isto deve bater com um item
apropriado no arquivo /etc/services
e tipicamente será tcp
ou udp. Servidores baseados no Sun RPC (Remote Procedure
Call), utilizam rpc/tcp ou rpc/udp.
Existem somente duas configurações para este campo. A configuração deste campo diz ao inetd se o programa servidor de rede libera o soquete após ele ser iniciado e então se inetd pode iniciar outra cópia na próxima requisição de conexão, ou se o inetd deve aguardar e assumir que qualquer servidor já em execução pegará a nova requisição de conexão.
Este é um pequeno truque de trabalho, mas como uma regra, todos os servidores tcp devem ter este parâmetro ajustado para nowait e a maior parte dos servidores udp deve tê-lo ajustado para wait. Foi alertado que existem algumas excessões a isto, assim deixo isto como exemplo se não estiver seguro.
O número especificado após o "." é opcional e define a quantidade máxima de vezes que o serviço poderá ser executado durante 1 minuto. Se o serviço for executado mais vezes do que este valor, ele será automaticamente desativado pelo inetd e uma mensagem será mostrada no log do sistema avisando sobre o fato.
Para reativar o serviço interrompido, reinicie o inetd com:
killall -HUP inetd
. O valor padrão é 40
.
Este campo descreve que conta de usuário usuário no arquivo
/etc/passwd
será escolhida como dono
do daemon de rede quando este for iniciado. Isto é muito útil se você deseja
diminuir os riscos de segurança. Você pode ajustar o usuário de qualquer item
para o usuário nobody, assim se a segurança do servidor de
redes é quebrada, a possibilidade de problemas é minimizada. Normalmente este
campo é ajustado para root, porque muitos servidores
requerem privilégios de usuário root para funcionarem corretamente.
Este campo é o caminho para o programa servidor atual que será executado.
Este campo inclui o resto da linha e é opcional. Você pode colocar neste campo qualquer argumento da linha de comando que deseje passar para o daemon servidor quando for iniciado.
Uma dica que pode aumentar significativamente a segurança de seu sistema é
comentar (colocar uma #
no inicio da linha) os serviços que
não serão utilizados.
Abaixo um modelo de arquivo /etc/inetd.conf
usado em
sistemas Debian:
# /etc/inetd.conf: veja inetd(8) para mais detalhes. # # Banco de Dados de configurações do servidor Internet # # # Linhas iniciando com "#:LABEL:" ou "#<off>#" não devem # ser alteradas a não ser que saiba o que está fazendo! # # # Os pacotes devem modificar este arquivo usando update-inetd(8) # # <nome_serviço> <tipo_soquete> <proto> <opções> <usuário> <caminho_servidor> <args> # #:INTERNO: Serviços internos #echo stream tcp nowait root internal #echo dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal time stream tcp nowait root internal #time dgram udp wait root internal #:PADRÕES: Estes são serviços padrões. #:BSD: Shell, login, exec e talk são protocolos BSD. #shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd #login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd talk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd ntalk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.ntalkd #:MAIL: Mail, news e serviços uucp. smtp stream tcp nowait.60 mail /usr/sbin/exim exim -bs #:INFO: Serviços informativos #:BOOT: O serviço Tftp é oferecido primariamente para a inicialização. Alguns sites # o executam somente em máquinas atuando como "servidores de inicialização". #:RPC: Serviços baseados em RPC #:HAM-RADIO: serviços de rádio amador #:OTHER: Outros serviços
Copyright © 1999-2020 - Gleydson Mazioli da Silva