Anonim

Det er 2017, og at bruge en VPN er blevet en no-brainer. Mellem belastningen af ​​eksterne bekymringer om privatlivets fred og din egen internetudbyder, der er i stand til at sælge din browserhistorik, er der virkelig ingen grund til at ikke bruge en.

Sikker på, du kan betale en af ​​de hundredvis af VPN-tjenester derude, men endnu en gang stoler du på en anden med dine data. De fleste er i virkeligheden fantastiske, men hvis du vil have fuld kontrol, kan du opbygge din egen VPN på en V xtual P rivate S erver (VPS) eller leje din egen private server, hvis du har lyst til at være virkelig hardcore med det.

Alt hvad du har brug for for at opbygge en VPN er open source OpenVPN-softwaren og Linux (eller BSD). Konfigurationen kan involveres, men det er ikke umuligt med nogen med endda grundlæggende Linux-færdigheder at trække på en distribution som Ubuntu.

Til denne vejledning har du brug for en VPS, der kører Ubuntu. Du kan nemt hente en fra en som DigitalOcean eller Linode . Følg deres grundlæggende sikkerhedsvejledninger for at blive konfigureret. Sørg for, at du ikke laver grundlæggende fejl som at give root-adgang via SSH.

Husk også, at dette skal du udføre hele opsætningen i kommandolinjen over SSH til din VPS. Der er ikke noget, der kræver en skør mængde på Linux-viden, men vær parat til at skrive i stedet for at klikke.

Få det, du har brug for

hurtige links

  • Få det, du har brug for
  • Konfigurer firewall
    • Find grænsefladen
    • Grundlæggende om Iptables
    • Opsæt dine regler
      • loopback
      • Ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • Logning
      • Afvis alt andet
      • NAT Masquerading
    • Fremad IPv4-trafik
    • Stop alle IPv6-forbindelser
    • Importer og gem til Iptables

Ubuntu pakker og distribuerer OpenVPN i sine lagre. Du behøver kun at bruge apt til at installere det. Du har også brug for værktøjet til generering af krypteringsnøgler. Installer dem begge.

$ sudo apt installere openvpn easy-rsa

Konfigurer firewall

Dernæst skal du passe på firewallen. Det er et vigtigt stykke ved at holde din VPN sikker og forhindre både datalækage og uønsket adgang.

Iptables er den vigtigste firewall til Linux, og det er din bedste mulighed for at kontrollere adgangen til Ubuntu's porte. Du har allerede installeret det, så du kan komme i gang med at indstille dine firewall-regler.

Find grænsefladen

Før du begynder at skrive regler til iptables, skal du finde ud af, hvilken grænseflade din server er forbundet til Internettet med. Kør ifconfig for at få vist dine netværksgrænseflader. Den, der har en inet addr: matcher den IP-adresse, du har forbindelse til, er den rigtige grænseflade.

Grundlæggende om Iptables

Det er normalt ikke en god ide at tilfældigt kopiere og indsætte ting i terminalen fra Internettet. Dette gælder især, når du beskæftiger dig med sikkerhedsemner. Så tag lidt tid her for at lære lidt om iptables-regler, før du begynder at indtaste dem.

Se på dette eksempel på en iptables-regel.

-EINPUT -i eth0 -p tcp -m tilstand –stat ETABLERET -Sport 443 -j ACCEPT

Okay, så -A betyder, at du vil tilføje en ny regel. Derefter betyder INPUT, at det angår input til din server. Der er også et output. Flagget -i fortæller iptables, hvilken grænseflade denne regel er til. Du kan specificere, hvilken protokol reglen er til med -p. Denne regel håndterer tcp. -m specificerer en betingelse, som en forbindelse skal opfylde. I dette tilfælde skal det matche den tilstand, der er specificeret. Naturligvis specificerer derefter –status en tilstand, i dette tilfælde en ESTABLICERET forbindelse. Den næste del fortæller iptables, hvilken port denne regel er til. Det er port 443, HTTPS-porten, her. Det sidste flag er -j. Det står for “jump”, og det fortæller iptables, hvad man skal gøre med forbindelsen. Hvis denne forbindelse opfyldte alle kravene i reglen, ville iptables acceptere den.

