O protocolo ssh tornou-se o programa de eleição para conexões remotas, visto que a comunicação é encriptada ao contrário do que sucede com os velhinhos telnet ou rlogin.
O protocolo ssh usa o mecanismo de encriptação de chave pública. Nesta forma de criptografia necessitamos de duas chaves, uma chave pública e outra privada. A chave pública pode ser livremente divulgada e a chave privada deve ser protegida a todo o custo, visto ser esta a responsável pela efetiva segurança da encriptação. Para mais informação sobre este método clique aqui.
Do ponto de vista do administrador, deveremos sempre efetuar logins remotos recorrendo ao protocolo ssh e nunca por telnet. Tal aplica-se a máquinas Linux, routers e outros dispositivos onde exista essa opção. Saliente-se igualmente, que se deverá em analogia usar sempre o protocolo https ao invés do http para aceder a configurações de equipamentos. Deve-se ter igualmente em atenção o tamanho da chave. Há alguns anos consideravam-se as chaves de 128 bits seguras. Hoje em dia deverão ser escolhidas chaves de 512 ou mesmo 1024 bits. Quanto maior é a chave mais lento se torna o processo de encriptação, sendo que actualmente tal não constituí um problema, mesmo para chaves de 1024 bits.
No mundo Linux a implementação mais conhecida do servidor de ssh é o OpenSSH. Para efetuar ligações ssh existem em Linux aplicações nativas que o fazem. Para Windows, destaca-se o inevitável Putty e para administradores mais avançados recomenda-se a solução comercial SecureCrt (disponibiliza atualmente versões para Linux).
Numa instalação mínima RHEL ou CentOS o OpenSSH virá instalado por defeito. Pode sempre verificar-se se está instalado
[root@serverA ~]# rpm -qa | grep -i OpenSSH
OpenSSH-*
OpenSSH-server-*
………
Se por alguma incidência o OpenSSH não estiver instalado pode sempre fazê-lo com o comando:
[root@serverA ~]# yum -y install OpenSSH-server
Em Ubuntu os commandos análogos são:
mm@ubuntu-serverA:~$ dpkg -l OpenSSH-server
mm@ubuntu-serverA:~$ sudo apt-get -y install OpenSSH-server
Se pretende que a máquina seja acedida por ssh deverá assegurar que o deamon está ativo. Em sistemas RHEL/CentOS confirme com
[root@serverA ~]# service sshd status
sshd (pid 2242 2101) is running..
Caso não esteja a correr, execute o comando
[root@serverA ~]# service sshd start
Para parar deverá usar stop para reinicializar, restart.
Analogamente para Ubuntu:
pmatias@ubuntu-serverA:~$ sudo /etc/init.d/ssh start
e
pmatias@ubuntu-serverA:~$ sudo /etc/init.d/ssh stop
Conforme mencionado, o OpenSSH costuma estar instalado e a correr na maioria das distribuições de Linux. O ficheiro de configuração costuma estar localizado na diretoria /etc/ssh/ com o nome sshd_config. As instalações baseadas em Debian, como o Ubuntu, também costumam ter o ficheiro de configuração nessa localização. Alguns dos parâmetros de configuração:
- AuthorizedKeysFile: Especifica o ficheiro que contém as chaves públicas. Geralmente /[directoria home]/.ssh/ authorized_keys
- Ciphers: Lista de cifras permitidas para a versão 2 do protocolo.
- Port: Porta utilizado pelo protocolo, por defeito é a 22.
- Protocol: Versão do protocolo. Existindo dois, o 1 e o 2, deverá ser sempre utilizado o 2, visto que o 1 é atualmente considerado inseguro.
- AllowTcpForwarding : Especifica se o encaminhamento do protocol TCP é permitido. Por defeito encontra-se configurada a opção sim.
- X11Forwarding: Especifica se o encaminhamento do protocolo X11 é permitido. Por defeito encontra-se configurada a opção não.
- ListenAddress: Especifica o endereço local que o deamon SSH escuta.
O OpenSSH possui vários programas, o óbvio shh, o Secure Copy – scp e o Secure Ftp.
O programa cliente de ssh vai assumir que a autenticação no sistema remoto será com o mesmo utilizador que nesse momento está a efetuar a ligação no sistema local. Se no entanto pretender efetuar a autenticação com outro utilizador (supõe-se que está autenticado como root no sistema local e pretende ligar-se como utilizador pmatias no sitema remoto), deverá utilizar o comando:
[root@serverA ~]# ssh -l pmatias serverB
Ou
[root@serverA ~]# ssh pmatias@serverB
Após inserir a password correta efetuará login no sistema com a conta de utilizador pretendida.
Relembre-se que se pretender autenticar-se como root, bastará
[root@serverA ~]# ssh serverB
Com o protocolo IPv6 implementado:
root@serverA ~]# ssh -6 pmatias@2001:DB8::2
Obviamente, ao invés do nome do servidor pode usar o endereço IP da máquina.
Uma das utilizações interessantes do ssh encontra-se na criação de túneis entre um sistema local e sistemas remotos, como se de uma VPN se tratasse, visto que a informação circula encriptada. Imaginemos o cenário:
Temos uma máquina configurada como firewall (ServerA) com duas interfaces de rede. Uma das interfaces está diretamente ligada à Internet e a outra à LAN da empresa. Imagine-se que a interface pública ou WAN tem o IP 1.1.1.1 e a interface privada 192.168.1.1 da LAN 192.168.1.0/24. Todos os servidores e workstations não são acessíveis através da Internet. O único serviço permitido na Interface WAN é o deamon sshd.
Suponha-se que um dos servidores internos possui uma aplicação WEB de contabilidade que o utilizador pmatias quer aceder a partir da Internet. O nome do servidor é “Contab”, com um endereço IP 192.168.1.100. O nome da workstation da qual vai ser estabelecida a ligação é “pcpessoal”. Relembrando que as máquinas da LAN da empresa não podem ser diretamente acedidas através da Internet, teremos então que efetuar o chamado tunneling SSH . Vejamos com detalhe todo o processo:
- No seu próprio computador o utilizador vai autenticar-se com as suas credenciais.
- Localmente, o utilizador vai criar um túnel da porta 9000 da sua máquina à porta 80 da máquina que corre a aplicação web à qual pretende aceder. Para o fazer vai executar o comando [pmatias@pcpessoal ~]# ssh –L 9000:192.168.1.100:80 1.1.1.1 ou efetuar a ligação ssh e ssh> -L 9000:192.168.1.100:80
- Após autenticar-se com sucesso no servidor remoto, neste caso, o serverA, poderá então abrir o browser para aceder à aplicação. O utilizador verificará se o túnel está a funcionar corretamente, abrindo o browser para aceder à porta que está a reencaminhar o tráfego na máquina local e colocando o endereço http://localhost:9000 .
- Se tudo correu conforme previsto, o conteúdo web fornecido pelo servidor da aplicação surgirá, tal como se o mesmo estivesse a ser acedido a partir de uma máquina dentro da LAN da empresa.Para terminar a ligação e desfazer o túnel bastará desligar a ligação ssh estabelecida.
Este método permite o acesso seguro a sistemas, seja em redes internas LAN ou através da Internet. Não pode ser considerada uma solução VPN completa visto que não é possível aceder concorrencialmente a todos os sistemas de uma LAN remota, mas funciona perfeitamente para aceder aos recursos de uma máquina. No exemplo referido, efetuou-se tunneling de http através de SSH, mas qualquer protocolo poderia ter sido utilizado, como Telnet ou VNC. Este método é igualmente utilizado para ultrapassar eventuais restrições de firewalls e proxies para aceder a recursos.
Relembrando a sintaxe do comando:
ssh –L [porta local]:[IP da máquina de destino]:[porta de destino] [IP do servidor ssh]
O Secure Copy (scp) é utilizado como o substituto do antigo rcp, permitindo efetuar cópias de ficheiros entre máquinas. Imaginemos que o utilizador está autenticado na sua máquina e pretende copiar um ficheiro chamado . bashrc localizado na sua diretoria pessoal para a sua diretoria pessoal no ServerA. O comando será:
[pmatias@hostA ~]$ scp .bashrc serverA:/home/yyang
Para efetuar a operação inversa, bastará trocar a ordem
[pmatias@hostA ~]$ scp serverA:/home/yyang/.bashrc .
O Secure FTP permite uma operacionalidade idêntica ao protocolo ftp, mas de forma segura. Para efetuar a ligação a um sistema remoto que tenha um servidor de SFTP a correr bastará executar o comando, usando as credenciais do acesso por ssh:
[root@hostA ~]# sftp yyang@serverA
Após a autenticação surgirá a prompt
sftp>
Poderá, tal como no acesso por ftp, listar directorias e efetuar download e upload de ficheiros. Para mais informações sobre os comandos disponíveis digitar ? .
Existe um excelente software para Windows que permite toda a operacionalidade do SCP e do SFTP num ambiente user-friendly – WinSCP-. Descarregue-o em http://winscp.net/eng/download.php
Fontes: Linux Administration, a beginners guide, wikipedia.