[Tutorial] ubuntu + ssh + tunneling = (quase) privacidade

CyberOps

I'm cool cuz I Fold
Quem nunca se viu privado de certos sites no seu local de trabalho? Ou até com receio de estarem a interceptar os seus dados e monitorizar os sites que consulta numa rede wireless aberta ou mesmo protegida (ex: sapo wifi) num aeroporto, ou até mesmo no local de trabalho?

Face a este problema decidi utilizar um computador velho que tenho aqui por casa e instalar-lhe Ubuntu.

  1. 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 :).
  2. Instalar SSH.
    Código:
    sudo apt-get install openssh-server

  3. Criar uma cópia de segurança do ficheiro sshd_config.

    Código:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
  4. Editar o ficheiro sshd e mudar umas parametrizações de forma a que o servidor fique sem vulnerabilidades de segurança.
    Código:
    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).
    Código:
    # 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
    Código:
    # 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

  5. 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

    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)).

  6. 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:
    generate.PNG


    Passar o ponteiro do rato sobre a barra de progressão para ir gerando a chave aleatóriamente:
    mouse.PNG


    Chegando a barra ao fim o aspecto final é este:
    keys.PNG

  7. Salvar a chave privada (carregar em save private key):

    keys_pvtkey.PNG


    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.
  8. Na máquina com o servidor SSH colar o que está na primeira caixa de texto
    cpypasta.PNG


    De seguida colar a chave publica no editor de texto e salvar:
    Código:
    cd ~
    sudo nano .ssh/authorized_keys

    Finalmente fazer restart ao servidor SSH:
    Código:
    sudo service ssh restart
    E assim damos por terminado a configuração do servidor SSH</li>
  9. 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).
    putty_session.PNG


    Em segundo indicar a localização do ficheiro que contém a chave privada salva no ponto 7. do tutorial.
    putty_auth.PNG


    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.
    putty_tunnels.PNG


    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.
  10. De seguida vamos configurar o firefox de acordo inserindo o porto adicionado no putty (Ferramentas>Opções>Avançado>Rede>Definições).
    firefox_proxy.PNG


    ... e voilá, os dados que passam entre o cliente e o servidor ficam encriptados.

    tunnel-concept-diagram.png


Se alguém tiver alguma sugestão, crítica sou todo ouvidos :)

há imagens que não estão a aparecer, n percebo :s

in: http://xampalaranja.blogspot.com/
 
Última edição:
A autenticação não tem necessariamente de ser por chave pública, isso com autenticação normal por password do utilizador ficava até um tutorial mais simples e menos confuso (mas isso já é questão de gosto, discutir os pros e os contras dava outro post).

A funcionalidade de proxy SOCKS do SSH dá para qualquer aplicação que suporte SOCKS, não apenas o browser. Um dos problemas nas configurações de proxy SOCKS é que normalmente a resolução de DNS não passa por proxy. Por aí daria para deduzir p.ex. os sites consultados, portanto isso como está não garante uma privacidade a 100% (mas certamente é melhor que nada).

Mas é procurar no Google por soluções, por exemplo para o Firefox há uma opção
 
A autenticação não tem necessariamente de ser por chave pública, isso com autenticação normal por password do utilizador ficava até um tutorial mais simples e menos confuso (mas isso já é questão de gosto, discutir os pros e os contras dava outro post).

Concordo contigo mas como disse a facilidade de intrusão na máquina é maior, a não ser que se ande atento aos logs e se comece a bloquear os ips o que pode ser mais incomodativo

http://sial.org/howto/openssh/publickey-auth/
Public key authenticate can prevent brute force SSH attacks, but only if all password-based authentication methods are disabled.

A funcionalidade de proxy SOCKS do SSH dá para qualquer aplicação que suporte SOCKS, não apenas o browser. Um dos problemas nas configurações de proxy SOCKS é que normalmente a resolução de DNS não passa por proxy. Por aí daria para deduzir p.ex. os sites consultados, portanto isso como está não garante uma privacidade a 100% (mas certamente é melhor que nada).

