InFog

Um blog sobre GNU, Linux, Open Source, Desenvolvimento e Nerdices em Geral

SSH Sem Senha e Suas Facilidades Administrativas

Tags: , ,

Olá pessoal, um recurso muito interessante do SSH é a possibilidade de usarmos chaves no lugar de senhas para acessar outras máquinas. Dããã isso todo mundo já sabe e há toneladas de informações sobre isso na internet. Mas vou demonstrar aqui que esse recurso pode ser muito mais útil do que simplesmente acessar o servidor da sua rede sem o incoveniente de ficar digitando senhas.
Bem, vamos então ao básico, como configurar esse acesso. Logado na máquina que fará o acesso e com a conta do usuário que fará o acesso (isso ficou repetitivo não?) use o comando ssh-keygen:

$ ssh-keygen

Ele fará umas perguntas e mostrará os arquivos onde guardará as chaves, que são:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Essa id_rsa.pub é a sua chave pública, é como se fosse a impressão digital da sua máquina, e é ela que usaremos para acessar a outra máquina. Agora você deve copiar o conteúdo desse arquivo para o arquivo ~/.ssh/authorized_keys do usuário na máquina que será acessada.
Como a coisa funciona? Na hora em que você usa o comando ssh para logar em uma máquina o que acontece é mais ou menos isso:

$ ssh infog@debian

Sua Máquina: Tenta conectar à porta 22 da máquina remota.
Máquina Remota: Aceita a conexão.
SM: Verifica se a máquina remota é conhecida, checando o arquivo ~./ssh/known_hosts, se não for ela pergunta se você quer adicioná-la à lista. Se for conhecida ela checa a identidade da máquina remota. Isso é muito útil, imagine que alguém trocou a máquina que você acessava ou está usando o mesmo IP dessa máquina para capturar senhas, o ssh consegue saber se é a mesma máquina ou não e se não for ele te avisa, assim você pode, por exemplo, ligar para o local onde a máquina fica e perguntar o que houve. Continuando… Então rola um papo entre as máquinas:
SM: – Opa, e aí debian tudo bem, eu sou o infog e venho da máquina gnu.
MR: – Olá infog, tudo certo aqui. Ok, deixe-me ver sua impressão digital?
SM: – Ah, claro que sim, aqui está (~/.ssh/id_rsa.pub).
MR: – Obrigado, vou conferir, aguarde por favor. (Compara o id_rsa.pub com o ~/.ssh/authorized_keys, se a impressão estiver no authorized_keys o acesso é permitido):
MR: – Oi, desculpe pela demora, sua impressão confere com minha lista, seja bem vindo!
SM: – Obrigado!

Caso a impressão não esteja na lista o seguinte aconteceria:

MR: Poxa cara você não está na lista, podemos tentar com outra impressão? (Se você tiver outro tipo de chave ela será enviada).
SM: Eu não tenho outra impressão, o que faremos?
MR: Hum, você pode me mandar uma senha e eu comparo com a do usuário aqui. Pode ser? Digite aqui:
password:

Bem daí pra você sabe o que acontece.

Mas quais são as facilidades disso além de nãao digitar a senha? Imagine que você está com um problema em sua máquina e não esteja conseguindo resolver, então aquele cara que você conheceu no irc se oferece para ajudar, mas você não quer dar sua senha para ele e nem quer mudar a senha da máquina para algo como 123 para que ele acesse. Aqui você poderia pedir para ele enviar a chave pública dele, você coloca no seu authorized_keys, ele acessa e te ajuda, e depois disso você remove a chave do authorized_keys. Pronto ele te ajudou e nem sabe do tipo de senha que você usa e você pode autorizá-lo ou desautorizá-lo sempre que precisar.

Lembrem-se crianças, não vão sair adicionando qualquer um no seu authorized_keys e quando o fizer faça com um usuário que tenha permissões apenas para ajudar na solução do seu problema.

Bem, é isso. Boa sorte à todos e lembrem-se de ler o manual para obter mais recursos e aprender sempre mais sobre as ferramentas que você usa no dia-a-dia.

InFog

Este texto foi escrito originalmente por mim para o TuxMasters.

Quero Comentar!

Utilizando o tcpdump e o wireshark

Tags: ,

Monitorar o tráfego de rede é algo fundamental para a solução de problemas. Um programa muito bom para fazer isso é o tcpdump. O tcpdump é um conhecido sniffer do mundo GNU/Linux, um sniffer é um programa que faz com que a placa de rede entre em modo promíscuo e capture todos os pacotes (da rede) que chegem até a máquina, independentes de serem para ela ou não, sejam aceitos, com isso ele gera uma saída, no terminal ou em um arquivo de texto, que pode ser analisada.

O tcpdump também permite o uso de filtros como de tal ip, para porta x, protocolo x. Lembrando que o tcpdump deve ser executado como root.

Bom deixe-me mostrar a sintaxe básica, depois algo mais refinado. Com um comando tipo esse:

# tcpdump -i eth0

Você terá a lista de pacotes passando por sua interface eth0. Entender a saída do programa não é muito confortável no começo, exige uma boa leitura do manual do tcpdump e também conhecimento do tcp. Mas basicamente é algo como:

origem.porta > destino.porta: flags (nº sequência de dados) …

Eu realmente recomendo uma boa lida no manual do tcpdump se você quiser endenter cada detalhe da saída.

O parâmetro -i pode receber também a opção any que faz o tcpdump capturar pacotes em todas as suas interfaces de rede.

As principais opções de filtro no tcpdump são:

-n : Não faz a resolução dos nomes, mantendo origem, destino e porta como números.

host : Define um host específico, pode ser um ip ou um nome.

src : Define o host origem, pode ser ip ou nome.

dst : Define o host destino, pode ser ip ou nome.

-w : Escreve a saída em um arquivo, o nome do arquivo deve ser fornecido.

-r : Lê o tráfego que foi armazenado em um arquivo, nesse caso não é necessário ser root.

-s : Define, em bytes, o tamanho máximo dos pacotes que serão capturados. O padrão são 68 bytes que são suficientes para alguns protocolo, mas pode truncar (não capturar completamente) um pacote. Um bom número para ser definido é 1000.

Com essas opções já dá para fazer muita coisa. Volto a dizer que uma lida no manual do tcpdump pode enriquecer muito o seu conhecimento.

Vamos a mais exemplos:

# tcpdump -i eth0 -n host 192.168.1.1

Captura todos os pacotes destinados ou com origem em 192.168.1.1 sem resolver nomes.

# tcpdump -i eth0 -s 1000 src 192.168.1.1

Captura todos os pacotes com origem em 192.168.1.1 resolvendo nomes e gravando até 1000 bytes de cada pacote.

# tcpdump -i eth0 -w trafego.cap

Captura todo o tráfego na eth0 e escreve a saída no arquivo trafego.cap

$ tcpdump -r trafego.cap

Lê o tráfego gravado em trafego.cap

Como mostrado nesse último exemplo o tcpdump também lê os arquivos gerados, isso é muito útil quando você precisa analisar os dados com mais cuidado, ou guardá-los para uma análise posterior.

Uma outra maneira de ler esse tráfego é com o Wireshark, esse é um outro sniffer (multiplataforma) bastante utilizado. O Wireshark é capaz de ler os arquivos gerados pelo tcpdump, mas com algumas vantagens como um filtro e cores para os tipos de pacotes.

Aqui está o wireshark em ação:

Wireshark

Com essas ferramentas em mãos você pode resolver problemas de conexão (ou falta dela) e outros mais. Para maiores informações leia os manuais de cada aplicação.

InFog

11 Comentários

© 2009 InFog. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.