Acesso seguro a um desktop remoto utilizando Linux, OpenVPN e Nxserver

Administrando redes de computadores remotamente e de forma segura, usando OpenVPN e NxServer para acessar áreas de trabalho compartilhadas na sua rede. Essencial quando se tem ambientes mistos com vários Sistemas Operacionais (Linux, Windows e etc).

[ Hits: 81.693 ]

Por: Bruno Roberto em 17/05/2007


Configurando o cliente



Vamos agora configurar o computador que fará acesso a nossa VPN.

1. Baixe e instale o cliente OpenVPN para Windows do site www.openvpn.org. Siga as instruções de instalação normalmente e você verá em "Conexões de Rede" que foi criado uma interface de rede virtual de nome TUN/TAP32.

2. Nas propriedades desse dispositivo adicione o IP 20.0.0.2 e máscara 255.0.0.0.

3. O arquivo de configuração dessa máquina cliente é quase idêntico ao do servidor, sendo adicionado somente a opção "remote". Crie um arquivo em C:\Arquivos de programas\OpenVPN chamado cliente.ovpn com o conteúdo abaixo:

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
# Use the same setting as you are using on
# the server. On most systems, the VPN will
# not function unless you partially or fully disable
# the firewall for the TUN/TAP interface.
dev tun
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
proto udp
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
Remote 200.175.x.y 1194 # esse será o IP e a porta usada pelo seu servidor VPN #na internet.
ifconfig 20.0.0.2 20.0.0.1
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
# Most clients don't need to bind to
# a specific local port number.
nobind
# Try to preserve some state across restarts.
persist-key
persist-tun
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca ca.crt
cert cliente.crt
key cliente.key
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
Verb 3

4. Copie de forma segura (disquete, pendrive, etc) as chaves do cliente e o certificado que foram criados no Linux e cole em C:\Arquivos de programas\OpenVPN. São eles:

4.1. ca.crt, cliente.crt e cliente.key (somente).

5. Copie openvpn.exe e os dois arquivos *.dll que estão em C:\Arquivos de programas\OpenVPN\bin para C:\Arquivos de programas\OpenVPN\.

6. Pronto, nossa VPN já pode ser levantada. Crie um arquivo vpn.bat com o conteúdo abaixo, ele é que irá iniciar o processo da VPN.

"C:\Arquivos de programas\OpenVPN\openvpn.exe" --config cliente.ovpn --tls-client
pause

7. Confirme se o servidor OpenVPN está em execução na máquina com Linux. Execute vpn.bat. Será necessário fornecer a senha usada na criação da chave do cliente. Se tudo der certo você verá algumas informações repetidas de tentativa de adição de rotas (é normal, inclusive a mensagem de erro no final), deixe o prompt aberto, não o feche.

8. Abra outro prompt do DOS e tente pingar 20.0.0.1, se responder pronto, nossa VPN está funcionando.

9. Detalhe: o próprio daemon do OpenVPN, tanto no Linux como no Windows, já cria as rotas padrões para conexão.

10. Baixe e instale o cliente NX para Windows do site www.nomachine.com.

11. Abra esse cliente e crie uma nova Sessão com um nome qualquer, host 20.0.0.1 porta 22 e escolha o método de acesso de acordo com sua conexão (Ex: ADSL).

12. Na próxima tela escolha Unix; KDE; a resolução que quer usar e o mais importante: habilite criptografia TLS para todo o tráfego. Assim tudo que for transmitido para ambos os lados será criptografado. Perceba que teremos 2 níveis de segurança: um na VPN que já é criptografada e outro do próprio cliente NX, que também garante a segurança de todo o tráfego.

13. Crie um atalho no desktop e pronto.

14. Conecte-se com o cliente NX instalado e forneça usuário e senha. Esses são os mesmos que você utiliza para efetuar logon no Desktop KDE do Linux. Tudo certo, você verá no seu desktop Windows uma janela que mostra o desktop do servidor Linux, no caso o KDE.

15. Verifique os computadores com Windows XP ou servidores com 2000 ou 2003 (Terminal Server deve estar habilitado) os quais você irá querer fazer acesso remoto. No XP libere conexão ao Desktop a partir de Propriedades do Sistema. Pronto já podemos acessar o Windows. Preste atenção na ponte que será utilizada para esse acesso: Windows na minha casa → Servidor Linux no trabalho → Windows XP ou 2003 no trabalho.

