Linux: свой собственный VPN-сервер на CentOS

В эпоху жесткого контроля за рунетом многие пользователи столкнулись(или столкнутся) с проблемой доступности некоторых ресурсов. Я только ЗА внедрение технологий, позволяющие безопасно и без страха за родных жить в стране и нашем обществе. И я полностью поддерживаю госпожу Яровую. Реально ведь работает! Только не понятно, почему первые сайты, попавшие под "санкции", были всевозможные ресурсы p2p-сетей. И не важно, есть ли там запрещенный контент вообще. Пираты и всё!
Один михалков попросил – правительство сделало. Но власти не остановились на достигнутом и октябре в первом же чтении была принята поправка федерального закона «Об информации, информационных технологиях». «Ну и ладно!» - думали многие пользователи до 01.11.2017, используя популярные VPN-серверы, анонимайзеры и так полюбившийся американским спецслужбам браузер Тор. Что дальше? Чисто теоретически заблокировать получится лишь плагины-анонимайзеры ко всем популярным браузерам ибо VPN, как сервис закрыть не получится, а Тор и клиенты к сервисам-анонимайзерам за пределами возможностей площадки М9. Штрафы за использование запрещенных средств установлены лишь на провайдеров, которые итак прогосударственные и выполняют требования очень быстро. "Физиков" ПОКА не трогают. К чему ликбез? Пора заводить персональные VPN-туннели. Не большая стоимость аренды VPS-серверов за пределами РФ, а пользы в них все больше и больше. Для начала я взял стандартный тип туннеля – PPTP с протоколом MS-CHAP v2 и 128-ми битным шифрованием трафика. Его проще всего настроить в Windows, т.к. не требует установки дополнительного ПО.

Приступим к установке и настройке собственного VPN-сервера:
yum install pptpd -y

Сразу включим IP-маршрутизацию:

cp /etc/sysctl.conf /etc/sysctl.conf.old; echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf; sysctl -p

Приступим к основным настройкам pptpd:

cp /etc/pptpd.conf /etc/pptpd.conf.old; mcedit /etc/pptpd.conf

Данный параметр включен по умолчанию и отвечает за обращение к файлу с основными настройками:

option /etc/ppp/pptpd-options

Запись небольшого лога по факту подключения и отключения пользователей:

logwtmp

Укажем IP-адрес нашего сервера в создаваемой виртуальной сети:

localip 10.0.0.1

И выделяем некий диапазон IP-адресов, назначаемых клиентам. Через мой сервер «бегать» будут всего 4 устройства, поэтому я выделил 4 адреса(ибо нефиг!)

remoteip 10.0.0.10-13

Продолжаем с более «тонким» настройкам нашего сервиса:

cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.old; mcedit /etc/ppp/options.pptpd

Название сервиса:

name pptpd

Запретим использование старых протоколов:

refuse-pap
refuse-chap
refuse-mschap

Разрешаем к использованию MS-CHAP v2:

require-mschap-v2

Указываем требование к шифрованию:

require-mppe-128

Предоставим клиентам DNS-серверы гугла:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Блокируем соединения к «псевдо-терминалам»:

lock

Отключаем BSD-компрессию, т.к. анализировать свой же трафик мы не будем:

nobsdcomp

Также отключаем компрессию Вана Якобсона ибо машин на старых ОС не предвидится да и анализ собственного трафика меня все еще не интересует:

novj
novjccomp

Отключаем вывод диагностических и отладочных сообщений. Включим, если что-то пойдет не так:

nologfd

Прерываем подключения, которые не используются 2,5 часа

idle 8888

Далее приступим к настройкам авторизации пользователей:

cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.old; mcedit /etc/ppp/chap-secrets

Для автоматического назначения IP-адреса пользователя tralyalya

tralyalya pptpd "password" *

Если есть необходимость жесткой привязки IP-адреса к пользователю blablabla пишем:

blablabla pptpd "password" 10.0.0.11

Скорректируем права и владельца файла:

chmod 600 /etc/ppp/chap-secrets && chown root:root /etc/ppp/chap-secrets

Перезапускаем службу и разрешаем ее автозагрузку:

systemctl restart pptpd.service; systemctl enable pptpd.service

На всякий случай уточним порт pptpd(по умолчанию он 1723):

netstat -nlptu | grep pptpd
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT; iptables -A INPUT -p gre -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; service iptables save && systemctl restart iptables

Готово! =)

Posted in Linux on Oct 09, 2017