GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat VPN Anda Sendiri – Petunjuk Lengkap

VPN – Apa Itu?

VPN adalah jaringan pribadi virtual yang membuat terowongan terenkripsi antara perangkat Anda dan koneksi Internet. Ada VPN ganda yang merupakan penggunaan simultan dari dua server VPN yang berbeda. Saat menggunakan VeePN, semua data masuk dan keluar dienkripsi. Saat terhubung ke server VPN, semua aktivitas online Anda akan melalui terowongan ini dan bukan melalui penyedia. Dengan demikian, penjahat dunia maya yang ingin memindai lalu lintas Anda hanya akan melihat negara tempat Anda terhubung dan tidak akan dapat mencuri kata sandi dari jejaring sosial, kartu kredit, atau informasi pribadi apa pun.

VPN adalah alat yang cukup bagus untuk memerangi penyusup dunia maya, dan Anda tertarik dengan pertanyaan, “Dapatkah saya mengatur server VPN saya sendiri?” Anda tentu saja dapat mengatur VPN atau rantai VPN Anda sendiri. Dengan membuat server VPN, Anda mendapatkan banyak manfaat:

  • Anda mengontrol server dan orang-orang Anda menggunakan VPN.
  • Anda dapat yakin bahwa tidak ada yang memiliki data Anda.
  • Anda akan mendapatkan akses ke banyak sumber daya yang diblokir di wilayah Anda.
  • Anda akan dapat terhubung di jaringan Wi-Fi publik, dan tidak ada yang dapat mengambil alih data Anda.
  • Anda dapat menyembunyikan lalu lintas dari layanan khusus.

Petunjuk untuk Membuat Server VPN Anda Sendiri Berbasis Linux Debian

Di bawah ini Anda akan menemukan petunjuk langkah demi langkah tentang cara membuat vpn buatan sendiri. Ikuti semua tips dengan cermat, karena hasil Anda akan bergantung pada kebenaran langkah-langkahnya.

Daftar Dengan Amazon AWS Dan Terhubung Ke Server

Amazon Web Services memiliki proses pendaftaran sederhana dan tip untuk membuat profil sehingga Anda dapat menjalani langkah ini sendiri. Setelah menyelesaikan proses pendaftaran, buka Lightsail dan pilih zona geografis tempat Anda ingin membuat server VPN. Kemudian buat instance baru dan pilih data ini:“OS Only”, sistem operasi Debian 9.5. Kemudian Anda akan melihat paket instan – yang paling umum dengan RAM 512 MB akan cocok untuk Anda.

Beberapa situs agresif terhadap pengunjung yang alamat IP-nya milik hoster populer dan memblokirnya. Menurut mereka, pengunjung tersebut mengambil bagian dalam serangan DDOS. Agar Anda tidak diblokir dan tidak perlu berbagi satu alamat IP dengan ribuan mesin AWS lainnya, buka Jaringan, lalu pastikan untuk mengalokasikan sendiri IP Statis. Tetapkan ke instance yang Anda buat.

Sekarang Anda perlu mengunduh kunci pribadi untuk akses SSH. Kunci pribadi terletak di bagian Akun> Kunci SSH. Unduh kunci ini dan unggah ke klien SSH. Kami menyiapkan server di Bali menggunakan iPad Pro dan Termius. Namun, Anda dapat menggunakan klien SSH yang berbeda. Misalnya, alternatif yang baik adalah Terminal.app yang dibangun ke dalam macOS. Dalam instruksi kami, kami akan mempertimbangkan Terminal, tetapi algoritmenya serupa untuk klien SSH lainnya.

Mari kita mulai dengan sederhana – buka Terminal. Terminal memiliki masalah umum yang disebut "lokal." Jika Anda menggunakan Termius, masalah ini tidak ada. Tambahkan beberapa baris baru ke file .profile macOS lokal Anda untuk menghilangkan masalah lokal. Edit file ini menggunakan editor teks nano. Akan membantu jika Anda mendapatkan sesuatu seperti ini:nano ~/ .profile. Sekarang Anda perlu memasukkan beberapa baris di sana:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Anda harus menyimpan file ini menggunakan perintah Ctrl+X. Tutup terminal menggunakan perintah Cmd+Q. Setelah langkah ini, jalankan lagi.

Sekarang Anda perlu memindahkan kunci pribadi Lightsail yang diunduh sebelumnya ke direktori khusus tempat kunci SSH disimpan:mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh. Setelah langkah ini, batasi hak kunci. Jika tidak, macOS akan memblokir penggunaannya. Ini dapat dilakukan dengan menggunakan sandi berikut:

cd ~/ .ssh/
chmod 600 YOUR_DOWNLOADED_KEY.pem

Selesai dengan langkah ini, Anda dapat terhubung ke mesin Lightsail Anda. Anda akan melihat bidang khusus YOUR_LIGHTSAIL_IP. Di dalamnya, Anda perlu menentukan alamat IP statis eksternal:ssh -i YOUR_DOWNLOADED_KEY.pem admin @ YOUR_LIGHTSAIL_IP. Jika Anda melakukan semuanya dengan benar, Anda akan melihat tulisan khusus dengan semua data Anda.

Konfigurasi Debian

Semua langkah selanjutnya yang perlu Anda lakukan di bawah pengguna root. Jadi, tentukan sudo su. Kemudian perbarui indeks paket di repositori. Mungkin Anda dapat melihat sendiri bahwa ada pembaruan:apt-get update. Sekarang tugas Anda adalah menginstal pembaruan ini:apt-get upgrade.

Instal strongSwan

Menggunakan sandi khusus, instal strongSwan:apt-get install strongswan. Kami akan berbicara tentang cara mengatur strongSwan nanti. Saat ini, yang terpenting adalah membuat sertifikat agar perangkat Anda dapat menggunakan VPN.

Buat Sertifikat Akses

Dalam panduan kami, kami menggunakan sertifikat yang ditandatangani sendiri karena hanya tim kami yang akan menggunakan server VPN. Untuk membuat sertifikat, Anda memerlukan paket strongswan-pki. Instal:paket strongswan-pki.

Sekarang Anda dapat mulai membuat sertifikat. Langkah pertama adalah membuat sertifikat root. Yang paling penting, ini dikenal sebagai CA (Certificate Authority). Sertifikat ini akan mengeluarkan Anda sertifikat lain yang Anda butuhkan. Anda dapat membuat sertifikat di file ca.pem:

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem

Untuk membuat sertifikat server VPN, Anda memerlukan file debian.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem

Untuk membuat sertifikat untuk perangkat Anda, Anda memerlukan file me.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem 
ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem

Anda tidak memerlukan file ca.pem lagi, jadi untuk keamanan dan keandalan, hapus:rm /etc/ipsec.d/private/ca.pem. Anda telah menyelesaikan proses pembuatan sertifikat – selamat, Anda hampir selesai!

Apa Yang Harus Dilakukan Jika Sertifikat Terlalu Lama?

Apa yang kami maksud dengan waktu yang terlalu lama? Misalnya, sertifikat Anda dibuat selama lebih dari 5 detik. Data ini menunjukkan jumlah entropi yang rendah. Perhatikan bahwa pembuatan sertifikat dapat memakan waktu 40 hingga 60 menit karena jumlah entropi yang rendah, yang tidak terlalu baik untuk pekerjaan Anda. Oleh karena itu, untuk memeriksa jumlah entropi, Anda dapat memulai sesi lain di tab berikutnya:

Menggunakan perintah di atas, Anda akan melihat jumlah entropi pada saat permintaan. Jika Anda ingin mengontrol entropi secara real-time, Anda dapat menggunakan perintah ini:watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail.

Jika hasilnya menunjukkan kurang dari 200 entropi, kami sarankan Anda mengubah penyedia hosting Anda. Juga, banyak ahli menyarankan untuk menginstal paket hasged, yang tugasnya adalah menghasilkan entropi. Namun, kegunaan paket ini belum terbukti, jadi selanjutnya semuanya akan tergantung pada Anda. Saat Anda menggunakan Amazon Lightsail, masalah ini tidak muncul, dan Anda dapat membuat kunci dengan cepat. Untuk keluar dari permintaan, Anda perlu menggunakan tombol Ctrl + Z.

Konfigurasikan strongSwan

Untuk mengonfigurasi strongSwan dengan benar, Anda perlu menghapus konfigurasi strongSwan default. Gunakan perintah ini:> /etc/ipsec.conf. Kemudian Anda dapat membuatnya sendiri di editor teks nano:nano /etc/ipsec.conf.

Anda akan melihat bidang YOUR_LIGHTSAIL_IP, dan tugas Anda adalah menggantinya dengan alamat IP eksternal mesin di AWS Lightsail. Sekarang Anda dapat menyisipkan teks seperti ini:

include /var/lib/strongswan/ipsec.conf.inc

config setup
    	uniqueids=never
    	charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    	keyexchange=ikev2
    	ike=aes128gcm16-sha2_256-prfsha256-ecp256!
    	esp=aes128gcm16-sha2_256-ecp256!
    	fragmentation=yes
    	rekey=no
    	compress=yes
    	dpdaction=clear
    	left=%any
    	leftauth=pubkey
    	leftsourceip=YOUR_LIGHTSAIL_IP
    	leftid=YOUR_LIGHTSAIL_IP
    	leftcert=debian.pem
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0
    	right=%any
    	rightauth=pubkey
    	rightsourceip=10.10.10.0/24
    	rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
    	auto=add

Penting! strongSwan sangat ketat tentang semua lekukan dalam konfigurasi. Oleh karena itu, saat Anda memasukkan perintah, pisahkan setiap bagian konfigurasi menggunakan tombol Tab. Dalam contoh kami, kami menentukan bagaimana ini akan terlihat. Anda dapat menggunakan model kami atau melakukan hanya satu indentasi. Jika tidak, strongSwan tidak akan berfungsi.

Simpan file yang dibuat menggunakan tombol Ctrl + X. Dalam file ipsec.secrets, yang menyimpan semua referensi ke sertifikat dan kunci autentikasi, tambahkan penunjuk khusus ke sertifikat server Anda:

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc

: RSA debian.pem

Jika Anda mengikuti semua langkah, pengaturan Strongswan selesai. Akan sangat membantu jika Anda me-restart layanan:ipsec restart. Asalkan Anda memasukkan semua perintah dengan benar, server akan memulai dengan pesan di bawah ini:

Memulai strongSwan 5.5.1 IPsec [starter]…

Jika Anda melihat bahwa program tersebut membuat kesalahan, baca log sistem untuk menentukan apa masalahnya. Perintah akan menampilkan 50 baris terakhir dari log:tail -n 50> /var/log/syslog.

Konfigurasikan Setelan Kernel Jaringan

Untuk file /etc/sysctl.conf, Anda harus membuat beberapa perubahan:nano /etc/sysctl.conf. Menggunakan dua tombol Ctrl + W, temukan variabel berikut dalam file dan buat perubahan di sana:

  • Batalkan komentar pada opsi ini untuk mengaktifkan penerusan paket:net.ipv4.ip_forward =1
  • Batalkan komentar parameter ini untuk mencegah serangan MITM:net.ipv4.conf.all.accept_redirects =0
  • Batalkan komentar parameter ini untuk menonaktifkan pengiriman pengalihan ICMP:net.ipv4.conf.all.send_redirects =0
  • Tambahkan parameter ini di mana saja dalam file, pada baris baru, nonaktifkan penelusuran PMTU:net.ipv4.ip_no_pmtu_disc =1

Muat nilai baru yang diperoleh:sysctl -p. Anda selesai mengonfigurasi parameter jaringan kernel.

Konfigurasikan iptables