16. Na tela do Linux (KDE) que você está vendo no seu Desktop Windows, abra um konsole e digite:

$ rdesktop ip_ou_nome_do_computador_que_quer_acessar &

Ex: rdesktop 192.168.10.20 &
Ex: rdesktop computador20 &

17. Pronto, agora, de forma segura, você pode administrar qualquer computador da sua rede a partir da sua casa. Divirta-se!!!

Página anterior    

Páginas do artigo
   1. Introdução
   2. Configurando o servidor
   3. Configurando o firewall
   4. Configurando o cliente
Outros artigos deste autor

Instalando Xen 3.3.0 no Debian Lenny Linux

Leitura recomendada

VLC, o reprodutor multimídia

Personalizando o vim!

Autorando DVDs com Qdvdauthor usando menus animados

Zimbra 7.2 no CentOS

Monte seu próprio servidor de ICQ

  
Comentários
[1] Comentário enviado por lucas.suporte em 17/05/2007 - 12:00h

Bom artigo cara não olhei tudo mais só o pouco que vi achei mmuito bom, esta é uma solução muito boa!! Pra quem é administrador de rede e quer ter acesso as estações dos clientes.
Parabens
Abraço
Lucas Rocha

[2] Comentário enviado por carlosraniery em 17/05/2007 - 22:20h

Pessoal, estou tendo problemas com o NXClient, quando o executo recebo esta mensagem de erro:

NX> 595 ERROR: A fatal error occurred in NX Server.
NX> 595 ERROR: The exception id is: 6748CCBF. To get detailed information about
NX> 595 ERROR: the error search for the string 6748CCBF in the system log
NX> 595 ERROR: file (usually '/var/log/messages').
Killed by signal 15.

Em meu log tenho o seguinte:
May 17 22:12:25 localhost NXSERVER 2.1.0-22[21200]: ERROR: (exception id 0170694F) main::parse_args called at nxserver.pl line 4496
May 17 22:12:25 localhost NXSERVER 2.1.0-22[21200]: ERROR: (exception id 0170694F) eval {...} called at nxserver.pl line 4493

Estou usando Debian e o NX foi instalado com os .deb. Qualquer idéia eu agradeço.

[3] Comentário enviado por calaff2 em 17/05/2007 - 22:27h

cara muito bom msm! tbm n li tudo hauah tava lendo sobre ltsp ae parei para ver seu artigo ! + pelo o que eu li ta show!! qq dia vou testar ele aki!!

[4] Comentário enviado por brunaocomanda em 18/05/2007 - 12:59h

Caro Carlos Raniery,

Este erro (NX> 509 ERROR) ocorre no Linux, certo? Quando? No momento da instalação do nxclient*.*deb, por exemplo?!

[5] Comentário enviado por carlosraniery em 18/05/2007 - 20:08h

Opa Bruno, estou usando o Linux sim e o erro ocorre quando, usando o nxclient, tento me logar no servidor. Percebi que logo acima dessas mensagens de erro há uma outra que pode dar uma ideia melhor de qual é o problema:
NX> 148 Server capacity: not reached for user: raniery

[6] Comentário enviado por mpinho em 18/05/2007 - 22:05h

Gostei do artigo mas usar windows em casa eu tô fora. É muito mais prático para administradores Unix/linux usar linux também em casa para essas tarefas de administração remota. No windows tem que ficar instalando um monte de coisas e você fica sem poder fazer testes e acessar os man's localmente.

[7] Comentário enviado por sektor em 19/05/2007 - 16:37h

eu uso openvpn para interligar duas empresas distantes, funciona tudo muito ótimo, e na filial tenho um samba como servidor wins, para as maquinas se enchergarem na rede, quando preciso acessar o servidor remotamente para corrigir alguma coisa, ou ver como esta o andamento do mesmo utilizo o ssh, se eu estiver em uma estação windows, acesso usando o putty, =) muito bom, simples e nao precisa ser instalado, rodo do meu pendrive mesmo...segue o link abaixo para o download...

http://superdownloads.uol.com.br/download/46/putty/

[8] Comentário enviado por aprendiz_ce em 19/05/2007 - 22:59h

Parabéns pelo seu artigo!

Gostei muito mesmo e predendo implementa-lo o quanto antes.

