Anonim

Ia adalah 2017, dan menggunakan VPN telah menjadi no-brainer. Di antara banyak kebimbangan privasi luaran dan ISP anda yang mampu menjual sejarah penyemakan imbas anda, sebenarnya tidak ada alasan yang tidak menggunakannya.

Sudah tentu, anda boleh membayar salah satu daripada beratus-ratus perkhidmatan VPN di luar sana, tetapi sekali lagi, anda bergantung pada orang lain dengan data anda. Kebanyakan yang hebat, dalam realiti, tetapi jika anda mahu kawalan sepenuhnya, anda boleh membina VPN anda sendiri dalam V irtual P rivate S erver (VPS) atau menyewa pelayan peribadi anda sendiri, jika anda merasa benar-benar tegar dengannya.

Semua yang anda perlukan untuk membina VPN adalah OpenVPN perisian sumber terbuka dan Linux (atau BSD). Konfigurasi ini boleh terlibat, tetapi tidak mustahil dengan seseorang yang mempunyai kemahiran Linux asas untuk menarik pada pengedaran seperti Ubuntu.

Untuk panduan ini, anda memerlukan VPS yang menjalankan Ubuntu. Anda boleh memilih satu dengan sangat mudah dari seseorang seperti DigitalOcean atau Linode . Ikut panduan keselamatan asas mereka untuk mendapatkan persediaan. Pastikan anda tidak membuat kesilapan asas seperti membolehkan akses root ke atas SSH.

Juga, perhatikan bahawa ini akan anda lakukan semua persediaan ini dalam baris arahan ke atas SSH ke VPS anda. Tidak ada apa-apa yang memerlukan jumlah gila pada pengetahuan Linux, tetapi bersedia untuk menaip dan bukannya mengklik.

Mendapatkan Apa yang Anda Perlu

Pautan Pantas

  • Mendapatkan Apa yang Anda Perlu
  • Sediakan Firewall
    • Cari Antara Muka
    • Asas Iptables
    • Sediakan Peraturan Anda
      • Loopback
      • Ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • Pembalakan
      • Tolak Semuanya
      • NAT Masquerading
    • Majukan Trafik IPv4
    • Hentikan Semua Sambungan IPv6
    • Import dan Simpan ke Iptables

Pakej Ubuntu dan mengedarkan OpenVPN dalam repositorinya. Anda hanya perlu menggunakannya untuk memasangnya. Anda juga memerlukan alat untuk menghasilkan kunci penyulitan. Pasang kedua-duanya.

$ sudo apt install openvpn easy-rsa

Sediakan Firewall

Seterusnya, anda perlu menjaga firewall. Ini merupakan bahagian yang penting dalam menjaga VPN anda selamat dan menghalang kebocoran data dan akses yang tidak diingini.

Iptables adalah firewall utama untuk Linux, dan itu adalah pilihan terbaik anda untuk mengawal akses ke port Ubuntu. Anda sudah pun memasangnya, jadi anda boleh memulakan peraturan firewall anda.

Cari Antara Muka

Sebelum anda mula menulis peraturan ke dalam iptables, cari antaramuka apa yang disambungkan oleh pelayan anda ke Internet. Jalankan ifconfig untuk memaparkan antara muka rangkaian anda. Yang mempunyai inet addr: sepadan dengan alamat IP yang anda sambungkan adalah antara muka yang betul.

Asas Iptables

Ia biasanya bukan idea yang baik untuk menyalin dan menampal perkara secara rawak ke dalam terminal dari Internet. Ini amat benar apabila anda berurusan dengan topik keselamatan. Jadi, luangkan sedikit masa di sini untuk belajar sedikit tentang peraturan iptables sebelum anda mula memasukinya.

Lihat contoh contoh peraturan iptables ini.

-A INPUT -i eth0 -p tcp -m state -state ESTABLISHED -sport 443 -j ACCEPT

Baiklah, jadi -A bermakna anda akan menambah aturan baru. Kemudian INPUT bermakna bahawa ia akan mengambil kira input ke pelayan anda. Terdapat juga OUTPUT. Bendera -i memberitahu iptables yang antara muka peraturan ini. Anda boleh menentukan protokol mana yang digunakan untuk peraturan dengan -p. Peraturan ini mengendalikan tcp. -m menentukan syarat bahawa sambungan mesti dipenuhi. Dalam kes ini ia mesti sepadan dengan keadaan yang dinyatakan. Sudah tentu, kemudian -state menentukan keadaan, dalam hal ini sambungan ESTABLISHED. Bahagian seterusnya memberitahu iptables yang port peraturan ini untuk. Ia adalah port 443, port HTTPS, di sini. Bendera terakhir ialah -j. Ia bermaksud "melompat, " dan ia memberitahu iptables apa yang perlu dilakukan dengan sambungan itu. Sekiranya sambungan ini memenuhi semua keperluan dalam peraturan, iptables akan MENERIMA.

Sediakan Peraturan Anda

Jadi, anda harus mempunyai idea umum bagaimana peraturan iptables berfungsi sekarang. Selebihnya bahagian ini akan memberitahu anda bagaimana untuk menetapkan peraturan anda sekeping.

Cara terbaik untuk membuat satu set peraturan iptables adalah untuk membuat fail yang mengandungi semua itu. Kemudian, anda boleh mengimport semuanya ke dalam iptables sekaligus. Menetapkan peraturan satu demi satu dapat mengelirukan, terutamanya jika anda memulakan satu set peraturan baru dari awal.

Buat fail dalam direktori / tmp untuk membina peraturan anda.

$ vim / tmp / ipv4

Mulakan fail itu dengan * penapis. Ini memberitahu iptables bahawa apa yang berikut akan menjadi peraturan untuk penapisan paket.

Loopback

Bahagian pertama peraturan mengunci antara muka gelung balik. Mereka memberitahu iptables bahawa pelayan harus menerima lalu lintas dari dirinya sendiri pada antara muka loopback. Ia juga harus menolak trafik yang datang dari dirinya sendiri yang tidak datang dari loopback.

-A INPUT -i lo -j ACCEPT -A INPUT! -i lo -s 127.0.0.0/8 -j MENJADI -OUTPUT -o lo -j ACCEPT

Ping

Seterusnya, benarkan ping. Anda sepatutnya dapat ping pelayan anda untuk memastikan bahawa ia dalam talian sekiranya ia tidak dapat dicapai. Dalam kes ini, permintaan gema hanya dibenarkan, dan pelayan akan membenarkan dirinya menghantar output ICMP.

-A INPUT -p icmp -m state --state NEW --icmp -type 8 -j ACCEPT -A INPUT -p icmp -m state --state ESTABLISHED, RELATED -j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

Anda memerlukan SSH. Itulah satu-satunya cara anda boleh mencapai pelayan anda. Peraturan SSH adalah khusus untuk antara muka internet anda, jadi pastikan anda mengganti eth0 untuk mana-mana antaramuka server anda sebenarnya menggunakan.

Ia juga mungkin menjadi idea yang baik untuk menukar sambungan SSH anda dari port 22, kerana itu adalah lalai yang kemungkinan akan diserang penyerang. Jika anda berbuat demikian, pastikan untuk mengubahnya dalam peraturan iptables anda juga.

-A INPUT -i eth0 -p tcp -m state --state NEW, ESTABLISHED --dport 22 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

OpenVPN

Sekeping seterusnya membolehkan trafik ke dan dari pelayan OpenVPN ke atas UDP.

-A INPUT -i eth0 -p udp -m state --state NEW, ESTABLISHED --dport 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED --port 1194 -j ACCEPT

DNS

Sekarang, izinkan sambungan DNS ke atas UDP dan TCP. Anda mahu VPN anda untuk mengendalikan DNS, bukan ISP anda. Itu sebahagian daripada sebab anda membuat VPN di tempat pertama.

-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW, ESTABLISHED --dport 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW, ESTABLISHED --dport 53 -j ACCEPT

HTTP / S

Agar Ubuntu dapat mengemas kini dirinya sendiri, anda perlu menambah satu set peraturan untuk membolehkan sambungan keluar HTTP dan HTTPS. Perhatikan bahawa peraturan ini hanya membenarkan pelayan untuk memulakan sambungan HTTP, jadi anda tidak boleh menggunakannya sebagai pelayan web atau menyambung kepadanya melalui port 80 atau port 443

- A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT -A OUTPUT - o eth0 -p tcp -m state --state NEW, ESTABLISHED --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW, ESTABLISHED --dport 443 -j ACCEPT

NTP

Untuk memastikan jam pelayan anda berjalan dengan betul, anda akan memerlukan NTP. NTP membolehkan pelayan anda menyegerakkan dengan pelayan waktu di seluruh dunia. Mempunyai jam yang salah pada pelayan anda boleh menyebabkan masalah sambungan, jadi menjalankan NTP adalah idea yang baik. Sekali lagi, anda hanya perlu menerima sambungan keluar dan sudah sedia ada.

-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --port 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW, ESTABLISHED --dport 123 -j ACCEPT

TUN

Buka blok antara muka TUN yang menggunakan OpenVPN untuk terowong lalu lintas.

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