Mas é procurar no Google por soluções, por exemplo para o Firefox há uma opção

toda o trafego efectuado pelo browser não passa pelo tunel, nem mesmo a resolução do DNS das páginas que visito?

edit: fantástico, não tinha conhecimento do about:config. obrigado :)
 
Concordo contigo mas como disse a facilidade de intrusão na máquina é maior, a não ser que se ande atento aos logs e se comece a bloquear os ips o que pode ser mais incomodativo

http://sial.org/howto/openssh/publickey-auth/

Não necessariamente, a facilidade de intrusão não é maior desde que a password do utilizador seja minimamente decente. Mas realmente é capaz de haver utilizadores muito nabos a escolher a password...

Quanto às entradas nos logs, são mais incomodativas do que outra coisa, e só o facto de mudar para uma porta não-standard já reduz muito. Mas o que não falta por aí são maneiras de limitar essas tentativas.


toda o trafego efectuado pelo browser não passa pelo tunel, nem mesmo a resolução do DNS das páginas que visito?

Passa o tráfego HTTP, mas a resolução DNS se não tiveres cuidado não passa pelo proxy.
 
mais uma excelente forma de eliminar vulnerabilidades. vou ver isto. obrigado ;)

https://help.ubuntu.com/community/PortKnocking
Outra pratica muito comum e que elimina logo 90% das tentativas de crackar o ssh é mudar a porta para uma neste rangehttp://en.wikipedia.org/wiki/List_o...c_and.2For_private_ports:_49152.E2.80.9365535 49152-65535 (podemos usar qualquer uma, mas é preciso estar atento porque todas as portas abaixo de 49152 ja estao "registadas" por programas/serviços.)
 
já fiz isto aqui no trab, mas aceder por VNC ao meu pc em casa.
no dia seguinte a ter começado a usar este esquema, apareceu um gajo das redes aqui a dizer que estavam a detectar intrusões no meu ip da rede, e obrigou-me a correr o anti-virus da M$ para despistar probs de malware, virus, trojans etc...
desliguei o tunel e nunca mais o usei. fica o aviso :P
 
já fiz isto aqui no trab, mas aceder por VNC ao meu pc em casa.
no dia seguinte a ter começado a usar este esquema, apareceu um gajo das redes aqui a dizer que estavam a detectar intrusões no meu ip da rede, e obrigou-me a correr o anti-virus da M$ para despistar probs de malware, virus, trojans etc...
desliguei o tunel e nunca mais o usei. fica o aviso :P


Pois, metes-te com VNC é o que dá.
Mas o VNC está para SSH-tunneling assim como um Fiat Uno está para um Audi A8...
 
mas o que é o usar VNC dentro de um túnel SSH tem de diferente de usar HTTP ou outro protocolo qq?
os pacotes são cifrados num lado do túnel, e decifrados no outro lado do túnel. pelo meio, tudo o que se vê são pacotes cifrados que não é possível dizer o que são.
é esse o objectivo deste setup.
 
já fiz isto aqui no trab, mas aceder por VNC ao meu pc em casa.
no dia seguinte a ter começado a usar este esquema, apareceu um gajo das redes aqui a dizer que estavam a detectar intrusões no meu ip da rede, e obrigou-me a correr o anti-virus da M$ para despistar probs de malware, virus, trojans etc...
desliguei o tunel e nunca mais o usei. fica o aviso :P

filho da mãe, o gajo então estava mesmo a monitorizar a ligação e como n percebeu patavina do q estavas a fazer ficou desconfiado. das duas três, ou estão a monitorizar por causa de ataques ou estão mesmo curiosos para saber q sites o ppl anda a ver. vocês têm alguma firewall q vos bloqueia sites sociais e chats?
 
Back
Topo