iptables adalah alat khusus yang mengelola dan mengontrol firewall netfilter bawaan Linux. Instal paket iptables-persistent, yang memungkinkan Anda menyimpan aturan iptables ke file dan memuatnya di setiap startup sistem:apt-get install iptables-persistent.

Setelah menginstal paket ini, sistem akan meminta Anda untuk menyimpan aturan IPv4 dan IPv6 saat ini. Anda perlu menentukan “tidak”, karena Anda memiliki sistem baru dan tidak ada data untuk disimpan.

Sekarang mulailah membuat aturan iptables Anda. Untuk memastikan keamanan dan keandalan, hapus semua rantai:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

Agar tidak kehilangan akses ke sistem, izinkan koneksi SSH pada port 22:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Langkah selanjutnya adalah mengizinkan koneksi pada antarmuka loopback:iptables -A INPUT -i lo -j ACCEPT. Kemudian izinkan koneksi IPSec yang masuk pada port UDP 500 dan 4500:

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

Izinkan penerusan lalu lintas ESP:

iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Server VPN seperti utas antara Internet dan klien VPN, jadi Anda perlu mengonfigurasi penyembunyian lalu lintas:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Konfigurasikan ukuran segmen paket maksimum:

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360

Tolak semua koneksi pihak ketiga ke server menggunakan perintah:

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

Simpan aturan yang dibuat agar ada setelah setiap reboot:

netfilter-persistent save
netfilter-persistent reload

Reboot sistem:reboot, dan periksa apakah aturan yang Anda buat berfungsi.

Izinkan Koneksi di Lightsail Firewall

AWS Lightsail telah membuat firewallnya untuk melindungi sistem. Pilih instans Anda, buka Jaringan dan izinkan koneksi pada port UDP 500 dan 4500. Hapus port 80 secara bersamaan – Anda tidak akan membutuhkannya.

Buat .mobileconfig Untuk iPhone, iPad, Mac

Perangkat Anda adalah iPhone, iPad, dan Mac sehingga Anda dapat menggunakan satu profil VPN .mobileconfig. Akan membantu jika Anda membuat konfigurasi Sesuai Permintaan. Jika suatu layanan atau aplikasi mencoba offline, koneksi VPN akan terus bekerja secara otomatis. Anda akan menghindari situasi ketika Anda menekan untuk membuat koneksi VPN, dan lalu lintas melewati penyedia. Gunakan skrip yang akan menghasilkan konfigurasi ini untuk Anda:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

Instal paket zsh agar skrip berfungsi dengan baik:apt-get install zsh. Edit nama server berdasarkan ide Anda dan tulis alamat IP eksternal mesin Lightsail yang sebelumnya Anda tentukan saat membuat sertifikat:

nano mobileconfig.sh
SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"

Sekarang jalankan skrip dan dapatkan file iphone.mobileconfig:

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig.

Hapus file ini dari server dengan menghubungkannya dengan Transmit atau Cyberduck – kirimkan ke semua perangkat Anda melalui Airdrop. Konfirmasikan pemasangan konfigurasi pada perangkat. Anda akan membuat koneksi ke server VPN secara otomatis.

Pastikan untuk membersihkan diri sendiri:

rm mobileconfig.sh
rm iphone.mobileconfig

Linux
  1. Cara membuat Peran IAM di AWS menggunakan Terraform

  2. Cara membuat volume fisik di Linux menggunakan LVM

  3. Cara membuat Pengguna Linux Menggunakan Ansible

  1. Cara membuat VPN di Ubuntu 20.04 menggunakan Wireguard

  2. Cara Membuat RPM untuk Skrip Anda Sendiri di CentOS/RedHat

  3. Cara membuat situs Plesk

  1. Cara Membuat Server Konferensi Video Anda Sendiri menggunakan Jitsi Meet di Ubuntu 18.04 LTS

  2. Cara membuat Distribusi Linux Anda sendiri dengan Yocto di Ubuntu

  3. Cara membuat Bucket S3 menggunakan Python Boto3 di AWS