
В данной статье я рассмотрю один из самых эффективных и безопасных способов обеспечения себе свободы информации — собственный VPS сервер, находящийся далеко за границей и связанного с вами с помощью зашифрованного VPN туннеля. В отличие от tor или i2p конфиденциальность передаваемой информации гарантированна, вряд ли кто-то будет пытаться расшифровать ваши данные или тем более устраивать рейд на заграничный сервер.
Итак, какой VPS выбрать?
Бесплатный 🙂 Как это ни странно, но такие бывают, вот например список бесплатных VPS хостингов, который использую я. Конечно в основном все эти варианты пробные — сроком на 1 месяц, но ничто не мешает через месяц выбрать другой пробный сервис, благо список большой, но никто ничего не гарантирует, если вам нужно гарантированная конфиденциальность выбирайте платные сервера в Нидерландах, Чехии, Египте и других безопасных государствах. Но я расскажу про американский сервер, во-первых он самый удобный из халявных, а во вторых всё это затевается не только для безопасности, но и для покупки Nexus 7 через Play Store (ещё одно полезное применение).
Также следует смотреть на наличие «белого» IP адреса и на способ виртуализации сервера. Последнее не столь важно в выбранном мной способе, но если с серверами c изолированным ядром (например KVM) проблем с недостающими модулями обычно не возникает, то если ядро общее и не модифицируемое (например OpenVZ) нужно связываться с техподдержкой (но об этом ниже). И при регистрации систему лучше выбрать debian-подобную, она проще и инструкции ниже написаны именно для неё. Остальное на ваш вкус.
Установка и конфигурирование
На чтение первых двух абзацев, поиск и регистрацию VPS у вас ушло минут 15, а осталось ещё столько же. После того как вы получили или оплатили vps сервер, нужно с ним что-то делать, а именно поднимать на нем VPN. Для этого я использовал OpenVPN — бесплатный, безопасный и быстрый в настройке. Если вы выбрали VPS на базе популярного OpenVZ — скорее пишите в ТП, чтобы вам включили модули для поддержки iptables, NAT и tun, первые два скорее всего уже есть, а вот tun вряд ли. Пока техподдержка работает (надеюсь она не будет так быстра и не перезагрузит VPS в критический момент, лично мне повезло), мы подключимся к нему, поставим и настроим OpenVPN:
1 |
apt-get install openvpn |
Дальше есть два пути: быстрый и надежный.
Путь быстрый
Этот способ использует статичный ключ-пароль, но он не отличается безопасностью. Генерируем ключ:
1 2 |
cd /etc/openvpn openvpn --genkey --secret static.key |
Сохраняем его к себе на компьютер (cat + Ctrl-V) и создаем конфиг /etc/openvpn/tun0.conf:
1 2 3 4 |
/etc/openvpn/tun0.conf: dev tun0 ifconfig 192.168.1.1 192.168.1.2 secret /etc/openvpn/static.key |
Путь надежный
Этот способ активирует TLS/SSL шифрование на сервере, но он дольше в настройке. Скопируем кухню для создания ключей и сертификатов в папку с openvpn:
1 2 3 4 |
cd /etc/openvpn mkdir easy-rsa cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/ chmod -R +x easy-rsa/ |
Инициализируем скрипт:
1 2 3 |
cd easy-rsa/ source ./vars ./clean-all |
Создадим CA сертификат и ключ, нас попросят ввести даные о сертификате, вводим любые, хоть фиктивные:
1 |
./build-ca |
Создадим сертификат/ключ для сервера
1 |
./build-key-server server |
Сгенерируем ключи для шифрования SSL/TSL соединения
1 |
./build-dh |
И создадим ключи для себя:
1 |
./build-key myname |
В папке /etc/openvpn/easy-rsa/keys теперь есть все необходимые ключи, для авторизации нам нужны только myname.crt, myname.key (свои сертификат с ключом) и ca.crt (сертификат CA)
Создадим и отредактируем вашим любимым текстовым редактором конфиг /etc/openvpn/tun.conf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
port 1194 proto udp # если нужна гарантированная доставка пакетов, исользуем proto tcp dev tun ca /etc/openvpn/easy-rsa/keys/ca.crt # созданные ключи cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key # держать в секрете dh /etc/openvpn/easy-rsa/keys/dh1024.pem server 192.168.1.0 255.255.255.0 # наша виртуальная подсеть, можно выбрать и другую ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo # Сжатие трафика, должно быть включено и у клиента persist-key persist-tun status /var/log/openvpn-status.log # собственно логи log /var/log/openvpn.log verb 3 # уровень болтливости логов push "dhcp-option DNS 8.8.8.8" # выдаем по умолчанию DNS сервер от гугла |
Проверка
Теперь можно запустить OpenVPN сервер:
1 |
service openvpn start |
Если всё успешно, то мы сможем подключиться к серверу, используя скачанные выше сертификаты и ключи (не забудьте LZO сжатие на клиенте, если включили на сервере!). А если нет, то в логах скорее всего будет что-то вроде
Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory
Это означает, что техподдержка плохо работает и не включила нам tun модуль. А если всё хорошо, мы сможем пинговать VPS, но интернета ещё не будет, для этого нам нужен NAT:
1 2 3 |
echo 1 > /proc/sys/net/ipv4/ip_forward echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o venet0 -j SNAT --to-source SERVER_IP |
Если вы выбрали другую подсеть, то укажите её вместо 192.168.1.0/24. Вместо venet0 укажите интерфейс (привет ifconfig), который смотрит в интернет, а вместо SERVER_IP укажите внешний IP адрес VPS. Теперь можно сохранить настройки iptables:
1 |
iptables-save > /etc/iptables.rules |
В /etc/rc.local:
1 |
iptables-restore < /etc/iptables.rules |
Поставить на автозагрузку openvpn и перезагрузить openvpn сервер:
1 2 |
update-rc.d openvpn defaults service openvpn restart |
Всё! Я же говорил, что мы управимся за 30 минут?.