Организуем доступ в Интернет с использованием биллинговой системы FreeNIBS::Журнал СА 9.2005
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6236
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6943
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4229
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3014
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3811
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3827
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6323
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3174
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3466
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7283
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10649
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12370
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14004
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9130
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7083
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5392
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4619
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3431
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3160
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3405
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3029
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Организуем доступ в Интернет с использованием биллинговой системы FreeNIBS

Архив номеров / 2005 / Выпуск №9 (34) / Организуем доступ в Интернет с использованием биллинговой системы FreeNIBS

Рубрика: Администрирование /  Продукты и решения

ЕВГЕНИЙ ЛИТВИНЕНКО

Организуем доступ в Интернет с использованием биллинговой системы FreeNIBS

Одна из ваших основных задач – предоставить пользователям возможность доступа в Интернет из локальной сети. Традиционно используемый для этой цели прокси-сервер имеет некоторые недостатки, которых нет у системы, предлагаемой вам сегодня.

Сегодня мы создадим систему, которая обеспечит пользователям локальной сети доступ в Интернет. Для передачи данных внутри сети будем использовать технологию VPN. Подсчет интернет-трафика ведется с помощью биллинговой системы FreeNIBS. Настройка производилась в популярном российском дистрибутиве ALT Linux Master 2.4.

Напомню, что аббревиатура VPN расшифровывается как Virtual Private Network – виртуальная частная сеть. Суть этой технологии заключается в том, что при подключении к VPN-серверу при помощи специального программного обеспечения поверх общедоступной сети в уже установленном соединении организуется зашифрованный канал, через который передается интернет-трафик.

Одним из вариантов применения этой технологии является предоставление компьютерам локальной сети выхода в Интернет. То есть на сервере, имеющем выход в Интернет, работает служба, которая при подключении к ней клиентского компьютера предоставляет ему доступ к глобальной сети.

Использование данной технологии предоставляет несколько преимуществ, которых не имеет аналогичная система, построенная с использованием прокси-сервера. Во-первых, весь передаваемый трафик шифруется, что позволяет избежать перехвата данных в локальной сети. Во-вторых, используя прокси-сервер, очень трудно организовать корректное отключение пользователя при превышении лимита на трафик. Это связано с тем, что подсчет трафика ведется с использованием протоколов прокси-сервера, в которые информация о трафике записывается только по окончании скачивания файла. То есть если у пользователя до превышения лимита осталось 2 Мб, а он решит закачать файл размером 10 Мб, то прокси-сервер позволит это сделать. Главное, чтобы не оборвалось соединение.

Настройка сервера VPN

Сети VPN используют протокол PPTP (Point-to-Point Tunneling Protocol), который реализует пакет pptpd. Компиляция и установка пакета описаны в разделе «Пересборка пакетов». Аналогично собирается и устанавливается пакет pppd, реализующий протокол связи PPP (Point-to-Point Protocol). PPTP использует PPP при установке соединения с клиентским компьютером. Сервис pppd использует конфигурационный файл /etc/ppp/options. Демон – /etc/pptpd.conf и /etc/ppp/options.pptpd (последний указывается непосредственно в pptpd.conf и может быть изменён на файл с другим именем).

Сперва настраиваем и тестируем связку pptpd+pppd в «чистом» виде, используя для авторизации пользователей данные, хранящиеся в /etc/ppp/chap-secrets.

В файле /etc/pptpd.conf дописываются следующие строки:

// предельная скорость соединения, бит/с

speed 115200

// подключаем файл с параметрами

option /etc/ppp/options.pptpd

// включаем отладочный режим

debug

// IP-адрес на стороне сервера. Используется для установки двухточечного соединения

localip 192.168.100.1

// IP-адрес на стороне клиента. Указывается один адрес или  диапазон адресов, один из которых выдается клиентскому

// компьютеру при установке VPN-соединения. В данном примере выделяется диапазон адресов: 192.168.101.1-192.168.101.100

remoteip 192.168.101.1-100

Настройки VPN-подключения описаны в файле /etc/ppp/options.pptpd.

Для VPN-соединения, использующего MPPE-шифрование, необходимо отключить алгоритмы сжатия передаваемых данных:

nobsdcomp

nodeflate

Pppd поддерживает несколько протоколов аутентификации. Это PAP, CHAP, MSCHAP. Протоколы семейства CHAP более надежны, нежели PAP, так как PAP передает пароль по сети в открытом виде, а CHAP – только его хеш-сумму. Клиентами Windows используется протокол авторизации MSCHAP и его обновленная версия MSCHAP-v2. Необходимо отключить ненужные протоколы и разрешить использование только протоколов MSCHAP/MSCHAP-v2:

refuse-pap

refuse-chap

require-mschap

require-mschapv2

Всегда существует опасность перехвата данных в локальной сети. Поэтому в целях безопасности устанавливаем принудительное шифрование трафика:

require-mppe

Для проверки работоспособности VPN-сервера создаем тестовую учетную запись. Пользовательские данные хранятся в файле /etc/ppp/chap-secrets в следующем формате:

имя_пользователя имя_сервера   пароль IP-адрес

Например:

test       * 123  192.168.101.1

Имя сервера, как правило, не указывают. Вместо него ставится символ «*».

Теперь можно подключаться к серверу. Если возникли какие-то проблемы – изучайте протоколы.

После того как заработала связка pptpd+pppd, настраивается система авторизации FreeRadius и система подсчета трафика FreeNIBS.

Настройка биллинговой системы

Сама по себе вышесозданная система не обладает гибкостью. А перед системным администратором часто стоит задача – распределить интернет-трафик между пользователями. Хорошим тоном является выделение для пользователя фиксированного количества мегабайт интернет-трафика в месяц. Отсюда вытекает необходимость вести статистику для каждого пользователя, которая содержала бы количество принятых и переданных байт за одно подключение и целиком за месяц. Все эти возможности реализует пакет FreeNIBS (Neon internet Billing System for FreeRadius). FreeNIBS является надстройкой для пакета FreeRadius. FreeRadius – это одна из реализаций протокола RADIUS (Remote Authentication Dial In User Service), который служит для авторизации удаленных пользователей. Первоначально протокол разрабатывался для больших модемных пулов, но реализация получилась настолько удачной, что сейчас он используется не только для DialUP-подключений, но и для IP-телефонии и организации доступа в VPN-сети. FreeNIBS использует FreeRadius для авторизации пользователей.

Пакет собирается из исходников. В результате компиляции получается несколько пакетов. Основными являются freenibs-0.0.3-0.9.3-alt4.i686.rpm и freeradius-0.9.3-alt4.i686.rpm. Остальные пакеты добавляют в программу поддержку различных баз данных и скриптовых языков. В данном проекте используется сервер баз данных MySQL, поэтому дополнительно устанавливается пакет freeradius-mysql-0.9.3-alt4.i686.rpm.

FreeRadius состоит из двух частей – клиента и сервера. Сервер реализует протокол RADIUS. Клиентом является сервер доступа (NAS – Network Access Server), в данном случае это VPN-сервер. Для того чтобы pptp взаимодействовал с Radius-сервером, в файл /etc/ppp/options.pptpd добавляем следующие строки:

plugin radius.so

plugin radattr.so

В файле /etc/raddb/clients.conf перечисляются все клиенты, которые будут обращаться к Radius-серверу. Так как в нашем случае он один, то файл содержит только следующее:

client 127.0.0.1 {

secret = testing123

shortname = localhost

nastype = other

}

Здесь говорится, что клиент будет обращаться с локальной машины (адрес 127.0.0.1). Параметр secret содержит ключевое слово, которое позволяет серверу идентифицировать отдельных клиентов. Параметр shortname содержит имя (краткое) хоста клиента, а в параметре nastype хранится тип клиента. В данном случае он не совпадает со стандартными, поэтому там указывается значение other.

Настройки клиента RADIUS хранятся в каталоге /etc/radiusclient. А записи о сервере хранятся в файле /etc/radiusclient/servers, где необходимо лишь записать адрес сервера и ключевое слово:

localhost  testing123

Для хранения пользовательских аккаунтов и статистики используется база данных MySQL. Параметры для доступа к базе содержатся в файле /etc/raddb/nibs.conf. Редактируются следующие строки:

server = "localhost"

port = "3306"

login = "freenibs"

password = "password"

Здесь стоит упомянуть, что FreeNIBS может работать с пользователями в двух режимах – простом и профессиональном. В простом режиме для всех пользователей определенной группы используются единые настройки группы. В профессиональном режиме у каждого пользователя могут быть индивидуальные настройки.

Далее необходимо настроить саму базу данных. В пакете исходных текстов в каталоге freeradius/src/modules/rlm_nibs/drivers/rlm_nibs_mysql (здесь и далее если не указан абсолютный путь, то речь идёт об исходных текстах пакета FreeNIBS) находятся файлы с описанием структур таблиц. Файл nibs_mysql.sql содержит набор SQL-команд для создания базы данных freenibs и таблиц в ней. Файл nibs_mysql_prof_add.sql содержит запросы, модифицирующие ранее созданные таблицы, для их использования в профессиональном режиме.

В файле nibs_mysql.sql редактируется строка с паролем для пользователя базы данных freenibs. После этого запросы необходимо передать MySQL. Это делается следующими командами:

#mysql -u root -p < nibs_mysql.sql

#mysql -u root -p < nibs_mysql_prof_add.sql

Чтобы включить профессиональный режим, необходимо, помимо модификации таблиц, раскомментировать следующую строку в файле nibs.conf (и не забыть перезапустить FreeRadius, если он уже работает):

authorize_query_prof = "SELECT tos, do_with_tos, direction, fixed, fixed_cost, activation_time, total_time_limit,

month_time_limit, week_time_limit, day_time_limit, total_traffic_limit, month_traffic_limit, week_traffic_limit,

day_traffic_limit, total_money_limit, month_money_limit, week_money_limit, day_money_limit, login_time, huntgroup_name,

simultaneous_use, port_limit, session_timeout, idle_timeout, allowed_prefixes, no_pass, no_acct, allow_callback,

other_params FROM ${auth_table} WHERE user = "%{SQL-User-Name}""

Здесь описывается запрос к базе данных, который производится во время авторизации пользователя.

Чтобы отслеживать IP-адреса компьютеров, с которых производится подключение, в файл /etc/pptpd.conf добавляется следующая строка:

pppd /usr/sbin/call-pppd

call-pppd – это bash-скрипт, производящий запуск pppd с дополнительными параметрами, IP-адресом машины клиента и её MAC-адресом. Эта позволяет отслеживать администратору, с каких именно компьютеров производится подключение.

При превышении лимита на трафик пользователь должен быть отключен от сервера. За это отвечает специальный скрипт, путь к которому указывается в файле /etc/raddb/nibs.conf, в параметре kill_program. С пакетом FreeNIBS идет специальный скрипт для отключения пользователей, «заточенный» под протокол PPP:

kill_program = "${sbin_dir}/pppkill %{Framed-IP-Address}"

Работа с пользователями и просмотр статистики производятся через веб-интерфейс. Он предназначен для работы на виртуальном сервере. После создания виртуального хоста файлы веб-интерфейса, находящиеся в src/modules/rlm_nibs/utils/web, копируются в соответствующий каталог. Так как интерфейсов два (администрирование системы и просмотр статистики), то и виртуальных хостов соответственно будет столько же.

Необходимо отредактировать только файл include/mysql.php и прописать в нём соответствующие имя пользователя и пароль для доступа к базе данных.

Веб-интерфейс можно дорабатывать, добавляя новые возможности. В данном проекте была добавлена возможность сброса пользователей с линии на странице «Online». Для этого в существующий файл online.php была добавлена ссылка для вызова скрипта kill.php. Скрипту передается параметр – IP-адрес пользователя, которого необходимо «сбросить».

Файл kill.php содержит следующие строки:

<?php

exec("sudo /usr/sbin/pppkill $ip");

header("Location:online.php");

?>

pppkill является привилегированной командой. То есть вызвать ее можно либо пользователю root, либо с помощью утилиты sudo. Так как php-скрипты выполняются от имени пользователя apache, необходимо разрешить ему выполнять эту команду. Для этого в файле /etc/sudoers дописывается следующая строка:

apache     ALL = NOPASSWD: /usr/sbin/pppkill

Теперь можно создавать пакеты и пользователей. На первых этапах рекомендуется запускать FreeRadius, не используя утилиту service, а из командной строки с параметром -X:

# radiusd -X

Запущенный таким образом FreeRadius отображает подробные логи в текущей консоли.

Настройка преобразования сетевых адресов (NAT) и фильтрации пакетов

Существуют несколько диапазонов IP-адресов, которые используются только для адресации в локальных сетях. То есть в сети Интернет эти адреса не используются. К ним относятся подсеть класса A 10.x.x.x и подсети класса C 192.168.x.x (также существует диапазон сетей класса B, но он практически не используется).

Провайдер интернет-услуг чаще всего предоставляет только один уникальный адрес, который присваивается интерфейсу, через который осуществляется доступ в сеть Интернет. Для того чтобы компьютеры локальной сети могли получить доступ в Интернет, используется технология преобразования сетевых адресов NAT (Network Address Translation). Суть этой технологии состоит в следующем – во всех пакетах, которые направлены в сеть Интернет, в заголовке локальный адрес отправителя заменяется на внешний. В ALM-системe NAT реализует утилита iptables.

Также в круг задач iptables входит фильтрация сетевых пакетов по заданным критериям. Это необходимо в целях безопасности. Используя iptables, можно оградить доступ к локальным службам извне. А также запретить прохождение локальных сетевых пакетов по внешним сетевым интерфейсам.

Фильтрацию пакетов можно организовать двумя способами. Запрещать все пакеты и разрешать только необходимые. А можно пропускать все пакеты, запрещая явно только те пакеты, которые являются нежелательными. Однако вторая политика чревата очень большими неприятностями.

Утилита iptables управляется из командной строки и имеет огромное число параметров. Для удобства администрирования создается скрипт, в котором содержатся все необходимые команды. Скрипт помещается в каталог /etc/ppp/ip-up.d. Это гарантирует запуск скрипта после соединения с сетью Интернет.

Чтобы получить возможность передачи пакетов между сетевыми интерфейсами (маршрутизация), дается следующая команда:

# echo "1" > /proc/sys/net/ipv4/ip_forward

Данная команда записывает 1 в файл, находящийся в виртуальной файловой системе /proc.

Перед использованием iptables необходимо отменить все ранее указанные правила (если таковые существовали). Для этого запускаем утилиту с ключом -F:

# iptables -F

Теперь можно приступать к созданию правил. Здесь необходимо выбрать критерии, по которым фильтруются пакеты. Чаще всего это сетевой адрес отправителя/получателя, порт и сетевой интерфейс. Для того чтобы запретить все пакеты, адресуемые извне на порт 3306 (MySQL), дается следующая команда:

# iptables -A INPUT -p tcp -s ! 192.168.0.0/16 -d 195.5.28.227 --destination-port 3306 -j DROP

Здесь:

  • в параметре -p указывается протокол (tcp);
  • в параметре -s указывается адрес отправителя (в данном случае все адреса, не принадлежащие подсети 192.168.0.0./16);
  • в параметре -d указывается адрес получателя (здесь адрес, получаемый от провайдера при подключении);
  • в параметре --destination-port указывается номер порта (3306);
  • в параметре -j указываем действие, которое необходимо совершить с пакетом, который удовлетворяет описанным критериям (в данном случае уничтожить).

После того как все правила для уничтожения пакетов заданы, необходимо разрешить прохождение всех остальных пакетов:

# iptables -P INPUT ACCEPT

# iptables -P OUTPUT ACCEPT

# iptables -P FORWARD ACCEPT

Для того чтобы заработала система преобразования сетевых адресов, необходимо дать команду:

# iptables -A POSTROUTING -t nat -s $IP_REMOTE -o $PPP_MODEM -j SNAT --to-source внешний_ip_адрес

В процессе настройки было обнаружено, что операционная система Windows XP некорректно передает данные в сети VPN. Для корректной работы необходимо явно задать размер фрагментированных пакетов:

# iptables -I POSTROUTING 1 -t nat -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1024

После того как заработала система преобразования сетевых адресов – пользователи локальной сети, – получают возможность практически полноценной работы в сети Интернет. К недостаткам данной системы (точнее, это относится только к NAT) причислить невозможность работы клиентов с файлообменными p2p-сетями (например, EDonkey). Это связано с тем, что сервер файлообменной сети пытается установить прямое соединение с клиентом. Выйти из положения можно, включив форвардинг портов, которые использует p2p-клиент. В результате работы пользователи получают доступ в сеть Интернет, а администратор – гибкий инструмент управления этой системой.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru