Anonim

Het is 2017 en het gebruik van een VPN is een no-brainer geworden. Tussen de vele externe privacykwesties en uw eigen internetprovider die uw browsegeschiedenis kan verkopen, is er echt geen reden om er geen te gebruiken.

Natuurlijk kunt u een van de honderden VPN-services die er zijn, betalen, maar nogmaals, u vertrouwt op iemand anders met uw gegevens. De meeste zijn in werkelijkheid geweldig, maar als je volledige controle wilt, kun je je eigen VPN bouwen op een virtuele p rivate S erver (VPS) of je eigen privéserver huren, als je er echt hardcore mee wilt zijn.

Het enige dat u nodig hebt om een ​​VPN te bouwen, is de open source OpenVPN-software en Linux (of BSD). De configuratie kan een rol spelen, maar het is niet onmogelijk met iemand met zelfs basisvaardigheden in Linux om een ​​distributie zoals Ubuntu uit te voeren.

Voor deze gids heb je een VPS nodig met Ubuntu. Je kunt er heel gemakkelijk een ophalen van iemand zoals DigitalOcean of Linode . Volg hun basisbeveiligingshandleidingen om aan de slag te gaan. Zorg ervoor dat u geen basisfouten maakt, zoals roottoegang via SSH.

Houd er ook rekening mee dat dit je deze hele installatie op de opdrachtregel via SSH naar je VPS gaat doen. Er is niets dat een enorme hoeveelheid Linux-kennis vereist, maar wees voorbereid op typen in plaats van klikken.

Krijgen wat je nodig hebt

Snelle links

  • Krijgen wat je nodig hebt
  • Stel de firewall in
    • Zoek de interface
    • Iptables Basics
    • Stel uw regels in
      • loopback
      • Ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • logging
      • Weiger alles anders
      • NAT vermomd
    • IPv4-verkeer doorsturen
    • Stop alle IPv6-verbindingen
    • Importeren en opslaan naar Iptables

Ubuntu verpakt en distribueert OpenVPN in zijn repositories. U hoeft alleen apt te gebruiken om het te installeren. U hebt ook de tool nodig voor het genereren van coderingssleutels. Installeer ze allebei.

$ sudo apt install openvpn easy-rsa

Stel de firewall in

Vervolgens moet u zorgen voor de firewall. Het is een belangrijk onderdeel om uw VPN veilig te houden en zowel het lekken van gegevens als ongewenste toegang te voorkomen.

Iptables is de belangrijkste firewall voor Linux en het is uw beste optie om de toegang tot de poorten van Ubuntu te beheren. Je hebt het al geïnstalleerd, dus je kunt aan de slag met het instellen van je firewall-regels.

Zoek de interface

Voordat u begint met het schrijven van regels in iptables, moet u weten met welke interface uw server is verbonden met internet. Voer ifconfig uit om uw netwerkinterfaces weer te geven. Degene met een inet-adres: overeenkomend met het IP-adres waarmee u verbonden bent, is de juiste interface.

Iptables Basics

Het is meestal geen goed idee om dingen willekeurig vanuit internet te kopiëren en in de terminal te plakken. Dit geldt met name als u te maken hebt met beveiligingsonderwerpen. Neem hier dus wat tijd om wat meer te weten te komen over iptables-regels voordat u ze begint in te voeren.

Bekijk dit voorbeeld van een iptables-regel.

-A INGANG -i eth0 -p tcp -m staat –staat GEVESTIGD -sport 443 -j ACCEPTEREN

Oké, dus -A betekent dat je een nieuwe regel gaat toevoegen. INPUT betekent dan dat het invoer op uw server betreft. Er is ook een UITGANG. De vlag -i vertelt iptables voor welke interface deze regel is. U kunt met -p opgeven voor welk protocol de regel geldt. Deze regel verwerkt TCP. -m geeft een voorwaarde aan waaraan een verbinding moet voldoen. In dit geval moet deze overeenkomen met de opgegeven staat. Natuurlijk geeft dan - staat een staat aan, in dit geval een GEVESTIGDE verbinding. Het volgende deel vertelt iptables voor welke poort deze regel is. Het is poort 443, de HTTPS-poort, hier. De laatste vlag is -j. Het staat voor 'springen' en het vertelt iptables wat te doen met de verbinding. Als deze verbinding aan alle vereisten in de regel zou voldoen, zou iptables deze ACCEPTEREN.

Stel uw regels in

U moet dus een algemeen idee hebben van hoe iptables-regels nu werken. In de rest van dit gedeelte wordt uitgelegd hoe u uw regels stuk voor stuk kunt instellen.

