OPENVPN SERVER NO CENTOS/RHEL Ribas Vecchiato 1) Instalar Cento ou RHEL. 2) Depois, como root fazer upgrade do sistema. yum upgrade Instalar pacotes necessários yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel -y Há a necessidade de instalar pacotes extras para Enterprise Linux (EPEL). Verificar a versão do sistema usado. Abaixo é o Red Hat ou Centos 6 com o realese do EPEL 6.8. Usar somente para sua versao. rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epelrelease-6-8.noarch.rpm yum install openvpn Configuração a) Use Easy-RSA para gerar Keys e Certificate Necessitamos de script de exemplos para gerar a Keys. O OpenVPN tem um modelo que podemos usar. mkdir -p /etc/openvpn/easy-rsa/keys cp -rfv /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa Uma vez que tenhamos copiado respectivo script para o local apropriado, agora precisamos configurar a variável de ambiente que seria usado para gerar o certificado. Para isso, precisamos de modificar as variáveis "KEY_", localizado na parte inferior do arquivo (/etc/openvpn/easy-rsa/var). vi /etc/openvpn/easy-rsa/vars export export export export export export export export KEY_COUNTRY="BR" KEY_PROVINCE="RS" KEY_CITY="Porto Alegre" KEY_ORG="Nome da Empresa" KEY_EMAIL="[email protected]" KEY_CN=server.example.com KEY_NAME=server KEY_OU=server As vezes o OpenVPN não reconhece a versão OpenSSL no CentOS. Então, para evitar a confusão vamos copiar manualmente o arquivo de configuração do OpenSSL necessário. cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf Também Alterar seguinte linha no arquivo "vars" a partir de: vi /etc/openvpn/easy-rsa/vars export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` To: export KEY_CONFIG=/etc/openvpn/easy-rsa/openssl.cnf Com base na configuração e informações acima precisamos construir nossa Autoridade Certificadora (AC). Navegue até o diretório easy-rsa e fazer todos os arquivos no diretório executável. cd /etc/openvpn/easy-rsa chmod +x * source ./vars ./clean-all ./build-ca Agora crie Diffie Hellman arquivos de troca de chaves usando o script build-dh e chave secreta TA também. ./build-dh openvpn --genkey --secret keys/ta.key Uma vez que tenhamos sucesso ao construir nossa própria Autoridade Certificadora (AC) e criou chave DH e gerou TA secret , agora é a hora de criar OpenVPN certificado de servidor e copiar todos os arquivos para o diretório / etc / openvpn (/ etc / openvpn): ./build-key-server server cd /etc/openvpn/easy-rsa/keys cp ca.crt server.crt server.key dh1024.pem ta.key /etc/openvpn b) OpenVPN Config Agora copie o arquivo de configuração de amostra fornecido com pacote Open-VPN a pasta de destino (/ etc / openvpn) e vamos modificá-lo. cp -v /usr/share/doc/openvpn-*/sample-configfiles/server.conf /etc/openvpn vim /etc/openvpn/server.conf Remova o comentário dos parâmetro que permite o tráfego no sistema do cliente para ser encaminhado via caixa OpenVPN. Faça para "redirect-gateway def1 bypass-dhcp" Também precisamos liberar as regras que permitem consultas DNS para o DNS público do Servidor do Google. descomente "dhcp-option DNS 8.8.8.8" descomente "dhcp-option DNS 8.8.4.4" Vamos criar privilégios após a inicialização, para aumentar a segurança. Remova o comentário da "user" e de grupo. user nobody group nobody No final o aquivo de configuração do OpenVPN sera algo como abaixo: mode server tls-server port 1194 ## default openvpn port proto udp dev tun ## If you need multiple tap devices, add them here persist-key persist-tun #certificates and encryption ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem tls-auth ta.key 0 # This file is secret cipher BF-CBC # Blowfish (default) comp-lzo ifconfig 10.8.0.1 10.8.0.2 server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "route 10.240.0.0 255.255.248.0" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" push "dhcp-option DOMAIN example.com" user openvpn group openvpn keepalive 10 120 status /var/log/openvpn-status.log verb 3 c) Configuração do Sistema Precisamos permitir a passagem dos pacotes da VPN para encaminhar à rede interna. vi /etc/sysctl.conf: net.ipv4.ip_forward = 1 Para ativar as mudanças. sysctl -p /etc/sysctl.conf Implementar um regras de iptables para permitir o roteamento de sub-rede de pacotes apresentados pelo respectivo interface e permite que a porta 1194, salvar a regra de iptables e reiniciá-lo: iptables MASQUERADE iptables iptables iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j -A FORWARD -i tun0 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o tun0 -j ACCEPT -A INPUT -p udp -m udp --dport 1194 -j ACCEPT service iptables save service iptables restart Agora iniciar o serviço, e habilitá-lo na inicialização também. service openvpn start chkconfig openvpn on OpenVPN Client Configuração. Agora vamos criar os certificados de cliente no servidor OpenVPN para autenticar: cd /etc/openvpn/easy-rsa source ./vars ./build-key client Nota: Você pode substituir o "cliente" com outro nome que possamos identificá-lo como o nome da máquina do cliente ou nome de usuário que precisa para se conectar. Agora precisamos copiar certificado de cliente necessário (ca.crt, ta.key, client.crt e client.key) do servidor OpenVPN para a máquina cliente openvpn. cd /etc/openvpn/easy-rsa/keys/ tar -cvf /tmp/client-ssl-bundle.tar ca.crt ta.key client.crt client.key scp :/tmp/client-ssl-bundle.tar . Agora vamos preparar arquivo de configuração do cliente que será usado para conectar-se a OpenVPN Server. vi client.ovpn dev tun proto udp remote 1194 pull # Client does not need to bind to a specific local port nobind resolv-retry infinite persist-key persist-tun # SSL/TLS parameters - files created previously ca ca.crt cert client.crt key client.key # Since we specified the tls-auth for server, we need it for the client # note: 0 = server, 1 = client tls-client tls-auth ta.key 1 # Specify same cipher as server cipher BF-CBC # Use compression comp-lzo # Log verbosity (to help if there are problems) verb 3 Nota: *) Substitua o nome da chave "cliente" VPN que tem gerado usando o comando construir-key. *) Substituir client.ovpn, onde "cliente" deve coincidir com o nome do cliente que está sendo implantado por meio de comando construir-key. *) Também coloque o IP do servidor VPN no parâmetro remoto OpenVPN SERVER IP. No Windows Mac OS / X precisamos copiar a configuração OpenVPN cliente (client.ovpn) e certificado a seguinte localização: Windows: C: \ Program Files \ OpenVPN \ config