Mas me tira um dúvida: Esse NX é semelhante ao VNC? Se for, essa solução não poderia ser implementa com o VNC?

Obrigado e aguardo retorno.

[9] Comentário enviado por brunaocomanda em 21/05/2007 - 09:03h

MRPINHO.... de acordo com a introdução do artigo, eu utilizo Linux sim em todos os lugares, mas há funcionários aqui na empresa que não utilizam Linux em casa e sim Windows, e como disse, procurava uma forma de acesso independente da plataforma utilizada, pois todos nós precisamos fazer ajustes na nossa rede e aplicações, claro, cada um dentro da sua área.

[10] Comentário enviado por brunaocomanda em 21/05/2007 - 09:07h

Caro SEKTOR... o artigo visa abordar exatamente isso... às vezes, principalmente para servidores com Windows, infelizmente a gente tem, somente SSH não resolve o problema, é preciso acesso ao Desktop e este é um dos focos do artigo, mas claro, nada impede que você acesse os demais servidores UNIX via SSH e isso exatamente que nós fazemos. Essa implemtentação é meio um "canivete suíço", ou seja, várias formas de se usar para vários gostos! =)

[11] Comentário enviado por brunaocomanda em 21/05/2007 - 09:12h

Caro MARDONIO... não, o NX não é a mesma coisa que VNC. Explico: O VNC funciona como "printscreens" da tela, entende? Ou seja, ele fotografa a tela, compacta a imagem e envia para a outra ponta do nó. Por ser assim, acaba sendo muito lento. Diferentemente, o NX passa os parâmetros necessários para que o servidor X monte a tela na outra ponta do nó, como se fossem as cordenadas para se criar outra tela exatamente como aquela está. Por ser assim, apenas comandos, parâmetros, cordenadas, o NX acaba sendo muito mais rápido, e isso faz muita diferença quando se fala em termos de tráfego pela internet.

[12] Comentário enviado por brunaocomanda em 22/05/2007 - 12:03h

Caro Raniery,

Realmente não consegui descobrir o que seja seu problema. Para verificar que não era nenhum tipo de erro no artigo, as vezes faltou algum detalhe, eu fiz uma instalação do Debian total a partir do zero, instalei o sistema básico mais o KDE e segui exatamente todos os passos descritos no artigo para criar o acesso remoto e funcionou perfeitamente, de primeira! Informo que nesta nova instalação, utilizei os drivers genericos do Linux para o vídeo, no caso "vesa" e não fiz alteração alguma em qualquer arquivo de configuração do kde, ssh e etc, apenas criei os ".conf" do openvpn!

[13] Comentário enviado por aprendiz_ce em 29/05/2007 - 15:51h

Bruno,

Entendi a sua explicação. OK?

Muito obrigado e um forte abraço.

[14] Comentário enviado por ricardoolonca em 26/06/2007 - 22:19h

Muito bom artigo. Eu estava com dificuldades da conectar a vpn da empresa através da minha estação Linux de casa. Com algumas pequenas modificações no teu artigo eu consegui numa boa.

Parabéns!

[15] Comentário enviado por caiquemd em 17/07/2007 - 18:13h

Amigo muito bom mais eu quero saber como farei para assesar ao mesmo tempo o servidor linux via openvpn e mapea ambas as maquinas externa...obrigado

[16] Comentário enviado por brunaocomanda em 20/07/2007 - 16:17h

Caiquemd,

Vc deve criar arquivos de configuração, com IP, porta e dispositivo de rede (tun0, tun1, tun2 e etc) diferentes para cada cliente que for acessar a VPN.
Da mesma forma vc configura cada cliente de acordo com cada IP e porta disponibilizados pela VPN. Reinicie o serviço OpenVPN e você verá muitos IPs, cada qual relacionado a cada arquivo de configuração criado. No demais, é tudo igual, inclusive, pode-se utilizar as mesmas chaves. Espero ter ajudado.

[17] Comentário enviado por antonioleite em 26/08/2007 - 17:57h

Amigos ja procurei por diversos artigos e livros e nada é o seguinte: Quando eu executo o ifconfig tun0 da o seguinte erro: TUN0: ERRO obtendo informações da interface: %s dispositivo não encontrado.
Só que eu ja reinstalei o Debian etch umas 1000 vezes e carrego o TUN "modprobe tun" o mesmo esta presente quando dou lsmod e sempre paro ai. Pergunto o que estou fazendo de errado se segui todos os passos acima, eu preciso estar com o outro computador conectado na filial para o TUN subir? Uma ajudinha por favor... Obrigado

