Шифрани свою сеть!
Докучаев Дмитрий aka Forb
Xakep, номер #059, стр. 059-082-3
Теперь открываем clients.conf. Тут надо убедиться, что директива secret (во вкладке client 127.0.0.1 { }) совпадает с паролем, а shortname равен localhost. И последнее - сделаем изменение в конфиге naslist. Файл содержит список Network Access Servers. Добавим в него следующую запись:
localhost local portslave
Здесь local - краткое название клиента, а portslave - тип девайса, который будет подключаться к радиусу (значение может быть livingston, cisco и т.д.).
Мутим туннель
Как ты, наверное, догадался, в нашей цепи не хватает демона pptpd - этот сервис будет принимать запросы от клиентов и запускать pppd, интегрированный с портслейвом. Portslave связывается с радиусом (при помощи клиента), а последний произведет авторизацию через модуль freenibs.
Установить pptpd очень просто. Сложнее исправить его конфигурационные файлы - этим мы сейчас и займемся. Во-первых, найди файл /etc/pptpd.conf. В нем содержатся опции демона. Исправь их на следующее:
speed 115200
option /etc/options.pptpd
pppd /usr/sbin/pptp-portslave
localip 192.168.0.1
remoteip 192.168.0.1-254
Что мы делаем? Мы устанавливаем максимальную скорость, прописываем файл с опциями, указываем скрипт к pppd, который содержит различные переменные (о них чуть позже), и напоследок раздаем IP-адреса: локальный (относительно сервера) и удаленный (для клиентов). По remoteip видно, что pptpd прекрасно понимает диапазоны адресов.
Все опции демона, которые относятся к стандартному шифрованию, находятся в /etc/options.pptpd. Вот их полный список:
Таблица: Опции pppd
require-chap
require-chapms-v2
+mppe-40
+mppe-128+mppe-stateless
ms-dns ns1.server.ru
noipx
asyncmap 0
auth
Расшифровку параметров я дам чуть ниже. Пока это не так важно - главное понять, что pppd должен юзать модуль ppp_mppe.o (не забудь загрузить его в ядро).
Теперь скрипт pptpd. Он задает важные переменные окружения:
Таблица: Стартовый скрипт pptp-portslave
#!/bin/bash
export PORTSLAVELOGNAME="AutoPPP"
export PORTSLAVE_SESSION=`date +%s``printf "%X" $RANDOM`
export PORTSLAVE_START_TIME=`date +%s`
export PORTSLAVE_DO_ACCT="1"
exec /usr/local/sbin/pppd-radius $*
Вроде все готово. Осталось запустить все сервисы и подготовить сеть для работы. В первую очередь запускается mysqld, затем radiusd и лишь потом pptpd. Но в тестовом режиме не спеши этого делать, т.к. у нас еще не составлена таблица юзеров, использующих VPN-соединения.
Администрирование через web
Для добавления тарифов и юзеров скачиваем пакет web-администрирования с сайта FreeNibs (http://nibs.net.ua). Для успешного старта скриптов тебе придется создать какой-нибудь дополнительный домен (например, admin.your.site.ru). В противном случае, ты будешь ковыряться в сорсах всех сценариев.
Итак, после создания домена, переходим в корень папки со скриптами. В директории includes/ меняем пароль на доступ к БД и немного модифицируем файл .htaccess. В .htaccess необходимо изменить prefix-пути для корректной работы скриптов. Напоследок убедись, что на сервере установлен PHP в нормальном, рабочем состоянии.