• Nenhum resultado encontrado

Uso de chaves públicas com o SSH

O SSH é capaz de utilizar chaves públicas para autenticação. Mas o que vem a ser isso? Em criptografia há, basicamente, dois tipos de chaves (ou segredos ou senhas): 

1 No primeiro tipo: uma única chave é utilizada para criptografar e descriptografar um conjunto de dados;

1 No segundo tipo: chamado de chave assimétrica; é utilizado um par de chaves, onde uma chave apenas criptografa dados e a outra apenas descriptografa dados. Assim, se criptografamos um dado com a chave A, será necessário usar a chave B para descripto- grafar, e vice-versa. Uma dessas chaves é denominada chave pública, e pode ser distri- buída à vontade; a outra é denominada chave privada, e deve ser mantida segura. Na autenticação com chaves públicas, uma das pontas da comunicação (por exemplo, o ser- vidor) possui a chave pública do usuário e a utiliza para criptografar um desafio. Esse desafio é enviado à outra ponta (o cliente), que deverá ser capaz de descriptografá-lo utilizando sua chave privada, para provar que ele é o dono da chave pública em questão.

Para utilizar chaves públicas com o SSH, primeiro é necessário gerar o seu par de chaves. Isso pode ser feito com o comando ssh-keygen. É necessário informar o tipo de chave que se deseja criar. Ou seja, RSA1 para o protocolo 1 do SSH, e RSA ou DSA para o protocolo 2. Exemplo:

$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/usuario/.ssh/id_rsa): <enter para aceitar o padrão>

Enter passphrase (empty for no passphrase): <senha> Enter same passphrase again: <senha>

Your identification has been saved in /home/usuario/.ssh/id_rsa. Your public key has been saved in /home/usuario/.ssh/id_rsa.pub. The key fingerprint is: c8:fd:83:c3:f5:b1:e4:cd:4e:2b:a9:1a:29:af:d2:ed usuario@teste.com

Observe que o comando solicita uma frase-senha (passphrase). Por padrão, o comando gera suas chaves e as coloca no diretório .ssh do $HOME do usuário. O usuário deve, então, inserir sua chave pública (no exemplo anterior, está contida no arquivo id_rsa.pub) no arquivo

$HOME/.ssh/authorized_keys dos hosts onde deseja se logar. Uma atenção especial deve ser dis-

pensada às permissões do diretório .ssh e seus arquivos. O diretório e o arquivo que contêm a chave privada devem ter permissões de leitura e escrita apenas para o usuário.

Ca pí tu lo 5 - S eg ur an ça – I nt ro du çã o

Gerando uma chave RSA, o uso do cliente SSH é bastante simples e será demonstrado em alguns exemplos. 

Efetuando um login no host teste.com com o usuário-exemplo e usando a autenticação por senha:

$ ssh exemplo@teste.com exemplo@teste.com password: <senha>

Efetuando o login no host teste.com, utilizando uma chave pública e permitindo o tunela-teste.com, utilizando uma chave pública e permitindo o tunela-, utilizando uma chave pública e permitindo o tunela-

mento de conexões X11. A opção -i especifica o arquivo que contém a chave privada, e a opção -X habilita o X11 Forwarding:

$ ssh -i minhachave -X usuario@teste.com

SSH também pode ser utilizado de maneira não interativa. Basta acrescentar à linha de comando o(s) comando(s) que se deseja executar no host remoto. O exemplo a seguir executa o comando ls –la no host e finaliza a conexão: 

$ ssh usuario@teste.com “ls -la”

SSH também pode ser utilizado para a cópia de arquivos. Nesse caso, é utilizado o comando SCP. A especificação do destino ou da origem remota assume o formato <usuario>@<host>:<caminho>. Para copiar o arquivo1 para /home/usuario do host exemplo.

com, é possível usar: 

$ scp arquivo1 usuario@exemplo.com:/home/usuario

Para utilizar o SCP, é necessário conhecer previamente a localização do arquivo na máquina remota. Outra opção para a cópia de arquivos é o comando sftp (o servidor SSH deve suportar esse subsistema). O sftp funciona da mesma maneira que o comando ftp, mas com as vantagens do SSH, como a criptografia e a autenticação com chave pública. Após iniciar uma conexão com sftp, é possível usar os comandos ls, cd, get, put, mkdir de forma seme- lhante a uma sessão FTP.

O exemplo a seguir mostra o comando sftp sendo utilizado para a transferência de um arquivo para a máquina local (comando get) e, em seguida, para a transferência de um arquivo para a máquina remota (comando put): 

$ sftp usuario@exemplo.com sftp> cd /tmp  sftp> get arquivo1

arquivo1 100% 1044 79.7KB/s 00:00 sftp> put arquivo2 arquivo2 100% 990 75.3KB/s 00:00 sftp> bye

Um recurso bastante poderoso do SSH é a possibilidade de se usar uma conexão segura para “tunelar” portas TCP. Isso permite utilizar conexões SSH para proteger conexões que, de outra forma, seriam inseguras. Imagine fazer o download de e-mails através do protocolo POP3 (que roda na porta 110 do servidor). Pode-se criar um túnel com o SSH da máquina cliente para o servidor com o comando: 

$ ssh usuario@exemplo.com -L 1100:servidor:110

Com esse comando, qualquer conexão feita na porta 1100 do cliente seria “tunelada” para a porta 110 do servidor. Observe que se o servidor POP3 e a máquina para onde está sendo feita a conexão SSH forem os mesmos, é possível utilizar a opção -L 1100:localhost:110.

Ad m in is tr aç ão d e S is te m as L in ux : R ed es e S eg ur an ça

q

SSH também permite o “tunelamento” de portas ou conexões TCP: ssh usuario@maquina -L <porta_local>:<host>:<porta>

ssh usuario@maquina -L 1100:localhost:110

O que isso faz? ssh usuario@maquina -L 3128:proxyweb:3128

Logs

q

1 Contam a “história” do sistema.

1 Contêm registros de eventos, avisos e erros. 1 Auxiliam na detecção de problemas. 1 São administrados pelo syslog.

2 Embora alguns daemons não utilizem o syslog.

1 É necessário analisar logs se o sistema está funcionando corretamente? Por quê? Os logs do sistema são importantes aliados do administrador de redes. Os logs contam a his- tória do sistema. Neles encontramos eventos normais (e também avisos e erros) registrados pelo kernel e por outros daemons e programas. Os logs devem ser utilizados pelo adminis- trador não só na resolução de problemas, mas também para acompanhar a saúde do sistema. 

q

Principais arquivos: 1 /var/log/messages 1 /var/log/auth.log 1 /var/log/daemon.log

Alguns arquivos são binários, como lastlog e faillog. Utilize os comandos:

1 last. 1 lastlog. 1 faillog.