[18] Comentário enviado por brunaocomanda em 27/08/2007 - 12:06h

Antonio,

Vc configurou e iniciou o serviço OpenVPN corretamente??? Somente quando o OpenVPN está de pé, é que ele cria a interface TUN0!

[19] Comentário enviado por antonioleite em 27/08/2007 - 14:03h

Eu utilizei o rcconf e o mesmo aparece para iniciar junto com o Debian etch eu até coloquei um link simbolico com o seguinte conteudo

openvpn --config /etc/openvpn/matriz.conf -daemon

e mesmo assim da este erro o que pode ser, sou iniciante tem outra forma de eu ver se o openvpn esta iniciado? ao iniciar o Linux o mesmo ja inicia correto? (/etc/init.d/openvpn restart )

Agradeço a ajuda...

[20] Comentário enviado por antonioleite em 28/08/2007 - 06:15h

Amigo brunaocomanda fiz o teste de restartar o openvpn como vc sugeriu e da o seguinte erro:
MATRIZ(FAILED)

segui exatamente o script acima e logo em seguida passei:
modprobe tun
openvpn --config /etc/openvpn/matriz.conf --daemon
/etc/init.d/openvpn restart

depois disto da MATRIZ(FAILED)

Eu instalei agora o debin sarg 3.1

Uma Ajudinha por favor....

[21] Comentário enviado por brunaocomanda em 30/08/2007 - 13:48h

Caro Antonio Leite,

Para iniciar o OpenVPN no Debian, vc o faz com o comando:
/etc/init.d/openvpn start

Não é necessário passar nenhum parametro. Após o comando execute "ps ax" e verifique se existe um processo para o OpenVPN. Utilize tbem "ifconfig" e veja se foi criado a interface tun0.

[22] Comentário enviado por brunaocomanda em 30/08/2007 - 13:50h

Outro detalhe é quanto ao nome do arquivo: matriz.conf.
Para desencardo de consciencia, mude o nome para openvpn.conf
Falowww...

[23] Comentário enviado por antonioleite em 31/08/2007 - 06:16h

Amigão


Mudei varias coisas para fazer um teste mais rapido, uma delas era o usuario e grupo nobody que não funcionava entaão criei outro usuario e grupo openvpn e ficou assim com o seguinte erro (não sei se é porta mas ja troquei por varias delas 5000, 5001, 5500, inclusive esta liberada no firewall)

openvpn.conf
dev tun
log /etc/openvpn/vpn.log
ifconfig 10.0.0.1 10.0.0.2
cd /etc/openvpn
secret chave
port 1194
user openvpn
group openvpn
comp-lzo
ping 15
verb 3

vpn.log
Fri Aug 31 06:04:37 2007 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jan 21 2007
Fri Aug 31 06:04:37 2007 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Fri Aug 31 06:04:37 2007 WARNING: you are using user/group/chroot without persist-key/persist-tun -- this may cause restarts to fail
Fri Aug 31 06:04:37 2007 Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Aug 31 06:04:37 2007 Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Aug 31 06:04:37 2007 Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Aug 31 06:04:37 2007 Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Aug 31 06:04:37 2007 LZO compression initialized
Fri Aug 31 06:04:37 2007 TCP/UDP: Socket bind failed on local address [undef]:1194: Address already in use

brunaocomanda

Obrigado

Abraços

[24] Comentário enviado por brunaocomanda em 31/08/2007 - 09:30h

Antonio,

Verifique se sua faixa de IP na rede não é a mesma usada no openvpn.conf (10.0.0.1), se for eles não podem estar na mesma rede. Utilize algo diferente como 10.0.0.1 para a VPN e 192.168.10.1 para a interface eth0 ou qualquer coisa nesse sentido.
Observe também se o modulo tun está compilado para o kernel em uso. tente "modprobe tun". Falowww...

[25] Comentário enviado por fabian em 05/01/2008 - 09:37h

Olá amigos.

Segui passo-a-passo o tutorial mas estou encontrando dificuldades para iniciar o openvpn. Quando executo /etc/initi.d/openvpn me retorna:
Starting virtual private network daemon: openvpn(FAILED).