De beste manier om een ​​set iptables-regels te maken, is door een bestand te maken dat ze allemaal bevat. Vervolgens kunt u alles in iptables in één keer importeren. Het één voor één instellen van regels kan verwarrend zijn, vooral als u helemaal opnieuw begint.

Maak een bestand in de map / tmp om uw regels op te bouwen.

$ vim / tmp / ipv4

Begin dat bestand met * filter. Dit vertelt iptables dat wat volgt regels zullen zijn voor pakketfiltering.

loopback

Het eerste gedeelte met regels vergrendelt de loopback-interface. Ze vertellen iptables dat de server verkeer van zichzelf op de loopback-interface moet accepteren. Het moet ook verkeer van zichzelf afwijzen dat niet van loopback komt.

-EEN INGANG -i lo -j ACCEPT -EEN INGANG! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j ACCEPTEREN

Ping

Laat vervolgens ping toe. Je zou je server moeten kunnen pingen om ervoor te zorgen dat deze online is voor het geval dat hij anders niet bereikbaar is. In dit geval zijn alleen echo-aanvragen toegestaan ​​en staat de server zichzelf toe ICMP-uitvoer te verzenden.

-A INGANG -p icmp -m staat --staat NIEUW --icmp-type 8 -j ACCEPTEREN -A INGANG -p icmp -m staat --staat GEVESTIGD, GERELATEERD -j ACCEPT -A UITGANG -p icmp -j ACCEPT

SSH

Je hebt SSH nodig. Dat is de enige manier waarop u uw server kunt bereiken. De SSH-regels zijn specifiek voor uw internetinterface, dus zorg ervoor dat u eth0 vervangt voor elke interface die uw server daadwerkelijk gebruikt.

Het is misschien ook een goed idee om uw SSH-verbindingen via poort 22 te wijzigen, omdat dit de standaardinstelling is die potentiële aanvallers zouden proberen. Als u dit doet, moet u dit ook wijzigen in uw iptables-regels.

-EEN INGANG -i eth0 -p tcp -m staat - staat NIEUW, GEVESTIGD --poort 22 -j ACCEPT -EEN UITGANG -o eth0 -p tcp -m staat - staat GEVESTIGD --sport 22 -j ACCEPT

OpenVPN

Dit volgende stuk staat verkeer toe van en naar de OpenVPN-server via UDP.

-EEN INGANG -i eth0 -p udp -m staat - staat NIEUW, GEVESTIGD --poort 1194 -j ACCEPT -A UITGANG -o eth0 -p udp -m staat - staat GEVESTIGD --sport 1194 -j ACCEPT

DNS

Sta nu DNS-verbindingen toe via UDP en TCP. U wilt dat uw VPN DNS verwerkt, niet uw ISP. Dat is een deel van de reden dat u in de eerste plaats een VPN instelt.

-EEN INGANG -i eth0 -p udp -m staat - staat GEVESTIGD - sport 53 -j ACCEPTEREN -A UITGANG -o eth0 -p udp -m staat - staat NIEUW, GEVESTIGD --poort 53 -j ACCEPT -A INGANG -i eth0 -p tcp -m staat - staat GEVESTIGD --sport 53 -j ACCEPT -A UITGANG -o eth0 -p tcp -m staat --staat NIEUW, GEVESTIGD --poort 53 -j ACCEPT

HTTP / S

Om Ubuntu in staat te stellen zichzelf bij te werken, moet u een aantal regels toevoegen om uitgaande HTTP- en HTTPS-verbindingen toe te staan. Houd er rekening mee dat deze regels de server alleen toestaan ​​HTTP-verbindingen tot stand te brengen, dus u kunt deze niet als webserver gebruiken of er verbinding mee maken via poort 80 of poort 443

-EEN INGANG -i eth0 -p tcp -m staat - staat GEVESTIGD - sport 80 -j ACCEPT -EEN INGANG -i eth0 -p tcp -m staat - staat GEVESTIGD --sport 443 -j ACCEPT -A UITGANG - o eth0 -p tcp -m staat - staat NIEUW, GEVESTIGD - poort 80 -j ACCEPTEREN -A OUTPUT -o eth0 -p tcp -m staat - staat NIEUW, GEVESTIGD - poort 443 -j ACCEPT

NTP

Om je serverklok goed te laten werken, heb je NTP nodig. Met NTP kan uw server synchroniseren met tijdservers over de hele wereld. Het hebben van een onjuiste klok op uw server kan verbindingsproblemen veroorzaken, dus NTP uitvoeren is een goed idee. Nogmaals, u moet alleen uitgaande en reeds bestaande verbindingen accepteren.

-EEN INGANG -i eth0 -p udp -m staat - staat GEVESTIGD - sport 123 -j ACCEPT -A UITGANG -o eth0 -p udp -m staat - staat NIEUW, GEVESTIGD --poort 123 -j ACCEPT

