Qual a importância do serviço telnet para o funcionamento de um servidor linux.

Serviço é um programa ou conjunto de programas que devem ser executados para iniciar uma atividade em um servidor, geralmente envolvendo vários usuários.

Existem alguns serviços que são considerados essenciais em um sistema Linux. Isto porque, sem eles, o sistema perderia um pouco da sua flexibilidade. Por exemplo, sem um serviço para captar e registrar as mensagens geradas pelos vários outros programas em funcionamento haveria mais dificuldades em detectar problemas no sistema.

Este capítulo irá descrever o que são serviços, como executá-los, e também irá mostrar alguns exemplos de serviços no Conectiva Linux.

Entendendo os Serviços

Um serviço geralmente é controlado por um arquivo contendo um script que, ao ser executado, irá iniciar um ou mais processos em um servidor. No Conectiva Linux estes serviços estão localizados no diretório /etc/init.d.

Deve-se ressaltar também que quase todos os serviços estão interligados. Se você deseja acionar um serviço de rede, como por exemplo um servidor de IRC, você precisará acionar o serviço de rede propriamente dito (network). Além disso, para ser incluído no diretório de serviços, deve-se instalar os pacotes necessários para que o serviço possa ser executado sem problemas.

Acionando e Parando Serviços

Qual a importância do serviço telnet para o funcionamento de um servidor linux.

Figura 5-1. Lista de Serviços

Após a instalação e configuração dos serviços você poderá executar várias funções sobre eles. As três ações mais importantes são estas: acionar, interromper ou verificar o estado de um serviço. Pode-se executar essas ações através do Linuxconf em ->->. Para buscar informações sobre um serviço basta clicar sobre o mesmo. Veja o exemplo na Figura 5-1, que mostra a lista de serviços.

Ao clicar sobre um serviço, são mostradas informações como estado do serviço, o nome do pacote (ou pacotes) necessários para executar este serviço e sua(s) versão (versões). Informações mais detalhadas sobre o pacote podem ser obtidas através do botão Informações do pacote. Para iniciar o serviço basta clicar no botão Iniciar e similarmente o botão Parar para terminar o serviço. Execute cada uma destas operações e em seguida veja realmente se a ação foi executada através do botão Status.

Existem dois modos de inicialização do serviço: automático ou manual. Marcando a opção Automático, o serviço será inicializado automaticamente quando a máquina for reinicializada. Caso contrário, ele deverá ser inicializado manualmente.

Além disso, você pode determinar em que nível de execução um serviço irá ser executado; para isso, dirija-se à aba Níveis de Execução. Os níveis mais utilizados são 2, 3 e 5, utilizados para multiusuários, rede e modo gráfico. Nunca utilize o nível 6, pois o serviço irá tentar iniciar quando a máquina estiver sendo desligada, o que não é muito útil. Após as configurações feitas, clique no botão Aceitar.

Nota: Lembre-se de que sempre após a configuração ou a mudança de algum serviço, este deve ser reinicializado.

Para iniciar um serviço manualmente você deve utilizar a conta de superusuário e utilizar o comando service. Para inicializar o serviço, após o service basta digitar o nome do serviço seguido do parâmetro start. Com o parâmetro status verifica-se o estado do serviço. Veja Exemplo 5-1, que mostra como iniciar o serviço que inicializa o servidor de correio postfix:

Exemplo 5-1. Exemplo de Inicialização Manual de um Serviço

# service postfix status
master está parado
# service postfix start
Iniciando os serviços postfix: [ OK ]

Ao digitar o parâmetro start, o script irá ativar as configurações necessárias para que o servidor de correio inicialize. Caso ocorra algum erro, será enviada uma mensagem. Um exemplo de erro que pode ocorrer está descrito abaixo:

$ service postfix start
Iniciando os serviços postfix: postalias: fatal: \
open /etc/postfix/aliases.db: Permission denied
postmap: fatal: open database /etc/postfix/access.db: Permission denied
postmap: fatal: open database /etc/postfix/canonical.db: Permission denied
...
[FALHOU]
touch: creating `/var/lock/subsys/postfix': Permissão negada

Neste exemplo, um usuário comum está tentando iniciar o postfix, o que não é permitido, pois somente o superusuário pode executar esta atividade. Para interromper um serviço basta digitar o parâmetro stop.

Exemplos de Serviços

Nesta seção serão mostrados alguns serviços utilizados em um sistema, tanto em um servidor como em uma máquina cliente. Para verificar os outros serviços existentes, dirija-se ao diretório /etc/init.d.

crond

O crond é um servidor que permite a execução periódica de tarefas, sem assistência do administrador. É possível utilizar o crond para executar várias tarefas, como por exemplo:

  • Limpar diretórios de arquivos temporários como o /tmp e o /var/tmp.

  • Rotacionar arquivos de registro para evitar que se tornem muito extensos.

  • Verificar o funcionamento de outros serviços.

O agendamento de tarefas pode ser feito através do Linuxconf. Para isso, clique no botão Adicionar localizado em -> -> para incluir agendamentos do superusuário. Veja a Figura 5-2, que mostra um exemplo de tarefa agendada.

Esta entrada irá executar um envio de e-mail para <>, indicando o assunto Lembrete e com o texto do e-mail sendo "spam é crime!". Esta tarefa será executada todos os dias do mês, todos os meses do ano (indicados com o "*"), porém apenas aos domingos, segundas e terças-feiras (indicado no campo 0-2), sendo que nesses dias um e-mail será enviado de três em três horas (*/3) para a conta indicada.

Qual a importância do serviço telnet para o funcionamento de um servidor linux.

Figura 5-2. Agendamento de uma Tarefa

Assim como funciona para o superusuário, também para usuários comuns você pode fazer este agendamento em -> -> -> , clicando sobre o usuário, e em seguida, no botão Tarefas. O processo de preenchimento é igual ao processo utilizado para o superusuário.

Se o serviço crond estiver parado, basta reinicializá-lo através do Linuxconf. Se ele já estiver sendo executado, não é necessário reinicializá-lo, pois a tarefa será agendada automaticamente.

O agendamento das tarefas pode ser feito também através da linha de comando. Cada usuário do sistema pode executar o seu agendamento separadamente através do comando crontab. Caso exista o arquivo /etc/cron.deny, os usuários listados neste arquivo não poderão usar o comando crontab. Caso exista o arquivo /etc/cron.allow, somente os usuários listados neste arquivo terão acesso ao comando crontab.

A configuração do servidor crond também pode ser feita, somente pelo superusuário, através do arquivo /etc/crontab. Para agendar uma tarefa, pode-se especificar o minuto, a hora, o dia do mês, o mês e o dia da semana.

Tabela 5-1. Campos do Arquivo /etc/crontab

Campo

Valores permitidos

minuto

0-59

hora

0-59

dia do mês

1-31

mês

1-12 (ou os nomes - em inglês)

dia da semana

0-7 (0 e 7 sendo domingo, ou nomes - em inglês)

O campo pode conter um asterisco, o que significa que todos os períodos serão marcados, sejam eles horários, dias ou meses. Pode-se utilizar intervalos de números, que são indicados por dois números separados por um hífen. Por exemplo, 8-10 em uma entrada horas especifica execução às 8, às 9 e às 10 horas.

É possível utilizar listas, que são representadas por números (ou intervalos) separados por vírgulas, como nos seguintes exemplos: 1,2,5,6; 12-17, 21,23.

Um /número imediatamente após um intervalo especifica um passo no valor do número através do intervalo. Por exemplo, 0-23/2 pode ser usado no campo das horas para especificar que o comando deve ser executado a cada duas horas (0,2,4,6,8,10,12,14,16,18,20,22). Estes intervalos também são permitidos depois de um asterisco. Logo, se você simplesmente desejar que uma ação ocorra a cada duas horas use */2.

O último campo serve para especificar o comando a ser executado. Este comando será executado pelo /bin/sh ou pelo shell especificado na variável SHELL do arquivo /etc/crontab.

Portanto, o formato de uma linha de comando no arquivo /etc/crontab segue basicamente a seguinte estrutura:

min hora dia_mês mês dia_semana comando

ou seja, são seis campos, que poderão ser preenchidos de acordo com o que foi descrito anteriormente. Veja o Exemplo 5-2 que mostra um exemplo do arquivo cron.

Exemplo 5-2. Exemplo de Arquivo cron

# usa /bin/sh para executar comandos, independentemente
# do que o /etc/passwd diz.
SHELL=/bin/sh
# envia (por e-mail) toda saída para o usuário indicado,
# independentemente de quem é o dono do crontab.
MAILTO=joao

# executa às 0h05, todo dia.
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1

# executa às 14h25 no dia primeiro de cada mês - a
# saída é enviada para joao
15 14 1 * * $HOME/bin/monthly

# executa às 22h00 em dias de semana.
0 22 * * 1-5 mail -s "São 22 horas" joao
23 */2 * * * echo "executa a 0h23, 2h23, ... todo dia"
5 4 * * sun echo "executa às 4h05 todo domingo"

Se o servidor crond já estiver sendo executado, não será necessário reinicializá-lo, pois ele irá executar as tarefas agendadas automaticamente. Se ele não estiver sendo executado, pode-se executar o serviço para inicializar o servidor:

# service crond start
Iniciando cron: [ OK ]

Nota: Para que usuários comuns agendem suas tarefas, o arquivo de cron pode ser criado através do comando crontab -e, que abrirá um editor de textos para a montagem das opções. O formato para este arquivo é igual ao formato do arquivo do superusuário (campos de horas, ação, etc.).

Para mais detalhes sobre comandos verifique as páginas de manual do cron (man crontab e man cron).

atd

O atd é um servidor que executa comandos especificados em um determinado horário fornecido. Ele é muito similar ao crond, mas está limitado a uma única execução: o comando é executado em horário e datas fornecidas, mas não repetidas vezes como o cron.

Para agendar tarefas para o atd, utilizamos o comando at, o qual aceita várias opções de agendamento. O superusuário pode usar este comando em qualquer caso. Para os outros usuários, a permissão para usar o comando at é determinada pelos arquivos /etc/at.allow e /etc/at.deny.

Exemplo 5-3. Tarefa Agendada pelo at

#!/bin/sh
# Este script-exemplo irá baixar o código-fonte
# do kernel
ncftp ftp.br.kernel.org
cd /pub/linux/kernel/v2.5
bin
get linux-2.5.20.tar.bz2
bye

Suponha então que este script seja salvo em um arquivo chamado baixar-kernel, com permissões de execução. Primeiramente, deve-se inicializar o serviço atd:

# service atd start
Iniciando o servidor at: [ OK ]

Após inicializado, o servidor estará pronto para receber uma tarefa para ser agendada através do comando at. Por exemplo, para agendar a execução do script acima para às 4 horas da madrugada, deve-se fazer da seguinte maneira:

# at -f baixar-kernel 4:00
warning: commands will be executed using /bin/sh
job 1 at 2003-03-17 04:00

O parâmetro -f faz com que o comando obtenha as informações do arquivo indicado (baixar-kernel). É claro que além de executar o servidor, você deverá também estar conectado à Internet neste horário, mas se você usar scripts de conexão, será extremamente simples adicionar no baixar-kernel o comando para efetuar a conexão antes de tentar conectar ao site FTP.

Mais detalhes sobre o servidor e o comando poderão ser obtidos nas páginas de manual (man at e man atd).

syslog

O kernel e muitos programas do sistema produzem avisos, mensagens de erros e outros alertas. É importante que estas mensagens sejam armazenadas para que possam ser lidas a qualquer momento. O serviço responsável pelo arquivamento destas mensagens é o syslog. Ele pode ser configurado para gravar as mensagens em diferentes arquivos, de acordo com o nível de importância ou origem.

O syslogd é o servidor responsável por estas tarefas e sua configuração pode ser feita através do Linuxconf, ou através da configuração do arquivo. Os detalhes de sua configuração serão vistos em um capítulo posterior.

network

Configurar uma rede não é algo trivial. É uma atividade que exige planejamento e estruturas física e lógica adequadas. Além deste planejamento, existem várias configurações tanto de hardware como de software que devem ser feitas para que as interfaces de rede executem suas funções sem problemas.

O serviço network auxilia a manutenção da rede, gerenciando todas as interfaces de rede configuradas para serem habilitadas durante a inicialização. Ele gerencia a manutenção das interfaces de uma máquina para rede.

O pacote utilizado por este serviço é o initscripts. Ele contém scripts usados durante a inicialização do sistema para mudar níveis de execução (run levels) e desligar o sistema corretamente. O pacote contém principalmente scripts que ativam/desativam as interfaces de rede que a máquina possui.

Para iniciar a rede basta utilizar o Linuxconf.

portmap

Portmap é um serviço que basicamente converte programas RPC[1] para o protocolo DARPA[2].

Quando um servidor RPC é inicializado ele envia através do portmap qual a porta que está "ouvindo" e quais os programas para os quais ele está preparado para servir. Quando uma máquina cliente deseja fazer uma chamada RPC, ela primeiramente irá contatar o portmap do servidor para determinar o número da porta pela qual os pacotes RPC devem ser enviados. Portanto, o portmap deve estar sendo executado a fim de receber chamadas RPC e deve ser inicializado antes dos servidores RPC serem invocados.

O portmap é utilizado por alguns serviços que necessitam de gerenciamento das conexões RPC, como por exemplo o NFS e NIS. É aconselhável deixar o portmap ser automaticamente executado, pois muitos serviços e programas precisam obrigatoriamente dele.

Para executar o portmap basta ir até o Linuxconf e inicializá-lo, ou através do comando service:

inet

O inet executa o inetd[3], que tem por objetivo inicializar vários programas incluindo telnet, ftp, rsh e rlogin. A desabilitação do inet pára todos os serviços dos quais ele toma conta.

A configuração do inetd pode ser feita através do menu -> -> -> no Linuxconf. Veja a Figura 5-3 que mostra esta tela.

Qual a importância do serviço telnet para o funcionamento de um servidor linux.

Figura 5-3. Configuração do inet

A configuração dos serviços deve ser feita através do menu . Você pode fazer uma busca pelo serviço que deseja, ou exibir a lista completa dos serviços. Após a tela de busca, surge uma tela com os serviços; clique sobre um serviço para editá-lo, ou clique em Adicionar para criar um novo serviço Internet.

Você deve preencher o quadro com o nome do serviço, a porta disponível para este serviço, qual o protocolo que ele utiliza (observe a lista disponível) e opcionalmente, apelidos e comentários para o serviço.

Observe a Figura 5-4 que mostra a configuração do serviço telnet.

Qual a importância do serviço telnet para o funcionamento de um servidor linux.

Figura 5-4. Configuração do Telnet

Após esta primeira configuração, deve-se configurar alguns detalhes adicionais e tornar ativo o serviço. Para isso, retorne à tela mostrada na Figura 5-3 e selecione a opção . Esta opção busca todos os serviços disponíveis no sistema e mostra detalhes da configuração e do estado dos serviços. Para a inicialização de um serviço clique sobre ele e selecione a opção Ativo para o estado do serviço.

Nesta tela você poderá selecionar usuários e grupos sob os quais o serviço em questão será executado, poderá verificar o nome do pacote e sua versão para o serviço indicado, se é possível a existência de processos simultâneos, ou seja, se é permitido que mais de um servidor funcione ao mesmo tempo () e outras opções. Após feita a configuração clique em Aceitar.

Para efetuar as configurações, basta sair do Linuxconf que ele irá reinicializar o inetd ou dirigir-se à opção de inicialização de serviços (veja a seção Acionando e Parando Serviços).

O arquivo de configuração do inetd está localizado em /etc/inetd.conf. Ele armazena todos os dados importantes para o serviço, sendo que os serviços inativos ou comentários são começados por um #. O Exemplo 5-4 mostra um trecho do arquivo /etc/inetd.conf.

Exemplo 5-4. Trecho do Arquivo /etc/inetd.conf

# These are standard services.

#ftp   stream tcp nowait root /usr/sbin/tcpd in.ftpd -l
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
      

Atenção

Tenha muito cuidado ao habilitar serviços. Lembre-se de que estas portas ficarão abertas para conexões, e se não estiverem corretamente configuradas podem gerar problemas de segurança.

Podemos ver pelo exemplo que o serviço ftp está desabilitado. A sintaxe do arquivo segue a seguinte ordem:

nome_serv  socket  protoc  flag  usuario  cam_serv args

nome_serv: nome de um serviço; deve estar listado em /etc/services, que é a fonte de consulta para o inetd.

socket: tipo de socket, ou seja, que tipo de pacote está sendo enviado. Os mais comuns são os tipos stream e o dgram, que são os dados comuns e os datagramas.

protoc: protocolo utilizado pelo serviço. O inet irá pesquisar no arquivo /etc/protocols para verificar se o protocolo é válido.

flag: são dois sinais (nowait/wait), utilizados somente em sockets do tipo datagrama, que servem para diferenciar servidores de multiprocessamento ou de processamento único, respectivamente.

usuario: indica o usuário que o servidor utiliza para ser executado. Pode ser incluído um grupo, utilizando a forma usuario.grupo como padrão.

cam_serv: mostra o caminho do programa que será executado pelo inetd quando o serviço especificado for requisitado.

args: são argumentos utilizados para um serviço. Muitos serviços estão marcados com o argumento internal, indicando que o serviço é fornecido internamente ao sistema.

A maioria dos serviços está pré-configurada no arquivo /etc/inetd.conf, bastando descomentar (retirar a #) a linha do serviço para que ele fique habilitado. Após a configuração do arquivo, basta reinicializar o servidor inetd:

# service inet stop
Interrompendo os serviços INET: [ OK ]
# service inet start
Iniciando os serviços INET: [ OK ]

Para mais informações sobre a configuração do arquivo /etc/inetd.conf, veja as páginas de manual (man inetd.conf e man inet).

xinet

Quando instala-se o Conectiva Linux, por padrão, o superserver instalado é o xinet.

Nota: O inet ainda continua na distribuição, e pode ser encontrado em um dos CDs do Conectiva Linux.

O xinet é uma alternativa segura e eficiente para o inet e possui vários recursos que o inet não implementa. Entre outros, podemos citar:

  • Controle de acesso baseado em destino e hora;

  • Redirecionamentos;

  • Grande capacidade de logs;

  • Ligar serviços a interfaces específicas;

  • Limitar o número de máquinas simultâneas em um determinado serviço.

Toda a configuração do xinet é feita através de um único arquivo, o /etc/xinetd.conf. Este é um pequeno exemplo de algumas configurações que poderão ser utilizadas pelo arquivo /etc/xinetd.conf, sendo que as configurações inseridas dentro da sessão defaults serão aplicadas para todos os outros serviços configurados.

defaults
{
instances = 25
per_source = 10
log_type = SYSLOG authpriv
log_on_success = HOST PID USERID
log_on_failure = HOST RECORD USERID
}

instances: Esta opção controla o número de conexões simultâneas em um serviço e sua configuração pode acabar evitando um ataque do tipo DoS (Denial of Service) em seu servidor.

per_source: Controla o número máximo de conexões originadas de uma mesma máquina.

log_type: Indica como o xinetd irá logar (registrar) as requisições.

log_on_success: Informa ao xinetd quais informações ele deverá capturar do usuário que conseguir logar.

log_on_failure: Indica quais informações deverão ser capturadas dos usuários que não conseguirem logar.

Caso o usuário queira configurar o serviço de telnet, ele poderá fazê-lo da seguinte maneira:

service telnet
{
flags = REUSE
log_type = FILE /var/log/telnet.log
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
bind = 200.1.1.20
redirect = 192.168.1.111 23
only_from = 192.168.1.0/24
}

onde:

flags: Recebe as opções passadas em linha de comando para o daemon.

socket_type: Especifica o tipo de socket usado, como: dgram, stream ou raw.

protocol: Indica o protocolo usado pelo serviço.

wait: Diz ao xinetd se ele deve chamar o serviço sobre demanda ou não.

user: Usuário que executará o serviço.

server: Localização do daemon do serviço.

bind: O IP ou host especificado aqui será origem quando um serviço for redirecionado com o uso da opção redirect.

redirect: Host ou IP da máquina que receberá a requisição do serviço.

only_from: Limita os endereços de IP que terão acesso a determinado serviço.

Para mais informações sobre a configuração do xinetd.conf e um arquivo exemplo, consulte a página de manual do arquivo executando o comando:

Para que serve o comando Telnet no Linux?

O comando telnet testa a conectividade com uma porta de serviço. Através disso, pode ser identificado se há algum bloqueio de rede na porta especificada. Sendo assim, ele pode verificar, por exemplo, se a conectividade com a porta SMTP (587) do seu domínio está estável.

Para que serve o serviço Telnet?

O Telnet é um protocolo e aplicação, parte da família TCP/IP, para acesso e utilização de computadores remotos. Com Telnet podemos fazer "login" noutros computadores da Internet e utilizar os seus recursos.

Como usar o Telnet no Linux?

Na janela do prompt de comando, digite: telnet <server> <port>, , onde <server> é o nome do host ou endereço IP do servidor, e <port> é a porta que deseja conectar..
Abra o prompt da linha de comando. ... .
Na janela do prompt de comando, digite: ... .
Pressione Enter..

Qual o propósito de utilizar Telnet ou SSH?

Nos dias de hoje, o SSH é muito mais usado do que o Telnet justamente pelos benefícios da segurança. Além de ser usado para conectar remotamente, com o SSH nós também conseguimos fazer transferências seguras de arquivos.