Настаў 2017 год, і выкарыстанне VPN стала ветрыкам. Улічваючы шматлікія знешнія праблемы прыватнасці і той факт, што ваш правайдэр можа прадаць гісторыю прагляду, няма ніякага абгрунтавання для яго выкарыстання.

Вядома, вы можаце заплаціць за адну з сотні VPN-паслуг, але зноў жа, вы разлічваеце на каго-небудзь са сваімі дадзенымі. Большасць выдатна на самай справе, але калі вы хочаце поўны кантроль, вы можаце стварыць свой уласны VPN на віртуальным прыватным серверы (VPS) або арандаваць уласны прыватны сервер, калі вам здаецца, што вы сапраўды жорсткія. .

Усё, што трэба для стварэння VPN, з'яўляецца праграмным забеспячэннем OpenVPN з адкрытым зыходным кодам і Linux (або BSD). Канфігурацыя можа быць задзейнічана, але гэта не немагчыма, каб хто-небудзь з асноўнымі навыкамі Linux кіраваў дыстрыбутывам, як Ubuntu.

Для гэтага кіраўніцтва вам патрэбен VPS, які працуе з Ubuntu. Вы можаце ўзяць яго вельмі лёгка ў кагосьці, як DigitalOcean або Linode. Выконвайце асноўныя інструкцыі па бяспецы для ўстаноўкі. Пераканайцеся, што вы не дапусціце якіх-небудзь прынцыповых памылак, напрыклад, дазваляючы корань доступу праз SSH.

Таксама майце на ўвазе, што вы запусціце ўсю ўстаноўку ў камандным радку праз SSH да вашага VPS. Там няма нічога, што патрабуе вар'яцкіх ведаў Linux, але будзьце гатовыя ўвесці замест кліку.

Атрымаць тое, што трэба

Ubuntu пакуе і распаўсюджвае OpenVPN у сваіх сховішчах. Вы проста павінны выкарыстоўваць apt, каб усталяваць яго. Вам таксама неабходны інструмент генерацыі ключа шыфравання. Усталюйце абодва.

$ sudo apt ўсталяваць openvpn easy-rsa

Наладзьце брандмаўэр

Далей трэба паклапаціцца пра брандмаўэр. Гэта важны ўклад у забеспячэнне VPN і прадухіленне ўцечкі дадзеных і непажаданага доступу.

Iptables - гэта галоўны брандмаўэр для Linux і ваш лепшы варыянт для кантролю доступу да партоў Ubuntu. Вы ўжо ўсталявалі яго, каб вы маглі пачаць наладжваць правілы брандмаўэра.

Знайдзіце інтэрфейс

Перш чым пачаць пісаць правілы ў iptables, вам трэба даведацца, які інтэрфейс ваш сервер выкарыстоўвае для падлучэння да Інтэрнэту. Запусціце ifconfig для адлюстравання сеткавых інтэрфейсаў. Той, хто мае інэт-адрас, які адпавядае IP-адрасу, да якога вы падлучаны, - гэта правільны інтэрфейс.

Асновы Iptables

Звычайна не ідэя выпадкова капіяваць і ўстаўляць рэчы ў Інтэрнэт у тэрмінал. Асабліва гэта актуальна, калі вы маеце справу з пытаннямі бяспекі. Знайдзіце некаторы час тут, каб азнаёміцца ​​з правіламі iptables, перш чым уводзіць іх.

Паглядзіце гэты прыклад правілы iptables.

- INPUT - i eth0 - p tcp - m стан - стан Усталяваны - спорт 443 - j ПРЫХОД

Добра - так - значыць, вы дадаеце новае правіла. Тады INPUT азначае, што гэта запіс на вашым серверы. Ёсць таксама выхад. Сцяг -i паведамляе iptables, да якога інтэрфейсу адносіцца гэтае правіла. Вы можаце выкарыстоўваць -p, каб вызначыць, да якога пратакола адносіцца правіла. Гэта правіла тычыцца TCP. -m пазначае ўмову, якое павінна адпавядаць злучэнню. У гэтым выпадку яно павінна адпавядаць зададзенаму статусу. Вядома, тады -state паказвае статус, у гэтым выпадку ўстаноўленае злучэнне. Наступная частка паведамляе iptables, да якога порта адносіцца гэтае правіла. Вось порт 443, порт HTTPS. Апошні сцяг - -j. Яна расшыфроўваецца як "скачок" і паведамляе iptables, што рабіць з гэтым злучэннем. Калі гэта злучэнне адпавядае ўсім патрабаванням гэтага правіла, iptables прымае яго.

Усталюйце свае правілы

Такім чынам, вы павінны мець агульнае ўяўленне пра тое, як працуюць правілы iptables. Астатняя частка гэтага раздзела тлумачыць, як правільна наладжваць свае правілы.

Лепшы спосаб стварыць набор правілаў iptables - стварыць файл, які змяшчае ўсе правілы. Тады вы можаце імпартаваць усё ў iptables адразу. Настройка правілаў па адным можа блытаць, асабліва калі вы пачынаеце новы набор правілаў з нуля.

Стварыце файл у каталогу / tmp, каб стварыць свае правілы.

$ vim / tmp / ipv4

Запусціце гэты файл з * фільтра. Гэта паведамляе iptables, што будуць прымяняцца наступныя правілы фільтрацыі пакетаў.

Loopback

Першы раздзел правілаў блакуе інтэрфейс цыклу. Яны распавядаюць iptables, што сервер у інтэрфейсе зваротнага звароту павінен прымаць трафік ад сябе. Ён таксама павінен адхіляць трафік, які не ідзе ад цыкла.

-A INPUT -i вось -j ПРЫХОД -INPUT! -i вось -s 127.0.0.0/8 -j АДКАЗАЦЬ -A выхад -o lo -j ПРЫХОД

Звон

Далей дазвольце пінг. Вы павінны мець магчымасць пінгаваць ваш сервер, каб пераканацца, што ён у сеткі, калі інакш ён недаступны. У гэтым выпадку дазволены толькі рэха-запыты, і сервер можа сам адпраўляць высновы ICMP.

-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT - INPUT - p icmp - m state - стан Усталяваны, звязаны - j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

Вам патрэбен SSH. Гэта адзіны спосаб дасягнуць вашага сервера. Правілы SSH характэрны для вашага інтэрфейсу. Таму пераканайцеся, што вы выкарыстоўваеце eth0 для інтэрфейсу, які ваш сервер на самай справе выкарыстоўвае.

Таксама можа быць добрай ідэяй змяніць злучэнні SSH з порта 22, бо гэта спроба па змаўчанні паспрабаваць патэнцыйныя зламыснікі. Калі вы робіце гэта, пераканайцеся, што вы таксама змянілі гэта ў сваіх правілах iptables.

- INPUT - i eth0 - p tcp - m state - стан NEW, SET - порт 22 - j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state Усталяваны --sport 22 -j ACCEPT

OpenVPN

У гэтым наступным раздзеле трафік дадзеных на сервер OpenVPN і з яго дазволены праз UDP.

- INPUT - i eth0 - p udp - m state - стан NEW, SET - порт 1194 - j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state Усталяваны --sport 1194 -j ACCEPT

DNS

Цяпер дазволіце DNS-злучэнні праз UDP і TCP. Вы хочаце, каб ваша VPN апрацоўвала DNS, а не ваш правайдэр. Гэта адна з прычын, па якіх вы ў першую чаргу усталявалі VPN.

- INPUT - i eth0 - p udp - m стан - стан Усталяваны - спорт 53 - j ПРЫХОД-выход -o eth0 -p udp -m стан - дзяржава НОВЫ, Усталяваны --dport 53 -j ПРЫХОД - INPUT - i eth0 - p tcp - m стан - стан усталяваны - спорт 53 - j ПРЫХОД -А выхад -o eth0 -p tcp -m стан - дзяржава НОВЫ, Усталяваны --dport 53 -j ПРЫХОД

HTTP / S

Для таго, каб Ubuntu абнавіўся, вам трэба дадаць шэраг правілаў, каб дазволіць выходныя злучэнні з HTTP і HTTPS. Звярніце ўвагу, што гэтыя правілы дазваляюць серверу толькі ініцыяваць злучэнні HTTP. Такім чынам, вы не можаце выкарыстоўваць яго ў якасці вэб-сервера або падлучэння праз порт 80 або порт 443

- INPUT - i eth0 - p tcp - m стан - стан Усталяваны - спорт 80 - j ПРЫХОД - INPUT - i eth0 - p tcp - m стан - стан Усталяваны - спорт 443 - j ПРЫХОД -A OUTPUT -o eth0 -p tcp - м стан - дзяржаўны НОВЫ, усталяваны - даклад 80 -j ПРЫХОД -А выхад -o eth0 -p tcp -m стан - дзяржава НОВЫ, усталяваны --dport 443 -j ПРЫХОД

NTP

Для правільнага запуску гадзінніка сервера вам неабходны NTP. З дапамогай NTP ваш сервер можа сінхранізавацца з серверамі часу па ўсім свеце. Няправільны гадзіннік на вашым серверы можа выклікаць праблемы з падключэннем. Таму добрая ідэя запусціць NTP. Зноў жа, вы павінны прыняць толькі зыходныя і існуючыя злучэнні.

- INPUT - i eth0 - p udp - m state - state Усталяваны - sport 123 - j ПРЫХОД -A OUTPUT -o eth0 -p udp -m state --state NEW, Усталяваны --dport 123 -j ACCEPT

Зрабіце

Разблакуйце інтэрфейс TUN, які OpenVPN выкарыстоўвае для тунэльнага трафіку.

-A INPUT -i tun0 -j ACCEPT -A наперад, -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT

Вы павінны дазволіць TUN накіраваць трафік для VPN у свой звычайны інтэрфейс. Вы можаце знайсці гэты IP-адрас у наладзе OpenVPN. Калі вы змяніце яго ў канфігурацыі, вы таксама змяніце яго ў сваіх правілах.

-А ПЕРАМОГА, -i tun0 -o eth0 -s 10.8.0.0/24 -j ПРЫМЕНА -A наперад, -m стан - дзяржава усталяваны, звязаны -j ПРЫХОД

Нарыхтоўка лесу

Гэта добрая ідэя весці часопіс усяго, што iptables адхіляе. У гэтым выпадку маецца на ўвазе ўсё, што не ўпісваецца ў адно з гэтых правілаў. З дапамогай часопісаў вы можаце вызначыць, ці ёсць шкоднасная дзейнасць, ці робіцца спроба зрабіць штосьці ганебнае супраць вашага сервера.

-INPUT -m limit –limit 3 / min -j LOG –log з прэфіксам “iptables_INPUT_denied:” –log level 4-A FORWARD -m limit –limit 3 / min -j LOG –log з прэфіксам “iptables_FORWARD_denied:” - лог -ўзровень 4-A OUTPUT -m limit –limit 3 / min -j LOG –log з прэфіксам “iptables_OUTPUT_denied:” –log-level 4

Адхіліце ўсё астатняе

У рэшце рэшт, вы павінны заблакаваць усё, што не ўпісваецца ў вашы правілы. У гэтым і заключаецца мэта брандмаўэра.

-INPUT -j REJECT -J REJECT -A OUTPUT -j REJECT

Зачыніце файл COMMIT, каб сказаць iptables, каб здзейсніць усе правілы.

Правілы iptables OpenVPN

NAT маскіраваны

Неабходна наладзіць злучэнні праз VPN так, як быццам яны прыйшлі з самага сервера. Гэтая частка не можа быць уключана ў звычайны файл iptables, таму што выкарыстоўваецца іншая табліца. Але гэта нармальна, гэта толькі адзін радок.

$ sudo iptables -t nat -A РАСТРЭКЦЫЯ -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Пераадрасаваць трафік IPv4

Вы павінны ўключыць пераадрасацыю трафіку IPv4, каб ён мог перадавацца паміж VPN і фактычным сеткавым інтэрфейсам вашага сервера. Адкрыйце /etc/sysctl.d/99-sysctl.conf з sudo.

Знайдзіце радок ніжэй і выдаліце ​​#, каб выдаліць сімвал каментара.

net.ipv4.ip_forward = 1

Спыніце ўсе злучэнні IPv6

На жаль, вы яшчэ не зрабілі з iptables. Вы павінны заблакаваць увесь трафік IPv6. Гэты сервер OpenVPN падтрымлівае толькі IPv4, што добра, таму што вы не сутыкнецеся з сітуацыяй, калі вам патрэбен IPv6. У выніку інфармацыя пра злучэнні IPv6 можа быць страчана. Гэта адваротнае таму, што вы хочаце выкарыстоўваць VPN.

Перш чым усталяваць правілы для iptables, вам трэба адключыць IPv6 дзе-небудзь у сістэме.

Дадайце наступныя радкі ў /etc/sysctl.d/99-sysctl.conf. Калі вы зачынілі яго з папярэдняга раздзела, адкрыйце яго зноў з суда.

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

Актывуйце змены.

$ sudo sysctl -p

Каментуйце ўсе радкі IPv6 у / etc / hosts. Тут вам таксама спатрэбіцца судо.

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

Нарэшце, вы можаце напісаць правілы iptables IPv6. Стварыце файл для іх па адрасе / tmp / ipv6.

* FILTER -INPUT -j REJECT -J REJECT -A REUTPUT -j REJECT OBLIGATE

Разумееце, яны простыя. Адхіліце ўсё

Імпарт і захаванне ў iptables

Вам неабходна імпартаваць гэтыя правілы, каб яны маглі нешта зрабіць. Цяпер прыйшоў час.

Пачніце з выдалення ўсяго іншага, што ёсць. Вы не хочаце, каб старыя правілы перашкаджалі.

$ sudo iptables -F & & sudo iptables -X

Імпартуйце свае правілы IPv4 і IPv6.

$ sudo iptables-Resto

Магчыма, вы ніколі больш не захочаце гэтага рабіць. Таму вам патрэбны новы пакет, каб назаўсёды захаваць свае правілы.

$ sudo apt ўсталяваць iptables-стойкія

Падчас ўстаноўкі вам будзе прапанавана захаваць існуючыя правілы. Адкажыце "так".

Калі вы ўносіце змены пазней, вы таксама можаце абнавіць захаваныя канфігурацыі.

Захавайце $ sudo паслугу netfilter-стойкай

Прайшло некаторы час, але ваш брандмаўэр гатовы. На наступнай старонцы мы разбярэмся са стварэннем неабходных ключоў шыфравання.

Націсніце тут: Наступная старонка