Opsæt dine regler

Så du skulle have en generel idé om, hvordan iptables-regler fungerer nu. Resten af ​​dette afsnit fortæller dig, hvordan du indstiller dine regler stykke for stykke.

Den bedste måde at oprette et sæt iptables-regler er at oprette en fil, der indeholder dem alle. Derefter kan du importere det hele til iptables på én gang. At indstille regler enkeltvis kan blive forvirrende, især hvis du starter et nyt sæt regler fra bunden.

Opret en fil i / tmp-biblioteket for at opbygge dine regler.

$ vim / tmp / ipv4

Start denne fil med * filter. Dette fortæller iptables, at det, der følger, bliver regler for pakkefiltrering.

loopback

Det første afsnit af regler låser loopback-grænsefladen. De fortæller iptables, at serveren skal acceptere trafik fra sig selv på loopback-grænsefladen. Det bør også afvise trafik, der kommer fra sig selv, og som ikke kommer fra loopback.

-En indgang -i lo -j ACCEPT -E INPUT! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j ACCEPT

Ping

Tillad derefter ping. Du skal være i stand til at pinge din server for at sikre dig, at den er online, hvis den ellers ikke kan nås. I dette tilfælde er det kun ekko-anmodninger, der er tilladt, og serveren tillader sig selv at sende ICMP-output.

-En INPUT -p icmp -m-tilstand - stat NY --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m-tilstand - stat ETABLERET, RELATERET -j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

Du har brug for SSH. Det er den eneste måde, du kan nå din server på. SSH-reglerne er specifikke for din internetgrænseflade, så sørg for at erstatte eth0 for den grænseflade, som din server faktisk bruger.

Det kan også være en god ide at ændre dine SSH-forbindelser fra port 22, da det er den standard, som potentielle angribere ville prøve. Hvis du gør det, skal du sørge for at ændre det i dine iptables-regler også.

-En INPUT -i eth0 -p tcp -m stat - stat NY, ETABLERET - port 22 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m stat - stat ESTABLICERET - sport 22 -j ACCEPT

OpenVPN

Dette næste stykke tillader trafik til og fra OpenVPN-serveren over UDP.

-En INPUT -i eth0 -p udp -m tilstand - stat NY, ETABLERET - port 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state - stat ESTABLISHED --sport 1194 -j ACCEPT

DNS

Tillad nu DNS-forbindelser via UDP og TCP. Du ønsker, at din VPN skal håndtere DNS, ikke din internetudbyder. Det er en del af grunden til, at du opretter en VPN i første omgang.

-En INPUT -i eth0 -p udp -m tilstand - stat ESTABLICERET - sport 53 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state - stat NY, ETABLERET - port 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m-tilstand - stat ESTABLICERET - sport 53 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state - stat NY, ETABLERET - port 53 -j ACCEPT

HTTP / S

For at Ubuntu skal kunne opdatere sig selv, skal du tilføje et sæt regler for at tillade udgående forbindelse af HTTP og HTTPS. Bemærk, at disse regler kun tillader serveren at starte HTTP-forbindelser, så du kan ikke bruge den som en webserver eller oprette forbindelse til den via port 80 eller port 443

-En indgang -i eth0 -p tcp -m-tilstand - stat ETABLERET - sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m-tilstand - stat ESTABLICERET - sport 443 -j ACCEPT -A OUTPUT - o eth0 -p tcp -m state - stat NY, ETABLERET - dport 80 -j ACCEPT -E OUTPUT -o eth0 -p tcp -m state - stat NY, ETABLERET --dport 443 -j ACCEPT

NTP

For at få dit serverur til at køre korrekt skal du bruge NTP. NTP giver din server mulighed for at synkronisere med timeservers rundt om i verden. At have et forkert ur på din server kan forårsage forbindelsesproblemer, så det er en god ide at køre NTP. Endnu en gang skal du kun acceptere udgående og allerede etablerede forbindelser.

-En INPUT -i eth0 -p udp -m tilstand - stat ESTABLICERET - sport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state - stat NY, ETABLERET --port 123 -j ACCEPT

TUN

