Настав 2017 рік, і використання VPN стало безпрограшним. Між навантаженнями зовнішніх проблем конфіденційності та тим, що ваш власний Інтернет-провайдер може продати історію веб-перегляду, насправді немає обґрунтування того, що він не використовується.
Звичайно, ви можете оплатити одну із сотень VPN-послуг там, але ще раз, ви покладаєтесь на когось іншого зі своїми даними. Більшість - це насправді чудово, але якщо ви хочете повного контролю, ви можете побудувати свій власний VPN на V irtual P rivate S erver (VPS) або взяти напрокат власний приватний сервер, якщо ви відчуваєте, що з ним справді хардкор.
Все, що вам потрібно для створення VPN, це програмне забезпечення OpenVPN з відкритим кодом та Linux (або BSD). Конфігурація може бути задіяна, але це неможливо, коли хтось із навіть базовими навичками Linux може вийти на такий дистрибутив, як Ubuntu.
Для цього посібника вам знадобиться VPS під управлінням Ubuntu. Ви можете забрати його дуже легко у когось, як DigitalOcean або Linode . Дотримуйтесь їх основних посібників із безпеки для налаштування. Переконайтеся, що ви не робите основних помилок, як-от допуск кореневого доступу через SSH.
Крім того, майте на увазі, що це ви збираєтеся робити всю цю настройку в командному рядку через SSH до вашого VPS. Немає нічого, що вимагає шаленої кількості знань Linux, але будьте готові вводити текст, а не клацати.
Отримання того, що вам потрібно
Швидкі посилання
- Отримання того, що вам потрібно
- Налаштування брандмауера
- Знайдіть інтерфейс
- Основи iptables
- Установіть свої правила
- Замикання
- Пінг
- SSH
- OpenVPN
- DNS
- HTTP / S
- NTP
- ТУН
- Ведення журналів
- Відкиньте все інше
- NAT маскування
- Переслати трафік IPv4
- Зупиніть усі з'єднання IPv6
- Імпорт і збереження в Iptables
Ubuntu пакує та розподіляє OpenVPN у своїх сховищах. Для його установки потрібно використовувати лише apt. Вам також знадобиться інструмент для генерації ключів шифрування. Встановіть їх обидва.
$ sudo apt встановити openvpn easy-rsa
Налаштування брандмауера
Далі потрібно подбати про брандмауер. Це важливий елемент для забезпечення безпеки VPN та запобігання витоку даних та небажаного доступу.
Iptables є основним брандмауером для Linux, і це найкращий варіант для контролю доступу до портів Ubuntu. Ви вже встановите його, так що ви можете розпочати налаштування правил брандмауера.
Знайдіть інтерфейс
Перш ніж почати писати правила в iptables, дізнайтеся, з яким інтерфейсом ваш сервер підключений до Інтернету. Запустіть ifconfig для відображення мережевих інтерфейсів. Той, що містить inet addr: відповідність IP-адреси, до якої ви підключені, - це правильний інтерфейс.
Основи iptables
Зазвичай не годиться копіювати і вставляти речі в термінал з Інтернету. Особливо це стосується питань безпеки. Отже, знайдіть трохи часу, щоб дізнатися трохи про правила iptables, перш ніж почати вводити їх.
Погляньте на цей приклад правила iptables.
-A INPUT -i eth0 -p tcp -m стан – держава Встановлено –спорт 443 -j ACCEPT
Гаразд, так-це означає, що ви будете додавати нове правило. Тоді INPUT означає, що це стосуватиметься входу на ваш сервер. Є також вихід. Прапор -i вказує iptables, для якого інтерфейсу призначено це правило. Ви можете вказати, для якого протоколу є правилом для -p. Це правило обробляє tcp. -m вказує умову, якій має відповідати з'єднання. У цьому випадку він повинен відповідати вказаному стану. Звичайно, тоді –state вказує стан, в даному випадку ВСТАНОВЛЕНО з'єднання. Наступна частина розповідає iptables, для якого порту призначено це правило. Тут знаходиться порт 443, порт HTTPS. Останній прапор - -j. Це означає "стрибок", і він говорить iptables, що робити з з'єднанням. Якби це з'єднання відповідало всім вимогам правила, iptables приймає його.
Установіть свої правила
Отже, у вас повинно бути загальне уявлення про те, як зараз працюють правила iptables. У решті цього розділу буде розказано, як налаштувати свої правила детально.
Найкращий спосіб створити набір правил iptables - це створити файл, що містить усі вони. Потім ви можете імпортувати все це в iptables відразу. Встановлення правил по одному може заплутатись, особливо якщо ви починаєте новий набір правил з нуля.
Створіть файл у каталозі / tmp для створення своїх правил.
$ vim / tmp / ipv4
Почніть цей файл із * фільтра. Це говорить iptables, що наступним буде правила фільтрації пакетів.
Замикання
Перший розділ правил блокує інтерфейс зворотного зв'язку. Вони кажуть iptables, що сервер повинен приймати трафік від себе на інтерфейсі петлі. Він також повинен відхиляти трафік, що надходить від себе, що не надходить із циклу.
-A ВХОД -i lo -j ПРИЙМАНО -A ВХОД! -i lo -s 127.0.0.0/8 -j ВІДМОВИТИ -A ВИХІД -o lo -j ACCEPT
Пінг
Далі дозволити пінг. Ви повинні мати змогу пінг-сервера, щоб переконатися, що він є в Інтернеті, якщо це недоступно в іншому випадку. У цьому випадку дозволені лише запити ехо, і сервер дозволить собі надіслати вихід ICMP.
-A ВХОД -p icmp -m стан - держава НОВО - -cmp-тип 8 -j ACCEPT -A ВХОД -p icmp -m стан - держава Встановлено, ЗВ'ЯЗАНО -j ACCEPT -A OUTPUT -p icmp -j ACCEPT
SSH
Вам потрібен SSH. Це єдиний спосіб, коли ви можете дістатися до свого сервера. Правила SSH специфічні для вашого Інтернет-інтерфейсу, тому переконайтеся, що ви замінили eth0 тим, який інтерфейс використовує ваш сервер.
Також може бути гарною ідеєю змінити SSH-з'єднання з порту 22, оскільки це типово, що спробують потенційні зловмисники. Якщо ви це зробите, переконайтесь, що це теж зміниться у ваших правилах iptables.
-A INPUT -i eth0 -p tcp -m стан - держава НОВЕ, Встановлено - доповідь 22 -j ПРИЙМАНО -A ВИХІД -o eth0 -p tcp -m стан - держава Встановлено --спорт 22 -j ACCEPT
OpenVPN
Наступний фрагмент дозволяє здійснювати трафік на сервер OpenVPN і з нього через UDP.
-A ВХОД -i eth0 -p udp -m стан - держава НОВИЙ, Встановлений - доповідь 1194 -j ПРИЙМАНО -A ВИХІД -o eth0 -p udp -m стан - держава Встановлено --спорт 1194 -j ПРИЙОМ
DNS
Тепер дозвольте з'єднання DNS через UDP та TCP. Ви хочете, щоб ваша VPN обробляла DNS, а не ваш провайдер. Це частина причини, що ви налаштовуєте VPN в першу чергу.
-A ВХОД -i eth0 -p udp -m стан - держава ВСТАНОВЛЕНО --спорт 53 -j ПРИЙМАННЯ -A ВИХІД -o eth0 -p udp -m стан - держава НОВЕ, Встановлено - доповідь 53 -j ПРИЙОМО -A INPUT -i eth0 -p tcp -m стан - держава Встановлено --спорт 53 -j ПРИЙОМОК -ВИХІД -o eth0 -p tcp -m стан - держава НОВЕ, Встановлено - доповідь 53 -j ПРИЙОМ
HTTP / S
Для того, щоб Ubuntu змогла сама оновитись, вам потрібно додати набір правил, щоб дозволити вихідне з'єднання HTTP та HTTPS. Зауважте, що ці правила дозволяють серверу ініціювати з'єднання HTTP, тому ви не можете використовувати його як веб-сервер або підключатися до нього через порт 80 або порт 443
-A INPUT -i eth0 -p tcp -m стан - держава ВСТАНОВЛЕНО --спорт 80 -j ПРИЙМАННЯ -A ВХОД -i eth0 -p tcp -m стан - держава ВСТАНОВЛЕНО --спорт 443 -j ПРИЙМАНО -A ВИХІД - o eth0 -p tcp -m стан - держава НОВИЙ, Встановлений - доповідь 80 -j ПРИЙМАНО -A ВИХІД -o eth0 -p tcp -m стан - держава НОВИЙ, Встановлений --dport 443 -j ПРИЙОМ
NTP
Для того, щоб годинник вашого сервера працював належним чином, вам знадобиться NTP. NTP дозволяє вашому серверу синхронізуватися із таймерами по всьому світу. Неправильний годинник на вашому сервері може спричинити проблеми з підключенням, тому запуск NTP - хороша ідея. Ще раз слід прийняти лише вихідні та вже встановлені зв’язки.
-A ВХОД -i eth0 -p udp -m стан - держава ВСТАНОВЛЕНО --спорт 123 -j ПРИЙМАННЯ -A ВИХІД -o eth0 -p udp -m стан - держава НОВИЙ, Встановлений --dport 123 -j ПРИЙОМ
ТУН
Розблокуйте інтерфейс TUN, який OpenVPN використовує для тунельного трафіку.
-A ВХОД -i tun0 -j ПРИЙМАНО -Вперед, -i tun0 -j ACCEPT -A ВИХІД -o tun0 -j ACCEPT
Потрібно дозволити TUN перенаправляти трафік до вашого звичайного інтерфейсу для VPN. Ви знайдете цю IP-адресу в конфігурації OpenVPN. Якщо ви зміните його в конфігурації, змініть і його у своїх правилах.
-А ВПЕРЕД, -i tun0 -o eth0 -s 10.8.0.0/24 -j ПРИЙМАНО -A Вперед, -м стан - держава Встановлено, ЗВ'ЯЗАНО -j ПРИЙМАНО
Ведення журналів
Це хороша ідея вести журнали про все, що відхиляється iptables. У цьому випадку це означає все, що не вписується в жодне з цих правил. Журнали дозволяють вам побачити, чи є якась шкідлива діяльність чи будь-які спроби зробити щось шкідливе проти вашого сервера.
-A Вхід -m межа –ліміт 3 / min -j LOG –log-префікс “iptables_INPUT_denied:” –log-level 4
-А ВПЕРЕД, -м межа - обмеження 3 / хв -j LOG-префікс “iptables_FORWARD_denied:” –log-рівень 4
-A OUTPUT -m limit –limit 3 / min -j LOG –log-prefix “iptables_OUTPUT_denied:” –log-level 4
Відкиньте все інше
Нарешті, вам потрібно заблокувати все, що не відповідає вашим правилам. Це справді мета створення брандмауера в першу чергу.
-A ВХОД -j REJECT -A Вперед, -j REJECT -A ВИХІД -j REJECT
Закрийте файл COMMIT, щоб iptables дотримувалися всіх правил.
NAT маскування
Вам потрібні з'єднання з VPN, щоб вони виглядали так, ніби вони надходять із самого сервера. Цей фрагмент не може бути включений до звичайного файлу iptables, оскільки він використовує іншу таблицю. Це добре, хоча це лише один рядок.
$ sudo iptables -t nat -A РОЗМІСТАННЯ -s 10.8.0.0/24 -o eth0 -j МАСКВЕРАД
Переслати трафік IPv4
Вам потрібно буде включити переадресацію трафіку IPv4, щоб він міг проходити між VPN та фактичним мережевим інтерфейсом вашого сервера. Відкрийте /etc/sysctl.d/99-sysctl.conf з sudo.
Знайдіть рядок нижче та коментуйте його, видаливши #.
Зупиніть усі з'єднання 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-allrouters
Нарешті, ви можете написати правила iptables IPv6. Створіть для них файл за адресою / tmp / ipv6.
* filter -A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT
Дивіться, вони прості. Відкиньте все.
Імпорт і збереження в Iptables
Вам потрібно імпортувати ці правила, щоб вони могли щось робити. Отже, тепер саме час це зробити.
Почніть з очищення всього іншого, що там є. Ви не хочете, щоб якісь старі правила перешкоджали.
$ sudo iptables -F && sudo iptables -X
Імпортуйте правила IPv4 та IPv6.
$ sudo iptables-відновлення </ tmp / ipv4 $ sudo ip6tables-відновлення </ tmp / ipv6
Вам, мабуть, ніколи більше не хочеться цього робити. Отже, вам знадобиться новий пакет, щоб назавжди зберегти свої правила.
$ sudo apt встановити iptables-стійкі
Під час встановлення пакет запропонує зберегти існуючі правила. Відповідь "Так".
Якщо ви внесете зміни згодом, ви також можете оновити збережені конфігурації.
$ sudo сервіс netfilter-стійке збереження
Минуло деякий час, але ваш брандмауер готовий до роботи. На наступній сторінці ми вирішимо створення необхідних ключів шифрування.
Натисніть тут: Наступна сторінка