Esse é o primeiro artigo de uma série de três, onde iremos mostrar como melhorar a comunicação da sua empresa com Software livre.
Na parte 1, falaremos sobre seguranca dessas informações, como protege-la e criar uma vpn através do openvpn.
Na parte 2, mostraremos como instalar um servidor jabber na sua rede.
Na parte 3, teremos o artigo como criar um central telefonica para cominicação interna com
asterisk.
Introdução
O OpenVPN é um software livre e open-source para criar redes privadas virtuais do tipo
ponto-a-ponto ou server-to-multiclient através de túneis criptografados entre computadores.
Pode estabelecer conexões diretas entre computadores mesmo que estes estejam atrás de Nat.
O OpenVPN permite autenticação ponto-a-ponto através de chaves secretas compartilhadas,
certificados ou autenticação com usuário e senha ou no modo multiclient-server, permitindo
que cada cliente utilize a autenticação pública com certificados, utilizando assinaturas digitais e certificados de autoridade. A sua criptografia utiliza o OpenSSL.
Implantando em ambiente fictício:
Matriz:
Ip de internet: 189.100.100.100
rede do tunel: 10.11.12.0/24
rede interna da matriz: 10.10.1.0/24
Filial1:
Ip de internet: 201.100.100.100
rede interna da matriz: 10.10.2.0/24
Instalando o openvpn no servidor:
Instalaremos o openvpn através do apt-get no debian ou no ubuntu server, tanto na matriz quanto na filial:
root@matriz:~# apt-get install openvpn
Após a instalação do openvpn iremos dar início a criação da vpn na matriz:
Entre no diretório /usr/share/doc/openvpn/examples/easy-rsa/
root@matriz:~#cd /usr/share/doc/openvpn/examples/easy-rsa/
Abra e edite o arquivo vars ajustando as seguintes variáveis
# nano vars
// obs: tudo que tem // no início são comentarios e não deve estar no arquivo
//Início do arquivo vars
//Local onde irão ficar dos arquivos de configuração!
export EASY_RSA="`pwd`"
//Local onde estarão as chaves
export KEY_DIR="$EASY_RSA/keys"
//Local onde serão criadas as configurações
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
//Tamanho da chave em bits
export KEY_SIZE=2048
//Informações para gerar os certificados
export KEY_COUNTRY="BR"
export KEY_PROVINCE="RN"
export KEY_CITY="NATAL"
export KEY_ORG="seudominio.com.br"
export KEY_EMAIL="eu@seudominio.com.br"
Salve e feche o arquivo.
Para carregar informações do arquivo vars em memória, execute o comando abaixo:
root@matriz:~#. ./vars
Poderá aparecer a saída abaixo:
NOTE: If you run ./clean-all, I will be doing a rm -rf on
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys
Limpe as antigas chaves, certificados e parâmetros com o comando abaixo:
root@matriz:~#./clean-all
Aparecerá a saída abaixo:
Please source the vars script first (i.e. "source ./vars")
Make sure you have edited it to reflect your configuration.
Gere o certificado CA (certificate authority) que será utilizado na sua vpn:
root@matriz:~#./build-ca
Aparecerá a saída abaixo:
Generating a 2048 bit RSA private key
............................................................................................
.................+++
................................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [BR]:
State or Province Name (full name) [DF]:
Locality Name (eg, city) [Brasilia]:
Organization Name (eg, company) [dominio.com.br]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [dominio.com.br
CA]:servidor.dominio.com.br
Email Address [pessoa@dominio.com.br]:
Agora iremos criar chave para o seu servidor.
root@matriz:~#./build-key-server servidor
Agora iremos criar chave para as filiais da nossa empresa.
root@matriz:~#./build-key filial1
root@matriz:~#./build-key filia2
Agora criamos os parametros diff hellman, eles são necessários para o servidor openvpn trocar as chaves entre os pontos.
root@matriz:~#./build-dh
Aparecerá a saída abaixo:
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................
Terminamos a parte de gerar as chaves e teremos que move-las para o diretorio etc/openvpn/keys
root@matriz:~#mkdir /etc/openvpn/keys
root@matriz:~#cp keys/* /etc/openvpn/keys
Configurando do servidor openvpn:
Crie o arquivo abaixo com editor de texto nano:
root@matriz:~#nano /etc/openvpn/servidor.conf
Insira o seguinte conteúdo no arquivo:
//inicio do arquivo server.conf
dev tun # interface da vpn
mode server # modo de funcionamento
proto udp # protocolo TCP / UDP ?
port 1194 # porta que o openvpn vai rodar
# declarando chaves, certificados e parametros
ca keys/ca.crt
cert keys/servidor.crt
key keys/servidor.key
dh keys/dh2048.pem
server 10.11.12.0 255.255.255.0 # rede e mascara a sua interface de tunelamento
ifconfig-pool-persist /etc/openvpn/ipp.txt # cache do pool utilizando pelos clientes
push "route 10.10.1.0 255.255.255.0" # Rota para rede da matriz
ping 15 # mantendo conexao aberta com ping a cada 15 segundos
client-config-dir ccd
# mantem a conexao persistente (reconecta caso falhe)
ping-timer-rem
persist-tun
persist-key
# usuario e grupo que vao rodar o openvpn
user nobody
group nogroup
comp-lzo # tipo de compressão
keepalive 10 120
# configuracoes de log
status-version 2
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 5
//fim do arquivo server.conf
Após salvar e fechar o aquivo server.conf, iremos configurar o arquivo da filial para que a mesma possa se conectar a vpn:
Configuração da filial openvpn:
Crie o arquivo abaixo com editor de texto nano:
root@matriz:~#nano /etc/openvpn/filial.conf
Insira o seguinte conteúdo no arquivo:
//inicio do arquivo filial.conf
client
dev tun
ifconfig 10.11.12.2 10.11.12.1
proto tcp
remote 189.100.100.100 1194
resolv-retry infinite
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/filial.crt
key /etc/openvpn/filial.key
persist-tun
persist-key
user nobody
ns-cert-type server
comp-lzo
verb 5
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn.log
//fim do arquivo filial.conf
Crie o diretório /var/log/openvpn no servidor:
root@matriz:~#mkdir /var/log/openvpn
Envie os arquivo ca.crt,filial1.crt,filial1.key,ca.key,filial1.conf via ssh da matriz para a filial com o comando scp.
root@matriz:/etc/openvpn/keys# scp ca.crt filial1.crt filial1.key ca.key 201.100.100.100:/etc/openvpn/keys
root@matriz:/etc/openvpn#scp filial1.conf 201.100.100.100:/etc/openvpn
Inicie o openvpn manualmente:
openvpn --config servidor.conf -daemon
ou pelo init.d
root@matriz:/etc/openvpn# /etc/init.d/openvpn start
Verifique se a interface foi criada:
root@matriz:/etc/openvpn# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.150.1 P-t-P:192.168.150.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Veja se as rotas foram adicionadas automaticamente:
root@matriz:/etc/openvpn# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
10.11.12.1 10.11.12.5 255.255.255.255 UGH 0 0 0 tun0
10.11.12.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.10.1.0 0.0.0.0 255.255.255.0 UG 0 0 0 eth0
189.100.100.0 0.0.0.0 255.255.192.0 U 1 0 0 eth1
0.0.0.0 189.100.100.1 0.0.0.0 UG 0 0 0 eth1
Caso tenha algum problema veja os logs:
root@matriz:/etc/openvpn#tail -f /var/log/openvpn/openvpn.log
Crie odiretorio /var/log/openvpn:
root@filial:/etc/openvpn# mkdir /var/log/openvpn
Start o openvpn, após isso verifique a interface:
root@filial:/etc/openvpn# openvpn --config servidor.conf -daemon
Verifique se a interface de tunelamento foi criada:
root@filial:/etc/openvpn# ifconfig tun0
tun0 Link encap:Não Especificado Endereço de HW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet end.: 10.11.12.6 P-a-P:10.11.12.5 Masc:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Métrica:1
pacotes RX:385 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:670 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:100
RX bytes:66460 (66.4 KB) TX bytes:55127 (55.1 KB)
Veja se as rotas foram adiconadas automaticamente:
root@filial:/etc/openvpn# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
10.11.12.1 10.11.12.5 255.255.255.255 UGH 0 0 0 tun0
10.11.12.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.10.1.0 10.11.12.5 255.255.255.0 UG 0 0 0 tun0
10.10.2.0 0.0.0.0 255.255.192.0 U 1 0 0 eth0
0.0.0.0 201.100.100.1 0.0.0.0 UG 0 0 0 eth1
Verifique a saída do log:
root@filial:/etc/openvpn# tail -f /var/log/openvpn/openvpn.log
Teste se a vpn esta funcionado corretamente com o comando ping da matriz para a filial:
root@matriz:/etc/openvpn# ping 10.11.12.6
PING 10.11.12.6 (10.11.12.1) 56(84) bytes of data.
64 bytes from 10.11.12.6: icmp_seq=1 ttl=64 time=25.6 ms
64 bytes from 10.11.12.6: icmp_seq=2 ttl=64 time=26.1 ms
64 bytes from 10.11.12.6: icmp_seq=3 ttl=64 time=19.2 ms
64 bytes from 10.11.12.6: icmp_seq=4 ttl=64 time=23.8 ms
64 bytes from 10.11.12.6: icmp_seq=5 ttl=64 time=27.1 ms
64 bytes from 10.11.12.6: icmp_seq=6 ttl=64 time=35.6 ms
64 bytes from 10.11.12.6: icmp_seq=7 ttl=64 time=20.2 ms
^C
--- 10.11.12.6 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6009ms
rtt min/avg/max/mdev = 19.240/25.417/35.674/5.023 ms
Testando da filial: para a matriz:
root@filial:~# ping 10.11.12.1
PING 10.11.12.1 (10.11.12.1) 56(84) bytes of data.
64 bytes from 10.11.12.1: icmp_seq=1 ttl=64 time=53.7 ms
64 bytes from 10.11.12.1: icmp_seq=2 ttl=64 time=50.3 ms
64 bytes from 10.11.12.1: icmp_seq=3 ttl=64 time=19.6 ms
64 bytes from 10.11.12.1: icmp_seq=4 ttl=64 time=24.0 ms
--- 10.11.12.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3037ms
rtt min/avg/max/mdev = 19.649/36.955/53.788/15.247 ms
Testando o ping da filial para rede interna da matriz:
root@filial:~# ping 10.10.1.1
PING 10.10.1.1 (10.10.1.1) 56(84) bytes of data.
64 bytes from 10.10.1.1: icmp_seq=1 ttl=64 time=173 ms
64 bytes from 10.10.1.1: icmp_seq=2 ttl=64 time=171 ms
64 bytes from 10.10.1.1: icmp_seq=3 ttl=64 time=174 ms
64 bytes from 10.10.1.1: icmp_seq=4 ttl=64 time=174 ms
64 bytes from 10.10.1.1: icmp_seq=5 ttl=64 time=175 ms
Se na sua rede tem um firewall será necessario liberar a porta vpn,a ssim como os acessos da rede:
root@filial:~# iptables -A INPUT -i tun0 -j ACCEPT
root@filial:~#iptables -A OUTPUT -o tun0 -j ACCEPT
root@filial:~#iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
root@filial:~#iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
root@filial:~#iptables -A POSTROUTING -o tun0 -j MASQUERADE
root@matriz:~# iptables -A INPUT -i tun0 -j ACCEPT
root@matriz:~#iptables -A OUTPUT -o tun0 -j ACCEPT
root@matriz:~#iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
root@matriz:~#iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
root@matriz:~#iptables -A POSTROUTING -o tun0 -j MASQUERADE
Fim da primeira parte do nosso, na próxima semana publicaremos a segunda parte.
Siga o @def_linux no twitter e fique por dentro dos nossos tutoriais, dicas e promoções.
Veja mais notícias Linux e tutoriais do blog aqui.
G.I. - Joe: A Retaliação
Há um mês

Nenhum comentário:
Postar um comentário