Fjern blokering af TUN-interface, som OpenVPN bruger til tunneltrafik.

-E INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT

Du skal tillade TUN at videresende trafik til din almindelige grænseflade til VPN. Du finder denne IP-adresse i OpenVPN-konfigurationen. Hvis du ændrer det i konfigurationen, skal du også ændre det i dine regler.

-E Fremad -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m tilstand - stat ETABLERET, RETTET -J ACCEPT

Logning

Det er en god ide at føre logfiler over alt, hvad der bliver afvist af iptables. I dette tilfælde betyder det noget, der ikke passer ind i nogen af ​​disse regler. Logs giver dig mulighed for at se, om der er nogen ondsindet aktivitet eller forsøg på at gøre noget uærligt mod din server.

-En INPUT -m grænse-begræns 3 / min -j LOG – log-præfiks “iptables_INPUT_denied:” –log-niveau 4
-En FREMME -m grænse – begræns 3 / min -j LOG – log-præfiks “iptables_FORWARD_denied:” –log-niveau 4
-En OUTPUT -m limit –limit 3 / min -j LOG –log-præfiks “iptables_OUTPUT_denied:” –log-level 4

Afvis alt andet

Endelig skal du blokere alt, der ikke passer ind i dine regler. Det er virkelig formålet med at have en firewall i første omgang.

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

Luk filen med COMMIT for at fortælle iptables om at begå alle reglerne.

NAT Masquerading

Du har brug for forbindelserne fra VPN for at se ud som om de kommer fra selve serveren. Dette stykke kan ikke inkluderes i den almindelige iptables-fil, fordi det bruger en anden tabel. Men det er okay, det er bare en linje.

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

Fremad IPv4-trafik

Du bliver nødt til at aktivere videresendelse af IPv4-trafik, så den kan passere mellem VPN og din servers faktiske netværksgrænseflade. Åbn /etc/sysctl.d/99-sysctl.conf med sudo.

Find linjen nedenfor og tag den fra ved at fjerne #.

net.ipv4.ip_forward = 1

Stop alle IPv6-forbindelser

Beklager, du er ikke færdig med iptables endnu. Du skal blokere al IPv6-trafik. Denne OpenVPN-server understøtter kun IPv4, hvilket er fint, da du ikke vil køre i en situation, hvor du har brug for IPv6. Som et resultat kan enhver IPv6-forbindelse potentielt lække information, hvilket er det modsatte af det, du ønsker, når du bruger en VPN.

Før du indstiller reglerne for iptables, skal du deaktivere IPv6 overalt ellers på systemet.

Tilføj følgende linjer til /etc/sysctl.d/99-sysctl.conf. Hvis du lukkede det fra det foregående afsnit, skal du åbne det igen med 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

Aktivér dine ændringer.

$ sudo sysctl -p

Kommenter alle IPv6-linjer i / etc / hosts. Du har brug for sudo også her.

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

Endelig kan du skrive IPv6-iptables-reglerne. Opret en fil til dem på / tmp / ipv6.

* filter -E INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT

Se, de er enkle. Afvis alt.

Importer og gem til Iptables

Du skal importere disse regler for at de kan gøre noget. Så nu er det tid til at gøre det.

Start med at rydde alt det andet, der er der. Du vil ikke have, at gamle regler kommer i vejen.

$ sudo iptables -F && sudo iptables -X

Importer både dine IPv4- og IPv6-regler.

$ sudo iptables-gendannelse </ tmp / ipv4 $ sudo ip6tables-gendannelse </ tmp / ipv6

Du vil sandsynligvis aldrig gøre det igen. Så du har brug for en ny pakke for at gemme dine regler permanent.

$ sudo apt installerer iptables-persistent

Under installationen beder pakken dig om at gemme dine eksisterende regler. Svar "Ja."

Hvis du foretager ændringer senere, kan du også opdatere dine gemte konfigurationer.

$ sudo service netfilter-vedvarende gem

Det tog et stykke tid, men din firewall er klar til at køre. På næste side skal vi tackle det med at oprette de nødvendige krypteringsnøgler.

Klik her: Næste side

Alt om vpns: hvordan du konfigurerer din egen vpn med openvpn (del 3)