Leto 2017 in uporaba VPN-ja je postala brez možganov. Med obremenitvami zunanjih skrbi glede zasebnosti in lastnim ponudnikom internetnih storitev, da lahko prodaja zgodovino brskanja, resnično ni opravičila, da tega ne uporabljate.
Seveda, lahko plačate eno od sto storitev VPN tam, vendar se še enkrat zanašate na nekoga drugega s svojimi podatki. Večina je v resnici odlična, toda če želite popoln nadzor, lahko zgradite svoj VPN na V irtual P rivate S erver (VPS) ali najamete svoj zasebni strežnik, če se vam zdi, da ste z njim resnično trdi.
Vse, kar potrebujete za izgradnjo VPN, sta odprtokodna programska oprema OpenVPN in Linux (ali BSD). Konfiguracija je lahko vključena, vendar ni nemogoče, če se nekdo s še tako osnovnimi Linuxovimi znanji izvleče iz distribucije kot je Ubuntu.
Za ta vodnik boste potrebovali VPS z Ubuntujem. Lahko ga preprosto izberete od nekoga, kot sta DigitalOcean ali Linode . Za nastavitev upoštevajte njihova osnovna varnostna navodila. Pazite, da ne boste delali osnovnih napak, kot je omogočanje korenskega dostopa prek SSH.
Upoštevajte tudi, da boste to počeli v celotni namestitvi v ukazni vrstici prek SSH na vaš VPS. Ni ničesar, kar zahteva noro količino znanja Linuxa, vendar bodite pripravljeni na tipkanje namesto da kliknete.
Pridobivanje tistega, kar potrebuješ
hitre povezave
- Pridobivanje tistega, kar potrebuješ
- Nastavite požarni zid
- Poiščite vmesnik
- Osnove Iptables
- Postavite svoja pravila
- Loopback
- Ping
- SSH
- OpenVPN
- DNS
- HTTP / S
- NTP
- TUN
- Zapisovanje dnevnikov
- Zavrni vse ostalo
- NAT Maskiranje
- Posreduj IPv4 promet
- Prekini vse povezave IPv6
- Uvozi in shrani v aplikacijo Iptables
Ubuntu pakira in distribuira OpenVPN v svojih skladiščih. Za namestitev potrebujete le apt. Potrebovali boste tudi orodje za ustvarjanje šifrirnih ključev. Namestite jih oboje.
$ sudo apt namestite openvpn easy-rsa
Nastavite požarni zid
Nato morate poskrbeti za požarni zid. To je pomemben del varovanja VPN-ja in preprečevanja uhajanja podatkov in neželenega dostopa.
Iptables je glavni požarni zid za Linux in je vaša najboljša možnost za nadzor dostopa do pristanišč Ubuntu. Že ga boste namestili, tako da lahko začnete postavljati pravila požarnega zidu.
Poiščite vmesnik
Preden začnete pisati pravila v iptables, ugotovite, s katerim vmesnikom je vaš strežnik povezan z internetom. Zaženite ifconfig, da prikažete omrežne vmesnike. Tisti, ki ima inet addr: ujema se z naslovom IP, s katerim ste povezani, je pravi vmesnik.
Osnove Iptables
Ponavadi ni dobro, da naključno preko interneta stvari kopirate in prilepite v terminal. To še posebej velja, ko se ukvarjate z varnostnimi temami. Preden začnete z njimi vnašati nekaj časa, se pozanimajte o pravilih iptables.
Oglejte si ta primer pravila iptables.
-A VHOD -i eth0 -p tcp -m stanje –država POSTAVLJEN –sport 443 -j SPREJEM
V redu, torej - pomeni, da boste dodali novo pravilo. Nato INPUT pomeni, da bo zadeval vnos v vaš strežnik. Obstaja tudi IZHOD. Zastavica -i pove iptables, za kateri vmesnik je to pravilo. Določite lahko, za kateri protokol velja pravilo -p. To pravilo obravnava tcp. -m določa pogoj, da mora biti izpolnjena povezava. V tem primeru se mora ujemati z navedenim stanjem. Seveda potem –state določa stanje, v tem primeru VZpostavljena povezava. Naslednji del pove iptables, za katera vrata je to pravilo. Tu je vrata 443, HTTPS vrata. Zadnja zastava je -j. Pomeni "skok" in iptables pove, kaj naj naredim s povezavo. Če bi ta povezava izpolnjevala vse zahteve v pravilu, bi jo sprejeli iptables.
Postavite svoja pravila
Torej, morali bi imeti splošno predstavo o tem, kako zdaj delujejo pravila iptables. Preostali del tega razdelka vam bo povedal, kako lahko svoja pravila nastavite po delih.
Najboljši način za ustvarjanje niza pravil iptables je ustvarjanje datoteke, ki vsebuje vse te. Nato lahko vse hkrati uvozite v iptables. Postavljanje pravil posamezno lahko postane zmedeno, še posebej, če začnete nov nabor pravil iz nič.
Ustvarite datoteko v / tmp imeniku, da sestavite svoja pravila.
$ vim / tmp / ipv4
Začnite to datoteko s * filter. To pove iptables, da bodo v nadaljevanju pravila filtriranja paketov.
Loopback
Prvi del pravil zaklene vmesnik za povratno povezavo. Na iptables pravijo, da bi strežnik moral sprejemati promet od sebe na vmesniku loopback. Prav tako bi moral zavrniti promet, ki prihaja iz njega samega in ne prihaja iz povratne zanke.
-A VHOD -i lo -j SPREJEM -A VHOD! -i lo -s 127.0.0.0/8 -j PRIJAVA -A IZHOD -o lo -j SPREJEM
Ping
Nato omogočite ping. Morali bi imeti možnost, da pokličete strežnik in se prepričate, da je na spletu, če drugače ni dosegljiv. V tem primeru so dovoljene samo zahteve za odmev in strežnik bo dovolil, da pošlje ICMP izhod.
-A VHOD -p icmp -m stanje - država NOVO - tipka tipa 8 -j SPREJEM -A VHOD -p icmp -m stanje - država USTANOVLJENA, POVEZANA -j ACCEPT -A IZHOD -p icmp -j ACCEPT
SSH
Potrebujete SSH. To je edini način, da lahko pridete do svojega strežnika. Pravila SSH so značilna za vaš internetni vmesnik, zato preverite, ali nadomestite eth0 s tistim, ki ga uporablja vaš strežnik.
Prav tako bi bilo dobro, če bi svoje povezave SSH izklopili iz vrat 22, ker bi to poskusili potencialni napadalci. Če to storite, se prepričajte, da to spremenite tudi v pravilih iptables.
-A VHOD -i eth0 -p tcp -m stanje - država NOVO, USTVARJENO --portport 22 -j SPREJEM -A IZHOD -o eth0 -p tcp -m stanje - država Vzpostavljen - šport 22 -j SPREJEM
OpenVPN
Naslednji del omogoča promet do strežnika OpenVPN in od njega prek UDP.
-A VHOD -i eth0 -p udp -m stanje --državno NOVO, USTAVLJENO --portport 1194 -j SPREJEM -A IZHOD -o eth0 -p udp -m država - država Vzpostavljen --sport 1194 -j SPREJEM
DNS
Zdaj dovolite povezave DNS prek UDP in TCP. Želite, da vaš VPN upravlja z DNS, ne s svojim ponudnikom internetnih storitev. To je del razloga, da najprej nastavite VPN.
-A VHOD -i eth0 -p udp -m stanje - država USTAVLJEN --sport 53 -j SPREJEM -A IZHOD -o eth0 -p udp -m stanje - država NOVO, USTAVLJEN --dport 53 -j SPREJEM -A INPUT -i eth0 -p tcp -m stanje - država Vzpostavljen - šport 53 -j SPREJEM -A IZHOD -o eth0 -p tcp -m stanje - država NOVO, USTAVLJEN --dport 53 -j SPREJEM
HTTP / S
Da se lahko Ubuntu lahko posodobi, morate dodati niz pravil, ki omogočajo odhodno povezavo HTTP in HTTPS. Upoštevajte, da ta pravila omogočajo strežniku, da vzpostavi povezave HTTP, zato ga ne morete uporabljati kot spletni strežnik ali povezati z njim prek vrat 80 ali vrat 443
-A VHOD -i eth0 -p tcp -m stanje - država Vzpostavljen --sport 80 -j SPREJEM -A VHOD -i eth0 -p tcp -m stanje - država Vzpostavljen --sport 443 -j SPREJEM -A IZHOD - o eth0 -p tcp -m stanje - država NOVO, USTVARJENO --portport 80 -j SPREJEM -A IZHOD -o eth0 -p tcp -m stanje - država NOVO, USTAVLJEN --dport 443 -j SPREJEM
NTP
Za pravilno delovanje strežniške ure boste potrebovali NTP. NTP omogoča, da se vaš strežnik sinhronizira s časovnimi strežniki po vsem svetu. Nepravilna ura na vašem strežniku lahko povzroči težave s povezavo, zato je izvajanje NTP dobra ideja. Še enkrat bi morali sprejeti samo odhodne in že vzpostavljene povezave.
-A VHOD -i eth0 -p udp -m stanje - država USTANOVITEV - šport 123 -j SPREJEM -A IZHOD -o eth0 -p udp -m stanje - država NOVO, USTAVLJEN --portport 123 -j SPREJEM
TUN
Odblokirajte vmesnik TUN, ki ga OpenVPN uporablja za tunelski promet.
-A VHOD -i tun0 -j SPREJEM -A NAPREJ -i tun0 -j ACCEPT -A IZHOD -o tun0 -j SPREJEM
TUN-u morate omogočiti, da posreduje promet na vaš običajni vmesnik za VPN. Ta naslov IP boste našli v konfiguraciji OpenVPN. Če ga spremenite v konfiguraciji, ga spremenite tudi v svojih pravilih.
-A NAPREJ -i tun0 -o eth0 -s 10.8.0.0/24 -j SPREJEM -A NAPREJ -m stanje - država USTANOVLJENA, POVEZANA -j SPREJEM
Beleženje
Dobro je voditi dnevnike o vsem, kar iptables zavrne. V tem primeru pomeni karkoli, kar ne ustreza nobenemu od teh pravil. Dnevniki vam omogočajo, da vidite, ali obstaja kakšna zlonamerna dejavnost ali kakršni koli poskusi, da bi naredili kaj škodljivega za vaš strežnik.
-A vhod -m omejitev – omejitev 3 / min -j LOG –log-prefiksa “iptables_INPUT_denied:” –loglog 4
-A NAPREJ -m omejitev – omejitev 3 / min -j LOG –log-prefiksa “iptables_FORWARD_denied:” –loglog 4
-A OUTPUT -m omejitev – omejitev 3 / min -j LOG –log-prefiksa “iptables_OUTPUT_denied:” –loglog 4
Zavrni vse ostalo
Končno morate blokirati vse, kar ne ustreza vašim pravilom. To je res namen tega, da imamo na prvem mestu požarni zid.
-A VHOD -j PRIJAVA -A NAPREJ -j PRIJAVA -A IZHOD -j PRIJAVA
Datoteko zaprite s sistemom COMMIT, če želite iptables povedati, da so zavezala vsa pravila.
NAT Maskiranje
Povezave iz VPN potrebujejo, da izgledajo, kot da prihajajo iz samega strežnika. Tega dela ni mogoče vključiti v navadno datoteko iptables, ker uporablja drugo tabelo. To je v redu, čeprav je samo ena vrstica.
$ sudo iptables -t nat -A POSTAVITEV -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Posreduj IPv4 promet
Omogočiti morate posredovanje prometa IPv4, tako da lahko poteka med VPN in dejanskim omrežnim vmesnikom vašega strežnika. Odprite /etc/sysctl.d/99-sysctl.conf s sudo.
Poiščite vrstico spodaj in jo komentirajte tako, da odstranite #.
Prekini vse povezave IPv6
Žal še niste končali z iptables. Blokirati morate ves promet IPv6. Ta strežnik OpenVPN podpira samo IPv4, kar je v redu, saj ne boste naleteli na situacijo, ko potrebujete IPv6. Posledično lahko vse povezave IPv6 puščajo informacije, kar je nasprotno od tistega, kar želite pri uporabi VPN.
Preden nastavite pravila za iptables, morate onemogočiti IPv6 povsod drugje v sistemu.
Naslednje vrstice dodajte v /etc/sysctl.d/99-sysctl.conf. Če ste ga zaprli iz prejšnjega razdelka, ga znova odprite s 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
Aktivirajte spremembe.
$ sudo sysctl -p
Komentirajte vse vrstice IPv6 v / etc / hosts. Tudi tu boste potrebovali sudo.
# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters
Končno lahko napišete pravila iptables IPv6. Za njih ustvarite datoteko na / tmp / ipv6.
* filter -A VHOD -j PRIJAVA -A NAPREJ -j PRIJAVA -A IZHOD -j PRIJAVA OBVEZ
Glej, preprosti so. Zavrni vse.
Uvozi in shrani v aplikacijo Iptables
Ta pravila morate uvoziti, da lahko kaj storijo. Torej, zdaj je čas za to.
Začnite z čiščenjem vsega, kar je tam. Nočete, da bi vam zastavili kakšna stara pravila.
$ sudo iptables -F && sudo iptables -X
Uvozite svoja pravila IPv4 in IPv6.
$ sudo iptables-obnovi </ tmp / ipv4 $ sudo ip6tables-obnovi </ tmp / ipv6
Verjetno tega nikoli več ne želite storiti. Torej, potrebovali boste nov paket, da trajno shranite svoja pravila.
$ sudo apt namestite iptables-obstojno
Med namestitvijo vas paket zahteva, da shranite svoja obstoječa pravila. Odgovor "Da."
Če kasneje spremenite spremembe, lahko posodobite tudi shranjene konfiguracije.
$ sudo storitev netfilter obstojno shranjevanje
Trajalo je nekaj časa, vendar je vaš požarni zid pripravljen. Na naslednji strani se bomo lotili ustvarjanja potrebnih šifrirnih ključev.
Kliknite tukaj: Naslednja stran