Os amigos saberiam me dar uma luz?

Obrigado!
Diego Fabian


RESOLVIDO.

Executei o comando:

groupadd nobody

E resolveu.

Obrigado!

[26] Comentário enviado por inguants em 24/04/2008 - 18:55h

Carois Amigos,

Estou com problemas na hora de reiniciar o openvpn.

linuxserv:/home/luciano# /etc/init.d/openvpn restart
Stopping virtual private network daemon:.
Starting virtual private network daemon: openvpn(FAILED).

VPLOG

Fri Apr 25 12:30:30 2008 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Sep 20 2007
Fri Apr 25 12:30:30 2008 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Fri Apr 25 12:30:30 2008 Cannot open /etc/openvpn/keys/dh1024.pem for DH parameters: error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file
Fri Apr 25 12:30:30 2008 Exiting


ja fiz adcionei o grupo e tudo mas não vai

Desde ja agradeço....

[27] Comentário enviado por roosevelt_bh em 17/05/2008 - 13:14h

Sat May 17 13:10:22 2008 OpenVPN 2.1_rc7 Win32-MinGW [SSL] [LZO2] [PKCS11] built on Jan 29 2008
Sat May 17 13:10:22 2008 WARNING: using --pull/--client and --ifconfig together is probably not what you want
Sat May 17 13:10:22 2008 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Sat May 17 13:10:32 2008 Cannot load CA certificate file ca.crt path (null) (SSL_CTX_load_verify_locations): error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
Sat May 17 13:10:32 2008 Exiting

sera que os senhores poderiam me auxiliar neste problema ????

[28] Comentário enviado por brunaocomanda em 18/05/2008 - 10:23h

Caro inguants,

A inicializacao do openvpn deve ser feita como root, pois se trata de um servico dentro do init.d. O usuario e grupo nobody e para uso do proprio daemon depois de iniciado como root. Se nao o tiver fazendo, tente iniciar com o root.

[29] Comentário enviado por brunaocomanda em 18/05/2008 - 10:25h

Caro Roosevelt_bn,

Vc colocou os arquivos ca.crt cliente.crt e cliente.key no diretorio c:/arquivos de programas/openvpn . Esse deve ser o lugar deles. Apos isso crie um arquivo .bat dentro desse mesmo diretorio com o seguinte conteudo:

"C:\Arquivos de programas\OpenVPN\openvpn.exe" --config cliente.ovpn --tls-client

Inicie a vpn a partir desse script. Lembre-se de configurar bem o arquivo cliente.ovpn confomre o artigo.

Desculpes a demora. Boa sorte e estou a disposicao.

[30] Comentário enviado por eesm_redhat em 02/03/2009 - 10:35h

Cara pode me dar um ajudinha

seguinte eu instalei so que quando tento iniciar o servico me aparece a msg abaixo

openvp /usr/local/sbin/openvpn --config /etc/openvpn/incorp.conf --daemon
Options error: Unrecognized option or missing parameter(s) in /etc/openvpn/incorp.conf:32: tls-server (2.0.7)
Use --help for more information.



[31] Comentário enviado por brunaocomanda em 02/03/2009 - 10:51h

Seguinte eesm_redhat,

Vc está usando a versão 2.0.7 do openvpn. Tente atualizar e usar a versão 2.1

Se não der certo, poste ai o conteudo do arquivo "incorp.conf"

[32] Comentário enviado por andrei_scaratti em 20/08/2009 - 11:22h

Bom dia inguants
estava com esse mesmo problema, para solucionar tive que gerar os certificados novamente.

Att Andrei Scaratti

Estou com problemas na hora de reiniciar o openvpn.

linuxserv:/home/luciano# /etc/init.d/openvpn restart
Stopping virtual private network daemon:.
Starting virtual private network daemon: openvpn(FAILED).

VPLOG

Fri Apr 25 12:30:30 2008 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Sep 20 2007
Fri Apr 25 12:30:30 2008 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Fri Apr 25 12:30:30 2008 Cannot open /etc/openvpn/keys/dh1024.pem for DH parameters: error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file
Fri Apr 25 12:30:30 2008 Exiting


ja fiz adcionei o grupo e tudo mas não vai

Desde ja agradeço....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts