Шифрани свою сеть!

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

Xakep, номер #059, стр. 059-082-1

(forb@real.xakep.ru)

Ставим себе VPN

Диалапщиков становится все меньше и меньше - народ переходит на etheet. Но в то же время с такими изменениями падает и секьюрность сети. Ведь чистый etheet, в общем-то, ничем не защищен - весь трафик ходит без какого-либо шифрования. Естественно, существуют такие штуки, как SSL-туннелирование и подобные ей программы, позволяющие шифровать данные в сети. Но самый оптимальный выход - создание виртуальной частной сети. Об этом мы сегодня и поговорим.

Зачем это нужно?

VPN поддерживает шифрование трафика, проходящего через интерфейс. Благодаря этому VPN обрела большую популярность среди провайдеров. Тем не менее, установить сам VPN довольно сложная задача. Но не бойся! Вместе мы сможем все :). Установим нашу с тобой VPN на каком-нибудь Linux-сервере. Почему именно на Linux? Да просто я имел дело с VPN-шлюзом на WinNT с базой более тысячи пользователей, и этот шлюз постоянно зависал. Что ж, винда есть винда, и тут нечему удивляться.

Чтобы добиться нормальной многопользовательской поддержки на VPN-гейте, придется пройти семь кругов ада ;). Дело в том, что одной установки pptpd (обеспечивает ppp-туннель между сервером и клиентом) недостаточно. Нам необходимо еще добавить возможность авторизации пользователей с учетом таких вещей, как подсчет трафика, тарификация по времени и т.д. Сделаем мы это при помощи пакета freenibs, который уже долгое время выпускает наш соотечественник Сергей Деркач aka Neon.

В общем, если ты являешься администратором корпоративной сети или просто повернут на построении VPN, эта статья для тебя.

Список ингредиентов

Для корректной работы сети нам придется установить множество дополнительного софта. В первую очередь поставим MySQL (www.mysql.com). В его архиве лежит сервер и клиент (пользователи и тарифы будут занесены в sql-базу). Второе - это pptpd. Он позволяет мутить туннель между клиентами и передавать данные по pppd. Этот демон активно работает с portslave и является аналогом mgetty, но более совершенным. Portslave - это один из многих методов авторизации, поддерживающихся демоном radiusd. А вот радиус как раз и работает напрямую с freenibs (об этом проекте я говорил чуть выше). Если ты разобрался в этих запутанных взаимосвязях - возьми с полки пирожок ;). А вообще, ты все поймешь, когда будешь настраивать этот софт.

Подготовка базы к работе

Про установку mysqld я рассказывать не буду. С этим ты разберешься сам, т.к. это совсем несложно. Гораздо интереснее обсудить установку freenibs. Проект весит всего несколько килобайт, а пользы от него на несколько гигов. В общем, сливай его - будем ставить. После скачки freenibs распакуй его и перемести все содержимое архива во freeradius.

Но перед инсталляцией еще придется скачать и поставить radiusclient (его библиотеки и хедеры нужны серверу). Клиент также пригодится нам и при тестировании работы всей системы. Теперь надо выполнить три заклинания: ./configure, make и make install. В итоге пакет должен нормально установиться. В системе у тебя появится каталог PREFIX/etc/raddb (где PREFIX - директория, в которую был установлен радиус). В нем находится бесчисленное множество конфигурационных файлов, которые мы будем править. Но для начала нам надо создать структуру базы данных freenibs. Для этого заходи в каталог freeradius/src/modules/rlm_nibs/drivers/rlm_nibs_mysql. Там лежит дамп датабазы под названием nibs_mysql.sql. В этом дампе поменяй пароль для дальнейшего доступа в систему. Сам пароль задается в конце строки SET PASSWORD. После его изменения надо записать дамп в базу:

Содержание  Вперед на стр. 059-082-2
ttfb: 3.4408569335938 ms