FTP Telnet SSH
FTP Telnet SSH
FTP Telnet SSH
1 – Serviços em redes
Uma rede de computadores pode ser definida como um conjunto de módulos processadores1
interligados por um meio físico2, e que fazem uso de um protocolo comum de comunicação. Por
protocolo de comunicação entendemos um conjunto de regras de comunicação comum às partes
envolvidas nessa troca de dados.
O protocolo IP faz uso de endereços IPs, e ainda hoje a versão mais usada é o ipv4. O ipv6
já existe desde 1998, porém ainda é inexpressivo em termos de uso real.
Na versão 4, o endereço IP tem 4 bytes [32 bits], que possibilita apenas [teoricamente] 232
endereços [4294967296]. Devido a isso, está previsto para os próximos anos a exaustão dos
endereços na versão 4, pela expansão da base de usuários na internet. Consequentemente, a partir
daí não será mais possível postergar a adoção em massa da versão 6, que permite teoricamente 2128
endereços !!
Host significa hospedador, ou máquina servidora que hospeda serviço em rede. Para acessar
determinado serviço usa-se uma aplicação cliente, daí o conceito de cliente-servidor. Do ponto de
vista do sistema operacional, tanto servidor quanto cliente, a aplicação servidora ou cliente não
passa de uma aplicação comum, com a diferença de prover também acesso em rede. Isso implica em
processos do lado cliente e processos do lado servidor, tendo a rede como veículo a transportar
informações de um para o outro.
Exemplo:
192.168.1.10:80
1 Por exemplo: computadores, roteadores, switches, hubs.
2 Cabo de rede, coaxial, ótico, ou mesmo wireless.
3 Suíte nos sentido de conjunto de protocolos divididos em camadas funcionais, num conceito de arquitetura de rede.
Desse modo é possível, por exemplo, hospedar dois servidores web no mesmo host [mesmo
endereço IP], desde que não usem a mesma porta TCP.
Pelo seu lado, para acessar o servidor, a aplicação cliente precisa apenas saber o endereço
desse host, já que usa o mesmo protocolo de camada de aplicação do serviço e conhece a porta
padrão [default] desse serviço. Se o serviço estiver em outra porta que não a default, essa
informação precisa ser passada ao cliente ou ele não conseguirá acesso.
Um vez iniciado determinado serviço num host, ele abre a porta desse serviço e a mantém
assim enquanto estiver rodando. Desse modo, aguarda pelo acesso dos clientes. Já o cliente, no
acesso a esse serviço, abre uma porta de cliente para receber os dados enviados pelo servidor.
As portas de serviço normalmente estão entre 0 e 1023. Isso não implica em dizer que não
possa haver serviço em portas fora dessa faixa. Por exemplo, o serviço proxy squid usa a porta
padrão 3128.
O processo de serviço rodando num sistema operacional membro da família Unix é chamado
de daemon, de disk and execution monitor. É devido a isso que, de um modo geral, os processos de
serviço tem nomes que terminam com a letra d. Por exemplo, inetd, httpd, sshd, named, httpd.
Esses daemons podem ser de duas naturezas, inetd ou standalone. No Linux, é comum usar
xinetd ao invés de inetd.
A diferença entre inetd e xinetd ocorre nos arquivos de conguração: enquanto inetd é
configurado pelo arquivo /etc/inetd.conf, xinetd tem arquivos específicos de configuração no
diretório /etc/xinetd.d.
2 – Servidor inetd
O servidor inetd também é chamado de super servidor, pois ele gerencia conexões para
diversos daemons.
Por exemplo, se configurarmos os serviços FTP e TELNET sobre o inetd, teremos apenas o
daemon inetd rodando e escutando nas portas 21 e 23. Quando um cliente requisitar um desses
serviços, o servidor inetd dispara o daemon específico [nesse caso, ftpd ou telnetd] que gera um
processo de serviço e atende ao cliente. Com isso, existe uma economia de processos daemons
rodando no host.
Por outro lado, no caso de um serviço muito requisitado, não parece boa idéia disponibilizá-
lo como inetd, pois isso acabaria produzindo muita carga num único daemon, que resultaria em
maior tempo de espera para o cliente.
3 – Servidor standalone
Por exemplo, o serviço SSH standalone mantém rodando o tempo todo o daemon sshd.
Em princípio, qualquer serviço pode ser disponibilizado standalone ou inetd, basta fazer a
escolha e configurar.
O conceito de daemon standalone em contraposição a inetd não tem a ver com servidor
standalone do ponto de vista do domínio Windows.
É um dos serviços mais antigos da internet, porém continua popular ainda hoje.
Inicialmente, haviam apenas as interfaces clientes de linha de comando, mas atualmente existe
também uma diversidade de interfaces clientes gráficas, que justifica a popularidade desse serviço.
NOTA:
Para descobrir se o servidor xinetd está instalado, uma dica simples é procurar pelo seu
script de inicialização em /etc/init.d:
Se não houver saída no comando acima é indicativo de que o servidor xinetd não está
onde:
• /etc/init.d/xinetd é o script de inicialização do servidor xinetd;
• /usr/sbin/xinetd é o executável que ao rodar dá origem ao processo daemon;
• /etc/xinetd.d é o diretório onde estão os arquivos de configuração dos serviços xinetd.
portanto, se houver saída no comando indica que o processo está rodando e deve ser parado esse
serviço:
É importante lembrar que o servidor xinetd apenas disponibiliza serviços a partir do daemon
xinetd, então é necessário também verificar se o serviço telnet está instalado para rodar sobre o
xinetd.
shell# ls /etc/xinetd.d/telnet
/etc/xinetd.d/telnet
NOTA:
O fato de instalar o serviço TELNET sobre o xinetd não significa que esse serviço não possa
ser disponibilizado de outro modo, por exemplo inetd ou standalone. Porém, na maior parte
dos casos de instalação em Linux, TELNET será um serviço disponibilizado sobre o daemon
xinetd.
Porém, no CentOS a instalação do serviço telnet não instala o arquivo de configuração desse
serviço em /etc/xinetd.d/telnet. Desse modo, precisa ser criado ou copiado de algum lugar. O jeito
mais fácil é baixar de www.jairo.pro.br com o comando wget:
shell# cd /etc/xinetd.d
shell# wget www.jairo.pro.br/telnet
Caso haja um proxy no meio do caminho, que é o caso de acesso à internet a partir dos
laboratórios acadêmicos da Uninove, antes de comandar wget precisa passar a instrução de usuário
e senha para a variável http_proxy, e isso é feito com o comando export:
Onde:
RA: é o RA do aluno;
SENHA: é a senha de acesso do aluno;
186.251.39.196: é o IP do serviço proxy, que atende na porta 3128 (é um Squid).
Nessa configuração, precisa alterar "disable = yes " para "disable = no".
E com isso está instalado e configurado o serviço TELNET para rodar sobre o servidor
xinetd. Mas antes de iniciar o servidor xinetd, verificar quais portas TCP estão abertas. Para isso, é
necessário a aplicação nmap para fazer um scan de portas. E se esta aplicação não estiver
instalada, é necessário instalar:
E também, antes de iniciar o servidor xinetd, verificar se existe o processo daemon xinetd
rodando:
que não deve ter saída, indicando que esse daemon não está rodando.
Depois disso, o scan de portas vai mostrar que a porta 23 também está aberta:
Sabendo que foi disponibilizado serviço TELNET na máquina remota com endereço IP, por
exemplo, 192.168.1.10, usar a aplicação cliente telnet para fazer o acesso a esse serviço:
Uma vez conectado no acesso telnet, pode disparar comandos no servidor remoto.
O acesso telnet é usado para administrar hosts remotos e equipamentos de rede como
roteadores, switches e firewalls.
Se não houver saída no comando acima é indicativo de que o servidor vsftpd não está
instalado. Nesse caso, instalar com o comando yum:
NOTA:
Num Ubuntu, esse arquivo está em /etc/vsftpd.conf. Além disso, precisa incluir na última
linha a configuração "tcp_wrappers=YES".
Sabendo que foi disponibilizado serviço FTP na máquina com endereço IP, por exemplo,
192.168.1.10, usar a aplicação cliente ftp para fazer o acesso a esse serviço:
ftp> ?
Commands may be abbreviated. Commands are:
Para enviar um arquivo, usar "put", para enviar vários arquivos de uma única vez, usar
"mput". Para baixar um arquivo, usar "get", para baixar vários arquivos de uma única vez usar
"mget". O comando "ascii" configura a transferência para arquivo de texto [e não binário].
Por exemplo, o usuário aluno logado no servidor FTP em 192.168.1.10 irá baixar o arquivo
/etc/passwd para o diretório /tmp da sua estação de trabalho Linux:
ftp> pwd
257 "/home/aluno" is the current directory
ftp> cd /etc
250 CWD command successful
ftp> lcd /tmp
Local directory now /tmp
ftp > ascii
200 Type set to A
ftp> get passwd
local: passwd remote: passwd
ftp> bye
221 Goodbye.
shell$
Se fosse o caso de enviar um arquivo do cliente para o servidor, o comando seria "put" e
não "get". Com "mget" ou "mput" podem ser usados curingas "*".
TCP-Wrappers é um controle no acesso pela rede, usado como filtro para impedir clientes de
determinados endereços ou redes de acessarem serviços disponibilizados por algum host.
liberam o acesso aos serviços TELNET e FTP. No caso do TELNET, apenas para clientes com IPs
da rede 192.168.1.0/24 e também para o IP 10.1.2.3. No caso do serviço FTP, essas configurações
liberam o acesso para qualquer IP.
SSH vem de Secure SHell, ou shell seguro, e foi criado para resolver os problemas de
segurança dos protocolos antigos TELNET e FTP que, embora funcionais, não implementam
Desse modo, quando se faz um acesso a um serviço FTP ou TELNET, tanto usuário e senha
quanto dados enviados ou recebidos são transportados pela rede expostos como texto. E qualquer
um que intercepte essa informação obtém diretamente a senha de acesso ao serviço, além dos dados
que estão trafegando pela rede.
Existem pelo menos três vantagens em usar SSH ao invés de TELNET e FTP:
• 1) o SSH usa uma única porta, que é a 22, tanto para aceso shell remoto quanto transferir
arquivos;
• 2) o SSH implementa criptografia de dados;
• 3) existem pelo menos três aplicações clientes para o SSH: ssh, sftp e scp.
O serviço SSH usa criptografia assimétrica, com chaves públicas e privadas. Nesse acesso
[por exemplo], os dados são criptografados no servidor usando a chave pública do cliente
[previamente recebida pelo servidor], e então decriptografados no cliente com a chave privada do
cliente. Portanto, isso não impede que os dados sejam interceptados, porém só quem conseguirá
extrair a informação é o detentor da chave privada.
Para descobrir se o servidor sshd está instalado, uma dica simples é procurar pelo seu
script de inicialização em /etc/init.d:
NOTA:
Num Ubuntu, o arquivo é "/etc/init.d/ssh".
Se não houvesse saída no comando acima, seria indicativo de que o servidor sshd não está
instalado. Nesse caso, poderia ser instalado com o comando yum:
O serviço SSH foi instalado como standalone [que é o padrão] e não inetd. Após instalado,
verificar se existem os seguintes arquivos:
onde:
• /etc/init.d/sshd é o script de inicialização do servidor sshd (Ubuntu: /etc/init.d/ssh);
• /usr/sbin/sshd é o executável que ao rodar dá origem ao processo daemon;
• /etc/ssh/sshd_config é o arquivo de configuração do servidor sshd.
portanto, se houver saída no comando indica que o processo está rodando e deve ser parado:
Nessa situação, o scan de portas nmap não deve mostrar a porta 22 aberta.
Depois disso, o scan de portas vai mostrar que a porta 22 está aberta:
Sabendo que foi disponibilizado serviço SSH na máquina remota com endereço IP, por
exemplo, 192.168.1.10, usar a aplicação cliente ssh para fazer o acesso a esse serviço:
Uma vez conectado no acesso ssh, pode disparar comandos no servidor remoto.
O acesso ssh também é usado para administrar hosts remotos e equipamentos de rede como
roteadores, switches e firewalls.
A aplicação cliente scp [secure copy] serve para transferir arquivos usando o protocolo
SSH.
Por exemplo, para transferir o arquivo /etc/passwd do host remoto 192.168.1.10 para o
diretório /tmp local [download], comandar:
A aplicação cliente sftp tem esse nome de secure ftp, pois transfere arquivos usando
criptografia de dados. A funcionalidade é similar a do cliente ftp, incluindo a interatividade.
Para impedir o acesso do usuário root no acesso SSH basta que haja a seguinte linha de
configuração no arquivo /etc/ssh/sshd_config:
A aplicação cliente rdesktop é usada para acessar sistemas Windows com Terminal
Services. Essa aplicação roda praticamente em todos os sistemas da família Unix, e serve para
acessar ou administrar sistemas Windows a partir de uma estação de trabalho Linux [por exemplo].
Com isso, uma máquina com vnc server pode ser administrada remotamente por outra,
mesmo de sistema operacional diferente, desde que tenha um vnc viewer.