Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

VPN по-хакерски

Докучаев Дмитрий aka Forb

Хакер, номер #074, стр. 074-052-3


1. Вписать в /etc/ipnat.rules следующие правила:

map fxp0 192.168.0.2/32 -> ВНЕШНИЙ_АДРЕС/32

map fxp0 192.168.0.4/32 -> ВНЕШНИЙ_АДРЕС/32

2. Подгрузить модуль ipl.ko командой kldload ipl.ko.

3. Включить форвард пакетов командой sysctl –w net.inet.ip.forwarding=1.

4. Применить правила ipnat: ipnat –f /etc/ipnat.rules.

Если все сделано правильно, пакеты будут успешно транслироваться.

Запускаем и наслаждаемся

Теперь самое время проверить работу mpd - не зря же мы все настраивали :). Запускай /usr/local/sbin/mpd и увидишь какие-то непонятные строки. Если в них нет ошибок, то можно нажимать ctrl+c и перезапускать mpd с параметром –b. Теперь сервис будет работать в режиме демона, и именно так его следует прописывать в загрузочных сценариях FreeBSD.

После этого создай новое VPN-соединение с обязательным использованием шифрования и поддержкой дефолтного шлюза. Соединяйся и пробуй обратиться к какому-нибудь узлу. Получил ответ? Поздравляю! Это означает, что теперь твоя защита стала абсолютной :). Тебе не нужно прятаться за проксики и соксы, ведь у тебя уже есть маскирующий IP-адрес.

Умное и нестандартное решение

Помимо сервисов, совместимых с продуктами Microsoft, существуют проекты, юзающие собственный протокол передачи данных. Один из таких представителей – OpenVPN. Коренное отличие от других VPN-демонов можно узреть в шифровании. Трафик криптуется с помощью RSA-ключей стойким 1024-битным алгоритмом с возможностью увеличения до 2048 бит. Также есть поддержка сертификатов, как серверных, так и клиентских, и статических ключиков авторизации. Отлично продуман механизм сжатия данных – для этого используется внешняя библиотека lzo. Скорость передачи особенно актуальна для диалапщиков и любителей GPRS, поэтому они в первую очередь оценят прелести OpenVPN. А ты, в свою очередь, позаботишься о правильной установке проекта. Итак, поехали.

Скачивай lzo с www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz и инсталлируй эту библиотеку. Иначе у тебя не соберется OpenVPN. Затем убедись, что на твоей машине стоит OpenSSL – это также важно. Если все депендсы удовлетворены, скачивай с http://prdownloads.sourceforge.net/openvpn/openvpn-2.0_rc1.tar.gz сорцы демона и собирай проект.

Самое сложное – определиться с методом авторизации пользователей. Я решил, что выдавать каждому юзеру сертификат – занятие геморройное, поэтому ограничился парой «login:password» и доверительным сертификатом сервера. Думаю, это решение тебе также подойдет. Я знаю один VPN-сервис, админы которого выдают своим клиентам постоянные ключи безо всяких паролей. В принципе, это дело вкуса, и я не буду навязывать свое мнение. Но о настройке расскажу :).

Переходи в каталог /usr/local/etc/openvpn и создавай папку ssl. Для упорядоченности. Затем передвигайся в этот каталог и сгенерируй сертификат с приватным ключом. Это делается такой командой:

openssl req -nodes -new -x509 -keyout vpn.key -out vpn.crt -days 3650

Теперь создаем параметры шифрования:

Назад на стр. 074-052-2  Содержание  Вперед на стр. 074-052-4