From: OneROFL <helium@rambler.ru.>
Newsgroups: email
Date: Mon, 29 Jun 2008 17:02:14 +0000 (UTC)
Subject: Настройка маршрутизатора на основе Debian/GNU Linux, OpenVPN и NetAMS 3.3.5
Настройка роутера Debian/GNU Linux с учетом трафика на основе NetAMS
3.3.5 и iptables,а также создание ВПН канала для связи двух удаленных
друг от друга офисов на базе OpenVPN.
Есть два офиса(контроллер домена на базе Windows 2003 Server,
рабочие станции на базе Windows XP SP2), расположенные на
большом расстоянии друг от друга. Необходимо в реальном времени
обеспечить доступ удаленному офису к ресурсам главного офиса и
наоборот, а именно:
1. Доступ к файлам и принтерам
2. Доступ удаленного офиса к серверу терминалов, т.е. к
справочной системе Консультант+ и к программе 1С Бухгалтерия
3. Обеспечить прозрачность удаленной сети для пользователей.
Главный офис.
В главном офисе находятся: "основной" контроллер домена, все
файловые сервера, сервер терминалов и будущий основной роутер
Debian/GNU Linux. Т.е. будет только один компьютер на базе Linux
и он должен уметь следующее:
1. "Раздавать интернет" пользователям, используя авторизацию
и квотирование трафика.
2. Делать возможным взаимодействие удаленных КПК(подключенных к интернету)
с программой 1С бухгалтерия.
3. Принимать внешние запросы на ВПН соединение, т.е. - ВПН сервер.
Удаленный офис.
В удаленном офисе расположены: рабочие станции и второй роутер на
базе Debian/GNU Linux. Функции которого:
Установка и автоматическая поддержка ВПН соединения с роутером
главного офиса.
Установка и настройка роутера в главном офисе.
Рассмотрим более детально, что должен делать главный
интернет сервер:
1. Конфигурация NetAMS:
а) Авторизация пользователей для доступа в интернет через WEB по паролю без
привязки к IP адресу.
б) Квотирование трафика.
г) Некоторым пользователям разрешено пользоваться только ICQ.
д) Учет локального-бесплатного трафика, который не входит в квоты.
е) Учет ICQ-трафика(порт 5190).
2. Конфигурация OpenVPN:
а) Маршрутизация пакетов от клиента OpenVPN в локальную сеть обеспечивается
подключением типа мост TAP интерфеса сервера OpenVPN к сетевому интерфейсу
локальной сети.
б) Автоматическая установка ВПН клиенту адреса DNS сервера локальной сети.
3. Конфигурация файрвола(политика: то что явно не разрешено - запрещено):
а) Запрещена любая установка соединений из вне непосредственно с сервером,
кроме ВПН(UDP:1194) и Webmin(TCP:10000)
б) Из локальной сети разрешено обращаться напрямую к серверу только(+ пункт а):
ssh(порт 22) и 80 порт(авторизация через WEB в NetAMS для получения
пользователями локальной сети доступа в интернет).
в) Перенаправление(порт форвардинг) запросов из вне на сервер терминалов по порту
5555(взаимодействие с КПК) протокол TCP.
г) ДНС запросы(TCP, UDP 53 порт) идут напрямую, минуя NetAMS.
д) Разрешена почта только "провайдерная"(бесплатная) и электронная отчетность,
и она(почта) так же идет напрямую, минуя NetAMS. Для обеспечения надежности
работы организации. В случае падения NetAMS главная артерия документооборота
будет продолжать функционировать в штатном режиме.
ж) Пользователям локальной сети после WEB авторизации в NetAMS разрешено
обращение в интернет по следующим портам протокола TCP: 80:82,443,1024:65535.
з) Разрешено обращение VPN клиентов, пользователей как главного, так и удаленного
офисов друг к другу по любым протоколам и портам.
Нам потребуются большие разделы для логов(/var) и для устанавливаемого ПО(/usr),
для раздела /home не нужно много места, т.к. не будет пользователей, использующих
роутер как файловый сервер.
В первую очередь необходимо сконфигурировать сетевой интерфейс, подключенный к
интернету, т.к. сразу же будут установлены и настроены обновления безопасности системы.
После инсталляции установим пакет mc (Midnight Commander).
Сначала добавляем все 3 DVD дистрибутива "в базу" системы установки apt.
Добавление DVD дистрибутива в базу:
apt-cdrom add
После вставляем наш DVD в DVD-дисковод и нажимаем ввод.
Повторяем для всех 3-х DVD.
Установка пакета mc:
apt-get install mc
Далее для удобства будущего удаленного администрирования устанавливаем пакет ssh.
apt-get install ssh
Для того чтобы подключиться к нашему серверу из MS Windows необходима программа putty.
В putty: вводим адрес сервера(небходимо сконфигурировать 2й сетевой интерфейс), а так же
меняем кодировку(Window-Trancelation) на UTF-8(опционально).
Конфигурируем 2-й сетевой интерфейс(/etc/network/interfaces), например:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth1
iface eth1 inet static
address IP адресс провайдера
netmask 255.255.255.X
network Х.Х.Х.0
broadcast Х.Х.Х.255
gateway Х.Х.Х.Х
dns-nameservers Х.Х.Х.X Х.Х.Х.Х
auto eth1
iface eth0 inet static
address 192.168.Х.Х
netmask 255.255.255.0
auto eth0
После необходимо перезапустить "сеть", чтобы ОС установила новые IP адреса:
/etc/init.d/networking restart
Вводим команду ifconfig и проверяем установленную конфигурацию
сетевых интерфейсов. И команду route -N, в маршрутах должен быть адрес шлюза
провайдера, который указан в файле /etc/network/interfaces.
Адреса ДНС серверов находятся в файле /etc/resolf.conf:
nameserver X.X.X.X
nameserver X.X.X.X
Теперь необходимо проверить, как все работает, вводим команду ping с
параметрами: адрес компьютера в локальной сети и адрес шлюза провайдера,
например:
ping 192.168.1.3
ping 82.67.176.1
Пишем скрипт, чтобы обесречить доступ в интернет пользователям локальной сети.
Назовем скрип goinet и установим права на запуск, запускаем:
После запуска этого скрипта на одной из рабочих станций под управлением
MS Windows устанавливаем адрес шлюза = адресу нашего Линукс роутера в
локальной сети, так же адреса ДНС серверов провайдера, пингуем шлюз провайдера
и заходим в интернет.
Если все работает, значит можно приступать к установке NetAMS.
Настройку файрвола нужно проводить после установки и конфигурирования системы
учета трафика и ВПН, чтобы свести к минимуму возможные конфиликты ПО с файрволом.
*В случае дублирования IP адреса в локальной сети нашего интернет сервера
*с одной из рабочих станций будут непредсказуемые ошибки во всей сети.
*Если при пинговании одного из IP адресов локальной сети с роутера возникают
*потери пакетов, то одна из возможных причин - это дублирование IP адреса.
Установка и настройка NetAMS 3.3.5 (http://www.netams.com).
1.Устанавливаем пакеты необходимые для NetAMS и модули Perl, которые могут
понадобиться в случае использования дополнительного ПО для администрирования
NetAMS(модуль Perl, Crypt::GeneratePassword, может потребоваться при использовании
билинга в NetAMS,
http://search.cpan.org/CPAN/authors/id/J/JW/JWALT/Crypt-GeneratePassword-0.03.tar.gz ):
debug none
language ru
user name admin real-name Admin password 123 permit all
user name netams password 123 permit all
user name nawt password 123 permit all
Этими командами настраивается сервис main, причем явно писать "service main"
не нужно. Вначале отключается вывод всей отладочной информации - это нужно
для уменьшения размера лог-файла. Далее заводятся пользователи системы,
имеющие в ней права администратора (permit all). Указанный пароль "123"
потом будет храниться в зашифрованном виде.
service server 0
login local
listen 20001
max-conn 6
Этими командами настраивается сервис server, который обеспечивает подключение
администратора и скриптов к работающему экземпляру NeTAMS по протоколу telnet.
Входящие соединения принимаются только на локальный адрес 127.0.0.1, порт 20001,
и возможно не более шести одновременных соединений. Согласно предыдущим строкам
подключиться смогут только три пользователя.
service processor
lookup-delay 20
flow-lifetime 120
policy name urls target layer7-detect
policy name localtrafik target file /etc/localtraf.txt
policy name allip target proto ip
policy name trafik target proto tcp port 80:82 443 1024:65535
policy name aska target proto tcp port 5190
restrict all drop local pass
Настраивается главный сервис - processor. lookup-delay flow-lifetime задаются параметры,
как часто будут проверяться списки юнитов и откладываться записи в базу данных.
Следующие параметры задают политики, по которым будет идти учет трафика.
Политика urls необходмима для протоколирования запрошенных ссылок(URL)(опционально).
localtrafik учитывает бесплатный-локальный трафик, подсети локального трафика берутся
из файла /etc/localtraf.txt, например:
Х.Х.Х.Х /18
Х.Х.Х.Х /19
Политика "allip" задает весь IP-трафик, "trafik" - только тот, который идет по портам
TCP 80:82 443 1024:65535, "aska" - тот, который использует программа ICQ.
Последняя строка определяет, как поступать с пакетами, которые прошли через учет по списку
юнитов и совпали (или не совпали) с каким-либо юнитом.
Указанная конфигурация пропускает пакеты, которые принадлежат имеющимся в конфигурационном
файле юнитам, и не пропускает остальные. Полезно использовать именно указанное сочетание,
т.к. это поможет не пускать в сеть "незаконные" компьютеры.
unit group name LAN acct-policy allip trafik aska
unit net name local ip 192.168.1.0/24 no-local-pass acct-policy allip aska
unit host name server ip 192.168.1.222 no-local-pass acct-policy allip
unit net name all ip 0.0.0.0/0 no-local-pass acct-policy all-ip
unit user name user1 sys-allow-login description "Скотт" password 123 parent LAN acct-policy allip %localtrafik trafik aska
unit user name user2 sys-allow-login password 123 parent LAN acct-policy allip allip %localtrafik trafik aska aska fw-policy aska
Здесь определяются юниты, или учётные объекты. В начале создается группа, которая будет
родительской по отношению к включенным в нее юнитам. Затем следует юнит, обозначающий всю
подсеть. Далее идут юниты, представляющие отдельные компьютеры.
Для юнита local указан также параметр no-local-pass, который заставляет считать
нелокальными все пакеты, принадлежащие сети и не описанные для других юнитов - этим мы
отсекаем "неизвестные подключения".
Если вы задаете последовательность из нескольких политик подсчета трафика подряд, то по
умолчанию подсчет ведется для каждой политики и трафик суммируется.
Чтобы при совпадении политики дальнейший подсчет прекратился используется break flag [%].
В данном случае будет учитываться общий трафик, в который входит локальный трафик и
платный трафик, отдельно будет видно ICQ трафик, который уже входит в платный.
Для юнита user2 введен параметр fw-policy aska, то есть весь трафик кроме этой политики
будет блокирован для данного юнита. Чтобы разрешить прохождение трафика согласно политикам
учета, необходимо убрать параметр fw-policy aska. Указан также пароль, который может быть
использован для доступа к индивидуальной статистике в виде HTML-страниц.
storage 1 all
Указывает сервису processor на необходимость сохранять статистику в хранилище, описанном
сервисом storage за номером 1. При этом запить будет идти в обе таблицы одновременно -
raw и summary.
service storage 1
type mysql
accept all
Определяет хранилище для статистики. Тип хранилища - MySQL, для доступа к базе будут
использованы стандартные настройки: имя пользователя root, пустой пароль, работающий на той
же машине SQL-сервер (подключение через unix socket). Имя базы данных - netams.
service data-source 1
type ip-traffic
source ipq
layer7-detect urls
Определяет, каким образом данные о трафике будут попадать в NeTAMS.
ip-traffic - данные берутся путем перехвата ip-пакетов из ядра через netfilter.
Параметр layer7-detect urls необходим, чтобы можно было протоколировать посещаемые url
(Указать политику учета для тех юнитов, которые надо отслеживать).
service monitor 0
monitor to storage 1
Сервис monitor позволяет осуществлять запись данных из заголовков пакетов, относящихся
к указанным юнитам. При этом в базе данных сохраняется не только информация о локальном
источнике-получателе пакета, размере и времени, но и об удаленной стороне. Для этого
необходимо добавить, например, monitor unit user1.
service login 0
storage 1
max-inact 3000
max-abs 3600
min-abs 1800
set-user-ip yes
set name user1 password 123 inact 3000 abs 0
set name user2 password 123 inact 3000 abs 0
Сервис login необходим для управления процедурами доступа пользователей через веб-интерфейс.
Для работы сервиса необходимо будет указать номер сервиса-хранилища данных.
max_inact - максимально допустимая величина времени таймаута неактивности.
max-abs - максимально допустимая величина времени абсолютного таймаута.
min_abs - минимально допустимая величина времени абсолютного таймаута. Задается в секундах.
set-user-ip - Указывает на необходимость в случае успешной авторизации перезаписать IP-адрес
юнита (если он имеет тип user) на текущий; при наступлении таймаута или останове доступа адрес
сбрасывается в 0.0.0.0.
set - pаписывает в структуру данных юнита в памяти и одновременно в SQL-базу параметры юнита
(определяется по имени или номеру OID).
Для настройки параметров сервиса login необходимо подключиться к программе через
telnet-интерфейс, перейти в режим настройки сервиса командой service login 0 и ввести команду
set name user1 password 123 inact 3000 abs 0. После набираем команды:
exit(выйти из упраления сервисом), вводим команду show login.
service quota 0
storage 1
policy trafik
set name user2 active month 70M in
policy - задает политику учета (acct-policy), которая будет использоваться при проверке квот.
Это политика по умолчанию для всех, существует возможность переопределить ее для конкретного
юнита. Если не указано, используется первая политика из определенных policy XXX сервиса
processor. Команда set используется аналогично как в сервисе login.
service html 0
path /var/www/netams/stat
run 2min
client-pages all
htaccess yes
display-health yes
display-top 5
Сервис html позволяет автоматически генерировать HTML-страницы с отчетами. Процесс netams
будет автоматически создавать эти страницы раз в 2 минуты(далее нужно увеличить этот параметр)
и складывать их в каталог /var/www/traffic. Будет создаваться как администраторская часть дерева
страниц, так и клиентская. Доступ к статистике будет защищен паролем (на администраторскую " admin:123,
клиентам " их логины-пароли).
htaccess { yes | no }
Включает и выключает механизм автоматической защиты каталогов с помощью файлов .htaccess и
.htpassword. При этом используются пароли администратора NeTAMS (те, которые задаются в "user...
crypted..." в начале конфигурационного файла и собственно пароли на юниты ("unit ... password ...").
При этом администратору доступны любые подкаталоги веб-дерева, а пользователям - только их
собственные.
client-pages { all | groups | none | group GG1 GG2 ... }
Показывает, будут ли создаваться клиентские страницы для веб-представления статистики:
all - будет создаваться все
groups - только общая статистика и статистика подкаталоги для юнитов типа "группа"
none - только общая статистика
group GG1 GG2 ... - клиентские статистики только для перечисленных групп и содержащихся в них
юнитах (не рекурсивно). Чтобы добавить или удалить группу в списке, необходимо дать команду с
новым списком полностью.
display-top N - Включает механизм генерации статических страниц, показывающих TOP N (N - число, желательно
порядка 10) потребителей трафика (юниты типа USER и HOST) для периодов времени с начала часа,
дня, недели и месяца.
display-health { yes | no } - Включает и выключает механизм автоматического отображения "здоровья" системы (аналогично
show health), т.е. свободного места на жестком диске и загрузки процессора.
По умолчанию-выключено.
4.Запускаем нетамс /etc/init.d/netams.sh start, сам файл: