Face a este problema decidi utilizar um computador velho que tenho aqui por casa e instalar-lhe Ubuntu. Porquê Ubuntu?
- Primeiro porque me pareceu uma boa oportunidade de continuar a minha aprendizagem neste Sistema Operativo, que basicamente é a distribuição mais conhecida de Linux.
- Segundo porque é grátis, poupando assim dinheiro que teria de despender na aquisição de um SO proprietário.
- E por último, a possibilidade de instalação de servidor SSH. Não querendo entrar em muitos detalhes o SSH é um protocolo existente na camada de aplicação do TCP/IP. Este protocolo tem várias funcionalidades mas neste caso vamos utilizar especificamente o HTTP tunneling com encriptação de dados.
Vamos então por as mãos na massa e passar ao que interessa:
- Instalar uma distribuição qq de linux (recomendo Ubuntu porque não tem muito que se lhe diga e existe bastante info ai pela net). Está máquina irá ser o servidor que irá escutar pelos pedidos de ligação via SSH, portanto irá ter que estar 24h ligada. Há uma excepção a esta regra, para quem tiver uma placa de rede WOL (Wake On Lan) que assim que puder irei tentar por em prática e depois deixar aqui alguma info :).
- Instalar SSH.
sudo apt-get install openssh-server
- Criar uma cópia de segurança do ficheiro sshd_config.
- Editar o ficheiro sshd e mudar umas parametrizações de forma a que o servidor fique sem vulnerabilidades de segurança.
- Como o meu objectivo (e possivelmente de muita gente) é ligar-me a partir de um cliente windows (PC do trabalho, portátil, etc.) vamos ter que instalar o putty.
- De seguida vamos então gerar a chave com o puttygen.exe. Este processo pode ser feito usando a máquina cliente, usando portanto o Windows para executar-lo.
Clicar em "generate" para começar o processo de criação das chaves:
Passar o ponteiro do rato sobre a barra de progressão para ir gerando a chave aleatóriamente:
Chegando a barra ao fim o aspecto final é este: - Salvar a chave privada (carregar em save private key):
Muito importante! Atribuir uma password à chave privada. Assim se eventualmente alguém tiver acesso ao teu cliente e roubar a chave privada esta vai estar protegida com password. - Na máquina com o servidor SSH colar o que está na primeira caixa de texto
De seguida colar a chave publica no editor de texto e salvar:cd ~
sudo nano .ssh/authorized_keys
Finalmente fazer restart ao servidor SSH:sudo service ssh restart
E assim damos por terminado a configuração do servidor SSH - Vamos passar à configuração do PUTTY na máquina cliente:
Em primeiro definimos o hostname ou IP da servidor SSH (eu utilizo o dyndns para ficar sempre com o meu IP associado a um url).
Em segundo indicar a localização do ficheiro que contém a chave privada salva no ponto 7. do tutorial.
E finalmente configurar o "tunnel". Para o browser adicionei o porto 5555 como dynamic. O porto pode ser um qualquer, desde que não esteja a ser utilizado por mais nenhum serviço. Podem adicionar este como um número superior. Aqui podemos utilizar o tunnel para mais serviços como ligação remota. O porto 5900 por exemplo é para me ligar remotamente via VNC ao servidor SSH. - De seguida vamos configurar o firefox de acordo inserindo o porto adicionado no putty (Ferramentas>Opções>Avançado>Rede>Definições).
... e voilá, os dados que passam entre o cliente e o servidor ficam encriptados.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
sudo nano /etc/ssh/sshd_config
Recomendo a alteração imediata destes parâmetros:
O porto 22 é convencionalmente utilizado pelos servidores SSH logo é o porto mais susceptível a ataques por outros utilizadores, logo é recomendável a utilização de outro que não esteja a ser utilizado por nenhum serviço (ex: 2222).
# What ports, IPs and protocols we listen for
Port 22
Penso que este opção esteja a "yes" por defeito. Tem de ser mudada para "no" para não permitir a autenticação através de password, mas somente por chave publica ou RSA
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Para mais informações sobre a melhores práticas consultar este site:
http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html
Download aqui:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
É necessário fazer download do putty.exe (basicamente este é a aplicação que se vai ligar ao nosso servidor SSH) como do puttygen.exe (aplicação que vai gerar a chave pública e privada para encriptar os dados entre o cliente (nosso pc numa rede não amistosa) e servidor (ponto seguro)).
Se carregarem em "open", inserirem o username e password adicionada no puttygen aquando a geração da "private key" deverão ter acesso ao terminal do vosso servidor SSH.