Slijede razlike između dviju inačica stranice.
| Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
|
racfor_wiki:android:wireguard_protokol [2020/01/09 23:24] lkudra završeno poglavlje o praktičnom dijelu |
racfor_wiki:android:wireguard_protokol [2024/12/05 12:24] (trenutno) |
||
|---|---|---|---|
| Redak 1: | Redak 1: | ||
| ====== Wireguard protokol ====== | ====== Wireguard protokol ====== | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Sažetak ===== | ===== Sažetak ===== | ||
| Redak 15: | Redak 12: | ||
| Keywords: **VPN**; **Wireguard** | Keywords: **VPN**; **Wireguard** | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Uvod u VPN ===== | ===== Uvod u VPN ===== | ||
| Redak 25: | Redak 19: | ||
| {{: | {{: | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Postojeći VPN protokoli ===== | ===== Postojeći VPN protokoli ===== | ||
| Redak 77: | Redak 68: | ||
| * koristi UDP port 500 za početnu razmjenu ključeva, UDP port 1701 za početnu L2TP konfiguraciju i UDP port 4500 za prolazak kroz NAT. Zbog korištenja fiksnih port-ova lakše ga je blokirati od protokola koji ne koriste fiksne port-ove. | * koristi UDP port 500 za početnu razmjenu ključeva, UDP port 1701 za početnu L2TP konfiguraciju i UDP port 4500 za prolazak kroz NAT. Zbog korištenja fiksnih port-ova lakše ga je blokirati od protokola koji ne koriste fiksne port-ove. | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Wireguard ===== | ===== Wireguard ===== | ||
| Redak 172: | Redak 160: | ||
| S obzirom da se Wireguard protokol još uvijek naglo razvija i ima mali broj korisnika nije prošao niti približan broj revizija i sigurnosnih provjera kao primjerice OpenVPN koji je dokazano siguran protokol. Na Wireguard-ovoj web stranici stoji upozorenje svim korisnicima da je ovaj projekt još uvijek u razvoju i da nema stabilnu verziju ([[https:// | S obzirom da se Wireguard protokol još uvijek naglo razvija i ima mali broj korisnika nije prošao niti približan broj revizija i sigurnosnih provjera kao primjerice OpenVPN koji je dokazano siguran protokol. Na Wireguard-ovoj web stranici stoji upozorenje svim korisnicima da je ovaj projekt još uvijek u razvoju i da nema stabilnu verziju ([[https:// | ||
| - | Osim što je protokol trenutno " | + | Osim što je protokol trenutno " |
| === Problemi sa zaštitom privatnosti === | === Problemi sa zaštitom privatnosti === | ||
| Redak 187: | Redak 174: | ||
| * Ako napadač snimi sav promet prema poslužitelju i od poslužitelja te zatim provali u poslužitelj i sazna Wireguard-ov privatni ključ moći će povezati snimljeni promet sa specifičnim korisnicima. | * Ako napadač snimi sav promet prema poslužitelju i od poslužitelja te zatim provali u poslužitelj i sazna Wireguard-ov privatni ključ moći će povezati snimljeni promet sa specifičnim korisnicima. | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Postavljanje Wireguard-a na udaljenom poslužitelju ===== | ===== Postavljanje Wireguard-a na udaljenom poslužitelju ===== | ||
| Redak 208: | Redak 192: | ||
| === Instalacija Wireguard-a === | === Instalacija Wireguard-a === | ||
| - | Najprije je potrebno instalirati Wireguard s obzirom da još uvijek ne dolazi s kernel-om. U ovom slučaju korišten je Ubuntu 18.04 i proces instalacije je sljedeći:< | + | Najprije je potrebno instalirati Wireguard s obzirom da još uvijek ne dolazi s kernel-om. U ovom slučaju korišten je Ubuntu 18.04 i proces instalacije je sljedeći: |
| - | # apt-get update'' | + | |
| - | '' | + | < |
| + | # add-apt-repository ppa: | ||
| + | # apt-get update | ||
| + | # apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r) | ||
| </ | </ | ||
| + | |||
| === Generiranje ključeva poslužitelja === | === Generiranje ključeva poslužitelja === | ||
| - | <wp-block-preformatted> | + | <code> |
| # wg genkey | tee privatekey | wg pubkey> publickey | # wg genkey | tee privatekey | wg pubkey> publickey | ||
| - | </wp-block-preformatted> | + | </code> |
| === Konfiguracija poslužitelja === | === Konfiguracija poslužitelja === | ||
| - | Potrebno je stvoriti datoteku ''/ | + | Potrebno je stvoriti datoteku ''/ |
| + | [Interface] | ||
| + | Address = 10.200.200.1/ | ||
| + | SaveConfig = true | ||
| + | PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -A FORWARD -o %i -j ACCEPT | ||
| + | PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -D FORWARD -o %i -j ACCEPT | ||
| + | ListenPort = 51820 | ||
| + | PrivateKey = <server private key> | ||
| - | < | + | [Peer] |
| - | **[**Interface**]** | + | PublicKey = <client public key> |
| - | Address **=** **10.200.200.1** /24 | + | AllowedIPs = 10.200.200.2/ |
| - | SaveConfig **=** **true** | + | Endpoint = < |
| - | PostUp = iptables -A FORWARD -i **%i** | + | </code> |
| - | PostDown = iptables -D FORWARD -i **%i** | + | |
| - | ListenPort **=** **51820** | + | |
| - | PrivateKey **=** **< | + | |
| - | + | ||
| - | **[**Peer**]** | + | |
| - | PublicKey | + | |
| - | AllowedIPs | + | |
| - | Endpoint = **< | + | |
| - | </wp-block-preformatted> | + | |
| Objašnjenje konfiguracije: | Objašnjenje konfiguracije: | ||
| - | **Address = 10.200.200.1/ | + | **Address = 10.200.200.1/ |
| - | **SaveConfig = true: | + | **SaveConfig = true:** spremi konfiguraciju da ostane trajna i nakon prekida veze. |
| - | **ListenPort = 51820: | + | **ListenPort = 51820:** UDP port na kojem VPN čeka nadolazeći promet, može biti i neki drugi broj. |
| - | **PrivateKey = <server private key>: | + | **PrivateKey = <server private key>:** ovo je sadržaj prethodno stvorene datoteke na poslužitelju '' |
| - | **PublicKey = <client public key>: | + | **PublicKey = <client public key>:** ovo je sadržaj datoteke publickey datoteke na klijentu |
| - | **AllowedIPs = 10.200.200.2/ | + | **AllowedIPs = 10.200.200.2/ |
| - | **Endpoint = < | + | **Endpoint = < |
| - | + | <code> | |
| - | <wp-block-preformatted> | + | PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -A FORWARD -o %i -j ACCEPT |
| - | PostUp = iptables -A FORWARD -i **%i** | + | PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -D FORWARD -o %i -j ACCEPT |
| - | PostDown = iptables -D FORWARD -i **%i** | + | </code> |
| - | </wp-block-preformatted> | + | |
| - | + | ||
| - | **PostUp **opisuje koja se pravila izvode kada se VPN veza uspostavlja: | + | |
| - | **PostDown** opisuje koja se pravila izvode kada se VPN veza prekida. Pravila | + | **PostUp |
| + | **PostDown** opisuje koja se pravila izvode kada se VPN veza prekida. Pravila su jednaka kao i u **PostUp** samo što se ovdje brišu (zastavica -D) umjesto da se dodaju (zastavica -A). | ||
| === Omogućavanje Wireguard mrežnog sučelja na poslužitelju === | === Omogućavanje Wireguard mrežnog sučelja na poslužitelju === | ||
| Najprije se postave ispravne dozvole na konfiguracijskim datotekama. | Najprije se postave ispravne dozvole na konfiguracijskim datotekama. | ||
| - | <wp-block-preformatted> | + | <code> |
| # chown -v root:root / | # chown -v root:root / | ||
| # chmod -v 600 / | # chmod -v 600 / | ||
| - | </wp-block-preformatted> | + | </code> |
| Nakon toga se podigne Wireguard sučelje: | Nakon toga se podigne Wireguard sučelje: | ||
| - | <wp-block-preformatted> | + | <code> |
| # systemctl enable wg-quick@wg0.service | # systemctl enable wg-quick@wg0.service | ||
| - | </wp-block-preformatted> | + | </code> |
| - | Zatim je potrebno postaviti //IP forwarding// | + | Zatim je potrebno postaviti //IP forwarding// |
| - | + | <code> | |
| - | <wp-block-preformatted> | + | |
| # sed -i ' | # sed -i ' | ||
| - | </wp-block-preformatted> | + | </code> |
| Kako se ne bi moralo ponovno pokrenuti poslužitelja mogu se izvršiti ove dvije naredbe. | Kako se ne bi moralo ponovno pokrenuti poslužitelja mogu se izvršiti ove dvije naredbe. | ||
| - | <wp-block-preformatted> | + | <code> |
| # sysctl -p | # sysctl -p | ||
| # echo 1> / | # echo 1> / | ||
| - | </wp-block-preformatted> | + | </code> |
| === Postavljanje firewall-a na poslužitelju === | === Postavljanje firewall-a na poslužitelju === | ||
| Praćenje VPN konekcije: | Praćenje VPN konekcije: | ||
| - | <wp-block-preformatted> | + | <code> |
| - | # iptables -A INPUT -m conntrack | + | # iptables -A INPUT -m conntrack |
| - | # iptables -A FORWARD -m conntrack | + | # iptables -A FORWARD -m conntrack |
| - | </wp-block-preformatted> | + | </code> |
| Prihvati promet na UDP port-u kojeg koristi Wireguard: | Prihvati promet na UDP port-u kojeg koristi Wireguard: | ||
| - | <wp-block-preformatted> | + | <code> |
| - | # iptables -A INPUT -p udp -m udp --dport 51820 -m conntrack | + | # iptables -A INPUT -p udp -m udp –dport 51820 -m conntrack |
| - | </wp-block-preformatted> | + | </code> |
| Dozvoli rekurzivni TCP i UDP DNS promet: | Dozvoli rekurzivni TCP i UDP DNS promet: | ||
| - | <wp-block-preformatted> | + | <code> |
| - | # iptables -A INPUT -s 10.200.200.0/ | + | # iptables -A INPUT -s 10.200.200.0/ |
| - | # iptables -A INPUT -s 10.200.200.0/ | + | # iptables -A INPUT -s 10.200.200.0/ |
| - | </wp-block-preformatted> | + | </code> |
| Dopusti prijenos podataka koji su u VPN tunelu (možda nije potrebno jer već postoji u Wireguard konfiguraciji, | Dopusti prijenos podataka koji su u VPN tunelu (možda nije potrebno jer već postoji u Wireguard konfiguraciji, | ||
| - | <wp-block-preformatted> | + | <code> |
| - | # iptables -A FORWARD -i wg0 -o wg0 -m conntrack | + | # iptables -A FORWARD -i wg0 -o wg0 -m conntrack |
| - | </wp-block-preformatted> | + | </code> |
| Postavi nat (možda nije potrebno jer već postoji u Wireguard konfiguraciji, | Postavi nat (možda nije potrebno jer već postoji u Wireguard konfiguraciji, | ||
| - | <wp-block-preformatted> | + | <code> |
| # iptables -t nat -A POSTROUTING -s 10.200.200.0/ | # iptables -t nat -A POSTROUTING -s 10.200.200.0/ | ||
| - | </wp-block-preformatted> | + | </code> |
| Spremi pravila da ostanu i nakon ponovnog pokretanja računala: | Spremi pravila da ostanu i nakon ponovnog pokretanja računala: | ||
| - | <wp-block-preformatted> | + | <code> |
| # apt-get install iptables-persistent | # apt-get install iptables-persistent | ||
| # systemctl enable netfilter-persistent | # systemctl enable netfilter-persistent | ||
| # netfilter-persistent save | # netfilter-persistent save | ||
| - | </wp-block-preformatted> | + | </code> |
| === DNS postavke === | === DNS postavke === | ||
| - | Dobra je praksa osigurati da DNS promet bude siguran. Korištenjem ove konfiguracije štitimo naš poslužitelj od curenja DNS podataka, lažnih // | + | Dobra je praksa osigurati da DNS promet bude siguran. Korištenjem ove konfiguracije štitimo naš poslužitelj od curenja DNS podataka, lažnih //proxy// konfiguracija i raznik // |
| Najprije moramo instalirati // | Najprije moramo instalirati // | ||
| - | + | <code> | |
| - | <wp-block-preformatted> | + | |
| # apt-get install unbound unbound-host | # apt-get install unbound unbound-host | ||
| - | + | </code> | |
| - | </wp-block-preformatted> | + | |
| Zatim preuzmemo listu korijenskih DNS poslužitelja: | Zatim preuzmemo listu korijenskih DNS poslužitelja: | ||
| - | <wp-block-preformatted> | + | <code> |
| # curl -o / | # curl -o / | ||
| + | </ | ||
| - | </ | + | Nakon toga moramo napisati konfiguraciju ''/ |
| - | + | <code> | |
| - | Nakon toga moramo napisati konfiguraciju ''/ | + | |
| - | + | ||
| - | <wp-block-preformatted> | + | |
| server: | server: | ||
| Redak 397: | Redak 379: | ||
| prefetch: yes | prefetch: yes | ||
| prefetch-key: | prefetch-key: | ||
| - | + | </code> | |
| - | </wp-block-preformatted> | + | |
| Na kraju je samo još potrebno postaviti dozvole i pokrenuti // | Na kraju je samo još potrebno postaviti dozvole i pokrenuti // | ||
| - | + | <code> | |
| - | <wp-block-preformatted> | + | |
| # chown -R unbound: | # chown -R unbound: | ||
| # systemctl enable unbound | # systemctl enable unbound | ||
| + | </ | ||
| + | |||
| - | </ | ||
| ==== Postavke na osobnom računalu (klijentu) ==== | ==== Postavke na osobnom računalu (klijentu) ==== | ||
| Redak 415: | Redak 396: | ||
| === Generiranje ključeva klijenta === | === Generiranje ključeva klijenta === | ||
| - | <wp-block-preformatted> | + | <code> |
| # wg genkey | tee privatekey | wg pubkey> publickey | # wg genkey | tee privatekey | wg pubkey> publickey | ||
| - | </wp-block-preformatted> | + | </code> |
| - | === Konfiguracija klijenta === | + | |
| - | Potrebno je stvoriti datoteku ''/ | + | === Konfiguracija klijenta === |
| - | <wp-block-preformatted> | + | Potrebno je stvoriti datoteku ''/ |
| [Interface] | [Interface] | ||
| - | Address = **10.200.200.2** /24 | + | Address = 10.200.200.2/ |
| - | PrivateKey = **<client private key>** | + | PrivateKey = <client private key> |
| - | DNS = **10.200.200.1** | + | DNS = 10.200.200.1 |
| [Peer] | [Peer] | ||
| - | PublicKey = **<server public key>** | + | PublicKey = <server public key> |
| - | Endpoint = **<server ip>:51820** | + | Endpoint = <server_public_ip>: |
| - | AllowedIPs = **0.0.0.0/0** | + | AllowedIPs = 0.0.0.0/0 |
| - | PersistentKeepalive = **21** | + | PersistentKeepalive = 21 |
| - | </wp-block-preformatted> | + | </code> |
| Objašnjenje konfiguracije: | Objašnjenje konfiguracije: | ||
| - | **Address = 10.200.200.2/ | + | **Address = 10.200.200.2/ |
| - | **PrivateKey = <client private key>: | + | **PrivateKey = <client private key>:** sadržaj prethodno stvorene datoteke privatekey na klijentu. |
| - | **DNS = 10.200.200.1: | + | **DNS = 10.200.200.1: |
| - | **PublicKey = <server public key>: | + | **PublicKey = <server public key>: **sadržaj datoteke publickey na poslužitelju. |
| - | **Endpoint = <server ip>: | + | **Endpoint = <server_public_ip>: |
| - | **AllowedIPs = 0.0.0.0/ | + | **AllowedIPs = 0.0.0.0/ |
| - | + | ||
| - | **PersistentKeepalive = 21:** pošalji autentificirani prazni paket //peer//-u svakih 21 sekundu da se spriječe potencijalni problemi s firewall-om ili NAT-om. | + | |
| + | **PersistentKeepalive = 21:** pošalji autentificirani prazni paket //peer//-u svakih 21 sekundu da se spriječe potencijalni problemi s firewall-om ili NAT-om. | ||
| === Spajanje na VPN === | === Spajanje na VPN === | ||
| Kako bi se spojili na VPN potrebno je aktivirati mrežno sučelje '' | Kako bi se spojili na VPN potrebno je aktivirati mrežno sučelje '' | ||
| - | + | <code> | |
| - | <wp-block-preformatted> | + | |
| $ sudo wg-quick up wg0 | $ sudo wg-quick up wg0 | ||
| - | </wp-block-preformatted> | + | </code> |
| Nakon izvođenja ove naredbe trebali bi biti spojeni na VPN. Status možete provjeriti ovako: | Nakon izvođenja ove naredbe trebali bi biti spojeni na VPN. Status možete provjeriti ovako: | ||
| - | <wp-block-preformatted> | + | <code> |
| $ sudo wg | $ sudo wg | ||
| - | </ | ||
| Dobije se ispis: | Dobije se ispis: | ||
| - | < | ||
| interface: wg0 | interface: wg0 | ||
| public key: <public client key> | public key: <public client key> | ||
| private key: (hidden) | private key: (hidden) | ||
| - | listening port: 45858 | + | listening port: 32801 |
| fwmark: 0xca6c | fwmark: 0xca6c | ||
| Redak 477: | Redak 453: | ||
| endpoint: < | endpoint: < | ||
| allowed ips: 0.0.0.0/0 | allowed ips: 0.0.0.0/0 | ||
| - | latest handshake: | + | latest handshake: |
| - | transfer: | + | transfer: |
| persistent keepalive: every 21 seconds | persistent keepalive: every 21 seconds | ||
| - | + | </code> | |
| - | </wp-block-preformatted> | + | |
| VPN se može ugasiti naredbom: | VPN se može ugasiti naredbom: | ||
| - | <wp-block-preformatted> | + | <code> |
| $ sudo wg-quick down wg0 | $ sudo wg-quick down wg0 | ||
| - | </wp-block-preformatted> | + | </code> |
| - | Za provjeru je li VPN upaljen može se koristiti alate // | + | Za provjeru je li VPN upaljen može se koristiti alate // |
| VPN isključen: | VPN isključen: | ||
| - | <wp-block-preformatted> | + | <code> |
| $ traceroute google.com | $ traceroute google.com | ||
| - | </wp-block-preformatted> | + | </code> |
| - | <wp-block-preformatted> | + | |
| + | <code> | ||
| traceroute to google.com (216.58.207.174), | traceroute to google.com (216.58.207.174), | ||
| | | ||
| Redak 514: | Redak 490: | ||
| 15 * 209.85.252.235 (209.85.252.235) | 15 * 209.85.252.235 (209.85.252.235) | ||
| 16 muc11s04-in-f14.1e100.net (216.58.207.174) | 16 muc11s04-in-f14.1e100.net (216.58.207.174) | ||
| - | </wp-block-preformatted> | + | </code> |
| VPN uključen: | VPN uključen: | ||
| - | <wp-block-preformatted> | + | <code> |
| $ traceroute google.com | $ traceroute google.com | ||
| - | </wp-block-preformatted> | + | </code> |
| - | <wp-block-preformatted> | + | |
| + | <code> | ||
| traceroute to google.com (172.217.22.46), | traceroute to google.com (172.217.22.46), | ||
| | | ||
| Redak 530: | Redak 507: | ||
| | | ||
| | | ||
| - | </wp-block-preformatted> | + | </code> |
| Vidimo da je s uključenim VPN-om prvi skok na adresu 10.200.200.1 što je adresa našeg poslužitelja u VPN-u. | Vidimo da je s uključenim VPN-om prvi skok na adresu 10.200.200.1 što je adresa našeg poslužitelja u VPN-u. | ||
| - | Uredi | ||
| - | |||
| - | Uredi | ||
| ===== Literatura ===== | ===== Literatura ===== | ||
| - | Ovo je literatura. | + | [1] [[https:// |
| + | |||
| + | [2] [[https:// | ||
| + | |||
| + | [3] [[https:// | ||
| + | |||
| + | [4] [[https:// | ||
| + | |||
| + | [5] [[https:// | ||
| + | |||
| + | [6] [[https:// | ||
| + | |||
| + | [7] [[https:// | ||
| + | |||
| + | [8] [[https:// | ||
| - | Uredi | + | [9] [[https:// |
| - | Uredi | + | [10] [[https:// |