Ito ay 2017, at ang paggamit ng isang VPN ay naging isang walang utak. Sa pagitan ng maraming mga alalahanin sa panlabas na privacy at ang iyong sariling ISP na ibenta ang iyong kasaysayan ng pag-browse, talagang walang pagbibigay-katwiran na hindi gumagamit ng isa.
Sigurado, maaari kang magbayad ng isa sa daan-daang mga serbisyo ng VPN doon, ngunit sa sandaling muli, umaasa ka sa ibang tao sa iyong data. Karamihan ay mahusay, sa katotohanan, ngunit kung nais mo ang kumpletong kontrol, maaari kang magtayo ng iyong sariling VPN sa isang V irtual P rivate S erver (VPS) o magrenta ng iyong sariling pribadong server, kung sa tingin mo ay talagang hardcore kasama ito.
Ang kailangan mo lamang upang makabuo ng isang VPN ay ang bukas na mapagkukunan ng OpenVPN software at Linux (o BSD). Ang pagsasaayos ay maaaring kasangkot, ngunit hindi imposible sa isang tao na may kahit na mga pangunahing kasanayan sa Linux upang hilahin ang isang pamamahagi tulad ng Ubuntu.
Para sa gabay na ito, kakailanganin mo ng isang VPS na tumatakbo sa Ubuntu. Maaari kang pumili ng isang napakadali mula sa isang tao tulad ng DigitalOcean o Linode . Sundin ang kanilang mga pangunahing gabay sa seguridad para sa pag-set up. Tiyaking hindi ka nakagawa ng pangunahing mga pagkakamali tulad ng pagpayag sa pag-access sa ugat sa SSH.
Gayundin, tandaan na gagawin mo ang buong pag-setup sa linya ng utos sa SSH sa iyong VPS. Walang anumang bagay na nangangailangan ng isang nakatutuwang halaga sa kaalaman ng Linux, ngunit maging handa na mag-type sa halip na mag-click.
Pagkuha ng Kailangan mo
Mabilis na Mga Link
- Pagkuha ng Kailangan mo
- I-set up ang Firewall
- Hanapin ang Interface
- Mga Pangunahing Kaalaman sa Iptables
- I-set up ang Iyong Mga Batas
- Loopback
- Ping
- SSH
- Buksan angVV
- DNS
- Ang HTTP / S
- NTP
- TUN
- Pagtotroso
- Tanggihan ang Lahat Iba pa
- NAT Masquerading
- Ipasa ang Trapiko IPv4
- Itigil ang Lahat ng Mga Pagkakaugnay ng IPv6
- Mag-import at Makatipid sa Mga Iptable
Ang mga pakete ng Ubuntu at namamahagi ng OpenVPN sa mga repositori nito. Kailangan mo lamang gumamit ng apt upang mai-install ito. Kakailanganin mo rin ang tool para sa pagbuo ng mga key ng pag-encrypt. I-install ang mga ito pareho.
$ sudo apt install openvpn madaling-rsa
I-set up ang Firewall
Susunod, kailangan mong mag-ingat sa firewall. Ito ay isang mahalagang piraso sa pagpapanatiling ligtas ang iyong VPN at maiwasan ang parehong pagtagas ng data at hindi nais na pag-access.
Ang mga Iptables ay ang pangunahing firewall para sa Linux, at ito ang iyong pinakamahusay na pagpipilian para sa pagkontrol ng pag-access sa mga port ng Ubuntu. Mag-install ka na nito, upang masimulan mo ang pag-set up ng iyong mga patakaran sa firewall.
Hanapin ang Interface
Bago ka magsimulang magsulat ng mga patakaran sa mga iptable, alamin kung anong interface ang nakakonekta sa iyong server sa Internet. Patakbuhin ang ifconfig upang ipakita ang iyong mga interface ng network. Ang isa na mayroong isang inet addr: na tumutugma sa IP address na nakakonekta ka sa tamang interface.
Mga Pangunahing Kaalaman sa Iptables
Karaniwan hindi isang magandang ideya na sapalarang kopyahin at i-paste ang mga bagay sa terminal mula sa Internet. Totoo ito lalo na kung nakikipag-usap ka sa mga paksang pangkaligtasan. Kaya, maglaan ng ilang oras dito upang malaman ang tungkol sa mga panuntunan ng iptable bago mo simulan ang pagpasok sa kanila.
Tingnan ang halimbawang ito ng isang panuntunang iptable.
-A INPUT -i eth0 -p tcp -m estado -state na ESTABLISHED -sport 443 -j TUNGKOL
Tama, kaya -Ang ibig sabihin ay pupunta ka sa isang bagong patakaran. Kung gayon ang INPUT ay nangangahulugang mag-aalala ito sa pag-input sa iyong server. Mayroon ding isang OUTPUT. Sinasabi ng flag--flag ang mga iptable na interface na para sa. Maaari mong tukuyin kung aling mga protocol ang panuntunan ay para sa with -p. Ang panuntunang ito ay humahawak sa tcp. -Tinukoy ng isang kondisyon ang isang koneksyon na dapat matugunan. Sa kasong ito dapat itong tumugma sa estado na tinukoy. Siyempre, pagkatapos -state ay tumutukoy sa isang estado, sa kasong ito isang koneksyon na ESTABLISHED. Ang susunod na bahagi ay nagsasabi sa mga iptable kung aling port ang panuntunang ito. Ito ay port 443, ang port ng HTTPS, dito. Ang huling watawat ay -j. Tumatakbo ito para sa "jump, " at sinasabi nito sa mga iptable kung ano ang gagawin sa koneksyon. Kung nakamit ang koneksyon na ito sa lahat ng mga kinakailangan sa panuntunan, ipapatupad ito ng mga iptable.
I-set up ang Iyong Mga Batas
Kaya, dapat kang magkaroon ng isang pangkalahatang ideya kung paano gumagana ang mga iptables rules ngayon. Ang natitirang bahagi ng seksyon na ito ay magsasabi sa iyo kung paano i-set up ang iyong mga patakaran ng piraso.
Ang pinakamahusay na paraan upang lumikha ng isang hanay ng mga panuntunan ng iptable ay ang paglikha ng isang file na naglalaman ng lahat ng mga ito. Pagkatapos, maaari mong mai-import ang lahat sa mga iptable nang sabay-sabay. Ang pagtatakda ng mga patakaran nang paisa-isa ay maaaring makakuha ng nakalilito, lalo na kung nagsisimula ka ng isang bagong hanay ng mga patakaran mula sa simula.
Lumikha ng isang file sa direktoryo ng / tmp upang mabuo ang iyong mga patakaran.
$ vim / tmp / ipv4
Simulan ang file na iyon kasama ang * filter. Sinasabi nito sa mga iptable na kung ano ang sumusunod ay magiging mga patakaran para sa pag-filter ng packet.
Loopback
Ang unang seksyon ng mga patakaran ay isara ang interface ng loopback. Sinabi nila sa mga iptable na dapat tanggapin ng server ang trapiko mula mismo sa interface ng loopback. Dapat ding tanggihan ang trapiko na nagmumula sa sarili na hindi nagmumula sa pag-backback.
-A INPUT -i lo -j ACCEPT-Isang INPUT! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j TUNGKOL
Ping
Susunod, payagan ang ping. Dapat mong i-ping ang iyong server upang matiyak na online ito kung sakaling hindi maabot. Sa kasong ito, ang mga kahilingan lamang sa echo ang pinapayagan, at payagan ng server ang sarili na magpadala ng output ng 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
Kailangan mo ng SSH. Iyon lamang ang paraan na maabot mo ang iyong server. Ang mga patakaran ng SSH ay tiyak sa iyong internet interface, kaya tiyaking napapalitan mo ang eth0 para sa alinmang interface na ginagamit ng iyong server.
Maaari ring maging isang magandang ideya na baguhin ang iyong mga koneksyon sa SSH sa port 22, dahil iyon ang default na susubukan ng mga potensyal na mang-atake. Kung gagawin mo ito, siguraduhin na baguhin ito sa iyong mga panuntunan iptable din.
-A INPUT -i et0 -p tcp -m state --state BAGONG, NILALAMAN --dport 22 -j ACCEPT -A OUTPUT -o et0 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
Buksan angVV
Ang susunod na piraso ay nagbibigay-daan sa trapiko papunta at mula sa OpenVPN server sa UDP.
-A INPUT -i eth0 -p udp -m state --state NEW, ESTABLISHED --dakto ng 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT
DNS
Ngayon, payagan ang mga koneksyon sa DNS sa UDP at TCP. Nais mo ang iyong VPN na hawakan ang DNS, hindi ang iyong ISP. Iyon ang bahagi ng dahilan kung bakit ka nagse-set up ng isang VPN sa unang lugar.
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o et0 -p udp -m state --state NEW, ESTABLISHED --diskit 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o et0 -p tcp -m state --state NEW, ESTABLISHED --dagdag ng 53 -j ACCEPT
Ang HTTP / S
Upang ma-update ang Ubuntu, kailangan mong magdagdag ng isang hanay ng mga patakaran upang payagan ang papalabas na koneksyon ng HTTP at HTTPS. Tandaan na pinapayagan lamang ng mga patakarang ito ang server na magsimula ng mga koneksyon sa HTTP, kaya hindi mo ito magagamit bilang isang web server o kumonekta dito sa port 80 o 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 estado na et0 -p tcp -m --state BAGONG, GINAPATANGGALING --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW, ESTABLISHED --dahilanan ng 443 -j ACCEPT
NTP
Upang mapanatili nang maayos ang iyong orasan ng server, kakailanganin mo ang NTP. Pinapayagan ng NTP ang iyong server na magkasabay sa mga timeservers sa buong mundo. Ang pagkakaroon ng isang hindi tamang orasan sa iyong server ay maaaring maging sanhi ng mga isyu sa koneksyon, kaya ang pagpapatakbo ng NTP ay isang magandang ideya. Sa sandaling muli, dapat mo lamang tanggapin ang mga papalabas at naitatag na mga koneksyon.
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --sport 123 -J ACCEPT -A OUTPUT -o et0 -p udp -m state --state NEW, ESTABLISHED --dakto ng 123 -j TAWAGAN
TUN
I-unblock ang TUN interface na ginagamit ng OpenVPN sa trapiko sa lagusan.
-A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT
Kailangan mong pahintulutan ang TUN na ipasa ang trapiko sa iyong regular na interface para sa VPN. Malalaman mo na ang IP address sa pagsasaayos ng OpenVPN. Kung binago mo ito sa pagsasaayos, baguhin din ito sa iyong mga patakaran.
-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT
Pagtotroso
Magandang ideya na panatilihin ang mga log ng lahat ng bagay na matatanggihan ng mga iptable. Sa kasong ito, nangangahulugan ito ng anumang bagay na hindi umaangkop sa alinman sa mga patakarang ito. Hinahayaan ka ng mga log kung mayroong anumang nakakahamak na aktibidad o anumang pagtatangka na gumawa ng anumang bagay na hindi maganda laban sa iyong server.
-A INPUT -m limitasyon -limit 3 / min -j LOG –log-prefix "iptables_INPUT_denied:" -log-level 4
-A HINDI KARAPATAN -m limitasyon -limit 3 / min -j LOG -log-prefix "iptables_FORWARD_denied:" -log-level 4
-A OUTPUT -m limitasyon -limit 3 / min -j LOG –log-prefix "iptables_OUTPUT_denied:" -log-level 4
Tanggihan ang Lahat Iba pa
Sa wakas, kailangan mong hadlangan ang anumang bagay na hindi umaangkop sa iyong mga patakaran. Iyon talaga ang layunin ng pagkakaroon ng isang firewall sa unang lugar.
-A INPUT -J REJECT -A FORWARD -j REJECT -A OUTPUT -J REJECT
Isara ang file kasama ang COMMIT upang sabihin sa mga iptable na gawin ang lahat ng mga patakaran.
NAT Masquerading
Kailangan mo ang mga koneksyon mula sa VPN upang magmukhang nagmumula sa server mismo. Ang piraso na ito ay hindi maaaring isama sa regular na file ng iptables dahil gumagamit ito ng ibang mesa. Kahit na, kahit na, isang linya lamang ito.
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Ipasa ang Trapiko IPv4
Kakailanganin mong paganahin ang pagpasa ng trapiko ng IPv4, kaya maaari itong pumasa sa pagitan ng VPN at aktwal na interface ng network ng iyong server. Buksan /etc/sysctl.d/99-sysctl.conf kasama ang sudo.
Hanapin ang linya sa ibaba at uncomment ito sa pamamagitan ng pagtanggal ng #.
Itigil ang Lahat ng Mga Pagkakaugnay ng IPv6
Paumanhin, hindi ka pa tapos sa mga iptable. Kailangan mong hadlangan ang lahat ng trapiko ng IPv6. Susuportahan lamang ng OpenVPN server na ito ang IPv4, na kung saan ay mabuti, dahil hindi ka tatakbo sa isang sitwasyon kung saan kailangan mo ang IPv6. Bilang isang resulta, ang anumang mga koneksyon sa IPv6 ay maaaring potensyal na tumagas ng impormasyon, na kabaligtaran ng nais mo kapag gumagamit ng isang VPN.
Bago itakda ang mga patakaran para sa mga iptable, kailangan mong huwag paganahin ang IPv6 kahit saan pa sa system.
Idagdag ang mga sumusunod na linya sa /etc/sysctl.d/99-sysctl.conf. Kung isinara mo ito mula sa nakaraang seksyon, buksan muli ito gamit ang 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
Isaaktibo ang iyong mga pagbabago.
$ sudo sysctl -p
Mag-puna ng lahat ng mga linya ng IPv6 sa / atbp / host. Kakailanganin mo rin ang sudo dito.
#:: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters
Sa wakas, maaari mong isulat ang mga patakaran ng IP6 iptable. Lumikha ng isang file para sa kanila sa / tmp / ipv6.
* filter -A INPUT -J REJECT -A FORWARD -j REJECT -A OUTPUT -J REJECT COMMIT
Kita n'yo, simple lang sila. Tanggihan ang lahat.
Mag-import at Makatipid sa Mga Iptable
Kailangan mong mag-import ng mga patakaran upang sila ay gumawa ng anuman. Kaya, ngayon ang oras upang gawin iyon.
Magsimula sa pamamagitan ng pag-alis ng lahat ng iba pa doon. Hindi mo nais ang anumang mga lumang tuntunin sa pagkuha sa paraan.
$ sudo iptables -F && sudo iptables -X
I-import ang parehong mga patakaran ng IPv4 at IPv6.
$ sudo iptables-ibalik ang </ tmp / ipv4 $ sudo ip6tables-ibalik ang </ tmp / ipv6
Marahil ay hindi mo nais na gawin iyon muli. Kaya, kakailanganin mo ng isang bagong pakete upang mai-save nang permanente ang iyong mga patakaran.
$ sudo apt install ng mga iptables-paulit-ulit
Sa panahon ng pag-install, hihilingin sa iyo ng package ang iyong umiiral na mga patakaran. Sagot "Oo."
Kung gumawa ka ng mga pagbabago sa susunod, maaari mo ring mai-update ang iyong nai-save na mga pagsasaayos.
$ sudo service netfilter-tuloy-tuloy na pag-save
Ilang sandali, ngunit ang iyong firewall ay handa nang pumunta. Sa susunod na pahina, magiging tackle kami sa paglikha ng mga kinakailangang key key.
Mag-click dito: Susunod na Pahina