{"id":599,"date":"2013-10-02T01:10:21","date_gmt":"2013-10-02T04:10:21","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=599"},"modified":"2013-10-02T01:17:48","modified_gmt":"2013-10-02T04:17:48","slug":"vpn-usando-ssh","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=599","title":{"rendered":"VPN Usando SSH"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>Introdu\u00e7\u00e3o e configura\u00e7\u00e3o do servidor<\/b><\/p>\n<div>O\u00a0<em>SSH<\/em>\u00a0normalmente \u00e9 usado com a principal finalidade que \u00e9 o acesso remoto, por\u00e9m, com esta poderosa ferramenta, h\u00e1 mais coisas que podem ser feitas, uma delas \u00e9 criar t\u00faneis encriptados tempor\u00e1rios e uma\u00a0<em>VPN<\/em>real.Neste artigo irei abordar como configurar seu servidor SSH para rodar como um servidor VPN para conex\u00e3o ponto a ponto. N\u00e3o se trata de um configura\u00e7\u00e3o trabalhosa.<\/p>\n<p>O t\u00fanel que ser\u00e1 criado ir\u00e1 utilizar a interface TUN\/TAP, nos exemplos utilizaremos a TAP para estabelecer a conex\u00e3o entre cliente e servidor<\/p>\n<p>Chega de papo e vamos \u00e0 pr\u00e1tica!!!!<\/p>\n<p>O primeiro passo \u00e9 editar o arquivo &#8220;\/etc\/ssh\/sshd_config&#8221; no servidor (voc\u00ea pode usar o pr\u00f3prio SSH para acessar e depois editar o arquivo), adicionando a linha abaixo no arquivo:<\/p>\n<div>PermitTunnel yes<\/div>\n<p>\u00c9 necess\u00e1rio tamb\u00e9m que a linha &#8220;PermitRootLogin = yes&#8221; esteja presente, j\u00e1 que, por seguran\u00e7a, apenas o &#8216;root&#8217; pode criar a VPN.<\/p>\n<p>Se voc\u00ea n\u00e3o quer permitir logins como &#8216;root&#8217; devido \u00e0 quest\u00e3o da seguran\u00e7a, uma op\u00e7\u00e3o \u00e9 combin\u00e1-la com a linha &#8220;PermitRootLogin = forced- commands-only&#8221;, como em:<\/p>\n<div>PermitRootLogin\u00a0=\u00a0yes<br \/>\nPermitRootLogin\u00a0=\u00a0forced-commands-only<!--more--><\/div>\n<p>Ela torna o acesso como &#8216;root&#8217; um pouco mais restritivo, pois permite apenas o uso do &#8216;root&#8217; para a execu\u00e7\u00e3o de comandos (como o que usaremos para criar o t\u00fanel) e n\u00e3o para login direto. Depois de feitas as altera\u00e7\u00f5es, reinicie o servidor SSH para que as altera\u00e7\u00f5es entrem em vigor.<\/p>\n<p>Reinicie o servidor com o comando:<\/p>\n<p><strong># \/etc\/init.d\/ssh restart<\/strong><\/p>\n<p>Ap\u00f3s configurar o servidor e reiniciar o mesmo, seu servidor estar\u00e1 rodando o SSH e pronto para estabelecer a conex\u00e3o VPN pelo protocolo de criptografia do SSH.<\/p>\n<p>Caso apare\u00e7a algum erro, pode ser que a vers\u00e3o do SSH que voc\u00ea utiliza seja mais antiga, pois o SSH s\u00f3 tem este recurso a partir da vers\u00e3o 4.3.<\/p>\n<p>Neste caso, recomendo que instalar a vers\u00e3o mais nova pelo gerenciador de pacotes ou, baixando e instalando manualmente, para ent\u00e3o poder proceder com a configura\u00e7\u00e3o e conex\u00e3o da VPN.<\/p>\n<p>Os erros que podem aparecer, caso seu SSH esteja com uma vers\u00e3o anterior \u00e0 &#8216;4.3&#8217;, s\u00e3o:<\/p>\n<blockquote><p>\/etc\/ssh\/sshd_config: line 27: Bad configuration option: PermitTunnel<br \/>\n\/etc\/ssh\/sshd_config: terminating, 1 bad configuration options<\/p><\/blockquote>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Estabelecendo a conex\u00e3o &#8211; T\u00fanel ponto a ponto<\/b><\/p>\n<div>Depois de realizar a configura\u00e7\u00e3o no servidor, \u00e9 hora de estabelecer a conex\u00e3o com o mesmo e come\u00e7ar a usar sua VPN.Logado como &#8216;root&#8217; (no cliente), digite no terminal o comando abaixo:<\/p>\n<p><strong># ssh -f -w 0:0 -o Tunnel=ethernet root@192.168.222.33 ifconfig tap0 10.5.5.1 netmask 255.255.255.0<\/strong><\/p>\n<p>Obs.: \u00c9 necess\u00e1rio digitar usando o usu\u00e1rio &#8216;root&#8217;, pois s\u00f3 ele tem poder administrativo para gerar o dispositivo virtual no servidor e no cliente. A autentica\u00e7\u00e3o realizada vai seguir a configurada no servidor, pode ser atrav\u00e9s da senha do &#8216;root&#8217; ou atrav\u00e9s das chaves de autentica\u00e7\u00e3o ( o que \u00e9 mais seguro).<\/p>\n<p>Caso digite o comando sem o usu\u00e1rio &#8216;root&#8217; ter permiss\u00e3o de se logar via SSH (configura\u00e7\u00e3o feita no &#8220;\/etc\/ssh\/sshd_config&#8221; na primeira p\u00e1gina), provavelmente um erro como o mostrado abaixo ser\u00e1 retornado:<\/p>\n<blockquote><p>Tunel device open failed<br \/>\nCould not request tunnel forwarding<\/p><\/blockquote>\n<p>Caso apare\u00e7a este outro erro descrito abaixo, significa que, ou o SSH do servidor n\u00e3o est\u00e1 usando uma vers\u00e3o mais antiga ou a op\u00e7\u00e3o &#8216;PermitTunnel&#8217; est\u00e1 desabilitada:<\/p>\n<blockquote><p>SIOCSIFADDR: Dispositivo inexistente<br \/>\ntap0: ERROR while getting interface flags: Dispositivo inexistente<br \/>\nSIOCSIFNETMASK: Dispositivo inexistente<\/p><\/blockquote>\n<p>Explica\u00e7\u00e3o das op\u00e7\u00f5es usadas:<\/p>\n<ul>\n<li>-f:- Esta op\u00e7\u00e3o faz com que o comando seja executado em background e n\u00e3o fique ocupando seu terminal durante a execu\u00e7\u00e3o.<\/li>\n<li>-w 0:0:- \u00c9 usada para criar o t\u00fanel, neste caso criando a interface &#8216;tap0&#8217; no cliente e a interface &#8216;tap0&#8217; no servidor.<\/li>\n<li>-o Tunnel=ethernet:- Indica que deve ser criada uma interface virtual TAP. O default do SSH (quando a op\u00e7\u00e3o \u00e9 omitida) \u00e9 criar uma interface TUN. A grande diferen\u00e7a entre as duas \u00e9 que a interface TAP pode ser usada para criar um &#8216;bridge&#8217;, o que permite efetivamente unir as duas redes.<\/li>\n<li>root@192.168.222.33:- O &#8216;192.168.222.33&#8217; representa o endere\u00e7o IP do servidor, e deve ser substitu\u00eddo pelo endere\u00e7o IP do seu servidor SSH. O &#8220;root&#8221; refere-se ao usu\u00e1rio que ir\u00e1 logar no servidor.<\/li>\n<li>ifconfig tap0 10.5.5.1 netmask 255.255.255.0:- Configura o endere\u00e7o IP e a m\u00e1scara que ser\u00e1 usada pela interface &#8216;tap0&#8217; que ser\u00e1 criada no servidor. Voc\u00ea pode usar o endere\u00e7o e m\u00e1scara que quiser, mas ela deve ser diferente da faixa de IPs usada na rede local.<\/li>\n<\/ul>\n<p>Ap\u00f3s executar o comando no cliente e n\u00e3o ter gerado algum erro como comentado no inicio da p\u00e1gina, logue no servidor como &#8216;root&#8217; e execute o comando:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<p>E veja que a interface &#8216;tap0&#8217; foi criada:<\/p>\n<blockquote><p>tap0 Encapsulamento do Link: Ethernet Endere\u00e7o de HW EA:CE:66:FB:1A:DG<br \/>\ninet end.: 10.5.5.1 Bcast:10.5.5.255 Masc:255.255.0.0<br \/>\nendere\u00e7o inet6: fe80::e8ce:ecff:fefb:1add\/64 Escopo:Link<br \/>\nUP BROADCAST RUNNING MULTICAST MTU:1500 M\u00e9trica:1<br \/>\npacotes RX:4 erros:0 descartados:0 excesso:0 quadro:0<br \/>\nPacotes TX:26 erros:0 descartados:0 excesso:0 portadora:0<br \/>\ncolis\u00f5es:0 txqueuelen:500<br \/>\nRX bytes:328 (328.0 b) TX bytes:4317 (4.2 KiB)<\/p><\/blockquote>\n<p>Observe que foi criado at\u00e9 um MAC para a interface virtual.<\/p>\n<p>Agora \u00e9 hora de configurar a interface &#8216;tap0&#8217; do cliente que ainda n\u00e3o foi ativada. Para isto, execute no terminal como &#8216;root&#8217;:<\/p>\n<p><strong># ifconfig tap0 10.5.5.2 netmask 255.255.255.0 up<\/strong><\/p>\n<p>Teste, usando o ping:<\/p>\n<p><strong># ping -c 3 10.5..5.1<\/strong><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Definindo rotas<\/b><\/p>\n<div>Todo o trabalho at\u00e9 ent\u00e3o, foi apenas para estabelecer a conex\u00e3o do cliente com servidor permitindo a comunica\u00e7\u00e3o entre ambos.Por\u00e9m, para que implantar uma VPN na rede, se n\u00e3o conseguir se comunicar com os outros &#8216;hosts&#8217; da rede?<\/p>\n<p>Como este n\u00e3o \u00e9 o prop\u00f3sito do artigo, ent\u00e3o vamos adicionar rotas para fazer com que o cliente se conecte aos &#8216;hosts&#8217; da rede do servidor.<\/p>\n<p>No servidor, execute os comandos abaixo para fazer o roteamento usando o &#8216;root&#8217;:<\/p>\n<p><strong># echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward<br \/>\n# iptables -t nat -s 10.5.5.2 -A POSTROUTING -o eth0 -j MASQUERADE<\/strong><\/p>\n<p>Explica\u00e7\u00e3o:<\/p>\n<p>O primeiro comando faz com que o redirecionamento de pacotes seja ativado no servidor, permitindo que os pacotes do cliente seja redirecionado para os outros &#8216;hosts&#8217; da rede e vice-versa.<\/p>\n<p>O segundo comando faz com que todo tr\u00e1fego vindo do cliente seja mascarado, neste caso estou supondo que a interface &#8216;eth0&#8217; seja a interface conectada \u00e0 rede local do servidor.<\/p>\n<p>No cliente, ative uma rota para a rede do local do servidor:<\/p>\n<p><strong># route add -net 192.168.222.0 netmask 255.255.255.0 gw 10.5.5.1 dev tap0<\/strong><\/p>\n<p>No comando acima, o &#8216;192.168.222.0&#8217; indica a faixa de endere\u00e7os usada na rede local do servidor. O &#8216;255.255.255.0&#8217; indica a m\u00e1scara, e o &#8216;10.5.5.1&#8217; indica o endere\u00e7o da interface &#8216;tap0&#8217; do servidor.<\/p>\n<p>Com isso, o cliente passa a encaminhar todas as tentativas de acesso a endere\u00e7os dentro da faixa especificada para o servidor (usando a interface &#8216;tap0&#8217;), e o servidor as encaminha para a interface de rede local.<\/p>\n<h1>Conclus\u00e3o<\/h1>\n<p>Esta \u00e9 uma forma de utilizar uma VPN usando o SSH como ferramenta principal e bastante segura.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o e configura\u00e7\u00e3o do servidor O\u00a0SSH\u00a0normalmente \u00e9 usado com a principal finalidade que \u00e9 o acesso remoto, por\u00e9m, com esta poderosa ferramenta, h\u00e1 mais coisas que podem ser feitas, uma delas \u00e9 criar t\u00faneis encriptados tempor\u00e1rios e uma\u00a0VPNreal.Neste artigo irei abordar como configurar seu servidor SSH para rodar como um servidor VPN para conex\u00e3o ponto [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[79,51,68,271],"tags":[335,204,336,164],"class_list":["post-599","post","type-post","status-publish","format-standard","hentry","category-firewall","category-linux-linuxrs","category-redes-2","category-seguranca-2","tag-configuracao-vpn","tag-ssh","tag-usando-ssh","tag-vpn"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=599"}],"version-history":[{"count":3,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/599\/revisions"}],"predecessor-version":[{"id":611,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/599\/revisions\/611"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}