Anonim

É 2017, e o uso de uma VPN se tornou um acéfalo. Entre o grande número de preocupações com a privacidade externa e o seu próprio ISP capaz de vender seu histórico de navegação, não há justificativa para não usá-lo.

Claro, você pode pagar uma das centenas de serviços de VPN existentes, mas mais uma vez, você depende de outra pessoa com seus dados. A maioria é ótima, na realidade, mas se você deseja controle completo, pode criar sua própria VPN em um VPS Virtual PrivateER (VPS) ou alugar seu próprio servidor privado, se quiser ser realmente incondicional.

Tudo o que você precisa para construir uma VPN é o software OpenVPN de código aberto e o Linux (ou BSD). A configuração pode estar envolvida, mas não é impossível que alguém com conhecimentos básicos de Linux realize uma distribuição como o Ubuntu.

Para este guia, você precisará de um VPS executando o Ubuntu. Você pode escolher um facilmente com alguém como DigitalOcean ou Linode . Siga os guias básicos de segurança para configurar. Certifique-se de não cometer erros básicos, como permitir acesso root através de SSH.

Além disso, lembre-se de que você fará toda a instalação na linha de comando sobre SSH para o seu VPS. Não há nada que exija muito do conhecimento do Linux, mas esteja preparado para digitar em vez de clicar.

Obtendo o que você precisa

Links Rápidos

  • Obtendo o que você precisa
  • Configurar o firewall
    • Encontre a interface
    • Iptables Basics
    • Configure suas regras
      • Loopback
      • Ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • Exploração madeireira
      • Rejeitar tudo o resto
      • Mascaramento de NAT
    • Encaminhar tráfego IPv4
    • Parar todas as conexões IPv6
    • Importar e salvar em iptables

O Ubuntu empacota e distribui o OpenVPN em seus repositórios. Você só precisa usar o apt para instalá-lo. Você também precisará da ferramenta para gerar chaves de criptografia. Instale os dois.

$ sudo apt instala openvpn easy-rsa

Configurar o firewall

Em seguida, você precisa cuidar do firewall. É uma peça importante para manter sua VPN segura e impedir o vazamento de dados e o acesso indesejado.

O Iptables é o principal firewall do Linux e é a melhor opção para controlar o acesso às portas do Ubuntu. Você já o instalará, para poder começar a configurar suas regras de firewall.

Encontre a interface

Antes de começar a escrever regras no iptables, descubra com qual interface seu servidor está conectado à Internet. Execute ifconfig para exibir suas interfaces de rede. Aquele que possui um endereço inet: correspondente ao endereço IP ao qual você está conectado é a interface correta.

Iptables Basics

Geralmente, não é uma boa ideia copiar e colar aleatoriamente as coisas no terminal da Internet. Isso é especialmente verdade quando você lida com tópicos de segurança. Portanto, reserve um tempo aqui para aprender um pouco sobre as regras do iptables antes de começar a inseri-las.

Veja este exemplo de regra do iptables.

-A ENTRADA -i eth0 -p tcp -m state - ESTABELECIDO - sport 443 -j ACEITAR

Tudo bem, então -A significa que você anexará uma nova regra. Então INPUT significa que se trata de entrada para o seu servidor. Há também uma SAÍDA. O sinalizador -i informa ao iptables para qual interface essa regra se destina. Você pode especificar para qual protocolo a regra se aplica com -p. Esta regra lida com tcp. -m especifica uma condição que uma conexão deve atender. Nesse caso, ele deve corresponder ao estado especificado. Obviamente, então –state especifica um estado, neste caso, uma conexão ESTABELECIDA. A próxima parte diz ao iptables para qual porta essa regra se destina. É a porta 443, a porta HTTPS, aqui. O último sinalizador é -j. Significa "jump" e diz ao iptables o que fazer com a conexão. Se essa conexão atendesse a todos os requisitos da regra, o iptables a aceitaria.

Configure suas regras

Portanto, você deve ter uma idéia geral de como as regras do iptables funcionam agora. O restante desta seção mostrará como configurar suas regras, peça por peça.

A melhor maneira de criar um conjunto de regras do iptables é criar um arquivo contendo todas elas. Em seguida, você pode importar tudo para o iptables de uma só vez. Definir regras individualmente pode ser confuso, especialmente se você estiver iniciando um novo conjunto de regras do zero.