TUN

Deblokkeer de TUN-interface die OpenVPN gebruikt om verkeer te tunnelen.

-A INGANG -i tun0 -j ACCEPTEREN -A VOORUIT -i tun0 -j ACCEPTEREN -A UITGANG -o tun0 -j ACCEPT

U moet TUN toestaan ​​verkeer door te sturen naar uw normale interface voor de VPN. U vindt dat IP-adres in de OpenVPN-configuratie. Als u het in de configuratie wijzigt, verander het dan ook in uw regels.

-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPTEREN -A FORWARD -m staat - staat GEVESTIGD, GERELATEERD -j ACCEPT

logging

Het is een goed idee om logboeken bij te houden van alles wat door iptables wordt afgewezen. In dit geval betekent dit alles dat niet in een van deze regels past. Logboeken laten u zien of er sprake is van kwaadaardige activiteit of pogingen om iets geks te doen tegen uw server.

-A INPUT -m limiet –limiet 3 / min -j LOG -log-prefix “iptables_INPUT_denied:” –log-niveau 4
-A FORWARD -m limiet –limiet 3 / min -j LOG -log-prefix “iptables_FORWARD_denied:” –log-niveau 4
-A UITGANG -m limiet –limiet 3 / min -j LOG -log-prefix “iptables_OUTPUT_denied:” –log-niveau 4

Weiger alles anders

Ten slotte moet u alles blokkeren wat niet in uw regels past. Dat is echt het doel van het hebben van een firewall in de eerste plaats.

-A INGANG -j REJECT -A VOORUIT -j REJECT -A OUTPUT -j REJECT

Sluit het bestand af met COMMIT om iptables te vertellen alle regels vast te leggen.

NAT vermomd

Je hebt de verbindingen van de VPN nodig om eruit te zien alsof ze van de server zelf komen. Dit stuk kan niet worden opgenomen in het reguliere iptables-bestand omdat het een andere tabel gebruikt. Maar goed, het is maar één regel.

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

IPv4-verkeer doorsturen

U moet het doorsturen van IPv4-verkeer inschakelen, zodat het kan passeren tussen de VPN en de werkelijke netwerkinterface van uw server. Open /etc/sysctl.d/99-sysctl.conf met sudo.

Zoek de onderstaande regel en verwijder deze door # te verwijderen.

net.ipv4.ip_forward = 1

Stop alle IPv6-verbindingen

Sorry, je bent nog niet klaar met iptables. U moet al het IPv6-verkeer blokkeren. Deze OpenVPN-server ondersteunt alleen IPv4, wat prima is, omdat u geen situatie tegenkomt waarin u IPv6 nodig hebt. Als gevolg hiervan kunnen IPv6-verbindingen mogelijk informatie lekken, wat het tegenovergestelde is van wat u wilt wanneer u een VPN gebruikt.

Voordat u de regels voor iptables instelt, moet u IPv6 overal op het systeem uitschakelen.

Voeg de volgende regels toe aan /etc/sysctl.d/99-sysctl.conf. Als u het uit het vorige gedeelte hebt gesloten, opent u het opnieuw met 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

Activeer uw wijzigingen.

$ sudo sysctl -p

Geef commentaar op alle IPv6-regels in / etc / hosts. Je hebt hier ook sudo nodig.

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

Eindelijk kun je de IPv6 iptables-regels schrijven. Maak een bestand voor hen op / tmp / ipv6.

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

Zie je, ze zijn eenvoudig. Weiger alles.

Importeren en opslaan naar Iptables

U moet die regels importeren om iets te kunnen doen. Dus nu is het tijd om dat te doen.

Begin met het opruimen van al het andere dat er is. Je wilt niet dat oude regels in de weg staan.

$ sudo iptables -F && sudo iptables -X

Importeer zowel uw IPv4- als IPv6-regels.

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

Dat wil je waarschijnlijk nooit meer doen. Dus je hebt een nieuw pakket nodig om je regels permanent op te slaan.

$ sudo apt iptables-persistent installeren

Tijdens de installatie vraagt ​​het pakket u om uw bestaande regels op te slaan. Antwoord "Ja".

Als u later wijzigingen aanbrengt, kunt u ook uw opgeslagen configuraties bijwerken.

$ sudo-service netfilter-persistent opslaan

Het heeft even geduurd, maar je firewall is klaar voor gebruik. Op de volgende pagina gaan we het maken van de nodige coderingssleutels aanpakken.

Klik hier: Volgende pagina

Alles over VPN's: hoe je je eigen VPN in te stellen met openvpn (deel 3)