Anda perlu membenarkan TUN meneruskan trafik ke antara muka biasa anda untuk VPN. Anda akan mendapati alamat IP dalam konfigurasi OpenVPN. Sekiranya anda menukarnya dalam konfigurasi, ubah juga dalam peraturan anda.

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

Pembalakan

Idea yang baik untuk menyimpan log semua yang ditolak oleh iptables. Dalam kes ini, ia bermaksud apa-apa yang tidak sesuai dengan mana-mana peraturan ini. Log membolehkan anda melihat jika terdapat sebarang aktiviti berniat jahat atau sebarang cubaan melakukan apa-apa yang jahat terhadap pelayan anda.

-A INPUT -m limit -limit 3 / min -j LOG -log-awalan "iptables_INPUT_denied:" -log-level 4
-A FORWARD -m limit -limit 3 / minit -j LOG -log-awalan "iptables_FORWARD_denied:" -log-level 4
-A OUTPUT -m limit -limit 3 / min -j LOG -log-awalan "iptables_OUTPUT_denied:" -log-level 4

Tolak Semuanya

Akhirnya, anda perlu menyekat apa-apa yang tidak sesuai dengan peraturan anda. Itulah tujuan untuk mempunyai firewall di tempat pertama.

-A INPUT -j MENJADI -JANGKAP -J TIDAK SELAMAT-A OUTPUT -j TETAP

Tutup fail dengan COMMIT untuk memberitahu iptables untuk melakukan semua peraturan.

NAT Masquerading

Anda memerlukan sambungan dari VPN untuk kelihatan seperti mereka datang dari pelayan itu sendiri. Sekeping ini tidak boleh dimasukkan ke dalam fail iptables biasa kerana menggunakan jadual yang berbeza. Itulah baik-baik saja, walaupun, ia hanya satu baris.

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

Majukan Trafik IPv4

Anda perlu menghidupkan penghantaran trafik IPv4, supaya dapat lulus antara VPN dan antara muka rangkaian sebenar pelayan anda. Buka /etc/sysctl.d/99-sysctl.conf dengan sudo.

Cari baris di bawah dan laporkannya dengan mengeluarkan #.

net.ipv4.ip_forward = 1

Hentikan Semua Sambungan IPv6

Maaf, anda belum selesai dengan iptables. Anda perlu menyekat semua lalu lintas IPv6. Pelayan OpenVPN ini hanya akan menyokong IPv4, yang baik, kerana anda tidak akan menghadapi situasi di mana anda memerlukan IPv6. Akibatnya, mana-mana sambungan IPv6 boleh berpotensi bocor maklumat, yang bertentangan dengan apa yang anda mahu apabila menggunakan VPN.

Sebelum menetapkan peraturan untuk iptables, anda perlu mematikan IPv6 di mana-mana sahaja pada sistem.

Tambahkan baris berikut ke /etc/sysctl.d/99-sysctl.conf. Jika anda menutupnya dari bahagian sebelumnya, buka semula dengan 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

Aktifkan perubahan anda.

$ sudo sysctl -p

Komen semua baris IPv6 di / etc / hosts. Anda akan memerlukan sudo di sini juga.

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

Akhirnya, anda boleh menulis peraturan iptables IPv6. Buat fail untuk mereka di / tmp / ipv6.

* penapis -A INPUT -j MENGGUNAKAN -SEMATIKAN -j MENJADI -A OUTPUT -j SEMBUH KOMIT

Lihat, mereka mudah. Tolak segala-galanya.

Import dan Simpan ke Iptables

Anda perlu mengimport peraturan tersebut agar mereka melakukan apa sahaja. Jadi, sekarang adalah masa untuk berbuat demikian.

Mulailah dengan membersihkan semua yang ada di sana. Anda tidak mahu apa-apa peraturan lama dalam perjalanan.

$ sudo iptables -F && sudo iptables -X

Import kedua-dua peraturan IPv4 dan IPv6 anda.

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

Anda mungkin tidak mahu melakukannya lagi. Oleh itu, anda memerlukan pakej baru untuk menyelamatkan peraturan anda secara kekal.

$ sudo apt memasang iptables-persistent

Semasa pemasangan, pakej akan meminta anda untuk menyimpan peraturan sedia ada anda. Jawab "Ya."

Sekiranya anda membuat perubahan di kemudian hari, anda juga boleh mengemas kini konfigurasi anda yang disimpan.

$ sudo perkhidmatan netfilter-persistent save

Ia mengambil sedikit masa, tetapi firewall anda sudah bersedia untuk pergi. Di halaman seterusnya, kita akan menangani kunci penyulitan yang diperlukan.

Klik di sini: Halaman seterusnya

Semua tentang vpns: bagaimana membuat persediaan vpn anda sendiri dengan openvpn (bahagian 3)