Crie um arquivo no diretório / tmp para criar suas regras.

$ vim / tmp / ipv4

Inicie esse arquivo com * filtro. Isso diz ao iptables que o que se segue serão regras para filtragem de pacotes.

Loopback

A primeira seção de regras bloqueia a interface de loopback. Eles dizem ao iptables que o servidor deve aceitar o tráfego de si mesmo na interface de loopback. Também deve rejeitar o tráfego proveniente de si mesmo e não proveniente do loopback.

-A ENTRADA -i lo -j ACEITA -A ENTRADA! -i lo -s 127.0.0.0/8 -j REJEITAR -A SAÍDA -o lo -j ACEITAR

Ping

Em seguida, permita o ping. Você deve poder executar ping no seu servidor para garantir que ele esteja on-line, caso seja inacessível. Nesse caso, apenas solicitações de eco são permitidas e o servidor se permitirá enviar a saída ICMP.

-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m state --state ESTABELECIDO, RELACIONADO -j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

Você precisa de SSH. Essa é a única maneira de acessar seu servidor. As regras SSH são específicas para sua interface da Internet, portanto, substitua eth0 pela interface que o servidor estiver realmente usando.

Também pode ser uma boa ideia alterar as conexões SSH da porta 22, pois esse é o padrão que os invasores em potencial tentariam. Se você fizer isso, altere-o também nas regras do iptables.

-A INPUT -i eth0 -p tcp -m state --state NOVO, ESTABELECIDO --dport 22 -j ACEITAR -A OUTPUT -o eth0 -p tcp -m state --state ESTABELECIDO --sport 22 -j ACCEPT

OpenVPN

Esta próxima parte permite o tráfego de e para o servidor OpenVPN sobre UDP.

-A INPUT -i eth0 -p udp -m state --state NOVO, ESTABELECIDO --port 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state ESTABELECIDO --sport 1194 -j ACCEPT

DNS

Agora, permita conexões DNS através de UDP e TCP. Você deseja que sua VPN lide com DNS, não com seu ISP. Isso é parte do motivo de você estar configurando uma VPN em primeiro lugar.

-A INPUT -i eth0 -p udp -m state --state ESTABELECIDO --sport 53 -j ACEITAR -A SAÍDA -o eth0 -p udp -m state --state NOVO, ESTABELECIDO --dport 53 -j ACEITAR -A INPUT -i eth0 -p tcp -m state --state ESTABELECIDO --sport 53 -j ACEITAR -A SAÍDA -o eth0 -p tcp -m state --state NOVO, ESTABELECIDO --dport 53 -j ACEITAR

HTTP / S

Para que o Ubuntu possa se atualizar, você precisa adicionar um conjunto de regras para permitir a conexão de saída de HTTP e HTTPS. Observe que essas regras permitem apenas que o servidor inicie conexões HTTP; portanto, você não pode usá-lo como servidor da Web ou conectar-se a ele pela porta 80 ou 443

-A ENTRADA -i eth0 -p tcp -m state --state ESTABELECIDO - sport 80 -j ACEITAR -A ENTRADA -i eth0 -p tcp -m state --state ESTABELECIDO --sport 443 -j ACEITAR -A OUTPUT - o eth0 -p tcp -m state --state NOVO, ESTABELECIDO --dport 80 -j ACEITAR - UMA SAÍDA -o eth0 -p tcp -m state --state NEW, ESTABELECIDO --dport 443 -j ACCEPT

NTP

Para manter o relógio do servidor funcionando corretamente, você precisará do NTP. O NTP permite que seu servidor seja sincronizado com servidores de horário em todo o mundo. Ter um relógio incorreto no servidor pode causar problemas de conexão, portanto, executar o NTP é uma boa idéia. Mais uma vez, você deve aceitar apenas conexões de saída e já estabelecidas.

-A INPUT -i eth0 -p udp -m state --state ESTABELECIDO --sport 123 -j ACEITAR -A OUTPUT -o eth0 -p udp -m state --state NOVO, ESTABELECIDO --dport 123 -j ACCEPT

TUN

Desbloqueie a interface TUN que o OpenVPN usa para encapsular o tráfego.

