A criação de um túnel ssh para esconder o tráfego Web, é uma solução relativamente simples para um problema que a maioria de vós não sabe que tem. Na verdade são 2 problemas:
O primeiro prende-se com a falta de segurança e privacidade que se sofre ao aceder à Internet a partir de redes partilhadas (ex: Cybercafés, redes wireless abertas, rede do local de trabalho. Sempre que uma rede é partilhada por vários utilizadores, existe a possibilidade de um deles fazer sniffing à rede ou um ataque tipo “Man in the middle” ver visualizar o tráfego não encriptado que os restantes estão a gerar (Ex: páginas http, mensagens de e-mail, conversas MSN, usernames e passwords enviadas em clear text. Todas as redes partilhadas devem ser encaradas como ambientes hostis e nunca se devem aceder a dados confidenciais a partir das mesmas.
O segundo manifesta-se principalmente em alguns locais de trabalho, em que os administradores de rede sem sentido de humor, bloqueiam o acesso a alguns sites, portos ou protocolos. Não consigo perceber porque é que não se pode ver pornografia no local de trabalho, usar o Messenger ou jogar no Facebook. A parte da pornografia é a que me custa mais a perceber.
Lembram-se que tinha dito que esta era uma solução simples para estes problemas? Pois… menti-vos. Não é “rocket science”, mas envolve vários passos e condições. Esta é uma solução que recomendo apenas aos utilizadores de nível intermédio ou avançado.
Para criamos um túnel SSH e enviarmos o nosso tráfego pelo túnel necessitamos do seguinte:
1- Servidor Linux noutra rede, onde não existam limitações de acesso.
2- SSH server configurado na máquina Linux.
3- SSH cliente configurado na máquina cliente.
4- Proxy server SOCKS configurado no browser da máquina cliente.
Vamos então ao detalhe de cada um dos pontos anteriores para ver se conseguimos, ou não, por isto a funcionar:
1- Servidor Linux
Esta é a máquina vai receber o túnel a partir da rede partilhada (local de trabalho ou cybercafé) e encaminhar o tráfego para a internet usando uma ligação confiável. Sugiro que esta máquina seja instalada em vossa casa e use a vossa ligação à Internet e esteja permanentemente ligada ou, pelo menos que seja ligada antes de necessitarem do túnel SSH. Para se pouparem recursos sugiro que o Linux não seja instalado numa máquina física, mas sim numa Virtual Machine (VM), em VMware por exemplo. Recomendo a distribuição CentOS para este fim, tendo o cuidado de instalar o SSH Server durante a fase de instalação. Para facilitar a configuração, a placa de rede da VM deve esta em modo bridged para que fique na mesma rede do router de acesso à internet.
Não vou aqui ensinar a trabalhar com o VMware ou a instalar o Linux, mas deixo um vídeo a explicar a criação de uma VM e outro a instalação do Linux. Lamentavelmente, estes vídeos estão em inglês.
A minha configuração actual é um CentOS, instalado no VMware. Para este fim o Linux não necessita de ambiente gráfico, o que permite correr esta máquina com apenas 300 MB de RAM mantendo uma boa performance. Configurei o IP manualmente na placa de rede para que este não mude e o redireccionamento da porta, no router não deixe de funcionar.
Para criamos um túnel SSH e enviarmos o nosso tráfego pelo túnel necessitamos do seguinte:
1- Servidor Linux noutra rede, onde não existam limitações de acesso.
2- SSH server configurado na máquina Linux.
3- SSH cliente configurado na máquina cliente.
4- Proxy server SOCKS configurado no browser da máquina cliente.
Vamos então ao detalhe de cada um dos pontos anteriores para ver se conseguimos, ou não, por isto a funcionar:
1- Servidor Linux
Esta é a máquina vai receber o túnel a partir da rede partilhada (local de trabalho ou cybercafé) e encaminhar o tráfego para a internet usando uma ligação confiável. Sugiro que esta máquina seja instalada em vossa casa e use a vossa ligação à Internet e esteja permanentemente ligada ou, pelo menos que seja ligada antes de necessitarem do túnel SSH. Para se pouparem recursos sugiro que o Linux não seja instalado numa máquina física, mas sim numa Virtual Machine (VM), em VMware por exemplo. Recomendo a distribuição CentOS para este fim, tendo o cuidado de instalar o SSH Server durante a fase de instalação. Para facilitar a configuração, a placa de rede da VM deve esta em modo bridged para que fique na mesma rede do router de acesso à internet.
Não vou aqui ensinar a trabalhar com o VMware ou a instalar o Linux, mas deixo um vídeo a explicar a criação de uma VM e outro a instalação do Linux. Lamentavelmente, estes vídeos estão em inglês.
A minha configuração actual é um CentOS, instalado no VMware. Para este fim o Linux não necessita de ambiente gráfico, o que permite correr esta máquina com apenas 300 MB de RAM mantendo uma boa performance. Configurei o IP manualmente na placa de rede para que este não mude e o redireccionamento da porta, no router não deixe de funcionar.
2- Configuração do serviço de SSH no Linux
Ao seleccionar o serviço SSH Server na instalação do Linux, já ficamos com todas as configurações feitas e com o serviço a funcionar. Quero apenas fazer algumas alterações às configurações para melhorar a segurança e aumentar as probabilidades de sucesso.
-- Editar o ficheiro /etc/ssh/sshd_config com o “vi”.
“vi /etc/ssh/sshd_config”
-- Inibir o acesso directo do utilizador root. Uma vez que se trata de um serviço que vai ficar acessível da Internet este passo aumenta bastante a segurança do nosso sistema. Caso seja necessário o acesso root, pode-se sempre usar o comando “sudo” ou “su -”.
Editar a linha 39 para o seguinte valor:
“PermitRootLogin no”
-- Alterar o porto usado pelo serviço SSH. Por norma o serviço SSH responde no porto 22. Alterar este porto traz-nos 2 vantagens. A primeira é segurança acrescida pois qualquer hacker digno desse nome irá atacar o porto 22, contudo não saberá que serviço corre no porto 6969 por exemplo. A segunda vantagem é a de enganar os administradores de rede que não permitam o acesso ao porto 22 de máquinas externas a rede. Estes podem ter bloqueado o acesso ao porto 22, mas permitir o acesso ao porto 110 por exemplo.
Alterar a linha 13 para o seguinte valor:
“port 110” - Caso se pretenda outra porta, alterar o valor. Por defeito a porta usada é a 22.
-- gravar o ficheiro de configuração e fazer restart ao serviço “sshd”.
Dento do VI, carregar na tecla ESC, seguida de “:wq”
Fazer restar ao serviço SSHD - “service sshd restart”
-- Abrir o porto escolhido anteriormente no router para que este reencaminhe os pedidos para a máquina Linux com o serviço SSH.
Ao seleccionar o serviço SSH Server na instalação do Linux, já ficamos com todas as configurações feitas e com o serviço a funcionar. Quero apenas fazer algumas alterações às configurações para melhorar a segurança e aumentar as probabilidades de sucesso.
-- Editar o ficheiro /etc/ssh/sshd_config com o “vi”.
“vi /etc/ssh/sshd_config”
-- Inibir o acesso directo do utilizador root. Uma vez que se trata de um serviço que vai ficar acessível da Internet este passo aumenta bastante a segurança do nosso sistema. Caso seja necessário o acesso root, pode-se sempre usar o comando “sudo” ou “su -”.
Editar a linha 39 para o seguinte valor:
“PermitRootLogin no”
-- Alterar o porto usado pelo serviço SSH. Por norma o serviço SSH responde no porto 22. Alterar este porto traz-nos 2 vantagens. A primeira é segurança acrescida pois qualquer hacker digno desse nome irá atacar o porto 22, contudo não saberá que serviço corre no porto 6969 por exemplo. A segunda vantagem é a de enganar os administradores de rede que não permitam o acesso ao porto 22 de máquinas externas a rede. Estes podem ter bloqueado o acesso ao porto 22, mas permitir o acesso ao porto 110 por exemplo.
Alterar a linha 13 para o seguinte valor:
“port 110” - Caso se pretenda outra porta, alterar o valor. Por defeito a porta usada é a 22.
-- gravar o ficheiro de configuração e fazer restart ao serviço “sshd”.
Dento do VI, carregar na tecla ESC, seguida de “:wq”
Fazer restar ao serviço SSHD - “service sshd restart”
-- Abrir o porto escolhido anteriormente no router para que este reencaminhe os pedidos para a máquina Linux com o serviço SSH.
3- Configurar o PuTTY e ligar ao servidor SSH
Na máquina cliente, onde queremos navegar de forma segura, devemos instalar um cliente de SSH. Recomendo o PuTTY (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) que é open source, gratuito e pode ser executado directamente, sem instalação.
- Executar o PuTTY
- Colocar o endereço do servidor SSH e o porto configurado no ponto anterior
- Alterar o Connection type para SSH
Na máquina cliente, onde queremos navegar de forma segura, devemos instalar um cliente de SSH. Recomendo o PuTTY (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) que é open source, gratuito e pode ser executado directamente, sem instalação.
- Executar o PuTTY
- Colocar o endereço do servidor SSH e o porto configurado no ponto anterior
- Alterar o Connection type para SSH
Ainda nas configurações do PuTTY temos que definir o porto por onde o nosso tráfego web irá passar para o servidor SSH. Por norma uso o porto 8080 que é um porto típico de proxys, mas pode ser usado qualquer outro porto.
- Colocar “8080” dentro da caixa Destination
- Escolher Dynamic
- clicar em Add.
Dentro de Forwarded ports deve ficar o seguinte: “D8080”.
Em seguida clicar no botão open e colocar o username e a password da máquina Linux.
Neste momento tens a ligação via SSH à tua máquina Linux estabelecia e o túnel criado. Agora só falta dizer ao browser para encaminhar o tráfego todo pelo túnel que acabaste de criar.
- Colocar “8080” dentro da caixa Destination
- Escolher Dynamic
- clicar em Add.
Dentro de Forwarded ports deve ficar o seguinte: “D8080”.
Em seguida clicar no botão open e colocar o username e a password da máquina Linux.
Neste momento tens a ligação via SSH à tua máquina Linux estabelecia e o túnel criado. Agora só falta dizer ao browser para encaminhar o tráfego todo pelo túnel que acabaste de criar.
Caso uses Linux ou Mac OS X na tua máquina cliente, não necessitas do PuTTY, basta abrir a linha de comandos (shell) e usar colocar o seguinte comando:
ssh -D 8080 -p 110 username@endereço.do.servidor.ssh
O switch “-D8080” se refere à porta dinâmica que vais usar localmente para encaminhar o tráfego.
O switch “-p 110” refere-se à porta onde o teu servidor aceita as ligações SSH. É desnecessário se estiveres a usar a porta 22, que é a porta típica do serviço SSH.
4- Configurar o browser para usar o proxy SOCKS
Qualquer browser suporta o uso de proxys socks. O meu browser de eleição é o Firefox, pelo que vou indicar abaixo as configurações para o mesmo:
- Aceder ao Menu Tools (Ferramentas) e escolher Options (Opções).
- Clicar em Advanced, Network e em Settings.
- Escolher Manual proxy configuration e preencher a linha SOCKS Host da seguinte forma:
- localhost port 8080
Neste momento todo o tráfego que fizeres através do Firefox será enviado, de forma segura, através do túnel que criaste no ponto anterior.
Sempre que terminares a ligação SSH ao Linux, deixarás de ter acesso à Internet. Para voltares a ter acesso à Internet, deverás restabelecer a ligação SSH ou configurar o Firefox para não usar proxy (No proxy).
ssh -D 8080 -p 110 username@endereço.do.servidor.ssh
O switch “-D8080” se refere à porta dinâmica que vais usar localmente para encaminhar o tráfego.
O switch “-p 110” refere-se à porta onde o teu servidor aceita as ligações SSH. É desnecessário se estiveres a usar a porta 22, que é a porta típica do serviço SSH.
4- Configurar o browser para usar o proxy SOCKS
Qualquer browser suporta o uso de proxys socks. O meu browser de eleição é o Firefox, pelo que vou indicar abaixo as configurações para o mesmo:
- Aceder ao Menu Tools (Ferramentas) e escolher Options (Opções).
- Clicar em Advanced, Network e em Settings.
- Escolher Manual proxy configuration e preencher a linha SOCKS Host da seguinte forma:
- localhost port 8080
Neste momento todo o tráfego que fizeres através do Firefox será enviado, de forma segura, através do túnel que criaste no ponto anterior.
Sempre que terminares a ligação SSH ao Linux, deixarás de ter acesso à Internet. Para voltares a ter acesso à Internet, deverás restabelecer a ligação SSH ou configurar o Firefox para não usar proxy (No proxy).
The end.
E lembrem-se, não se deixem apanhar.
Sem comentários:
Enviar um comentário