-A ENTRADA -i tun0 -j ACEITA -A FORWARD -i tun0 -j ACEITA -A SAÍDA -o tun0 -j ACEITA

Você precisa permitir que o TUN encaminhe o tráfego para sua interface regular para a VPN. Você encontrará esse endereço IP na configuração do OpenVPN. Se você alterá-lo na configuração, altere-o também nas suas regras.

-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m state --state ESTABELECIDO, RELACIONADO -j ACCEPT

Exploração madeireira

É uma boa idéia manter registros de tudo que é rejeitado pelo iptables. Nesse caso, significa qualquer coisa que não se encaixe em nenhuma dessas regras. Os logs permitem que você veja se há alguma atividade maliciosa ou alguma tentativa de fazer algo nefasto no servidor.

-A INPUT -m limit –limit 3 / min -j LOG – prefixo de log “iptables_INPUT_denied:” –log-level 4
-U FORWARD -m limit –limit 3 / min -j LOG – prefixo de log “iptables_FORWARD_denied:” –log-level 4
-A OUTPUT -m limit –limit 3 / min -j LOG – prefixo de log “iptables_OUTPUT_denied:” –log-level 4

Rejeitar tudo o resto

Finalmente, você precisa bloquear qualquer coisa que não se encaixe nas suas regras. Esse é realmente o objetivo de ter um firewall em primeiro lugar.

-A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT

Feche o arquivo com COMMIT para dizer ao iptables para confirmar todas as regras.

Mascaramento de NAT

Você precisa das conexões da VPN para parecer que elas são provenientes do próprio servidor. Esta parte não pode ser incluída no arquivo iptables normal porque usa uma tabela diferente. Tudo bem, porém, é apenas uma linha.

$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Encaminhar tráfego IPv4

Você precisará ativar o encaminhamento do tráfego IPv4, para que ele possa passar entre a VPN e a interface de rede real do servidor. Abra o /etc/sysctl.d/99-sysctl.conf com o sudo.

Encontre a linha abaixo e remova o comentário removendo o #.

net.ipv4.ip_forward = 1

Parar todas as conexões IPv6

Desculpe, você ainda não terminou o iptables. Você precisa bloquear todo o tráfego IPv6. Esse servidor OpenVPN suporta apenas IPv4, o que é bom, já que você não vai encontrar uma situação em que precisa do IPv6. Como resultado, qualquer conexão IPv6 pode potencialmente vazar informações, o que é o oposto do que você deseja ao usar uma VPN.

Antes de definir as regras para o iptables, você deve desativar o IPv6 em qualquer outro local do sistema.

Adicione as seguintes linhas ao /etc/sysctl.d/99-sysctl.conf. Se você o fechou da seção anterior, abra-o novamente com o sudo.

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1

Ative suas alterações.

$ sudo sysctl -p

Comente todas as linhas do IPv6 em / etc / hosts. Você vai precisar de sudo aqui também.

# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters

Por fim, você pode escrever as regras do IPv6 iptables. Crie um arquivo para eles em / tmp / ipv6.

* filtro -A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT

Veja, eles são simples. Rejeite tudo.

Importar e salvar em iptables

Você precisa importar essas regras para que elas façam qualquer coisa. Então, agora é a hora de fazer isso.

Comece limpando tudo o que está lá. Você não quer que regras antigas atrapalhem.

$ sudo iptables -F && sudo iptables -X

Importe suas regras IPv4 e IPv6.

$ sudo iptables-restore </ tmp / ipv4 $ sudo iptables-restore </ tmp / ipv6

Você provavelmente nunca mais quer fazer isso de novo. Portanto, você precisará de um novo pacote para salvar suas regras permanentemente.

$ sudo apt install iptables-persistent

Durante a instalação, o pacote solicitará que você salve suas regras existentes. Responda "Sim".

Se você fizer alterações posteriormente, também poderá atualizar as configurações salvas.

$ sudo service netfilter-persistente salvar

Demorou um pouco, mas seu firewall está pronto para funcionar. Na próxima página, abordaremos a criação das chaves de criptografia necessárias.

Clique aqui: Página seguinte

Tudo sobre vpns: como configurar seu próprio vpn com o openvpn (parte 3)