Uploaded by Матвей Алексенко

Построение корпоративной сети предприятия - StudentLib.com

advertisement
Введение
В последнее время всё чаще документооборот и передача корпоративной
информации совершается в электронном виде тем или иным способом. Для
этого уже существует множество протоколов и методов передачи данных. Так,
например,
электронный
документооборот
предприятия
производится
средствами платформы 1С, имеющей множество различных конфигураций под
любые нужды бизнеса; пересылка документов по электронной почте с
использованием почтовых протоколов POP, IMAP, SMTP; передача больших
объемов информации с помощью FTP протокола; организация корпоративного
сайта, используя веб-технологии.
Информационные
возможности
по
технологии
21
совершенствованию
века
работы
предоставляют
большие
предприятий,
заменяя
человеческий труд машинным, повышая рост производительности труда и
снижая
затраты
на
персонал.
Создаются
новые
и
модернизируются
действующие предприятия, территориально рассредоточенные в пределах
населенного пункта, города или даже страны, так как теперь средства связи
гораздо доступнее и дешевле.
Всё это стало возможным, благодаря компьютеризации и использованию
сетевых технологий на предприятии. Но есть вещи, о которых нельзя забывать:
сложность
внедрения,
безопасность,
производительность,
защищенность,
надежность системы. Главными проблемами на сегодняшний день стали
безопасность и жизнеспособность компьютерных систем.
Корпоративная информация, передаваемая через открытую сеть Интернет,
легко может быть перехвачена при помощи специальных программ-снифферов злоумышленниками и использоваться в корыстных целях. Сюда относятся
важнейшая информация, содержащаяся в конфиденциальных документах.
Помимо этого могут быть перехвачены логины и пароли от корпоративной
почты или иных сервисов. Конфиденциальность передаваемой информации
выходит на первый план при создании корпоративной сети.
Защита информации, передаваемой по каналам связи, используя
паролирование документов или их шифрование, не предоставляет нужного
уровня безопасности, так как любой пароль может быть взломан и это лишь
вопрос времени (всё зависит от его сложности), а с помощью криптоанализа,
можно выявить и шифрующий ключ. Конечно, можно использовать большие и
сложные пароли, современные большие ключи шифрования, но всё это понизит
производительность, превратив простой механизм операции отправки в весьма
затратный по временным параметрам. Время будет затрачено на то, чтобы
защитить несколько файлов. А если это надо делать постоянно и в больших
количествах?
Как раз для разрешения указанных противоречий в корпоративных сетях
используются различные протоколы Virtual Private Network. С их помощью
создаются виртуальные каналы связи поверх сети Интернет. Они дают
возможность соединять локальные сети различных технологий и их сегменты в
одну корпоративную сеть. Но самое главное достоинство, собственно ради чего
они и нужны, это шифрование всего трафика, проходящего по туннелю на
канальном уровне модели OSI. Шифрование обеспечивает защиту от доступа к
передаваемой информации, а инкапсуляция не позволяет злоумышленнику
выяснить адресат передаваемой информации.
Всё это дает большие возможности для построения защищенной сети. Но
если что-то выходит из строя, программа или оборудование серверов, то и
защищенный канал перестает работать. За состоянием компьютерного парка
постоянно требуется вести мониторинг, чтобы время простоя в случае падения
одного участка сети был минимальным. Имея множество серверов и сервисов,
не так просто узнать, где и что случилось. Средствами мониторинга можно
следить за этим, не обходя каждый сервер по одному. С помощью удобных
таблиц и почтовых уведомлений это не составит большого труда, и
администратор всегда будет в курсе состояния сети, сервисов и серверов,
входящих в эту корпоративную сеть.
Указанные
проблемы
при
построении
корпоративных
сетей
для
конкретных предприятий показывают, что процесс их создания не является
тривиальным. Поэтому в рамках работы ставятся и решаются задачи выбора и
реализации протоколов VPN, оценки производительности полученных каналов
и способы мониторинга за состоянием корпоративной сети в режиме реального
времени конкретного предприятия.
Глава 1. Предметная область и постановка задачи
.1 Основные сведения о корпоративных сетях
1.1.1 Организация связи
Прежде чем говорить о корпоративной (частной) сети, нужно определить,
что эти слова означают. В последнее время это словосочетание стало настолько
распространенным и модным, что начало терять смысл. В нашем понимании
корпоративная сеть - система, обеспечивающая передачу информации между
различными приложениями, используемыми в системе корпорации. Исходя из
этого вполне абстрактного определения, рассмотрим различные подходы к
созданию таких систем и постараемся наполнить понятие корпоративной сети
конкретным содержанием. При этом будем считать, что сеть должна быть
максимально универсальной, то есть допускать интеграцию уже существующих
и
будущих
приложений
с
минимально
возможными
затратами
и
ограничениями.
Корпоративная
сеть,
как
правило,
является
территориально
распределенной, т.е. объединяющей офисы, подразделения и другие структуры,
находящиеся
на значительном
удалении
друг
от
друга.
Часто
узлы
корпоративной сети оказываются расположенными в различных городах, а
иногда и странах. Принципы, по которым строится такая сеть, достаточно
сильно отличаются от тех, что используются при создании локальной сети, даже
охватывающей несколько зданий. Основное отличие состоит в том, что
территориально распределенные сети используют достаточно медленные
арендованные линии связи. Если при создании локальной сети основные
затраты приходятся на закупку оборудования и прокладку кабеля, то в
территориально-распределенных сетях наиболее существенным элементом
стоимости оказывается арендная плата за использование каналов, которая
быстро растет с увеличением качества и скорости передачи данных. Это
ограничение является принципиальным, и при проектировании корпоративной
сети следует предпринимать все меры для минимизации объемов передаваемых
данных. В остальном же корпоративная сеть не должна вносить ограничений на
то, какие именно приложения и каким образом обрабатывают переносимую по
ней информацию.
Под приложениями здесь следует понимать системное программное
обеспечение - системы управления базами данных, почтовые системы,
вычислительные ресурсы, файловый сервис и прочee, так и средства, с
которыми
работает
конечный
пользователь.
Основными
задачами
корпоративной сети оказываются взаимодействие системных приложений,
расположенных в различных узлах, и доступ к ним удаленных пользователей.
Первая
проблема,
которую
приходится
решать
при
создании
корпоративной сети - организация каналов связи. Если в пределах одного
города можно рассчитывать на аренду выделенных линий, в том числе
высокоскоростных, то при переходе к географически удаленным узлам
стоимость аренды каналов становится просто астрономической, а качество и
надежность их часто оказывается весьма невысокими. Естественным решением
этой проблемы является использование уже существующих глобальных сетей.
В этом случае достаточно обеспечить каналы от офисов до ближайших узлов
сети. Задачу доставки информации между узлами глобальная сеть при этом
возьмет на себя. Даже при создании небольшой сети в пределах одного города
следует иметь в виду возможность дальнейшего расширения и использовать
технологии, совместимые с существующими глобальными сетями.
Часто первой, а то и единственной такой сетью, мысль о которой
приходит в голову, оказывается Интернет. При использовании сети Интернет в
качестве основы для корпоративной сети передачи данных выясняется очень
интересная вещь. Оказывается, Интернет сетью-то как раз и не является. Это
именно Интернет - междусетие. Если заглянуть внутрь Интернета, можно
увидеть, что информация проходит через множество абсолютно независимых и
по большей части некоммерческих узлов, связанных через самые разнородные
каналы и сети передачи данных.
Еще одна проблема Интернет, широко обсуждаемая в последнее время безопасность.
Если
говорить
о
частной
сети,
вполне
естественным
представляется защитить передаваемую информацию от чужого взгляда.
Непредсказуемость путей информации между множеством независимых узлов
Интернет не только повышает риск того, что какой-либо не в меру любопытный
оператор сети может сложить ваши данные себе на диск (технически это не так
сложно), но и делает невозможным определение места утечки информации.
Существует средства шифрования передаваемой информации, что позволяет
частично решить эту проблему. Другой аспект проблемы безопасности опять же
связан с децентрализованностью Интернет - нет никого, кто мог бы ограничить
доступ к ресурсам вашей частной сети. Поскольку это открытая система, где все
видят всех, то любой желающий может попробовать попасть в вашу офисную
сеть и получить доступ к данным или программам. Есть, конечно, средства
защиты (для них принято название Firewall - по-русски, точнее по-немецки
"брандмауэр" - противопожарная стена). Однако считать их панацеей не стоит.
Любую защиту можно сломать, лишь бы это окупало стоимость взлома.
Необходимо также отметить, что сделать подключенную к Интернету систему
неработоспособной можно и, не вторгаясь в вашу сеть. Известны случаи
несанкционированного доступа к управлению узлами сети, или просто
использования особенностей архитектуры Интернета для нарушения доступа к
тому или иному серверу. Таким образом, рекомендовать Интернет как основу
для систем, в которых требуется надежность и закрытость, никак нельзя.
Подключение к Интернету в рамках корпоративной сети имеет смысл, если вам
нужен доступ к тому громадному информационному пространству, которое
собственно и называют Сетью.
1.1.2 Понятие «Корпоративная сеть»
Корпоративная сеть - это сложная система, включающая тысячи самых
разнообразных компонентов: компьютеры разных типов, начиная с настольных
и кончая целыми серверными стойками, системное и прикладное программное
обеспечение, сетевые адаптеры, коммутаторы и маршрутизаторы, кабельную
систему.
Успешная
деятельность
промышленной,
финансовой
или
иной
организации во многом определяется наличием единого информационного
пространства. Развитая информационная система позволяет эффективно
справляться с обработкой потоков информации, циркулирующих между
сотрудниками предприятия и принимать им своевременные и рациональные
решения, обеспечивающие выживание предприятия в жесткой конкурентной
борьбе.
Корпоративная сеть - это сложная система, обеспечивающая передачу
данных широкого спектра между различными приложениями, используемыми в
единой информационной системе организации.
Корпоративная сеть позволяет создать единую для всех подразделений
базу данных, вести электронный документооборот, организовать селекторные
совещания и проводить видеоконференции с отдаленными подразделениями,
обеспечить все потребности организации в высококачественной телефонной и
факсимильной местной, международной и междугородной связи, доступе в
Интернет и другие интерактивные сети. Все это уменьшает время реакции на
изменения, происходящие в компании, и обеспечивает оптимальное управление
всеми процессами в реальном масштабе времени. При этом, снижается
зависимость организации от операторов фиксированной и мобильной связи.
Частичный отказ от услуг этих операторов позволяет существенно сократит
расходы
организации.
Появляется
возможность
передавать
любую
конфиденциальную информацию производственного и финансового характера с
уверенностью, что никто, кроме уполномоченных сотрудников компании, не
имеет к ней доступа. Обобщенная схема корпоративной сети представлена на
Рис. 1.1.2.1.
Рис.1.1.2.1 Общая схема корпоративной сети
Основная задача системных интеграторов и администраторов состоит в
том, чтобы эта громоздкая и весьма дорогостоящая система как можно лучше
справлялась с обработкой потоков информации, циркулирующих между
сотрудниками предприятия и позволяла принимать им своевременные и
рациональные решения, обеспечивающие выживание предприятия в жесткой
конкурентной борьбе. А так как жизнь не стоит на месте, то и содержание
корпоративной информации, интенсивность ее потоков и способы ее обработки
постоянно
меняются.
Транспорт
Интернет
-
недорогой
и
доступный
практически всем предприятиям - существенно облегчил задачу построения
территориальной корпоративной сети, одновременно выдвинув на первый план
задачу защиты корпоративных данных при передаче их через, в высшей степени
общедоступную, публичную сеть с многомиллионным "населением".
1.1.3 Структура корпоративной сети
На Рис. 1.1.3.1 представлена возможная схема структуры корпоративной
сети.
Рис.1.1.3.1 Пример структуры корпоративной сети
Выделим основные устройства:
. Компьютер. Под ним подразумевается стандартное рабочее место, чаще
всего подключенное к локальной сети через кабель типа витая пара. На
компьютере установлено ПО необходимое для работы персонала (офисные
приложения, 1С, почтовые агенты и т.п.), а также средства для удаленного
администрирования данного компьютера.
. Переносное устройство. Это может быть ноутбук, планшет, мобильное
устройство. Чаще всего подключение таких устройств к сети производится с
помощью беспроводной связи. Несет те же функции, что и компьютер, но имеет
главное отличие от стационарного компьютера - мобильность.
. Сетевое МФУ. МФУ - многофункциональное устройство, выполняющее
функции принтера, сканера, копира. Подключение к сети осуществляется путем
сетевого кабеля. Если МФУ не имеет сетевого порта, то оно подключается к
компьютеру и с помощью средств операционной системы открывается на
доступ по сети другим пользователям.
. Wi-fi точка доступа. Устройство, с помощью которого создаются
беспроводные сети. Используется для подключения ноутбуков и других
портативных устройств, имеющих модуль wi-fi. Преимущество перед кабельной
системой заключается в мобильности и ненужности протягивать кабель и
портить интерьер. Скорость доступа в зависимости от используемого стандарта
может быть от 50 до 125 мбит/сек. Для защиты доступа к сети есть несколько
стандартов обеспечения безопасности: WEP, WPA, WPA2 и т.д.
. Ip-телефония. Система связи, обеспечивающая передачу речевого
сигнала по сети Интернет или по любым другим IP-сетям. Сигнал по каналу
связи передаётся в цифровом виде и, как правило, перед передачей
преобразовывается (сжимается) с тем, чтобы удалить избыточность.
. Коммутатор. Устройство, предназначенное для соединения нескольких
узлов компьютерной сети в пределах одного или нескольких сегментов сети.
Коммутатор передаёт данные только непосредственно получателю, исключение
составляет широковещательный трафик (на MAC-адрес FF:FF:FF:FF:FF:FF)
всем узлам сети. Это повышает производительность и безопасность сети,
избавляя остальные сегменты сети от необходимости (и возможности)
обрабатывать данные, которые им не предназначались.
. Маршрутизатор. Сетевое устройство, на основании информации о
топологии сети и определённых правил принимающее решения о пересылке
пакетов сетевого уровня (уровень 3 модели OSI) между различными сегментами
сети. Проще говоря, это устройство, которое связывает 2 и более разные сети (в
нашем случае это локальная сеть офиса и Интернет).
Маршрутизатор может быть типа hardware и software. Hardware
маршрутизатор - это готовое устройство, в программную оболочку которого
вшиты базовые функции маршрутизатора. Software маршрутизатор - это
отдельный сервер, обычно с linux/unix операционной системой, на базе которой
с помощью средств firewall’а настраивается маршрутизация и правила обмена
трафиком. При выборе того или иного типа маршрутизатора обычно
руководствуются количеством конечных пользователей, сложностью правил и
требуемой надежностью.
. Терминальный сервер (сервер терминалов). Сервер, предоставляющий
клиентам вычислительные ресурсы (процессорное время, память, дисковое
пространство)
для
решения
задач.
Технически
терминальный
сервер
представляет собой очень мощный компьютер (либо кластер), соединенный по
сети с терминальными клиентами, которые, как правило, представляют собой
маломощные или устаревшие рабочие станции или специализированные
решения для доступа к терминальному серверу. Терминал сервер служит для
удалённого обслуживания пользователя с предоставлением рабочего стола.
Преимущества терминального сервера
 Снижение временных расходов на администрирование;

Повышение безопасности - снижение риска взломов;

Снижение затрат на программное и аппаратное обеспечение;
Чаще всего в роли операционной системы выступает Microsoft Windows
Server.
. Файловый сервер. Это выделенный сервер, оптимизированный для
выполнения файловых операций ввода-вывода. Предназначен для хранения
файлов любого типа. Как правило, обладает большим объемом дискового
пространства, и, как правило, файл-сервер оборудован RAID контроллером для
обеспечения быстрой записи и чтения данных.
. Web-сервер. Это сервер, принимающий HTTP-запросы от клиентов,
обычно веб-браузеров, и выдающий им HTTP-ответы, обычно вместе с
HTML-страницей,
изображением,
файлом,
медиа-потоком
или
другими
данными. На нем может быть расположен корпоративный сайт или любой
другой веб-сервис.
Чаще всего используется операционная система семейства linux/unix, так
как они по сравнению с другими более надежны и более производительны. В
роли самого веб-сервера выступает специальное программное обеспечение,
например Apache или nginx.
. Сервер приложений. Это программная платформа, предназначенная для
эффективного исполнения процедур (программ, механических операций,
скриптов) которые поддерживают построение приложений. Сервер приложений
действует как набор компонент доступных разработчику программного
обеспечения
через
API
(Интерфейс
прикладного
программирования)
определенный самой платформой.
На предприятии, очень часто используется приложение 1С. У этой
программы есть несколько вариантов работы с базой данных: файловый режим вся база находится в одном файле ( имеет смысл, когда работающих с базой
клиентов не больше 10-15 человек), клиент-серверный режим - база данных
находится на sql сервере. В клиент-серверном режиме пользователи не
напрямую работают с базой данных, а через 1С сервер, который обрабатывает
запросы в понимаемую форму для sql сервера.
Этот режим повышает производительность, надежность, и улучшает
процессы администрирования базы данных.
Как раз для таких целей и существует сервер приложений.
. Сервер БД. Сервер БД обслуживает базу данных и отвечает за
целостность
и
сохранность
данных,
а
также
обеспечивает
операции
ввода-вывода при доступе клиента к информации. Большинство СУБД
используют язык SQL (Structured Query Language - язык структурированных
запросов), так как он удобен для описания логических подмножеств БД.
Назначение SQL:
создание БД и таблицы с полным описанием их структуры;
выполнение основных операций манипулирования данными (такие как
вставка, модификация и удаление данных из таблиц);
выполнение простых и сложных запросов.
Одна из ключевых особенностей языка SQL заключается в том, что с его
помощью формируются запросы, описывающие какую информацию из базы
данных необходимо получить, а пути решения этой задачи программа
определяет сама.
1.2 Виртуальные частные сети
1.2.1 Организация VPN
В
современных
условиях
развития
информационных
технологий,
преимущества создания виртуальных частных сетей неоспоримы. Прежде чем
перечислить
наиболее
очевидные
и
полезные
способы
организации
виртуальных частных сетей, необходимо привести само понятие.
Виртуальная частная сеть или просто VPN (Virtual Private Network) - это
технология, при которой происходит обмен информацией с удаленной
локальной сетью по виртуальному каналу через сеть общего пользования с
имитацией
частного
подключения
«точка-точка».
Под
сетью
общего
пользования можно подразумевать как Интернет, так и другую интрасеть.
Виртуальные
частные
сети
позволяют
удаленному
пользователю,
прошедшему аутентификацию, воспользоваться корпоративной сетью наравне с
клиентами центральной корпоративной сети.
Центральная
сеть
любой
организации
может
аутентифицировать
пользователей несмотря на то, что они получают доступ через публичную сеть.
Удачно спроектированная VPN может принести организации немало
выгод. Ее внедрение позволяет:
 расширить
географию
доступа
сотрудников
к
инфраструктуре
организации;

повысить безопасность передачи информации;

уменьшить
эксплуатационные
затраты
по
сравнению
с
традиционными глобальными сетями;

сократить время передачи информации и снизить командировочные
расходы;

повысить производительность труда;

упростить топологию сети;

увеличить мобильность пользователей и дать им более гибкий
график работы.
Основные свойства VPN:
 безопасность;

надежность;

масштабируемость;

управляемость.
Рассмотрим вариант организации сети учреждения с филиалами с
использованием виртуальных частных сетей (рис. 1.2.1.1).
Рисунок
1.2.1.1
использованием VPN
Организация
сети
учреждения
с
филиалами
с
Особенности такой организации:
 Cкорость передачи данных. Провайдеры могут обеспечить достаточно
высокоскоростной доступ в Интернет, однако с локальной, проверенной
временем 100 Мбит сетью он все равно не сравнится. Но так ли важно каждый
день перекачивать сотни мегабайт информации через организованную сеть? Для
доступа к локальному сайту предприятия, пересылки электронного письма с
документом
вполне
достаточно
скорости,
которой
могут
обеспечить
Интернет-провайдеры;
 Безопасность
передаваемых
данных.
При
организации
VPN
передаваемая информация попадает во внешнюю сеть, поэтому об организации
безопасности придется позаботиться заранее. Но уже сегодня существуют
достаточно стойкие к атакам алгоритмы шифрования информации, которые
позволяют владельцам передаваемых данных не беспокоиться за безопасность;
 За
организованную
сеть
никому
не
надо
платить.
Плата
за
использование Интернета в наши дни сама по себе достаточно демократичная, а
гибкие тарифы позволяю выбрать каждому оптимальный пакет;

Масштабируемость системы. При открытии нового филиала или
добавления сотрудника, которому позволено пользоваться удаленным доступом
не нужно никаких дополнительных затрат на коммуникации.

Гибкость системы. Для VPN не важно, откуда вы осуществляете
доступ. Отдельно взятый сотрудник может работать из дома, а может во время
чтения почты из корпоративного почтового ящика фирмы пребывать в
командировке в абсолютно другом государстве.
Способы реализации VPN:
1. В виде специального программно-аппаратного обеспечения
Реализация VPN сети осуществляется при помощи специального
комплекса программно-аппаратных средств. Такая реализация обеспечивает
высокую производительность и, как правило, высокую степень защищённости.
2. В виде программного решения
Используют персональный компьютер со специальным программным
обеспечением, обеспечивающим функциональность VPN.
3. Интегрированное решение
Функциональность VPN обеспечивает комплекс, решающий также задачи
фильтрации сетевого трафика, организации сетевого экрана и обеспечения
качества обслуживания.
Способы организации VPN:
В VPN наиболее целесообразно выделить следующие три основных
способа:
1. Удаленный доступ отдельно взятых сотрудников к корпоративной сети
организации через модем либо общедоступную сеть
Организация такой модели виртуальной частной сети предполагает
наличие VPN-сервера в центральном офисе, к которому подключаются
удаленные клиенты. Удаленные клиенты могут работать на дому, либо,
используя переносной компьютер, из любого места планеты, где есть доступ к
всемирной паутине.
Данный способ организации виртуальной частной сети целесообразно
применять в случае географически не привязанного доступа сотрудников к
корпоративной сети организации.
2. Связь в одну общую сеть территориально распределенных филиалов
фирмы. Этот способ называется Intranet VPN.
При организации такой схемы подключения требуется наличие VPN
серверов равное количеству связываемых офисов.
Данный способ целесообразно использовать как для обыкновенных
филиалов, так и для мобильных офисов, которые будут иметь доступ к ресурсам
головного офиса, а также без проблем обмениваться данными между собой.
3. Так называемый Extranet VPN, когда через безопасные каналы доступа
предоставляется доступ для клиентов организации. Набирает широкое
распространение в связи с популярностью электронной коммерции. В этом
случае для удаленных клиентов будут очень урезаны возможности по
использованию корпоративной сети, фактически они будут ограничены
доступом к тем ресурсам компании, которые необходимы при работе со своими
клиентами, например, сайта с коммерческими предложениями, а VPN
используется в этом случае для безопасной пересылки конфиденциальных
данных. Средства защиты информации - протоколы шифрования.
4.
Client/Server VPN. Он обеспечивает защиту передаваемых данных
между двумя узлами (не сетями) корпоративной сети. Особенность данного
варианта в том, что VPN строится между узлами, находящимися, как правило, в
одном сегменте сети, например, между рабочей станцией и сервером. Такая
необходимость очень часто возникает в тех случаях, когда в одной физической
сети необходимо создать несколько логических сетей. Например, когда надо
разделить трафик между финансовым департаментом и отделом кадров,
обращающихся к серверам, находящимся в одном физическом сегменте. Этот
вариант похож на технологию VLAN, но вместо разделения трафика,
используется его шифрование.
1.2.2 OpenVPN
Поскольку данные в виртуальных частных сетях передаются через
общедоступную сеть, следовательно, они должны быть надежно защищены от
посторонних глаз.
Для
реализации
защиты
передаваемой
информации
существует
множество протоколов, которые защищают VPN, но все они подразделяются на
два вида и работают в паре:
 протоколы,
соединение;
инкапсулирующие
данные
и
формирующие
VPN

протоколы, шифрующие данные внутри созданного туннеля.
Первый тип протоколов устанавливает туннелированное соединение, а
второй тип отвечает непосредственно за шифрование данных. Сравним две
реализации создания VPN на основе стандарта IPsec и OpenVpn.
Для объединения в сеть нескольких филиалов сегодня наиболее часто
используется стандарт IPSec. Слабые места IPSec общеизвестны. Сложная
структура
с
довольно
непростой
при
определенных
обстоятельствах
конфигурацией, разные (в зависимости от производителя) реализации и
«бреши» в системе безопасности, проблемы с firewall’ом - вот лишь немногие
недостатки, постоянно подстегивающие разработку современных технологий
виртуальных частных сетей (Virtual Private Network, VPN). Результатом стало
появление проекта открытого программного обеспечения OpenVPN. Последняя
его версия - 2.0 - предлагает гораздо более широкий спектр возможностей, во
многом превосходящих функциональность классических VPN.
Технология OpenVPN превратилась в серьезную альтернативу IPSec.
Организации, где не требуется в обязательном порядке применять IPSec, могут
благодаря
OpenVPN
без
больших
затрат
получить
многочисленные
преимущества, ранее недоступные. Опции повсеместной защиты ноутбуков
посредством
центрального
корпоративного
firewall’а,
туннелирования
firewall’ов и посредников WWW, а также ретрансляции широковещательного
трафика
заметно
превышают
функциональный
охват
IPSec,
причем
используемые технологии (SSL, устройства Tap/Tun) представляют собой
испытанные и проверенные стандарты. OpenVPN стала самой современной и
надежной технологией VPN из доступных, при этом бесплатной и очень
простой в конфигурировании.
Остановимся на технологии OpenVPN, чтобы познакомиться с ней
поближе.
Созданный в 2002 году, OpenVPN - это инструмент с открытым исходным
кодом, используемый для построения site-to-site VPN сетей с использованием
SSL/TLS протокола или с разделяемыми ключами. Он исполняет роль
безопасного туннеля для передачи данных через один TCP/UDP порт в
небезопасной сети как Интернет.
Преимущество OpenVPN заключается в легкости инсталляции и
настройки, что является редким случаем для таких инструментов.
OpenVPN может быть установлен практически на любую платформу
включая: Linux, Windows 2000/XP/Vista, OpenBSD, FreeBSD, NetBSD, Mac OS X
и Solaris.
Linux системы должны работать на ядре 2.4 или выше. Принципы
конфигурирования одинаковы для всех платформ.
OpenVPN использует клиент/сервер архитектуру. Он должен быть
установлен на все узлы VPN сети, где один узел должен быть сервером, а
остальные клиентами.
OpenVPN создает TCP или UDP туннель, при этом данные проходящие
через этот туннель шифруются. Стандартный порт для OpenVPN - UDP 1194, но
можно использовать любой другой TCP или UDP порт. С версии 2.0 один и тот
же порт можно использовать для нескольких туннелей на OpenVPN сервере.
Можно создать Ethernet (Мост) или IP (Маршрутизация) VPN сеть
используя соответствующие сетевые драйвера TAP или TUN. TAP/TUN
доступны на всех платформах и включены в ядро Linux начиная с версии 2.4.
Опции подробно описаны в страницах справочного руководства (man
pages).
При использовании статических ключей, VPN шлюзы используют один и
тот же ключ для шифрования и дешифрования данных. В этом случае настройка
будет довольно простой, но при этом возникает проблема передачи и
безопасности ключа. Если кто-то завладеет этим ключом, то он может
дешифровать данные.
Для того чтобы избежать этой проблемы, необходимо использовать
Инфраструктуру Открытых Ключей (PKI). При этом каждый узел владеет
двумя ключами: открытый ключ, известный всем и закрытый ключ, доступный
только его владельцу. Такую структуру использует OpenSSL, интегрированный
в OpenVPN, для аутентификации VPN узлов перед тем как начать передавать
зашифрованные данные. Этот режим считается более предпочтительным.
Обратим внимание на структуру сети и концепцию безопасных ключей
для лучшего понимания OpenVPN.
В течении многих лет IPSec был единственным протоколом который мог
обеспечить шифрование данных в site-to-site и клиент/сервер VPN сетях. К
счастью ситуация изменилась с появлением SSL протокола. Предназначенный
для обеспечения безопасности таких протоколов как HTTP, SSL позволяет
сейчас обеспечить безопасность для любого приложения и шифровать TCP или
UDP туннели в site-to-site и клиент/сервер VPN сетях.
SSL (Secure Sockets Layers) был создан Netscape в 90-х. Было выпущено
две версии v2 (1994) и v3 (1995). В 2001 IETF купила и обновила патент. В это
же время SSL был переименован в TLS (Transport Layer Security). выполняет
две основные задачи:
Аутентификация сервера и клиента по средством Инфраструктуры
Открытых Ключей (PKI).
Создает шифрованное соединение между клиентом и сервером для обмена
сообщениями.
Стандартная модель OSI состоит из семи уровней, в то время как четырех
уровневая модель наиболее подходит для TCP/IP (уровень приложений,
транспортный, сетевой, канальный, физический), который используется
огромным количеством приложений.разположен между транспортным уровнем
и уровнем приложения и будет шифровать уровень приложения.
Работа SSL проходит в 4 этапа:
1. SSL Handshake: Определяется метод шифрования для передачи данных;
2.
SSL Change Cipher Spec: Создание и передача ключа между
клиентом и сервером на эту сессию;
.
SSL Alert: Доставка сообщений SSL об ошибках между клиентом и
сервером;
.
SSL Record: Передача данных.
Для шифрования и аутентификации OpenVPN использует OpenSSL,
который является бесплатным и распространяется с открытым исходным кодом.
Выделим основные плюсы и минусы этой технологии:
+ Зрелые криптографические алгоритмы (SSL/TLS);
+ SSL/TLS являются отраслевыми стандартами и входят в сферу
ответственности IETF (Internet Engineering Task Force);
+ Простая технология, простая инсталляция, простое конфигурирование;
+ TCP/UDP, для множества внешних сотрудников нужен лишь один порт;
+ Индивидуальная конфигурация для клиентов;
+ Гибкость вследствие использования устройств Tun/Tap;
+ Никаких проблем с технологией NAT;
+ Быстрое повторное подключение, прозрачность для DynDNS, сеансы
сохраняются;
+ Сжатие;
+ Высокая совместимость с firewall’ми и посредниками WWW;
+ Производительность (достаточно маломощных процессоров) ;
+ Модульная расширяемая архитектура;
+ Выполнение в пользовательском пространстве - в Linux не нужны
привилегии администратора;
+ Высокая производительность даже на старых машинах;
+ Формирование трафика уже включено;
Нет специализированных устройств;
Дефицит обученного персонала;
Отсутствие интерфейсов Web или интерфейсов для администрирования.
1.2.3 SSH
Еще один протокол, с помощью которого можно создавать VPN - это
SSH.
SSH (Secure SHell - «безопасная оболочка») - сетевой протокол сеансового
уровня, позволяющий производить удалённое управление операционной
системой и туннелирование TCP-соединений (например, для передачи файлов).
Схож по функциональности с протоколами Telnet, но, в отличие от него,
шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор
различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для
большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищенной среде практически
любой другой сетевой протокол. Таким образом, можно не только удаленно
работать на компьютере через командную оболочку, но и передавать по
шифрованному каналу звуковой поток или видео (например, с веб-камеры).
Также
SSH
может
использовать
сжатие
передаваемых
данных
для
последующего их шифрования.
Поддержка SSH реализована во всех UNIX‑ïîäîáíûõ ñèñòåìàõ, è íà
áîëüøèíñòâå èç íèõ â ÷èñëå ñòàíäàðòíûõ óòèëèò ïðèñóòñòâóþò êëèåíò è ñåðâåð ssh.
Ñóùåñòâóåò ìíîæåñòâî ðåàëèçàöèé SSH-êëèåíòîâ è äëÿ íå-UNIX ÎÑ.- ýòî ïðîòîêîë
ñåàíñîâîãî óðîâíÿ. SSH-ñåðâåð îáû÷íî ïðîñëóøèâàåò ñîåäèíåíèÿ íà TCP-ïîðòó 22. Äëÿ
àóòåíòèôèêàöèè ñåðâåðà â SSH èñïîëüçóåòñÿ ïðîòîêîë àóòåíòèôèêàöèè ñòîðîí íà îñíîâå
àëãîðèòìîâ ýëåêòðîííî-öèôðîâîé ïîäïèñè RSA или DSA. Для аутентификации клиента
также может использоваться ЭЦП RSA или DSA, но допускается также
аутентификация при помощи пароля и даже ip-адреса хоста. Аутентификация по
паролю наиболее распространена; она безопасна, так как пароль передается по
зашифрованному
виртуальному
каналу.
Аутентификация
по
ip-адресу
небезопасна, эту возможность чаще всего отключают. Для создания общего
секрета (сеансового ключа) используется алгоритм Диффи - Хеллмана (DH).
Для
шифрования
передаваемых
данных
используется
симметричное
шифрование, алгоритмы AES, Blowfish или 3DES. Целостность переданных
данных проверяется с помощью HMAC-SHA1/HMAC-MD5.
Для сжатия шифруемых данных может использоваться алгоритм
LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и
архиватор ZIP. Сжатие SSH включается опционально.
Для создания VPN сетей используется так называемая технология ssh
туннелирования. SSH-туннель - это туннель, создаваемый посредством
SSH-соединения и используемый для шифрования туннелированных данных.
Используется для того, чтобы обезопасить передачу данных в Интернете.
Особенность состоит в том, что незашифрованный трафик какого-либо
протокола шифруется на одном конце SSH-соединения и расшифровывается на
другом.
Практическая реализация может выполняться несколькими способами:
 Использованием приложений, умеющих работать через SSH-туннель;

Созданием
VPN-туннеля,
подходит
практически
для
любых
приложений;

Если приложение работает с одним определённым сервером, можно
настроить SSH-клиент таким образом, чтобы он пропускал через SSH-туннель
TCP-соединения, приходящие на определённый TCP-порт машины, на которой
запущен
SSH-клиент.
Например,
клиенты
терминального
сервера
подключаются по умолчанию на порт 3389. Тогда, чтобы настроить
подключение к серверу через SSH-туннель, SSH-клиент настраивается на
перенаправление подключений с любого порта локальной машины (например
порт 5000) на удалённый сервер (например, server.com и порт 3389). В данном
случае клиент настраивается на подключение к серверу localhost (если
ssh-клиент запущен на той же машине что и терминальный клиент) и порт 5000.
Плюсы этой технологии создания vpn сетей в том, что для реализации не
нужно устанавливать и настраивать дополнительный софт. Серверная и
клиентская часть обычно ставятся вместе с unix/linux системой по умолчанию.
Так же стоит отметить, что настройка проходит гораздо легче, чем у любой
другой
технологии.
Эта
технология,
хотя
немного
и
уступает
по
производительности, но для создания защищенных сетей подходит больше чем
протокол IPsec, так как по масштабируемости и легкости настраивания каналов
он в разы превосходит его.
1.3 Ìîíèòîðèíã êîðïîðàòèâíûõ ñåòåé
Äëÿ ïîâûøåíèÿ íàäåæíîñòè ðàáîòû êîðïîðàòèâíîé ñåòè, íåîáõîäèìî ðåøèòü âîïðîñû å¸
ìîíèòîðèíãà.
Òåðìèíîì ìîíèòîðèíã ñåòè íàçûâàþò ðàáîòó ñèñòåìû, êîòîðàÿ âûïîëíÿåò ïîñòîÿííîå
íàáëþäåíèå çà êîìïüþòåðíîé ñåòüþ â ïîèñêàõ ìåäëåííûõ èëè íåèñïðàâíûõ ñèñòåì è êîòîðàÿ
ïðè îáíàðóæåíèè ñáîåâ ñîîáùàåò î íèõ ñåòåâîìó àäìèíèñòðàòîðó ñ ïîìîùüþ ïî÷òû, ïåéäæåðà
èëè äðóãèõ ñðåäñòâ îïîâåùåíèÿ. Ýòè çàäà÷è ÿâëÿþòñÿ ïîäìíîæåñòâîì çàäà÷ óïðàâëåíèÿ
ñåòüþ.
 òî âðåìÿ êàê ñèñòåìà îáíàðóæåíèÿ âòîðæåíèé ñëåäèò çà ïîÿâëåíèåì óãðîç èçâíå,
ñèñòåìà ìîíèòîðèíãà ñåòè âûïîëíÿåò íàáëþäåíèå çà ñåòüþ â ïîèñêàõ ïðîáëåì, âûçâàííûõ
ïåðåãðóæåííûìè è/èëè îòêàçàâøèìè ñåðâåðàìè, äðóãèìè óñòðîéñòâàìè èëè ñåòåâûìè
ñîåäèíåíèÿìè.
Íàïðèìåð, äëÿ òîãî, ÷òîáû îïðåäåëèòü ñîñòîÿíèå âåá-ñåðâåðà, ïðîãðàììà,
âûïîëíÿþùàÿ ìîíèòîðèíã, ìîæåò ïåðèîäè÷åñêè îòïðàâëÿòü çàïðîñ HTTP íà ïîëó÷åíèå
ñòðàíèöû; äëÿ ïî÷òîâûõ ñåðâåðîâ ìîæíî îòïðàâèòü òåñòîâîå ñîîáùåíèå ïî SMTP è
ïîëó÷èòü ïî IMAP èëè POP3.
Íåóäàâøèåñÿ çàïðîñû (íàïðèìåð, â òîì ñëó÷àå, êîãäà ñîåäèíåíèå íå ìîæåò áûòü
óñòàíîâëåíî, îíî çàâåðøàåòñÿ ïî òàéì-àóòó, èëè êîãäà ñîîáùåíèå íå áûëî äîñòàâëåíî) îáû÷íî
âûçûâàþò ðåàêöèþ ñî ñòîðîíû ñèñòåìû ìîíèòîðèíãà.  êà÷åñòâå ðåàêöèè ìîæåò áûòü:
 îòïðàâëåí ñèãíàë òðåâîãè ñèñòåìíîìó àäìèíèñòðàòîðó;

àâòîìàòè÷åñêè àêòèâèðîâàíà ñèñòåìà çàùèòû îò ñáîåâ, êîòîðàÿ âðåìåííî
âûâåäåò ïðîáëåìíûé ñåðâåð èç ýêñïëóàòàöèè, çàìåíèâ åãî ðåçåðâíûì, äî òåõ ïîð, ïîêà
ïðîáëåìà íå áóäåò ðåøåíà.
Êðîìå îòêàçîâ ñèñòåì, ïðîöåññîâ, îáîðóäîâàíèÿ, òàêæå ñëåäÿò è çà èõ ñîñòîÿíèåì â
öåëîì.
Çíàÿ, êàêîé ïîòîê èíôîðìàöèè ïðîõîäèò ÷åðåç ñåòåâîé èíòåðôåéñ, ìîæíî áóäåò
âûáðàòü îïòèìàëüíûé ïàêåò Èíòåðíåòà ó ïîñòàâùèêà, ñýêîíîìèâ ïðè ýòîì íå ìàëûå äåíüãè.
Ñåé÷àñ ýòî äîâîëüíî àêòóàëüíàÿ ïðîáëåìà, òàê êàê ÷àñòî â áèçíåñ öåíòðàõ ñóùåñòâóåò
äîãîâîðåííîñòü ñ ïðîâàéäåðîì î òîì, ÷òî òîëüêî îíè èìåþò ïðàâî äàâàòü äîñòóï â Èíòåðíåò.
Ñëåäîâàòåëüíî, è öåíîâàÿ ïîëèòèêà ïîëíîñòüþ óñòàíàâëèâàåòñÿ ïðîâàéäåðîì. Öåíû
ñîâåðøåííî íåñîïîñòàâèìû ñ òåìè, ÷òî óñòàíàâëèâàþòñÿ â ïðîöåññå æåñòêîé êîíêóðåíöèè.
Ïî ãðàôèêàì íàãðóçêè íà ïðîöåññîð, îáúåìó çàíèìàåìîé îïåðàòèâíîé ïàìÿòè, ìîæíî
ñóäèòü î äîñòàòî÷íîñòè ðåñóðñîâ ñåðâåðà äëÿ çàäà÷, èñïîëíÿåìûõ íà íåì. Ýòî äàåò
îáîñíîâàíèå äëÿ îáíîâëåíèÿ ñåðâåðà.
Ïðàêòè÷åñêè âî âñåõ ôèðìàõ åñòü áîëüøèå îáúåìû èíôîðìàöèè, êîòîðûå âêëþ÷àþò â
ñåáÿ âàæíûå äîêóìåíòû, áàçû äàííûõ, àðõèâû è ò.ä. Ïîòåðÿ ýòèõ äîêóìåíòîâ ïðèíåñåò
ôèðìå áîëüøèå óáûòêè. Äëÿ òîãî ÷òîáû âñåãäà èìåòü ðåçåðâíóþ êîïèþ ýòèõ ôàéëîâ,
íàñòðàèâàþòñÿ ïëàíû ðåçåðâíîãî êîïèðîâàíèÿ äàííûõ. Ñîçäàþòñÿ îáðàçû äàííûõ è
ñêëàäûâàþòñÿ íà ôàéë-ñåðâåðå. Çà ñâîáîäíûì ìåñòîì íà ôàéë-ñåðâåðå è çà ñîçäàíèåì
îáðàçîâ òîæå íåîáõîäèìî íàñòðàèâàòü ñëåæåíèå.
Ñëåæåíèå ÷àùå âñåãî ïðîèçâîäèòñÿ çà ñîñòîÿíèåì ñåðâåðîâ, ìàðøðóòèçàòîðîâ è
äðóãîãî ñåòåâîãî îáîðóäîâàíèÿ. Ãðàìîòíî íàñòðîåííàÿ ñèñòåìà ìîíèòîðèíãà ìîæåò ñíèçèòü
êîë-âî îòêàçîâ ñåòè è óâåëè÷èòü å¸ îòêàçîóñòîé÷èâîñòü.  òî æå âðåìÿ, àäìèíèñòðàòîðû
ñåòè áóäóò áûñòðî è âîâðåìÿ îïîâåùåíû î íåïîëàäêàõ.
Åäèíñòâåííûì íåäîñòàòêîì òàêèõ ñèñòåì ÿâëÿåòñÿ ñëîæíîñòü ñîçäàíèÿ è
íàñòðîéêè. Ñóùåñòâóåò ìíîæåñòâî ãîòîâûõ êîìïëåêñíûõ ðåøåíèé, íî íå âñåãäà ïî òåì èëè
èíûì ïðè÷èíàì îíè ïîäõîäÿò ïîä óæå íàñòðîåííóþ è îòëàæåííóþ êîðïîðàòèâíóþ ñåòü. Ïîýòîìó
ïðèõîäèòüñÿ âûáèðàòü è êîìáèíèðîâàòü ýòè ñèñòåìû äëÿ äîñòèæåíèÿ æåëàåìîãî
ðåçóëüòàòà
1.4 Ïîñòàíîâêà çàäà÷è
Îäíî èç îñíîâíûõ òðåáîâàíèé, ïðåäúÿâëÿåìûõ ê ïîñòàíîâêå è ðåàëèçàöèè çàäà÷
äèïëîìíîãî ïðîåêòèðîâàíèÿ, ñîñòîèò â òîì, ÷òî âñå ðåçóëüòàòû è íà èõ îñíîâå âûâîäû äîëæíû
áûòü ïîëó÷åíû â ðåàëüíûõ óñëîâèÿõ íà ðåàëüíîì ïðåäïðèÿòèè. Ýòî äàåò âîçìîæíîñòü
ïðèäàòü ðåçóëüòàòàì äèïëîìíîé ðàáîòû ïðàêòè÷åñêóþ çíà÷èìîñòü. Ïðîâåäÿ ðàáîòó â
ðåàëüíûõ óñëîâèÿõ, ìîæíî ðåàëüíî îöåíèòü ýôôåêòèâíîñòü èñïîëüçóåìûõ ñåòåâûõ
òåõíîëîãèé íà îñíîâå êîëè÷åñòâåííîé îöåíêè ïðîèçâîäèòåëüíîñòè ñåòåâûõ êàíàëîâ.
Êðàòêî îïèøåì ïðåäìåòíóþ îáëàñòü. Ôèðìà çàíèìàåòñÿ ïðîäàæåé ñàóí, áàíü è
ñîïóòñòâóþùèõ ýòîìó ìàòåðèàëîâ. Ñîñòîèò èç îôèñà, ñêëàäà è ìàãàçèíîâ, òåððèòîðèàëüíî
ðàçíåñåííûõ ïî âñåìó ãîðîäó. Âñå ñåðâåðà ðàñïîëîæåíû ó ïðîâàéäåðà (êîëëîêàöèÿ), à
èìåííî: ñåðâåðà òåðìèíàëîâ, ñåðâåð ïëàòôîðìû 1Ñ, ñåðâåð áàçû äàííûõ MS SQL è
ìàðøðóòèçàòîð ïîä óïðàâëåíèåì îïåðàöèîííîé ñèñòåìû CentOs 5.5 ñ öåïî÷êàìè NAT â
ïðàâèëàõ iPtables.
 îñíîâíîì ðàáîòà ïåðñîíàëà ïðîèñõîäèò íà ñåðâåðàõ òåðìèíàëîâ, ÷òî îáåñïå÷èâàåò
íåêîòîðóþ
öåíòðàëèçîâàííîñòü,
ïðîñòîòó
àäìèíèñòðèðîâàíèÿ
(âñåãäà
ëåã÷å
àäìèíèñòðèðîâàòü 3 ñåðâåðà, ÷åì 50 êîìïüþòåðîâ) è, çà ñ÷åò íàñòðîåê iPtables íà
ìàðøðóòèçàòîðå, áåçîïàñíîñòü. Ïîäêëþ÷åíèå èäåò ïî ïðîòîêîëó RDP (Remote Desctop
Protokol). Òàê æå äëÿ ðàáîòû ïîñòîÿííî òðåáóåòñÿ îáìåí èíôîðìàöèåé ìåæäó îôèñàìè.
Ïðåäïðèÿòèå ðàáîòàåò ñ êîíôèäåíöèàëüíîé èíôîðìàöèåé, ïîýòîìó âàæíà áåçîïàñíîñòü
ïåðåäà÷è äàííûõ. Ìàãàçèíû ðàáîòàþ òîëüêî ñ ñåðâåðàìè, íàõîäÿùèìèñÿ ó ïðîâàéäåðà.
 îôèñå è íà ñêëàäå â êà÷åñòâå ìàðøðóòèçàòîðîâ âûñòóïàåò ñåðâåð ïîä
îïåðàöèîííîé ñèñòåìîé Centos 5.5 ñ íàñòðîåííûìè öåïî÷êàìè nat â iptables.  ìàãàçèíàõ
ñòîÿò îáû÷íûå hardware ìàðøðóòèçàòîðû. Íà ñåðâåðà òåðìèíàëîâ, 1Ñ ñåðâåð, ñåðâåð
MS SQL 2008 óñòàíîâëåíà îïåðàöèîííàÿ ñèñòåìà MS Windows 2003 R2.
Äëÿ ïîñòðîåíèÿ ñèñòåìû, îáëàäàþùåé òðåáóåìûìè ïîòðåáèòåëüñêèìè ñâîéñòâàìè è
ôóíêöèîíèðóþùåé â óñëîâèÿõ ðåàëüíûõ îãðàíè÷åíèé íåîáõîäèìî ðåøèòü ñëåäóùèå çàäà÷è:
1. Ñîçäàòü çàùèùåííóþ êîðïîðàòèâíóþ ñåòü äëÿ ïðåäïðèÿòèÿ;
2.
Ïîäêëþ÷èòü ïî çàùèùåííûì êàíàëàì ìàãàçèíû ê ñåðâåðàì;
.
Îöåíèòü ïðîèçâîäèòåëüíîñòü ñîçäàííûõ êàíàëîâ;
.
Ñîçäàòü ñèñòåìó ìîíèòîðèíãà è îïîâåùåíèÿ î ïðîáëåìàõ ñ îáîðóäîâàíèåì
êîðïîðàòèâíîé ñåòè.
Ïðåäñòàâèì ñòðóêòóðó ïðîåêòèðóåìîé êîðïîðàòèâíîé ñåòè ïðåäïðèÿòèÿ â âèäå, êàê
ýòî ïîêàçàíî íà ðèñ. 1.4.1.
Ðèñ. 1.4.1 Ïðîåêòèðóåìàÿ êîðïîðàòèâíàÿ ñåòü
Ãëàâà 2. Âíåäðåíèå òåõíîëîãèé vpn â êîðïîðàòèâíóþ ñåòü è èõ ñðàâíèòåëüíàÿ
îöåíêà
.1 Ðåàëèçàöèÿ íà îñíîâå òåõíîëîãèè OpenVPN
Ñíà÷àëà îáúåäèíèì â îäíó êîðïîðàòèâíóþ ñåòü îôèñ, ñêëàä è íàøè ñåðâåðà ó
ïðîâàéäåðà. Äëÿ ýòîãî íàì íóæíî ïîñòðîèòü çàùèùåííûå êàíàëû - òóííåëè òîëüêî ìåæäó
ìàðøðóòèçàòîðàìè, òàê êàê íåò íåîáõîäèìîñòè ïîäêëþ÷àòü êàæäûé êîìïüþòåð â
îòäåëüíîñòè.
Èòàê: åñòü 3 ìàðøðóòèçàòîðà ïîä óïðàâëåíèåì ÎÑ CentOs. Ïåðåáðîñ ïàêåòîâ èç
Èíòåðíåòà â ñåòü è îáðàòíî ïðîèçâîäèòñÿ ñ ïîìîùüþ òåõíîëîãèè NAT è ïðàâèë iptables.
êîðïîðàòèâíûé ñåòü ìîíèòîðèíã ñåðâåð
Äàäèì äëÿ óäîáñòâà ìàðøðóòèçàòîðàì èìåíà:
 Â îôèñå: Office;

Íà ñêëàäå: Sklad;

Êîëîêàöèÿ (ñåðâåðà ó ïðîâàéäåðà): Colo;

Ìàãàçèí ¹1: mag1

Ìàãàçèí ¹2: mag2
Ñåòåâûå íàñòðîéêè ìàðøðóòèçàòîðîâ:
Office:
Ñåòü
Èíòåðíåò
Ëîêàëüíàÿ
Èíòåðôåéñ
eth2
eth1
Ip àäðåñ
213.182.175.230
192.168.53.250
Èíòåðôåéñ
eth2
eth1
Ip àäðåñ
79.142.87.206
192.168.0.1
Ìàñêà
255.255.255.252
255.255.255.0
Øëþç
213.182.175.229
-
:
Ñåòü
Èíòåðíåò
Ëîêàëüíàÿ
Ìàñêà
255.255.255.252
255.255.255.0
Øëþç
79.142.87.211
-
Colo:
Ñåòü
Èíòåðíåò
Ëîêàëüíàÿ
Èíòåðôåéñ
eth2
eth1
Ip àäðåñ
195.2.240.68
172.16.100.8
Ìàñêà
255.255.255.252
255.255.255.0
Øëþç
195.2.240.60
-
Íàñòðîéêè hardware ìàðøðóòèçàòîðîâ â ìàãàçèíàõ íå èãðàþò ðîëè, ïîýòîìó èõ
ïðîïóñòèì.
Ïðèñòóïèì ê óñòàíîâêå è íàñòðîéêå.
CentOS (Community ENTerprise Operating System) - äèñòðèáóòèâ Linux,
îñíîâàííûé íà êîììåð÷åñêîì Red Hat Enterprise Linux êîìïàíèè Red Hat è ñîâìåñòèìûé ñ
íèì. CentOS èñïîëüçóåò ïðîãðàììó yum äëÿ ñêà÷èâàíèÿ è óñòàíîâêè îáíîâëåíèé ñ
ðåïîçèòîðèåâ. Âñÿ ðàáîòà ïî íàñòðîéêå è óñòàíîâêå ïðîèçâîäèòñÿ óäàëåííî, èñïîëüçóÿ
OpenSSH ñåðâåð íà ìàðøðóòèçàòîðàõ è êëèåíò putty.
Íàñòðîèì ïåðâûì ìàðøðóòèçàòîð Colo. Ýòîò ìàðøðóòèçàòîð áóäåò âûñòóïàòü â
ðîëè OpenVPN ñåðâåðà.
Ïàêåò OpenVPN íå äîñòóïåí â ñòàíäàðòíîì ðåïîçèòîðèè, ïîýòîìó ïîäêëþ÷àåì
äîïîëíèòåëüíûé ðåïîçèòîðèé rpmforge:
colo>
rpm
-Uhv
http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.r
f.x86_64.rpm
Ýòà êîìàíäà ñêà÷èâàåò rpm ïàêåò ðåïîçèòîðèÿ è óñòàíàâëèâàåò åãî.
Òåïåðü íàì ñòàë äîñòóïåí ïàêåò OpenVPN, óñòàíàâëèâàåì åãî:
colo> yum install openvpnóñòàíîâëåí. Äàëåå òðåáóåòñÿ ñãåíåðèðîâàòü êîðíåâîé
ñåðòèôèêàò ñåðâåðà, ñåðòèôèêàòû è êëþ÷è êëèåíòîâ, ñåðòèôèêàò è êëþ÷ ñåðâåðà, tls
êëþ÷.
Äëÿ ýòîãî ïåðåõîäèì â êîíôèãóðàöèîííûé êàòàëîã OpenVPN è ñîçäàåì êàòàëîã ïîä
íàøè áóäóùèå êëþ÷è è êàòàëîã ïîä êîíôèãóðàöèîííûå ôàéëû êëèåíòîâ:
colo> cd /etc/openvpn> mkdir keys> mkdir ccd
Çàãðóæàåì ïåðåìåííûå äëÿ ãåíåðàöèè êëþ÷åé â ïàìÿòü è íà÷èíàåì ãåíåðèðîâàòü
ñåðòèôèêàò àâòîðèçàöèè:
colo>./vars>./build-caa 1024 bit RSA private key
.....................++++++
..++++++new private key to 'ca.key'
----are about to be asked to enter information that will be incorporatedyour
certificate request.you are about to enter is what is called a Distinguished Name or a
DN.are quite a few fields but you can leave some blanksome fields there will be a
default value,you enter '.', the field will be left blank.
---# ÑòðàíàName (2 letter code) [US]:RU
# Ïðîâèíöèÿor Province Name (full name) [CA]:SPB
# ÃîðîäName (eg, city) [SanFrancisco]:SPB
# Íàçâàíèå ôèðìûName (eg, company) [Fort-Funston]:server
# Îòäåëåíèå ôèðìûUnit Name (eg, section) []:server
# Èìÿ ñåðâåðà OpenVPNName (eg, your name or your server's hostname)
[Fort-Funston CA]:server[]:serverAddress [me@myhost.mydomain]:
Ñîçäàåì ñåðòèôèêàò X.509 äëÿ ñåðâåðà:
colo> ./build-key-server server
# ÑòðàíàName (2 letter code) [US]: RU
# Ïðîâèíöèÿor Province Name (full name) [CA]:SPB
# ÃîðîäName (eg, city) [SanFrancisco]: SPB
# Íàçâàíèå êîìïàíèèName (eg, company) [x]:server
# Îòäåëåíèå êîìïàíèèUnit Name (eg, section) []:server
# Èìÿ ñåðâåðà OpenVPNName (eg, your name or your server's hostname)
[]:server
# Ïî÷òîâûé àäðåñ Address [root@localhost]:enter the following 'extra'
attributesbe sent with your certificate request
# Ïàðîëü
A challenge password []:123456789
# Íàçâàíèå îðãàíèçàöèè
An optional company name []:server
Äàëåå ïîÿâèòñÿ âîïðîñ î ïîäïèñûâàíèè ñåðòèôèêàòà, ñîãëàøàåìñÿ.
Ñîçäà¸ì êëþ÷ äëÿ office:> ./build-key-server officea 1024 bit RSA private key
.........++++++
.......++++++new private key to 'client.key'
----are about to be asked to enter information that will be incorporatedyour
certificate request.you are about to enter is what is called a Distinguished Name or a
DN.are quite a few fields but you can leave some blanksome fields there will be a
default value,you enter '.', the field will be left blank.
----Name (2 letter code) [US]: RUor Province Name (full name) [CA]:
SPBName (eg, city) [SanFrancisco]: SPBName (eg, company) [server]:companyUnit
Name (eg, section) []:officeName (eg, your name or your server's hostname)
[]:officeAddress [root@localhost]:enter the following 'extra' attributesbe sent with
your certificate requestchallenge password []:123456789optional company name
[]:office
Òàêèì æå ñïîñîáîì, ñîçäà¸ì êëþ÷è äëÿ ñêëàäà è äâóõ ìàãàçèíîâ.
Ñîçäàåì êëþ÷ Äèôôè Õåëüìàí äëÿ îáìåíà êëþ÷àìè ïî íåçàùèùåííîìó êàíàëó:
colo> ./build-dh
Ñîçäàåì êëþ÷ äëÿ tls-àóòåíòèôèêàöèè:
colo> openvpn --genkey --secret keys/ta.key
Ïîñëå âñåõ ýòèõ ìàíèïóëÿöèé â êàòàëîãå keys/ ïîÿâëÿþòñÿ ñëåäóþùèå ôàéëû:
 ca.crt - Ãëàâíûé CA ñåðòèôèêàò, ýòîò ôàéë íóæåí è êëèåíòó è ñåðâåðó;

dh1024.pem - êëþ÷ Äèôôè Õåëüìàí, ýòîò ôàéë íóæåí òîëüêî ñåðâåðó;

server.crt - Ñåðòèôèêàò ñåðâåðà, íóæåí òîëüêî ñåðâåðó;

server.key - Êëþ÷ ñåðâåðà, íóæåí òîëüêî ñåðâåðó (ñåêðåòíûé ôàéë);

office.crt, sklad.crt, mag1.crt, mag2.crt - Ñåðòèôèêàòû êëèåíòîâ, íóæíû
òîëüêî ñîîòâåòñòâóþùèì êëèåíòàì;

office.key, sklad.key, mag1.key, mag2.key - Êëþ÷è êëèåíòîâ, íóæíû òîëüêî
ñîîòâåòñòâóþùèì êëèåíòàì (ñåêðåòíûå ôàéëû);

ta.key - TLS-êëþ÷, íóæåí è êëèåíòàì è ñåðâåðó.
Ñëåäîâàòåëüíî, íà ñåðâåðå îñòàþòñÿ ôàéëû ca.crt, dh1024.pem, server.crt,
server.key, ta.key, à êëèåíòàì îòäàþòñÿ ca.crt, dh1024.pem è èõ êëþ÷è ñ
ñåðòèôèêàòàìè.
Íà ýòîì îïåðàöèè ñ ãåíåðàöèåé êëþ÷åé è ñåðòèôèêàòîâ çàêîí÷åíû, ïåðåõîäèì ê
íàñòðîéêå ñåðâåðà è êëèåíòîâ. Ñîçäàåì êîíôèãóðàöèîííûé ôàéë server.conf ñëåäóþùåãî
ñîäåðæèìîãî:
# Ïîðò íà êîòîðîì ðàáîòàåò ñåðâåð
port 5000
# Ïðîòîêîë udp
proto udp
# Èñïîëüçóåìûé òèï óñòðîéñòâà è íîìåð
dev tun0
# Óêàçûâàåì ôàéë CA
ca /etc/openvpn/keys/ca.crt
# Óêàçûâàåì ôàéë ñ ñåðòèôèêàòîì ñåðâåðà
cert /etc/openvpn/keys/server.crt
# Óêàçûâàåì ôàéë ñ êëþ÷åì ñåðâåðà
key /usr/local/etc/openvpn/keys/server.key
# Óêàçûâàåì ôàéë Äèôôè Õåëüìàí
dh /usr/local/etc/openvpn/keys/dh1024.pem
# Çàäàåì IP-àäðåñ ñåðâåðà è ìàñêó ïîäñåòè âèðòóàëüíîé ñåòè
server 10.10.200.0 255.255.255.0
# Çàäàåì ìàðøðóòû, êîòîðûå ïåðåäà¸ì êëèåíòàì, è ìàñêó ïîäñåòè äëÿ òîãî, ÷òîáû îíè
âèäåëè ñåòü çà OpenVPN ñåðâåðîì
# Colo"route 172.16.100.0 255.255.255.0"
# Office"route 192.168.53.0 255.255.255.0"
# Sklad
push "route 192.168.0.0 255.255.255.0"
# Óêàçûâàåì, ãäå õðàíÿòñÿ ôàéëû ñ íàñòðîéêàìè IP-àäðåñîâ êëèåíòîâ
client-config-dir ccd
# äîáàâëÿåì ìàðøðóòû ñåðâåð-êëèåíò
route 10.10.200.0 255.255.255.0
# Office192.168.53.0 255.255.255.0
# Sklad192.168.0.0 255.255.255.0
# Ðàçðåøàåò âèäåòü êëèåíòàì äðóã äðóãà (ïî âèðòóàëüíûì IP) ïî óìîë÷àíèþ
êëèåíòû âèäÿò òîëüêî ñåðâåð
client-to-client
# Âêëþ÷àåì TLS àóòèôèêàöèþserver
# Óêàçûâàåì tls-êëþ÷auth keys/ta.key 0
# Òàéìàóò äî ðåêîíåêòà
tls-timeout 120
# Âûáèðàåì àëãîðèòì õåøèðîâàíèÿ
auth MD5
# Âêëþ÷àåì øèôðàöèþ ïàêåòîâ
cipher BF-CBC
# Ïðîâåðÿåì àêòèâíîñòü ïîäêëþ÷åíèÿ êàæäûå 10 ñåêóíä, åñëè â òå÷åíèè 120 ñåê.
íåò îòâåòà, ïîäêëþ÷åíèå çàêðûâàåòñÿ
keepalive 10 120
# Ñæàòèå òðàôèêà
comp-lzo
# Îò êàêîãî ïîëüçîâàòåëÿ è ãðóïïû áóäåò ðàáîòàòü OpenVPN
user nobody
group nobody
# Íå ïåðå÷èòûâàòü êëþ÷è ïîñëå ïîëó÷åíèÿ SIGUSR1 èëè ping-restart
persist-key
# Íå çàêðûâàòü è ïåðåîòêðûâàòü TUN\TAP óñòðîéñòâî, ïîñëå ïîëó÷åíèÿ
SIGUSR1 èëè ping-restart
persist-tun
#
Ëîããèðîâàíèå/var/log/openvpn/openvpn-status.log/var/log/openvpn/openvpn.log
# Óðîâåíü èíôîðìàöèè äëÿ îòëàäêè
verb 3
Ñîçäàåì ôàéëû ñ íàñòðîéêàìè äëÿ êëèåíòîâ. Â êàòàëîãå /etc/openvpn/ccd íà
ñåðâåðå ñîçäàåì ôàéë office, sklad, mag1, mag2 (èìÿ ôàéëà - èìÿ êîòîðîìó âûäàí
ñåðòèôèêàò) ñëåäóþùåãî ñîäåðæàíèÿ:
officepush
10.10.200.2
10.10.200.3
10.10.200.1192.168.53.0
10.10.200.1192.168.53.0
255.255.255.0push
255.255.255.0push
10.10.200.4
10.10.200.1push 10.10.200.5 10.10.200.1
Ýòèìè íàñòðîéêàìè âûäàëè êëèåíòàì ñ ñîîòâåòñòâóþùèìè ñåðòèôèêàòàìè
âèðòóàëüíûå ip àäðåñà, øëþç 10.10.200.1 è çàäàëè ìàðøðóò ÷åðåç òóííåëü ê ñåòè çà
êëèåíòàìè. Äëÿ ìàãàçèíîâ ìàðøðóò íå çàäàåì, òàê êàê â íàøó çàäà÷ó íå âõîäèò
ïîäêëþ÷åíèå ýòèõ ñåòåé.
Íà ýòîì íàñòðîéêà ñåðâåðà çàêàí÷èâàåòñÿ, çàïóñêàåì OpenVPN:
colo> service openvpn start
Åñëè âñå ïðàâèëüíî, òî äîëæíî ïîÿâèòüñÿ âèðòóàëüíîå tun óñòðîéñòâî:
colo>
ifconfig
tun0Link
encap:UNSPEC
HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00addr:10.10.200.1
P-t-P:10.10.200.2
MULTICAST
Mask:255.255.255.255POINTOPOINT
MTU:1500
Metric:1packets:9
errors:0
RUNNING
dropped:0
NOARP
overruns:0
frame:0packets:24 errors:0 dropped:0 overruns:0 carrier:0:0 txqueuelen:100
Åñëè óñòðîéñòâî íå ïîÿâèëîñü, çíà÷èò åñòü îøèáêè â êîíôèãóðàöèîííûõ ôàéëàõ.
Ñìîòðèì ëîã è óñòðàíÿåì îøèáêó, äàëåå îïÿòü ñòàðòóåì.
Ïåðåõîäèì ê íàñòðîéêå êëèåíòîâ. Âñå êîíôèãóðàöèîííûå ôàéëû îäèíàêîâûå, ïîýòîìó
ðàññìîòðèì îäèí èç íèõ. Íà ìàðøðóòèçàòîðàõ office è sklad óñòàíàâëèâàåì OpenVPN,
òàê æå êàê è äëÿ ñåðâåðà.
Ñîçäàäèì êîíôèãóðàöèîííûé ôàéë client.conf:tunudp195.2.240.68 #(ðåàëüíûé ip
ñåðâåðà)
port
5000retry
infinitekeys/ca.crtkeys/client.crtkeys/client.keyclientauth
keys/ta.key 1MD5BF-CBCcert-type serverlzokeytun
#äîáàâëåíèå ìàðøðóòà ê ñåòè çà ñåðâåðîì. Ýòà ñòðî÷êà íå íóæíà äëÿ êîíôèã.
ôàéëîâ ìàãàçèíîâ
up
/etc/openvpn_up.sh/var/log/openvpn/openvpn-status.log/var/log/openvpn/openvpn.log
verb 3
Ñîçäàäèì ñêðèïò openvpn_up.sh äëÿ àâòîìàòè÷åñêîãî äîáàâëåíèÿ ìàðøðóòà:
#!/bin/sh
/sbin/route add -net 172.16.100.0 netmask 255.255.255.0 gw 10.10.200.1 tun0
Íà ýòîì íàñòðîéêà OpenVPN çàêîí÷åíà. Êîïèðóåì ýòè ôàéëû íà office è sklad.
Äàëåå çàïóñêàåì OpenVPN. Åñëè íå çàïóñòèëñÿ, ñìîòðèì ëîãè.
Íî íà ýòîì åùå íå âñå. Òåïåðü íàì íàäî âêëþ÷èòü òðàíñëÿöèþ àäðåñîâ (NAT) ÷òîáû
ïàêåòû îò êëèåíòñêîé ìàøèíû, ïîïàäàÿ íà ñåðâåð ìîãëè óéòè â Èíòåðíåò è ñîîòâåòñòâåííî
âîçâðàùàëèñü íàçàä:
colo> iptables -t nat -A POSTROUTING -s 10.10.200.0/24 -o eth1 -j
MASQUERADE
Òåïåðü 3 ñåòè «âèäÿò» äðóã äðóãà. Íàñòðîèì ïîäêëþ÷åíèå ñ ìàãàçèíîâ ê ñåðâåðàì.
Íà êîìïüþòåðàõ â ìàãàçèíàõ, ñòîèò îïåðàöèîííàÿ ñèñòåìà Windows XP. Ñêà÷èâàåì ñ
îôèöèàëüíîãî ñàéòà äèñòðèáóòèâ OpenVPN è óñòàíàâëèâàåì. Çàòåì â óñòàíîâëåííîì
êàòàëîãå â ïàïêó config êëàäåì íàøè êëþ÷è è êîíôèãóðàöèîííûé ôàéë mag1. Ïîñëå ýòîãî
ìîæíî çàïóñêàòü.
Íà ýòîì ýòàïû íàñòðîéêè çàâåðøåíû. Èìåÿ çàùèùåííóþ êîðïîðàòèâíóþ ñåòü, ìîæíî
ïîäêëþ÷àòüñÿ íàïðÿìóþ ê ñåðâåðàì. Ïðîâåðèòü øèôðàöèþ ìîæíî, ïðîñëóøàâ òðàôèê íà îäíîì
èç ðîóòåðîâ êîìàíäîé TCPDUMP.
Ïðèìåð âûâîäà íåøèôðîâàííîãî òðàôèêà:
:27:15.752295
195.2.240.68.ssh:
IP
.
cl230-175-182-213.cl.metrocom.ru.40887
2826496:2827944(1448)
ack
1009
win
>
10080
<nop,nop,timestamp 2791385847 256970382>
:27:15.752347
IP
cl230-175-182-213.cl.metrocom.ru.40887:
195.2.240.68.ssh
.
ack
2783056
>
win
65535
<nop,nop,timestamp 256970382 2791385774,nop,nop,sack 1 {2785952:2827944}>
:27:15.755042
195.2.240.68.ssh:
IP
.
cl230-175-182-213.cl.metrocom.ru.40887
2827944:2829392(1448)
ack
1009
win
>
10080
<nop,nop,timestamp 2791385850 256970382>
:27:15.755096
IP
cl230-175-182-213.cl.metrocom.ru.40887:
195.2.240.68.ssh
.
ack
2783056
>
win
65535
<nop,nop,timestamp 256970382 2791385774,nop,nop,sack 1 {2785952:2829392}>
Ïðèìåð çàøèôðîâàííîãî:
:24:18.247960
IP
195.2.240.68.sieve
>
cl230-175-182-213.cl.metrocom.ru.sieve: UDP, length 113
:24:18.248040
IP
195.2.240.68.sieve
>
cl230-175-182-213.cl.metrocom.ru.sieve: UDP, length 113
:24:18.250915
IP
cl230-175-182-213.cl.metrocom.ru.sieve
>
195.2.240.68.sieve: UDP, length 1441
:24:18.251291
IP
195.2.240.68.sieve
cl230-175-182-213.cl.metrocom.ru.sieve: UDP, length 113
2.2 Ðåàëèçàöèÿ íà îñíîâå òåõíîëîãèè SSH
>
2.2.1 SSH-òóííåëü
Ïðåäïîëîæèì, ÷òî îôèñ, ñêëàä è ìàãàçèíû (èíôîðìàöèÿ î ñåòè â ïóíêòå 2.1) ðàáîòàþò
òîëüêî íà ñåðâåðàõ â òåðìèíàëüíîì ðåæèìå. Òîãäà ñóùåñòâóåò î÷åíü ïðîñòîé, à ñàìîå
ãëàâíîå áûñòðûé ñïîñîá îðãàíèçàöèè VPN òóííåëÿ. Ñ ïîìîùüþ ïàêåòà OpenSSH íà
software ìàðøðóòèçàòîðàõ ìîæíî äåëàòü øèôðîâàííûé êàíàë òîëüêî ïî îäíîìó íóæíîìó ïîðòó.
Äëÿ ðàáîòû ñ òåðìèíàëüíûì ñåðâåðîì, êëèåíòû èñïîëüçóþò ïðîòîêîë RDP, êîòîðûé
èñïîëüçóåò 3389 ïîðò (ñõåìà òàêîé ðàáîòû ïðåäñòàâëåíà íà ðèñóíêå 2.2.2.1). Ñèíèì,
îòìå÷åí ssh-òóííåëü, ïî êîòîðîìó áóäåò ðàáîòàòü RDP ïðîòîêîë.
Ðèñ.2.2.2.1 Èñïîëüçîâàíèå ssh-òóííåëåé
Ðåàëèçàöèÿ, êàê ãîâîðèëîñü ðàíüøå, î÷åíü ïðîñòà, òîëüêî ó OpenSSH åñòü
íåäîñòàòîê: ïðè áîëüøîì ïðîñòîå êàíàëà îí ðâåòñÿ. Íî è äëÿ ýòîé ïðîáëåìû åñòü ïðîñòîå
ðåøåíèå. Ïàêåò autoSSH, ïî äîïîëíèòåëüíîìó ïîðòó ïðè ïðîñòîå øëåò heartbeat ïàêåò è
êàíàë íå ïàäàåò. Ñîçäàäèì 2 êàíàëà äî äâóõ òåðìèíàëüíûõ ñåðâåðîâ:
colo> export AUTOSSH_DEBUG=1
colo> export AUTOSSH_GATETIME=0> export AUTOSSH_PORT=20037>
autossh -f -N -g -l root -L 1002:172.16.100.33:3389 195.2.240.68> export
AUTOSSH_PORT=20040> autossh -f -N -g -l root -L 1002:172.16.100.34:3389
195.2.240.68
Ðàññìîòðèì êîìàíäû ïîäðîáíåå:> autossh -f -N -g -c aes256 -l root -L
1002:172.6.100.33:3389 195.2.240.68
Ïàðàìåòðû:
 -f: Ðàáîòàòü â ôîíîâîì ðåæèìå, à íå ïîäêëþ÷àòüñÿ íà õîñò;

-N: Íå èñïîëíÿòü óäàëåííûå êîìàíäû;

-g: Ðàçðåøàåò ïîäêëþ÷åíèå óäàëåííûì õîñòàì;

-c: Âêëþ÷àåì øèôðàöèþ;

-l: Èìÿ ïîëüçîâàòåëÿ, îò êîòîðîãî ïîäêëþ÷àåìñÿ ê ñåðâåðó;

-L Ïðîïèñûâàåì, êàêîé ëîêàëüíûé ïîðò èñïîëüçóåì äëÿ ïîäêëþ÷åíèÿ è íà êàêîé
ñåðâåð è ïîðò ïîäêëþ÷àåìñÿ.
Íà ýòîì íàñòðîéêà øèôðîâàííîãî òóííåëÿ çàêîí÷åíà è ìîæíî ðàáîòàòü! Åñëè íàì íóæíî
äîáàâèòü åùå îäèí òóííåëü, òî ñ ïîìîùüþ êîìàíäû export AUTOSSH_PORT=20050
äîáàâëÿåì åùå îäèí ïîðò äëÿ ïîñûëêè heartbeat ïàêåòîâ è ïðîïèñûâàåì òó æå êîìàíäó
ïîäíÿòèÿ ssh òóííåëÿ, íî óæå ñ äðóãèì ïîðòîì.
2.2.2 SSH VPN
Ðåàëèçóåì òó æå ñõåìó êîðïîðàòèâíîé ñåòè, êîòîðóþ ñîçäàâàëè ïðè ïîìîùè ïàêåòà
OpenVPN, íî óæå ñ ïîìîùüþ âñòðîåííîãî â linux ñèñòåìû ïàêåòà OpenSSH. Íàì õâàòèò
ðàññìîòðåòü ñîåäèíåíèå 2-õ ñåòåé, òàê êàê äëÿ ïîäêëþ÷åíèÿ åùå îäíîé ñåòè íóæíî áóäåò
ïðîâåñòè òå æå ñàìûå äåéñòâèÿ.
Ñ âåðñèè 4.3, OpenSSH ïîääåðæèâàåò óñòðîéñòâà tun/tap, ïîçâîëÿþùèå
ñîçäàâàòü øèôðîâàííûé òóííåëü. Ýòî î÷åíü ïîõîæå íà OpenVPN, îñíîâàííûé íà TLS.
Øèôðîâàííûé òóííåëü ñîçäàåòñÿ íà îñíîâå îäíîãî TCP ñîåäèíåíèÿ, ÷òî âåñüìà óäîáíî,
äëÿ áûñòðîãî ïîäíÿòèÿ ïðîñòîãî VPN, íà IP.
Ñíà÷àëà íóæíî äîïèñàòü â êîíôèãóðàöèîííûé ôàéë OpenSSH ñòðîêè, ÷òî îí èìååò
ïðàâî ñîçäàâàòü óñòðîéñòâà tun/tap è çàõîäèòü ñ ïðàâàìè root. Â êîíôèãóðàöèîííîì ôàéëå
/etc/ssh/sshd_config, äîëæíû ñòîÿòü ñëåäóþùèå îïöèè:yesyes
Ó íàñ åñòü äâå ñåòè, ñåòü office ñ àäðåñîì 192.168.53.0/24 è ñåòü colo ñ
àäðåñîì 172.16.100.0/24. Äëÿ ñîçäàíèÿ çàùèùåííîé VPN ñåòè íóæíî ïðîäåëàòü
ñëåäóþùèå äåéñòâèÿ:
1. Ïîäêëþ÷èòñÿ ñ îäíîãî ìàðøðóòèçàòîðà ÷åðåç SSH íà äðóãîé ñ îïöèåé -w;
2.
Íàñòðîéêà IP àäðåñà SSH òóííåëÿ äåëàåòñÿ åäèíîæäû íà ñåðâåðå è íà
êëèåíòå.
.
Äîáàâèòü ìàðøðóò äëÿ îáåèõ ñåòåé.
.
Åñëè íóæíî, âêëþ÷èòü NAT íà âíóòðåííåì èíòåðôåéñå øëþçà.
Áóäåì ïîäêëþ÷àòüñÿ èç ñåòè office ê ñåòè colo. Ñîåäèíåíèå íà÷èíàåòñÿ ñ
ìàðøðóòèçàòîðà office, à êîìàíäû âûïîëíÿþòñÿ íà ìàðøðóòèçàòîðå ñåòè colo, òî åñòü,
íàñòðàèâàåì ìàðøðóòèçàòîð colo:
#Ñ ïîìîùüþ îïöèè w c ïàðàìåòðàìè 0:0 ãîâîðèì, ÷òî ïðè ïîäêëþ÷åíèè ñîçäàòü íà
êëèåíòå è ñåðâåðå âèðòóàëüíûå óñòðîéñòâà tun0. Ïàðàìåòð -c âêëþ÷àåò øèôðàöèþ,
ïàðàìåòð -C ñæàòèå òðàôèêà.
office> ssh -c aes256 -C -w0:0 root@195.2.240.68
#Ñëåäóþùèå êîìàíäû óæå âûïîëíÿþòñÿ íà ìàðøðóòèçàòîðå ñåòè colo. Çàäàåì ip
àäðåñ è ìàñêó ïîäñåòè
colo> ifconfig tun0 10.0.1.1 netmask 255.255.255.252
# Äîáàâëÿåì ìàðøðóò äî ñåòè office
colo> route add -net 192.168.53.0 netmask 255.255.255.0 dev tun0
# Âêëþ÷àåì NAT, åñëè íå âêëþ÷åí> echo 1 > /proc/sys/net/ipv4/ip_forward
# Ïðîïèñûâàåì ïðàâèëî ñ ïîìîùüþ ñðåäñòâ iptables äëÿ ïåðåáðîñà ïàêåòîâ èç VPN
ñåòè â ðåàëüíóþ
colo> iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Òåïåðü íàñòðîèì ìàøðóòèçàòîð office:> ifconfig tun0 10.0.1.2 netmask
255.255.255.252> route add -net 172.16.100.0 netmask 255.255.255.0 dev tun0>
echo 1 > /proc/sys/net/ipv4/ip_forward> iptables -t nat -A POSTROUTING -o eth1 -j
Íà ýòîì íàñòðîéêà çàêîí÷åíà, VPN ñåòü ïîñòðîåíà. Äëÿ ïîäêëþ÷åíèÿ îòäåëüíûõ
êîìïüþòåðîâ ñ îïåðàöèîííîé ñèñòåìîé Windows XP (ìàãàçèíû), èñïîëüçóåòñÿ êëèåíò SSH
Putty.
.3 Îöåíêà ïðîèçâîäèòåëüíîñòè êàíàëîâ êîðïîðàòèâíîé ñåòè
 ðàçäåëàõ 2.1 è 2.2 ðàññìîòðåíû äâå òåõíîëîãèè (OpenVPN, SSH) ñîçäàíèÿ
çàùèùåííûõ êîðïîðàòèâíûõ ñåòåé, èñïîëüçóÿ VPN. Íà ñåãîäíÿøíèé äåíü òåõíîëîãèÿ
OpenVPN ëèäèðóåò íà ðûíêå ïîñòðîåíèÿ çàùèùåííûõ ñåòåé, â òî âðåìÿ êàê
òóííåëèðîâàíèå ïðè ïîìîùè SSH òîëüêî íà÷èíàåò âõîäèòü â ïîâñåäíåâíîñòü. Äëÿ òîãî ÷òîáû
ïîíÿòü êàêóþ òåõíîëîãèþ íåîáõîäèìî ïðèìåíèòü â ðåàëüíûõ óñëîâèÿõ ïðè êîíêðåòíûõ
òðåáîâàíèÿõ, ïðåäúÿâëÿåìûõ êîðïîðàòèâíîé ñåòè, íóæíî îöåíèòü èõ ïðîèçâîäèòåëüíîñòü è
îáîñíîâàòü èõ äîñòîèíñòâà è íåäîñòàòêè.
Íà÷àòü ñëåäóåò ñ ïðîèçâîäèòåëüíîñòè çàùèùåííûõ êàíàëîâ. Íà ðèñ. 1.4.1
ïðåäñòàâëåíà ïîñòðîåííàÿ êîðïîðàòèâíàÿ ñåòü, ïðîèçâîäèòåëüíîñòü çàùèùåííûõ êàíàëîâ
êîòîðîé, èñïîëüçóÿ ïðîãðàììó iPerf, íåîáõîäèìî îöåíèòü. Ñ ïîìîùüþ êëèåíòñêîé ÷àñòè
ãåíåðèðóåòñÿ òðàôèê è îòïðàâëÿåòñÿ íà ñåðâåðíóþ ÷àñòü. Ïðè ïîëó÷åíèè äàííûõ
ãåíåðèðóåòñÿ îò÷åò î ñêîðîñòè ïåðåäà÷è äàííûõ.
2.3.1 Îöåíêà ïðîèçâîäèòåëüíîñòè ïðè èñïîëüçîâàíèè òåõíîëîãèè OpenVPN
Äëÿ ïîñòðîåíèÿ ãðàôèêîâ ïðîèçâîäèòåëüíîñòè êàíàëà ñîçäàííîãî ïðè ïîìîùè
OpenVPN áóäåì èñïîëüçîâàòü äàííûå, ïîëó÷åííûå ïðè òåñòèðîâàíèè èç ïðèëîæåíèÿ 1.
Значение RTT
2,500
2,000
Без VPN
Мс
1,500
AES-256-CBC
1,000
Сжатие трафика
0,500
0,000
1
5
9
13
17
21
25
№ опыта
Ðèñ. 2.3.1 Ãðàôèêè çíà÷åíèé RTT
Íà ðèñ. 2.3.1 ïðåäñòàâëåíû ãðàôèêè çíà÷åíèé RTT. Èç íèõ âèäíî, ÷òî ðàçíèöà
ìåæäó êàíàëîì áåç VPN è êàíàëîì ñ èñïîëüçîâàíèåì VPN, íå ÿâëÿåòñÿ ñóùåñòâåííîé.
Òàêæå âêëþ÷åíèå îïöèè ñæàòèÿ íå âëèÿåò íà âðåìÿ îòêëèêà.
Пропускная способность канала
12,50
Мбит/сек
12,00
11,50
11,00
Без VPN
10,50
10,00
AES-256-CBC
Сжатие трафика
9,50
9,00
8,50
8,00
1
3
5
7
9 11 13 15 17 19 21 23 25
№ опыта
Ðèñ. 2.3.2 Ãðàôèêè ïðîïóñêíîé ñïîñîáíîñòè êàíàëà
Íà ðèñ. 2.3.2 ïðåäñòàâëåíû ãðàôèêè ïðîïóñêíîé ñïîñîáíîñòè êàíàëà, èç êîòîðûõ ìîæíî
ñäåëàòü ñëåäóþùèå âûâîäû:
 Ïðè èñïîëüçîâàíèè ñîçäàííîãî êàíàëà VPN ñ øèôðàöèåé ñ ïîìîùüþ êëþ÷à
AES-256-CBC ïîòåðÿ â ïðîèçâîäèòåëüíîñòè 0,5 ìáèò/ñåê, ÷òî ñîñòàâèëî 5,1% îò êàíàëà
áåç èñïîëüçîâàíèÿ VPN;

Ïðè âêëþ÷åíèè ñæàòèÿ øèôðîâàííîãî òðàôèêà íàáëþäàåì ïðèðîñò ñêîðîñòè â
3 ìáèò/ñåê, ÷òî ñîñòàâèëî 32.9%.
%
Загрузка ЦП
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0
Передающ ий
Перед-й с сжатием
Принимающ ий
Прин-й с сжатием
1
3
5
7
9
11
13
15
№ опыта
17
19
21
23
25
Ðèñ.2.3.3 Ãðàôèêè çàãðóçêè ÖÏ
Íà ðèñ. 2.3.3 ïðåäñòàâëåíû ãðàôèêè çàãðóçêè ÖÏ íà ìàðøðóòèçàòîðàõ ïðè
èñïîëüçîâàíèè OpenVPN c øèôðàöèåé òðàôèêà, ïðè âêëþ÷åííîì è îòêëþ÷åííîì ñæàòèè. Ïî
ñðåäíèì çíà÷åíèÿì çàãðóçêè, êàê è ïîëàãàëîñü, ñàìóþ âûñîêóþ íàãðóçêó äàåò øèôðàöèÿ
òðàôèêà ñ èñïîëüçîâàíèåì ñæàòèÿ - 14.992%.
Îñíîâûâàÿñü íà ïîëó÷åííûõ ãðàôèêàõ, ïðîèçâåä¸ì îöåíêó ïðîèçâîäèòåëüíîñòè êàíàëîâ
VPN, ïîñòðîåííûõ ïðè ïîìîùè OpenVPN.
1. Êðèòåðèé «Çàãðóçêà ÖÏ» ïðè ïîëó÷åííûõ çíà÷åíèÿõ ÿâëÿåòñÿ íåñóùåñòâåííûì,
òàê êàê ýòî ìàðøðóòèçàòîð è äðóãèõ ïðîöåññîâ òðåáóþùèõ áîëüøîå ïîòðåáëåíèå ÖÏ íåò;
2.
Êðèòåðèé «RTT» òàêæå ÿâëÿåòñÿ íåñóùåñòâåííûì, òàê êàê ðàçíèöà îò
âðåìåíè îòêëèêà ïðè îïûòàõ áåç VPN îêàçàëàñü ìåíüøå âñåãî íà 0,5 ìñ;
.
Íà ãðàôèêàõ ïðîïóñêíîé ñïîñîáíîñòè êàíàëîâ ìîæíî íàáëþäàòü ïàäåíèå ñêîðîñòè
ïðè èñïîëüçîâàíèè ñðåäñòâ VPN íà 0,5 ìáèò/ñåê â ñðåäíåì. Â íàñòîÿùåå âðåìÿ ýòî íå
ÿâëÿåòñÿ ñóùåñòâåííûì, òàê êàê Èíòåðíåò-ïðîâàéäåðû ïðåäîñòàâëÿþò ñâîè óñëóãè íà
áîëüøèõ ñêîðîñòÿõ, ãäå òàêîå ïàäåíèå íå áóäåò èãðàòü áîëüøîé ðîëè.
.
Ïðè èñïîëüçîâàíèè ñæàòèÿ òðàôèêà âèäåí çàìåòíûé ïðèðîñò ê ïðîïóñêíîé
ñïîñîáíîñòè êàíàëà, íà 3 ìáèò/ñåê. Êîíå÷íî ïðè ýòîì ñèëüíî âîçðàñòàåò çàãðóçêà íà ÖÏ, íî
êàê ãîâîðèëîñü ðàíüøå, ýòî íå èãðàåò áîëüøîé ðîëè.
Ïîäâåäåì èòîãè. Ñîçäàâàÿ çàùèùåííóþ êîðïîðàòèâíóþ ñåòü íà îñíîâå òåõíîëîãèè
OpenVPN, ïîëó÷àåì îäíó îáùóþ ñåòü íà íåñêîëüêî îôèñîâ ñ øèôðàöèåé ïåðåäàâàåìûõ
äàííûõ è ïðèðîñòîì ñêîðîñòè çà ñ÷åò ñæàòèÿ òðàôèêà ñ óäîáñòâîì îáìåíà èíôîðìàöèåé.
Òåõíîëîãèÿ OpenVPN ïîëíîñòüþ îïðàâäûâàåò ñåáÿ. Ÿ èñïîëüçîâàíèå âåäåò ê ðîñòó
ïðîèçâîäèòåëüíîñòè ðàáîòû ñ èíôîðìàöèåé ïî ñåòè. Èç ìèíóñîâ âûäåëÿåòñÿ íåêîòîðàÿ
ñëîæíîñòü íàñòðîéêè è ñîçäàíèÿ VPN ñåòè. Èç ïëþñîâ - êðîññïëàòôîðìåííîñòü.
2.3.2 Îöåíêà ïðîèçâîäèòåëüíîñòè ïðè èñïîëüçîâàíèè òåõíîëîãèè SSH
Äëÿ ïîñòðîåíèÿ ãðàôèêîâ ïðîèçâîäèòåëüíîñòè êàíàëà ñîçäàííîãî ïðè ïîìîùè SSH
áóäåì èñïîëüçîâàòü äàííûå, ïîëó÷åííûå ïðè òåñòèðîâàíèè èç ïðèëîæåíèÿ 2.
Значение RTT
3,000
2,500
2,000
Мс
Без VPN
1,500
AES-256-CBC
Сжатие трафика
1,000
0,500
0,000
1
5
9
13
17
21
25
№ опыта
Ðèñ.2.3.4. Ãðàôèêè çíà÷åíèé RTT
Íà ðèñ. 2.3.4 ïðåäñòàâëåíû ãðàôèêè, ïî êîòîðûì ìîæíî ñóäèòü î âðåìåíè îòêëèêà ïðè
ðàáîòå ssh.  ñðåäíåì âðåìÿ óâåëè÷èëîñü íà 0.8 ìñ. Ýòî çíà÷åíèå íå ÿâëÿåòñÿ êðèòè÷íûì
äàæå äëÿ ñàìûõ ïðèâåðåäëèâûõ ïðîãðàìì.
Пропускная способность канала
12,00
11,50
11,00
Мбит/сек
10,50
Без VPN
10,00
AES-256-CBC
Сжатие трафика
9,50
9,00
8,50
8,00
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
№ опыта
Ðèñ.2.3.5 Ãðàôèêè ïðîïóñêíîé ñïîñîáíîñòè êàíàëà
Íà ðèñ. 2.3.5 ïðåäñòàâëåíû ãðàôèêè ïðîïóñêíîé ñïîñîáíîñòè êàíàëà. Ðåçóëüòàòû
ïîëó÷èëèñü ïðèáëèçèòåëüíî òàêèìè æå, ÷òî è ïðè èñïîëüçîâàíèè OpenVPN.
Загрузка ЦП
90
80
70
60
Передающий
50
%
Перед-й с сжатием
Принимающий
40
Прин-й с сжатием
30
20
10
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
№ опыта
Ðèñ.2.3.6 Ãðàôèêè çàãðóçêè ÖÏ
Íà ðèñ. 2.3.6 ïðåäñòàâëåíû ãðàôèêè çàãðóçêè ÖÏ ïðè èñïîëüçîâàíèè ssh ñ
øèôðàöèåé ñ ñæàòèåì òðàôèêà è áåç. Ïðè âêëþ÷åíèè øèôðàöèè âèäåí áîëüøîé ñêà÷îê
íàãðóçêè íà ÖÏ. Ñðåäíåå çíà÷åíèå - 37.9%. Ýòî äîâîëüíî ìíîãî, íî íå ÿâëÿåòñÿ êðèòè÷íûì.
Èç ïîëó÷åííûõ äàííûõ ìîæíî ñäåëàòü ñëåäóþùèé âûâîä: ïðîèçâîäèòåëüíîñòü ïðè
èñïîëüçîâàíèè ñæàòèÿ òðàôèêà âîçðîñëà ïðèìåðíî íà 25%, íî ïðè ýòîì çíà÷èòåëüíî âûðîñëà
íàãðóçêà íà ÖÏ. Èç äîñòîèíñòâ ýòîé òåõíîëîãèè õî÷åòñÿ âûäåëèòü âîçìîæíîñòü ñîçäàíèÿ
ssh-òóííåëåé ïî îòäåëüíûì ïîðòàì, ÷òî ïðè îïðåäåëåííûõ óñëîâèÿõ äàåò ìíîæåñòâî ïëþñîâ,
íàïðèìåð, âîçìîæíîñòü èìåòü àâòîìàòè÷åñêîå âêëþ÷åíèå ðåçåðâíîãî êàíàëà, ïðè
îòñóòñòâèè ñâÿçè íà îäíîì èç ìàðøðóòèçàòîðîâ. Òàêæå íóæíî îòìåòèòü ïðîñòîòó ñîçäàíèÿ
è
íàñòðîéêè
VPN
ìàñøòàáèðóåìîñòü.
ñåòè,
êðîññïëàòôîðìåííîñòü,
âûñîêàÿ
íàäåæíîñòü,
ëåãêàÿ
2.3.3 Âûáîð ìåæäó òåõíîëîãèÿìè SSH è OpenVPN
Ñîñòàâèì ñðàâíèòåëüíóþ òàáëèöó, îñíîâûâàÿñü íà ïîëó÷åííûõ îïûòíûì ïóòåì äàííûõ.
Ñëîæíîñòü ñîçäàíèÿ
Ìàñøòàáèðóåìîñòü
Ïðîèçâîäèòåëüíîñòü
Çàãðóçêà ÖÏ
Êðîññïëàòôîðìåííîñòü
RTT
Äîêóìåíòàöèÿ
Äîï. âîçìîæíîñòè
Âíåäðåíèå â ñóù. ñåòü
Çàùèùåííîñòü
Ðàñïðîñòðàíåííîñòü
OpenVPN
Äîñòàòî÷íî ñëîæíàÿ íàñòðîéêà. Ñëîæíîñòü
íàñòðîéêè ìàðøðóòèçàöèè äëÿ íåñêîëüêèõ
ñåòåé, âîçìîæíû òðóäíîñòè ñ firewall.
Ïîäêëþ÷åíèå åùå îäíîé ñåòè èëè êëèåíòà,
âëå÷åò èçìåíåíèå êîíôèãóðàöèîííûõ ôàéëîâ íà
ñåðâåðå è äîáàâëåíèå èõ íà êëèåíòà. Çà ñ÷åò
OpenVPN êëèåíòà ïîä Windows èìååò
ïðåèìóùåñòâî ïåðåä SSH. Íå òðåáóåò îáó÷åíèÿ
ïåðñîíàëà.
Çà ñ÷åò ñæàòèÿ ìîæíî äîáèòüñÿ îòëè÷íûõ
ðåçóëüòàòîâ, ïðåâûøàþùèõ èñõîäíîå ñîåäèíåíèå.
Ñæàòèå èäåò âûáîðî÷íî, ò.å. ÷òî ñæàòü íåëüçÿ
- ïðîïóñêàåòñÿ. Ýòî óìåíüøàåò íàãðóçêó íà ÖÏ.
 ñðåäíåì íå áîëüøå 15%
Äà
Íà 0,5 ìñ áîëüøå, ÷åì ó èñõîäíîãî ñîåäèíåíèÿ
Ìàññà äîêóìåíòàöèè íà îôèöèàëüíîì ñàéòå.
Ìíîãî÷èñëåííûå ôîðóìû è îáñóæäåíèÿ.
Ìîãóò áûòü ïðîáëåìû ñ íàñòðîéêîé firewall’à.
Øèôðàöèÿ 256 áèòíûì AES êëþ÷îì
Ëèäèðóþùàÿ òåõíîëîãèÿ ñîçäàíèÿ VPN ñåòåé.
SSH
Ëåãêàÿ íàñòðîéêà, íå òðåáóþùàÿ
îñîáûõ çíàíèé. Íà âñå ñîçäàíèå óõîäèò
íå áîëüøå 10 ìèíóò.
Äëÿ ïîäêëþ÷åíèÿ åùå îäíîé ñåòè
íóæíî ïîâòîðèòü òå æå äåéñòâèÿ, ÷òî
è ïðè îáúåäèíåíèè ïðåäûäóùèõ. Äëÿ
ïîäêëþ÷åíèÿ Windows êîìïüþòåðîâ,
òðåáóåòñÿ îäíîêðàòíîå îáó÷åíèå
ïåðñîíàëà.
Ïðîèçâîäèòåëüíîñòü ÷óòü íèæå, ÷åì
ó OpenVPN. Ñæèìàåòñÿ âåñü
òðàôèê - áîëüøèå íàãðóçêè íà ÖÏ.
 ñðåäíåì íå áîëüøå 38%
Äà
Íà 0,8 ìñ áîëüøå, ÷åì ó èñõîäíîãî
ñîåäèíåíèÿ
Äîêóìåíòàöèÿ åñòü â âñòðîåííîì
ñïðàâî÷íèêå. Èíôîðìàöèè ïî íàñòðîéêå
ïîêà ÷òî ìàëî.
Ñîçäàíèå ssh-òóííåëåé.
Ëåãêîå âíåäðåíèå.
Øèôðàöèÿ 256 áèòíûì AES êëþ÷îì
Ñàì ïðîòîêîë ssh ñóùåñòâóåò î÷åíü
äàâíî, íî ñîçäàíèå ssh VPN ñåòåé íà
ñåãîäíÿøíèé äåíü âñòðå÷àåòñÿ
ðåäêî.
Ðàññìîòðåâ âñå ïëþñû è ìèíóñû, ïðåäïî÷òèòåëüíûì ðåøåíèåì áóäåò èñïîëüçîâàíèå
îáîèõ òåõíîëîãèé âìåñòå. Îò SSH âçÿòü SSH-òóííåëè, à îò OpenVPN ñîçäàíèå VPN
ñåòåé.
Ãëàâà 3. Ñîçäàíèå êîìïëåêñà ñèñòåì ìîíèòîðèíãà êîðïîðàòèâíîé ñåòè
3.1 Ñëåæåíèå çà ñîñòîÿíèåì ñåðâåðîâ è ñåòåâîãî îáîðóäîâàíèÿ. Nagios
Nagios - ãèáêàÿ ñèñòåìà ìîíèòîðèíãà ðàáîòû ñåðâåðîâ. Â îñíîâíîì åå èñïîëüçóþò
äëÿ ìîíèòîðèíãà áîëüøîãî êîëè÷åñòâà ñåðâåðîâ. Nagios - ïðîãðàììà ìîíèòîðèíãà
êîìïüþòåðíûõ ñèñòåì è ñåòåé ñ îòêðûòûì êîäîì. Ïðåäíàçíà÷åíà äëÿ íàáëþäåíèÿ, êîíòðîëÿ
ñîñòîÿíèÿ âû÷èñëèòåëüíûõ óçëîâ è ñëóæá, îïîâåùàåò àäìèíèñòðàòîðà â òîì ñëó÷àå, åñëè
êàêèå-òî èç ñëóæá ïðåêðàùàþò èëè âîçîáíîâëÿþò ñâîþ ðàáîòó.  íàøåì ñëó÷àå, áóäåì
ñëåäèòü çà ìàðøðóòèçàòîðàìè, ñåðâåðàìè è ïðîöåññàìè, çàïóùåííûìè íà íèõ. Ñèñòåìó
Nagios äëÿ óäîáñòâà íàñòðîéêè ïîñòàâèì íà ìàðøðóòèçàòîð colo.
Nagios âêëþ÷àåò â ñåáÿ ñðåäñòâà ñëåæåíèÿ, à òàêæå web-èíòåðôåéñ äëÿ
óïðàâëåíèÿ è ïðîñìîòðà òåêóùåãî ñîñòîÿíèÿ ñåðâåðîâ. Ïîýòîìó êðîìå óñòàíîâêè ñàìîé
ñèñòåìû, íóæíî óñòàíîâèòü web-ñåðâåð. Íà÷íåì ñ óñòàíîâêè íåîáõîäèìûõ êîìïîíåíòîâ:
# Óñòàíàâëèâàåì êîìïèëÿòîð ÿçûêà C, åãî áèáëèîòåêè è ãðàôè÷åñêèå èíñòðóìåíòû
colo> yum install gcc glibc glibc-common gd gd-devel
# Óñòàíàâëèâàåì web-ñåðâåð Apache
colo> yum install httpd
# Ñîçäàåì þçåðà è ãðóïïó ñ ïðàâàìè êîòîðûõ áóäåò ðàáîòàòü nagios
colo> useradd -m nagios> groupadd nagcmd
# Ñîçäàåì ïàðîëü äëÿ þçåðà
colo> passwd nagios
# Äîáàâëÿåì nagios è apache â îäíó ãðóïïó, ÷òîáû íå áûëî ïðîáëåì ñ ïðàâàìè íà
çàïóñê ñêðèïòîâ íà web-ñåðâåðå
colo> /usr/sbin/usermod -a -G nagcmd nagios> /usr/sbin/usermod -a -G nagcmd
apache
Ñòàâèì ñèñòåìó:
# Ñêà÷èâàåì ïîñëåäíþþ âåðñèþ ñèñòåìû è ìîäóëè ê íåé
colo>
wget
http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
colo> wget
<http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz>
# Ðàñïàêîâûâàåì ñêà÷åííûé àðõèâ è ïåðåõîäèì â êàòàëîã
colo> tar xzf nagios-3.2.1.tar.gz> cd nagios-3.2.1
# Êîíôèãóðèðóåì óñòàíîâî÷íûé ïàêåò è ïðîâåðÿåì óäîâëåòâîðåíèå çàâèñèìîñòåé
colo>./configure
# Åñëè âñå õîðîøî, ïðîøëî áåç îøèáîê, ñîáèðàåì ïàêåò è óñòàíàâëèâàåì
colo> make all> make install> make install-init> make install-config> make
install-commandmode
# Ïðîïèñûâàåì íàñòðîéêè â Apache> make install-webconf
# Ïðîäåëûâàåì òå æå äåéñòâèÿ äëÿ äîïîëíèòåëüíûõ ìîäóëåé
colo> tar xzf nagios-plugins-1.4.11.tar.gz> cd
nagios-plugins-1.4.11>./configure> make> make install
# Ñòàâèì ïàðîëü íà âõîä â web-èíòåðôåéñ ñ ïîìîùüþ óòèëèòû htpasswd> htpasswd
-c /usr/local/nagios/etc/htpasswd.users nagiosadmin
# Ïðîâåðÿåì ïðàâèëüíîñòü êîíôèãóðàöèîííîãî ôàéëà> /usr/local/nagios/bin/nagios
-v /usr/local/nagios/etc/nagios.cfg
# Åñëè îøèáîê è ïðåäóïðåæäåíèé íåò, çàïóñêàåì Nagios è Apache
colo> service nagios start> service httpd restart
Ïðîâåðèòü òî, ÷òî ñèñòåìà çàðàáîòàëà, ìîæíî çàéäÿ íà web-èíòåðôåéñ:
http://ip.àäðåñ.ñåðâåðà/nagios.  íàøåì ñëó÷àå ip-àäðåñ: 195.2.240.68. Åñëè ñåðâåð
Apache çàïóùåí è ñàéò ñèñòåìû nagios â êîíôèãóðàöèîííûé ôàéë ïðîïèñàí âåðíî, òî äîëæíû
óâèäåòü ñòðàíèöó àâòîðèçàöèè. Ïîñëå ââîäà ñâÿçêè ëîãèí-ïàðîëü äîëæíà îòêðûòüñÿ
ñòðàíèöà ïðèâåòñòâèÿ Nagios (ðèñ.3.1.1). Åñëè ïî êàêîé-òî ïðè÷èíå ýòîãî íå ïðîèçîøëî,
ñìîòðèì îøèáêè â ëîãàõ apache â êàòàëîãå /var/log/httpd.
Ðàññìîòðèì íàâèãàöèîííîå ìåíþ:
 Home - Ñòðàíèöà ïðèâåòñòâèÿ. Ìîæíî óçíàòü î âîçìîæíûõ îáíîâëåíèÿõ ñèñòåìû;

Documentation - Áîëüøîå êîëè÷åñòâî äîêóìåíòàöèè ïî íàñòðîéêå ñèñòåìû;

Tactical Overview - Ïðåäñòàâëÿåò ñîáîé ñáîð êðàòêîé èíôîðìàöèè îá
îáúåêòàõ, çà êîòîðûìè âåäåòñÿ ìîíèòîðèíã;

Map - Îòîáðàæàåò êàðòó ñåòè, îòìå÷àÿ çåëåíûì öâåòîì ðàáîòàþùèå ñåðâåðà
è êðàñíûì îòêëþ÷åííûå (ðèñ. 3.1.2);

Hosts - Ïîêàçûâàåò ñîñòîÿíèå êàæäîãî íàáëþäàåìîãî îáúåêòà â îòäåëüíîñòè

Services - Ïîêàçûâàåò ñîñòîÿíèå çàïóùåííûõ ïðîöåññîâ íà ñåðâåðàõ, à
òàêæå RTT, êîëè÷åñòâî ñâîáîäíîãî ìåñòà, çàãðóçêà ïðîöåññîðà è ïàìÿòè(ðèñ. 3.1.3);

Event log - Îò÷åòû ñèñòåìû ìîíèòîðèíãà.
Âñå îñòàëüíûå ïóíêòû ìåíþ ÿâëÿþòñÿ ðàçíîâèäíîñòÿìè âûøåïåðå÷èñëåííûõ,
äîáàâëÿÿ óäîáñòâà ïðîñìîòðà èíôîðìàöèè, íàïðèìåð ðàçáèòà ïî ãðóïïàì.
Ðèñ.3.1.2 Ïðåäñòàâëåíèå ïóíêòà ìåíþ Map
Ðèñ.3.1.2 Ïðåäñòàâëåíèå ïóíêòà ìåíþ Services
Ñèñòåìà ìîíèòîðèíãà Nagios ðàáîòàåò íà íåñêîëüêèõ êîíôèãóðàöèîííûõ ôàéëàõ, ñ
ïîìîùüþ êîòîðûõ íàñòðàèâàþòñÿ ìåòîäû ñëåæåíèÿ è îáúåêòû, çà êîòîðûìè ñëåäèì.
Ðàñïîëîæåíû ýòè ôàéëû â äèðåêòîðèè /usr/local/nagios/etc.
Ðàññìîòðèì èõ ïîäðîáíåå:
1. nagios.cfg - Ãëàâíûé êîíôèãóðàöèîííûé ôàéë.  í¸ì îïèñàíî, ãäå ëåæàò îñòàëüíûå
ôàéëû, îáúÿâëåíû ïåðåìåííûå, íàñòðàèâàåòñÿ ñèñòåìà ëîãîâ, ïîä êàêèì ïîëüçîâàòåëåì
ðàáîòàòü è ò.ä.;
2.
commands.cfg - Ôàéë, â êîòîðîì îïèñàíû êîìàíäû äëÿ îïðîñà ñåðâåðîâ î èõ
ðàáîòîñïîñîáíîñòè, çàïóùåííûõ ïðîöåññîâ è ò.ä.;
3.
contacts.cfg - Îïèñàíû êîíòàêòû, êîòîðûì íàäî ïîñûëàòü îïîâåùåíèÿ ñèñòåìû î
ñáîÿõ íà ñåðâåðàõ;
4.
groups.cfg - Îïèñûâàþòñÿ ãðóïïû è ñåðâåðà, êîòîðûå â íèõ âõîäÿò;
5.
hosts.cfg - Îïèñûâàåòñÿ øàáëîí äëÿ äîáàâëÿåìîãî îáîðóäîâàíèÿ.  í¸ì
óêàçûâàåòñÿ ïåðèîä îïðîñà ñåðâåðîâ, âðåìÿ îòñûëêè ïðåäóïðåæäåíèé;
.
WindowsServer.cfg - Ïðèìåð îïèñàíèÿ Windows ñåðâåðà;
.
LinuxServer.cfg - Ïðèìåð îïèñàíèÿ Linux ñåðâåðà.
Îïðîñ ñåðâåðîâ èäåò ïî ïðîòîëêó SNMP (Simple Network Management Protocol ïðîòîêîë ïðîñòîãî óïðàâëåíèÿ ñåòÿìè). Äëÿ ñëåæåíèÿ çà Windows ñåðâåðàìè, íóæíî
äîïîëíèòåëüíî ïîñòàâèòü ïðîãðàììó Nsclient++.
Ðàññìîòðèì ïðèìåð êîíôèãóðàöèîííîãî ôàéëà Windows ñåðâåðà:
define host
{
# Èñïîëüçóåì øàáëîí, ñîçäàííûé çàðàíåå
use generic-host ;
# Èìÿ ñåðâåðà_name sql-1c ;
# Àëüÿñ íà èìÿ (ïñåâäîíèì)
alias sql-1c ;
# Óêàçûâàåì, åñòü ëè ïåðåä ýòèì ñåðâåðîì åùå îäèí ñåðâåð. Ýòî íóæíî äëÿ
äðåâîâèäíîãî ïðåäñòàâëåíèÿ ñåòè
parents vh0.arscraft.ru ;
# Ip àäðåñ ñåðâåðà
address 172.16.100.34 ; IP address of the host
# Èêîíêà äëÿ îòîáðàæåíèÿ â web-èíòåðôåéñå. Íåîáÿçàòåëüíûé ïàðàìåòð
icon_image 1c.jpg
statusmap_image 1c.jpg
# Äîïîëíèòåëüíóþ èíôîðìàöèþ î ñåðâåðå ìîæíî çàïèñàòü çäåñü
notes_url http://vh0.arscraft.ru/nagios/notes/info-sql1c.txt
}
# Îáúÿâëÿåì ñåðâèñû, çà êîòîðûìè áóäåì ñëåäèòü. Òàê êàê ýòî 1Ñ è sql ñåðâåð,
áóäåì ñëåäèòü çà ðàáîòîñïîñîáíîñòüþ ýòèõ ïðîöåññîâ, à òàêæå çà íàãðóçêîé íà ïðîöåññîð.
# Ñëåäèì çà 1Ñ ïðîöåññîì
define service{
use
generic-service_name
sql-1c_description
Ragent_command
check_nt!PROCSTATE!-d SHOWALL -l ragent.exe
}
# Ñëåäèì çà sql ïðîöåññîì
define service{
use
generic-service_name
sql-1c_description
SQL-Server_command
check_nt!PROCSTATE!-d SHOWALL -l sqlservr.exe
}
# Ñëåäèì çà íàãðóçêîé íà ïðîöåññîð
define service{
use
generic-service_name
sql-1c_description
CPU
Load_command
check_nt!CPULOAD!-l 5,80,90
}
Äîáàâëåíèå Linux-ñåðâåðà íè÷åì íå îòëè÷àåòñÿ îò Windows. Äàëüøå äîáàâëÿåì
ôàéëû ñåðâåðîâ, çà êîòîðûìè áóäåì ñëåäèòü, è ïðîâåðÿåì âñå êîíôèãóðàöèîííûå ôàéëû íà
ïðàâèëüíîñòü êîìàíäîé:
colo> usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Åñëè îøèáîê è ïðåäóïðåæäåíèé íåò, ïåðåçàãðóæàåì Nagios:
colo> service nagios reload
Ìîæíî çàéòè íà ñàéò è ïîñìîòðåòü ÷òî ïîëó÷èëîñü.
Íà ýòîì îáùàÿ íàñòðîéêà çàêàí÷èâàåòñÿ, íî ìîæíî ïðîäîëæàòü íàñòðàèâàòü ñèñòåìó
ïîä ñâîè íóæäû.
Ñèñòåìó îïîâåùåíèÿ ìîæíî íàñòðàèâàòü äëÿ êàæäîãî ñåðâåðà è ïðîöåññà ïî-ðàçíîìó,
â çàâèñèìîñòè îò çàäà÷è. Ïðè ñðàáàòûâàíèè óñëîâèÿ íà ïî÷òó ñèñòåìíîãî àäìèíèñòðàòîðà
ïðèõîäèò ïèñüìî ñëåäóþùåãî ñîäåðæàíèÿ:
***** Nagios *****Type: PROBLEM: 1c-sql: DOWN: 172.16.100.34: (Host
Check Timed Out)/Time: Tue Apr 12 09:43:56 MSD 2011
 ðåçóëüòàòå óñòàíîâêè è íàñòðîéêè ñèñòåìû Nagios ïîÿâëÿþòñÿ ñëåäóþùèå
âîçìîæíîñòè ìîíèòîðèíãà êîðïîðàòèâíîé ñåòè:
 Ìîíèòîðèíã ñåòåâûõ ñëóæá (SMTP, POP3, HTTP, NNTP, ICMP è ò.ä.);

Ìîíèòîðèíã ñîñòîÿíèÿ õîñòîâ (çàãðóçêà ïðîöåññîðà, èñïîëüçîâàíèå äèñêà,
ñèñòåìíûå ëîãè) â áîëüøèíñòâå ñåòåâûõ îïåðàöèîííûõ ñèñòåì;

Ïðîñòàÿ àðõèòåêòóðà ìîäóëåé ðàñøèðåíèé (ïëàãèíîâ) ïîçâîëÿåò, èñïîëüçóÿ
ëþáîé ÿçûê ïðîãðàììèðîâàíèÿ ïî âûáîðó (Shell, C++, Perl, Python, PHP, C# è äðóãèå),
ëåãêî ðàçðàáàòûâàòü ñâîè ñîáñòâåííûå ñïîñîáû ïðîâåðêè ñëóæá;

Ïàðàëëåëüíàÿ ïðîâåðêà ñëóæá;

Âîçìîæíîñòü îïðåäåëÿòü èåðàðõèè õîñòîâ ñåòè ñ ïîìîùüþ «ðîäèòåëüñêèõ»
õîñòîâ, ïîçâîëÿåò îáíàðóæèâàòü è ðàçëè÷àòü õîñòû, êîòîðûå âûøëè èç ñòðîÿ, è òå,
êîòîðûå íåäîñòóïíû;

Îòïðàâêà îïîâåùåíèé â ñëó÷àå âîçíèêíîâåíèÿ ïðîáëåì ñî ñëóæáîé èëè õîñòîì (ñ
ïîìîùüþ ïî÷òû, ñìñ èëè ëþáûì äðóãèì ñïîñîáîì, îïðåäåëåííûì ïîëüçîâàòåëåì ÷åðåç ìîäóëü
ñèñòåìû)

Âîçìîæíîñòü îïðåäåëÿòü îáðàáîò÷èêè ñîáûòèé ïðîèçîøåäøèõ ñî ñëóæáàìè
èëè õîñòàìè äëÿ ïðîàêòèâíîãî ðàçðåøåíèÿ ïðîáëåì;

Àâòîìàòè÷åñêàÿ ðîòàöèÿ ëîã-ôàéëîâ;

Âîçìîæíîñòü îðãàíèçàöèè ñîâìåñòíîé ðàáîòû íåñêîëüêèõ ñèñòåì ìîíèòîðèíãà ñ
öåëüþ ïîâûøåíèÿ íàä¸æíîñòè è ñîçäàíèÿ ðàñïðåäåëåííîé ñèñòåìû ìîíèòîðèíãà;

Âêëþ÷àåò â ñåáÿ óòèëèòó nagiostats, êîòîðàÿ âûâîäèò îáùóþ ñâîäêó ïî âñåì
õîñòàì, ïî êîòîðûì âåäåòñÿ ìîíèòîðèíã.
Ïðåèìóùåñòâà èñïîëüçîâàíèÿ ñèñòåìû Nagios äëÿ ìîíèòîðèíãà çà êîðïîðàòèâíîé
ñåòüþ íåîñïîðèìû. Ñèñòåìíûé àäìèíèñòðàòîð âñåãäà áóäåò â êóðñå ñîñòîÿíèÿ ñåðâåðîâ è
â êðîò÷àéøèå ñðîêè ñìîæåò ïðåäóïðåäèòü èëè óñòðàíèòü ïðîáëåìó. Óñòàíîâêà è
íàñòðîéêà äëÿ îáñëóæèâàþùåãî ïåðñîíàëà íå äîëæíà áûòü ñëîæíîé.
3.2 Ñëåæåíèå çà ïðîèçâîäèòåëüíîñòüþ ñåðâåðîâ. Cacti
- open-source âåá-ïðèëîæåíèå, ñèñòåìà ïîçâîëÿåò ñòðîèòü ãðàôèêè ïðè ïîìîùè
RRDtool. Cacti ñîáèðàåò ñòàòèñòè÷åñêèå äàííûå çà îïðåäåë¸ííûå âðåìåííûå èíòåðâàëû è
ïîçâîëÿåò îòîáðàçèòü èõ â ãðàôè÷åñêîì âèäå. Ïðåèìóùåñòâåííî èñïîëüçóþòñÿ ñòàíäàðòíûå
øàáëîíû äëÿ îòîáðàæåíèÿ ñòàòèñòèêè ïî çàãðóçêå ïðîöåññîðà, âûäåëåíèþ îïåðàòèâíîé
ïàìÿòè,
êîëè÷åñòâó
çàïóùåííûõ
ïðîöåññîâ,
èñïîëüçîâàíèþ
äèñêîâûõ
ðåñóðñîâ,
èñïîëüçîâàíèþ âõîäÿùåãî/èñõîäÿùåãî òðàôèêà.
Ýòà ñèñòåìà ïîìîæåò óçíàòü, êîãäà íà ñåðâåðàõ áûâàþò ïèêè íàãðóçêè,
èñïîëüçîâàíèå ðåñóðñîâ ñåðâåðîâ â òå÷åíèå äíÿ, íåäåëè, ìåñÿöà. Ïðîàíàëèçèðîâàâ
ïîëó÷åííûå ãðàôèêè, ìîæíî ãîâîðèòü î âîçìîæíîé íåîáõîäèìîñòè upgrad’a ñåðâåðà è
îïòèìèçàöèè ðàáîò â ïèêîâûå ÷àñû äëÿ ñíèæåíèÿ íàãðóçêè.
Óñòàíàâëèâàòü è íàñòðàèâàòü ñèñòåìó áóäåì íà ìàðøðóòèçàòîð colo. Ñèñòåìà
Cacti òðåáóåò áîëüøîãî êîëè÷åñòâà äîïîëíèòåëüíîãî ÏÎ. Âåá-ñåðâåð ó íàñ óæå óñòàíîâëåí,
ïîýòîìó ýòîò ïóíêò ïðîïóñêàåì è íà÷èíàåì óñòàíîâêó:
# Óñòàíàâëèâàåì äîïîëíèòåëüíîå ÏÎ: Mysql, php, perl è áèáëèîòåêè äëÿ íèõ
colo> yum install mysql mysql-server mysql-devel httpd httpd-devel php
php-mysql php-gd phpimapldap php-odbc php-pear php-xml php-xmlrpc php-mcrypt
curl curl-devel perl-lib libxml2 php-mbstring phpmyadmin
# Çàïóñêàåì mysql. Îäíîâðåìåííî ïðîèñõîäèò åãî êîíôèãóðàöèÿ
colo> service mysqld start
Ïåðåõîäèì ê óñòàíîâêå Cacti:
# Óñòàíîâèì çàâèñèìîñòè íóæíûå Cacti
colo> yum install -y net-snmp net-snmp-utils rrdtool php-snmp
# Äîáàâëÿåì â àâòîçàãðóçêó è çàïóñòèì ñåðâèñ SNMP
colo> chkconfig snmpd on> service snmpd start
# Ñêà÷èâàåì ïàêåòû Cacti:
colo> wget www.cacti.net/downloads/cacti-0.8.7g.tar.gz
colo> wget www.cacti.net/downloads/pia/cacti-plugin-0.8.7g-PA-v2.9.tar.gz
#
Ðàçàðõèâèðóåì
èõ>
tar
-xzvf
cacti-0.8.7g.tar.gz>
tar
-xzvf
cacti-plugin-0.8.7g-PA-v2.9.tar.gz
# Ñîçäà¸ì ðàáî÷óþ ïàïêó Cacti íà ñåðâåðå
colo> mkdir /var/www/cacti
# Êîïèðóåì ñîäåðæèìîå ðàñïàêîâàííîé ïàïêè Cacti â ðàáî÷óþ ïàïêó Cacti
colo> cp -rf cacti-0.8.7g/* /var/www/cacti/
# Ñîçäà¸ì â ñèñòåìå þçåðà äëÿ Cacti è äàäèì åìó ñîîòâåòñòâóþùèå ïðàâà
colo> useradd -c CactiUser -d /var/www/cacti/ -s /sbin/nologin cactiuser>
chown -R cactiuser /var/www/cacti/log /var/www/cacti/rra
# Ñîçäà¸ì áàçó äàííûõ äëÿ Cacti ñ ïðèâèëåãèÿìè äëÿ cactiuser:
colo> mysql -u root -ppassword:to the MySQL monitor. Commands end with ;
or \g.MySQL connection id is 55version: 5.0.77 Source distribution'help;' or '\h' for
help. Type '\c' to clear the buffer.> create database cacti;> GRANT ALL ON cacti.*
TO cactiuser@localhost IDENTIFIED BY 'password';> flush privileges;> quit
# Èìïîðòèðóåì ñòðóêòóðó Cacti â åå áàçó> mysql -u cactiuser -p cacti <
/var/www/cacti/cacti.sql password: (password)
# Íàñòðàèâàåì äîñòóï Cacti â åå áàçó äàííûõ
colo> nano /var/www/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "password";
$database_port = "3306";
# Ïåðåõîäèì â ðàáî÷óþ äèðåêòîðèþ Cacti è óñòàíàâëèâàåì ôèêñû îôèöèàëüíûìè
ïàò÷àìè
colo>
cd
/var/www/cacti>
www.cacti.net/downloads/patches/0.8.7g/data_source_deactivate.patch>
wget
wget
www.cacti.net/downloads/patches/0.8.7g/graph_list_view.patch>
wget
www.cacti.net/downloads/patches/0.8.7g/html_output.patch>
wget
www.cacti.net/downloads/patches/0.8.7g/ldap_group_authenication.patch>
wget
www.cacti.net/downloads/patches/0.8.7g/script_server_command_line_parse.patch>
wget
www.cacti.net/downloads/patches/0.8.7g/ping.patch>
www.cacti.net/downloads/patches/0.8.7g/poller_interval.patch> patch
wget
-p1 -N <
data_source_deactivate.patch> patch -p1 -N < graph_list_view.patch> patch -p1 -N <
html_output.patch> patch -p1 -N < ldap_group_authenication.patch> patch -p1 -N <
script_server_command_line_parse.patch> patch -p1 -N < ping.patch> patch -p1 -N <
poller_interval.patch
# Ñîçäàåì cacti.conf ñ ñëåäóþùèì ñîäåðæàíèåì, ÷òîáû âêëþ÷èòü âåáäîñòóï
colo> nano /etc/httpd/conf.d/cacti.conf/cacti /var/www/cacti
<Directory
/var/www/cacti/>index.php-Indexesalldeny,allowfrom
allfrom
192.168.1.0/24 (you can do it like "allow from all")application/x-httpd-php .php_flag
magic_quotes_gpc on_flag track_vars on
</Directory>
# Ïåðåçàãðóæàåì âåá-ñåðâåð Àïà÷> service httpd restart
# Ñîçäà¸ì çàäà÷ó Cron äëÿ Cacti> nano /etc/cron.d/cacti
*/5 * * * * cactiuser php /var/www/cacti/poller.php > /dev/null 2>&1
Ñ ýòîãî ìîìåíòà ìîæíî íà÷àòü èñïîëüçîâàòü áàçîâóþ èíñòàëëÿöèþ Cacti. Äîáàâëåíèå
ñåðâåðîâ, çà êîòîðûìè áóäåì ñëåäèòü, îñóùåñòâëÿåòñÿ ÷åðåç âåá-èíòåðôåéñ, äîñòóïíûé
ïî àäðåñó: <http://ip.àäðåñ.ñåðâåðà/cacti>. Íî ñíà÷àëà íóæíî ïîñòàâèòü íà
îòñëåæèâàåìûå ñåðâåðà ïàêåò snmp è ïåðåïèñàòü êîíôèãóðàöèîííûé ôàéë äîñòóïà
/etc/snmp/snmpd.conf:
syslocation Test.syscontact INF <sysadmin@arscraft.ru>
# sec.name source community (password)sec Mybox localhost publicsec cacti
ip.àäðåñ.ñåðâåðà publicsec Outside default public
# group.name sec.model sec.nameRWGroup v2c MyboxROGroup v1
cactiROGroup v2c cactiOthers v2c Outsideall included .1 80system included system
fe
# context sec.model sec.level prefix read write notifROGroup "" any noauth
exact all none noneRWGroup "" v2c noauth exact all all allOthers "" v2c noauth exact
system none all
Ïðèìåðû ïîëó÷èâøèõñÿ ãðàôèêîâ ïðåäñòàâëåíû íà ðèñóíêàõ 3.2.1, 3.2.2, 3.2.3,
3.2.4.
Ðèñ.3.2.1 Ãðàôèê èñïîëüçîâàíèÿ Èíòåðíåò-êàíàëà
Ðèñ.3.2.2 Ãðàôèê ñðåäíåé çàãðóçêè ïðîöåññîðà
Ðèñ.3.2.3 Ãðàôèê èñïîëüçîâàíèÿ äèñêîâîãî ïðîñòðàíñòâà
Ðèñ.3.2.4 Ãðàôèê îòêëèêà ñåðâåðà(RTT)
3.3 Ôèëüòðàöèÿ è àíàëèç òðàôèêà êîðïîðàòèâíîé ñåòè
3.3.1 Proxy ñåðâåð
×àñòî â ôèðìàõ, íà ïðåäïðèÿòèÿõ, ãäå ðàáî÷èé ïåðñîíàë èìååò äîñòóï ê ñåòè
Èíòåðíåò, òðåáóåòñÿ ôèëüòðàöèÿ âõîäÿùåãî òðàôèêà. Íóæíî ýòî ïî äâóì ïðîñòûì
ïðè÷èíàì:
1. Íàèáîëåå ðàñïðîñòðàíåííûé ñïîñîá ïîïàäàíèÿ âðåäîíîñíûõ ïðîãðàìì íà êîìïüþòåð
ïðîèñõîäèò ïðè ïðîñìîòðå âåá-ñòðàíèö ñîìíèòåëüíîãî êîíòåíòà, ïðîñìîòðå áàííåðîâ è
ñêà÷èâàíèè ðàçëè÷íîãî ñîôòà;
2.
Îäíî èç ñàìûõ ÷àñòûõ òðåáîâàíèé ðóêîâîäñòâà îðãàíèçàöèè, ÿâëÿåòñÿ
îãðàíè÷åíèå äîñòóïà íà ðàçâëåêàòåëüíûå ñàéòû è ñîöèàëüíûå ñåòè.
×òîáû îñóùåñòâëÿòü ôèëüòðàöèþ, íóæíî ÷òîáû âåñü http òðàôèê ïðîõîäèë ÷åðåç
ñïåöèàëüíûé proxy ñåðâåð.
Proxy ñåðâåð - ñëóæáà â êîìïüþòåðíûõ ñåòÿõ, ïîçâîëÿþùàÿ êëèåíòàì âûïîëíÿòü
êîñâåííûå çàïðîñû ê äðóãèì ñåòåâûì ñëóæáàì. Ñíà÷àëà êëèåíò ïîäêëþ÷àåòñÿ ê
proxy-ñåðâåðó è çàïðàøèâàåò êàêîé-ëèáî ðåñóðñ (íàïðèìåð, e-mail), ðàñïîëîæåííûé íà
äðóãîì ñåðâåðå. Çàòåì proxy-ñåðâåð ëèáî ïîäêëþ÷àåòñÿ ê óêàçàííîìó ñåðâåðó è
ïîëó÷àåò ðåñóðñ ó íåãî, ëèáî âîçâðàùàåò ðåñóðñ èç ñîáñòâåííîãî êýøà (â ñëó÷àÿõ, åñëè
proxy èìååò ñâîé êýø).  íåêîòîðûõ ñëó÷àÿõ çàïðîñ êëèåíòà èëè îòâåò ñåðâåðà ìîæåò
áûòü èçìåí¸í proxy-ñåðâåðîì â îïðåäåë¸ííûõ öåëÿõ. Òàêæå proxy-ñåðâåð ïîçâîëÿåò
çàùèùàòü êëèåíòñêèé êîìïüþòåð îò íåêîòîðûõ ñåòåâûõ àòàê è ïîìîãàåò ñîõðàíÿòü
àíîíèìíîñòü êëèåíòà.
Ðåàëèçîâàòü ïåðåáðîñ çàïðîñîâ íà proxy-ñåðâåð ìîæíî äâóìÿ ïóòÿìè:
1. ßâíî óêàçàòü â áðàóçåðå àäðåñ proxy-ñåðâåðà (íå ðåêîìåíäóåòñÿ èç-çà
íåóäîáñòâà ïåðåêëþ÷åíèÿ â ñëó÷àå ïàäåíèÿ ñåðâåðà);
2.
Ïåðåñûëàòü âåñü òðàôèê, ïðèøåäøèé íà ïîðòû 80, 8080 ìàðøðóòèçàòîðà íà
proxy-ñåðâåð ïðè ïîìîùè ïðàâèë iPtables.
 äèïëîìå ÿ áóäó èñïîëüçîâàòü âòîðîé ìåòîä. Proxy-ñåðâåð áóäåì óñòàíàâëèâàòü
íà ìàðøðóòèçàòîð colo.  êà÷åñòâå ÏÎ óñòàíîâèì proxy-ñåðâåð SQUID.
Squid - ïðîãðàììíûé ïàêåò, ðåàëèçóþùèé ôóíêöèþ êýøèðóþùåãî proxy-ñåðâåðà
äëÿ ïðîòîêîëîâ HTTP, FTP, Gopher è (â ñëó÷àå ñîîòâåòñòâóþùèõ íàñòðîåê) HTTPS.
Ðàçðàáîòàí ñîîáùåñòâîì êàê ïðîãðàììà ñ îòêðûòûì èñõîäíûì êîäîì (ðàñïðîñòðàíÿåòñÿ â
ñîîòâåòñòâèè ñ GNU GPL). Âñå çàïðîñû âûïîëíÿåò êàê îäèí íåáëîêèðóåìûé ïðîöåññ
ââîäà/âûâîäà.
Óñòàíîâêà ïðîèçâîäèòñÿ èç ñòàíäàðòíîãî ðåïîçèòîðèÿ îäíîé êîìàíäîé:
colo> yum install squid
Ïîñëå ïåðâîé óñòàíîâêè íåîáõîäèìî ïðîèíèöèàëèçèðîâàòü êåø:
colo> squid -z
Ïåðåõîäèì ê íàñòðîéêå. Íóæíî ðåøèòü ñëåäóþùóþ çàäà÷ó - çàêðûòü äîñòóï íà
ðàçâëåêàòåëüíûå ñàéòû è ñîöèàëüíûå ñåòè, çàêðûòü äîñòóï íà ñêà÷êó *.exe, *.sys,
*.bat, *.sys, *.mp3, *.avi, *.mp4, *.mov ôàéëîâ.
Îñíîâíàÿ êîíôèãóðàöèÿ proxy-ñåðâåðà íàõîäèòñÿ â ôàéëå /etc/squid/squid.conf.
Îòðåäàêòèðóåì åãî ïîä íàøó çàäà÷ó:
# Óêàçûâàåì ïîðò íà êîòîðîì áóäåì ñëóøàòü çàïðîñû, è óêàçûâàåì òèï Proxy
«ïðîçðà÷íûé», ò.ê. ïåðåñûëàåì ïàêåòû ñðåäñòâàìè ìàðøðóòèçàòîðà
http_port 3128 transparent
# ACL (Access Control List - ñïèñîê êîíòðîëÿ äîñòóïà) - îïðåäåëÿåò, êòî èëè ÷òî
ìîæåò ïîëó÷àòü äîñòóï ê êîíêðåòíîìó îáúåêòó, è êàêèå èìåííî îïåðàöèè ðàçðåøåíî èëè
çàïðåùåíî ýòîìó ñóáúåêòó ïðîâîäèòü íàä îáúåêòîì. Ñ ïîìîùüþ acl îïèñûâàåì îáúåêòû, ñ
êîòîðûìè áóäåì ðàáîòàòü
# Îïèñûâàåì îáúåêòû è ñîçäàåì ïðàâèëà äîñòóïà ê íèì
acl
all
src
0.0.0.0/0.0.0.0manager
proto
cache_objectlocalhost
src
127.0.0.1/255.255.255.255to_localhost dst 127.0.0.0/8SSL_ports port 443Safe_ports
port 80 # httpSafe_ports port 21 # ftpSafe_ports port 443 # httpsSafe_ports port 70 #
gopherSafe_ports port 210 # waisSafe_ports port 1025-65535 # unregistered
portsSafe_ports port 280 # http-mgmtSafe_ports port 488 # gss-httpSafe_ports port
591 # filemakerSafe_ports port 777 # multiling httpCONNECT method
CONNECT_access allow manager localhost_access deny manager_access deny
!Safe_ports_access deny CONNECT !SSL_ports
# Îïèñûâàåì íàøó ëîêàëüíóþ ñåòü
acl localnet src 172.16.100.0/24
# Îïèñûâàåì ôàéë, â êîòîðîì çàïèñàíû ðàñøèðåíèÿ çàïðåùåííûõ òèïîâ ôàéëîâ
acl banfiles urlpath_regex -i "/etc/squid/include/permblock.files.acl"
# Îïèñûâàåì ôàéë, â êîòîðîì çàïèñàí ñïèñîê ñàéòîâ, çàïðåùåííûõ ê ïðîñìîòðó
acl banurl dstdomain -i "/etc/squid/include/permblock.url.acl"
# Ñîçäàåì ñïèñîê äëÿ àóäèî è âèäåî êîíòåíòà ñ ïîìîùüþ mime òèïîâ
acl banvideo rep_mime_type content-type audiobanvideo rep_mime_type
content-type video
# Çàïðåùàåì äîñòóï èç ñåòè ê çàïðåùåííûì òèïàì ôàéëîâ, ñàéòàì è êîíòåíòó.
http_access deny localnet banfiles_access deny localnet banurl_reply_access
deny all banvideo
# Ðàçðåøàåì äîñòóï ñåòè äëÿ âñåãî îñòàëüíîãî òðàôèêà_access allow localnet
# Äëÿ âñåõ îñòàëüíûõ çàïðåùàåì âñ¸_access deny all
Íå çàáóäèì îñòàâèòü ïðàâà äëÿ àäìèíèñòðàòîðà, äîáàâèâ íóæíóþ acl çàïèñü.
Ðàññìîòðèì ôàéëû ñ çàïðåùàþùèìè ñïèñêàìè:
Permblock.files.acl:
\.exe$
\.msi$
\.bat$
\.sys$.url.acl:
.vkontakte.ru
.odnoklassniki.ru
.durov.ru
.vk.ru
.youtube
.rutube
…
Îñòàëîñü ïåðåíàïðàâèòü çàïðîñû ñ 80, 8080 ïîðòîâ íà 3128. Äîáàâëÿåì â öåïî÷êó
iptables ñëåäóþùåå ïðàâèëî:
$fw -t nat -A PREROUTING -p tcp -m multiport --dport 80,8080 -i eth1 -j
DNAT --to 127.0.0.1:3128
Òåïåðü òðàôèê èäåò ÷åðåç proxy-ñåðâåð ñ ôèëüòðàöèåé. Òàêæå ñ ïîìîùüþ
Proxy-ñåðâåðà ïðè íåîáõîäèìîñòè ìîæíî ñîçäàâàòü ëèìèòû ïî ïîòðåáëåíèþ òðàôèêà,
ðàáîòàòü ïî ðàñïèñàíèþ è çàìåíÿòü ðåêëàìíûå áàííåðû íà web-ñòðàíèöàõ íà ñâîè.
3.3.2 Àíàëèçàòîð ëîãîâ Proxy ñåðâåðà
Åù¸ îäíîé èç ÷àñòûõ çàäà÷ ÿâëÿåòñÿ àíàëèç òðàôèêà ïî äâóì ïðè÷èíàì:
1. Ñëåæåíèå çà äåÿòåëüíîñòüþ ñîòðóäíèêà. Ïðåäîòâðàùåíèå íàðóøåíèÿ äèñöèïëèíû
è ïðàâèë ðàáîòû â êîìïàíèè;
2.
Ñîçäàíèå ëèìèòîâ íà òðàôèê, äëÿ ñíèæåíèÿ ðàñõîäîâ êîìïàíèè.
Proxy-ñåðâåð Squid ïðè ïðîõîæäåíèè òðàôèêà çàïèñûâàåò âñþ èíôîðìàöèþ (îòêóäà
çàïðîñ, ÷òî çàïðàøèâàþò, âðåìÿ, ðàçìåð è ò.ä.) â log ôàéë. Îñòàåòñÿ ëèøü
ïðîàíàëèçèðîâàòü åãî è âûâåñòè èíôîðìàöèþ â óäîáíîì äëÿ ÷åëîâåêà âèäå. Ïðèìåð ëîãà
proxy-ñåðâåðà Squid:
.038
340
84.52.97.69
TCP_MISS/200
33232
GET
http://www.banius.ru/manager/zakaz/ shop6 DIRECT/77.222.42.202 text/html
.369
147
84.52.97.69
TCP_MISS/200
7306
http://www.banius.ru/manager/modules/ms/images/li.gif
GET
shop6
DIRECT/77.222.42.202 text/html
.705
1001
195.239.137.178
TCP_MISS/200
1363
POST
http://mail.google.com/a/banius.ru/? shop7 DIRECT/74.125.79.18 text/javascript
.826
243750
195.239.137.178
http://mail.google.com/a/banius.ru/channel/bind?
TCP_MISS/200
shop7
638
GET
DIRECT/74.125.79.18
text/plain
Àíàëèçèðîâàòü òðàôèê áóäåì ñïåöèàëüíûì áåñïëàòíûì ÏÎ LightSquid.
Âñå íåîáõîäèìûå êîìïîíåíòû (Perl, Gd, httpd) óæå áûëè óñòàíîâëåíû ðàíüøå,
ïîýòîìó ïåðåõîäèì íåïîñðåäñòâåííî ê óñòàíîâêà LightSquid:
Ñêà÷èâàåì ñ ñàéòà <http://lightsquid.sourceforge.net/> ïîñëåäíþþ âåðñèþ
ïðîãðàììû âåðñèè 1.8.
# Ðàçàðõèâèðóåì ñêà÷åííûé àðõèâ â êàòàëîã /var/www/html/
colo> tar -xzf lightsquid-1.8.tgz> cd lightsquid-1.8
# Äàåì ïðàâà íà âûïîëíåíèå ñêðèïòîâ
colo> chmod +x *.cgi
colo> chmod +x *.pl> chown -R apache:apache *
# Âíîñèì èçìåíåíèÿ â ôàéë êîíôèãóðàöèè Apache /etc/httpd/conf/httpd.conf
Alias /lightsquid "/usr/local/www/lightsquid-1.8"
<Directory "/var/www/html/lightsquid-1.8">cgi-script .cgiAll
</Directory>
# Ïåðåçàãðóæàåì web-ñåðâåð äëÿ ïðèìåíåíèÿ èçìåíåíèé
colo> service httpd restart
# Ïåðåõîäèì â êàòàëîã ñ ðàñïàêîâàííûì lightsquid
colo> cd /var/www/html/lightsquid-1.8
# Ïðîâåðÿåì íà ïðàâèëüíîñòü ôàéë êîíôèãóðàöèè. Åñëè âûäàåò îøèáêè, ñêîðåå
âñåãî íåïðàâèëüíî íàïèñàíû ïóòè äî íóæíûõ ïðîãðàììå êàòàëîãîâ. Èñïðàâèòü ýòî ìîæíî â
ôàéëå lightsquid.cfg
colo> ./check-setup.pl
# Åñëè îøèáîê íåò, òî äîáàâëÿåì çàäà÷ó àíàëèçà òðàôèêà êàæäûå ïîë÷àñà â cron
colo> crontab -e
*/55 * * * * /var/www/html/lightsquid-1.8/lightparser.pl
Íà ýòîì óñòàíîâêà çàêîí÷åíà. Ïðè íåîáõîäèìîñòè, åñòü âîçìîæíîñòü çàíåñòè àäðåñà,
ñ êîòîðûõ èäåò òðàôèê, â ãðóïïû è äàòü èì èìåíà.
Ïðîâåðèòü ðàáîòó ìîæíî ïî àäðåñó http://ip.àäðåñ.ñåðâåðà/lightsquid.
Ïðèìåð ðàáîòû àíàëèçàòîðà òðàôèêà ïðåäñòàâëåí íà ðèñóíêàõ 3.3.2.1, 3.3.2.2,
3.3.2.3.
Ðèñ.3.2.2.1 Ïðèìåð îò÷åòà LightSquid
Ðèñ.3.2.2.2 Ïîñåùåííûå ñàéòû
Ðèñ.3.2.2.3 Ãðàôèê ïî èñïîëüçîâàíèþ òðàôèêà ïî äíÿì
3.4 Ó÷åò òðàôèêà êîðïîðàòèâíîé ñåòè. Ðàçðàáîòêà web èíòåðôåéñà
Åñëè ñëåæåíèå çà äåÿòåëüíîñòüþ ñîòðóäíèêà ìîæíî ðåàëèçîâàòü ñðåäñòâàìè
àíàëèçà http òðàôèêà, òî çàäà÷à ïîäñ÷åòà òðàôèêà ðåøàåòñÿ òîëüêî ÷àñòè÷íî, òàê êàê
ñ÷èòàåòñÿ òîëüêî http òðàôèê.
×àñòî ïðîâàéäåðû ïðåäîñòàâëÿþò ÷àñòíûì ëèöàì è îðãàíèçàöèÿì äîñòóï â ñåòü
Èíòåðíåò íå áåçëèìèòíûé, à òðàôèêîâûé, ò.å. íàêëàäûâàþò îãðàíè÷åíèå íà êîëè÷åñòâî
ñêà÷åííûõ è îòäàííûõ äàííûõ. Çà ïðåâûøåíèå òðàôèêà ïðèõîäèòüñÿ ñèëüíî ïåðåïëà÷èâàòü.
Ïîýòîìó ìîíèòîðèíã çà òðàôèêîì ÿâëÿåòñÿ âàæíîé çàäà÷åé.
Åñòü ìíîæåñòâî áèëëèíãîâûõ ñèñòåì, êîòîðûå âêëþ÷àþò â ñåáÿ ôóíêöèþ ïîäñ÷åòà
òðàôèêà, íî òàì ñëèøêîì ìíîãî íå íóæíûõ íàì âîçìîæíîñòåé è ôóíêöèé. Ñóùåñòâóåò ïðîãðàììà
IPCad, êîòîðàÿ ìîæåò ïîìî÷ü ðåøèòü çàäà÷ó.
IPCad (Cisco IP accounting simulator) - ýòî ïðîãðàììà äëÿ ó÷åòà òðàôèêà,
êîòîðàÿ ìîæåò âåñòè ïîäñ÷åò íåñêîëüêèìè ìåõàíèçìàìè, íàïðèìåð ÷åðåç èíòåðôåéñû BPF,
libpcap è iptables. Åñòü îäèí íåäîñòàòîê: ðåçóëüòàòû âûâîäÿòñÿ ïðÿìî â êîíñîëü, áåç
êàêîé-ëèáî ôèëüòðàöèè. Ïîýòîìó ê ïàêåòó IPCad íóæíî äîðàáîòàòü èíòåðôåéñ.
Íà÷íåì ñ óñòàíîâêè IPCad:
router> wget <http://lionet.info/soft/ipcad-3.6.6.tar.gz>
# Ðàñïàêîâûâàåì àðõèâ è ïåðåõîäèì â êàòàëîã
router>tar -xvzf ipcad-3.6.6.tar.gz>cd ipcad-3.6.6
# Êîíôèãóðèðóåì ïàêåò>./configure
# Ñîáèðàåì è óñòàíàâëèâàåì ïàêåò
router>make
router>make install
# Ïåðåäåëûâàåì êîíôèãóðàöèîííûé ôàéë ïîä ñâîè íóæäû
router> nano /usr/local/etc/ipcad.conf
# Óêàçûâàåì íå ðàçáèðàòü òðàôèê ïî ïîðòàì. Ýòà îïöèÿ ñèëüíî íàãðóæàåò
ìàðøðóòèçàòîð
capture-ports disable;
# Óêàçûâàåì, êàêîé èíòåðôåéñ ñëóøàòü
interface eth1;
# Íàñòðîéêè ïðîãðàììû ïî óìîë÷àíèþ
netflow export version 5;
netflow export destination 127.0.0.1 9998;= /var/run/ipcad.pid;= ipcad.dump;=
64k;
# Ðàçäåëÿòü ñòàòèñòèêó ïî êàæäîìó IP-àäðåñó äëÿ ïîäñåòè 192.168.23.0/24.
# «aggregate 192.168.0.0/24» óêàçûâàåò ipcad äèàïàçîí àäðåñîâ ñåòè.
# «strip 32» îçíà÷àåò, ÷òî â ñòàòèñòèêó íåîáõîäèìî çàíîñèòü âñå 32 áèòà àäðåñà,
ïðèíàäëåæàùåãî äàííîìó àäðåñíîìó äèàïàçîíó
aggregate 192.168.23.0/24 strip 32;
# Îïèñûâàåì ïîëèòèêè äîñòóïà ê ñòàòèñòèêå ipcad. root ìîæåò ïîëíîñòüþ óïðàâëÿòü
(äåëàòü backup, ïðîñìàòðèâàòü è èçìåíÿòü òàáëèöû ïîäñ÷åòà). Âñå îñòàëüíûå ìîãóò
ëèøü ïðîñìàòðèâàòü ñòàòèñòèêó.
rsh enable at 127.0.0.1;
rsh root@127.0.0.1 admin;
rsh root@127.0.0.1 backup;root@127.0.0.1; 127.0.0.1 view-only;
# “Âðåìÿ æèçíè” è òàéì-àóò IP ïàêåòà.ttl = 3;timeout = 30;
# Îïöèÿ 'memory_limit çàäàåò êîëè÷åñòâî ïàìÿòè äëÿ õðàíåíèÿ ñîäåðæèìîãî îäíîãî
ïîòîêà äàííûõ._limit = 10m;
Äëÿ ïîëó÷åíèÿ ñòàòèñòèêè çàïóñêàåì ïðîãðàììó:
colo> /usr/local/bin/ipcad -rds> rsh localhost show ip accounting
Ïîëó÷èì âûâîä â êîíñîëü:
…
.168.23.14 83.156.177.10 1 131
.67.60.119 192.168.23.14 1 305
.168.23.14 202.152.243.92 1 131
.168.23.14 178.67.60.119 1 131
.168.23.14 77.77.44.16 1 131
.168.23.196 192.168.23.201 2873 186687
.168.23.201 192.168.23.196 4274 3838143data age is 4data age exact 269data
saved 1305215070eth1: received 375320822, 5 m average 41518 bytes/sec, 60
pkts/secentries made: 569cached flows: 27usage: 0% (63728 from 10485760)slots for
rsh clients: 9
IPCAD uptime is 49 days 51 minutes
Òàêîé ðåçóëüòàò íå âñåì áóäåò ïîíÿòåí, äà è çàïóñêàòü ïðîãðàììó âðó÷íóþ íå
ñàìûé óäîáíûé ñïîñîá ïîäñ÷èòûâàòü òðàôèê. Äëÿ ðåøåíèÿ ýòîé ïðîáëåìû íóæíî ñîçäàòü
óäîáíûé âåá-èíòåðôåéñ. Âñþ èíôîðìàöèþ î òðàôèêå áóäåì çàíîñèòü â áàçó äàííûõ ÑÓÁÄ
MySql. Ñîçäàåì áàçó äàííûõ stat è íóæíûå íàì òàáëèöû (users, download, upload, tmp),
â êîòîðûå áóäåì çàïèñûâàòü ñòàòèñòèêó.
Ñîçäàäèì ñêðèïò “stat.sh”, êîòîðûé áóäåò çàïóñêàòü êîìàíäó ïîëó÷åíèÿ
ñòàòèñòèêè è çàïèñûâàòü ðåçóëüòàò â ôàéë, à çàòåì çàïóñêàòü ñêðèïò “collect.pl“,
îòâå÷àþùèé çà äîáàâëåíèå èíôîðìàöèè â áàçó äàííûõ.
Ñêðèïò stats.sh:
#!/bin/bash127.0.0.1 clear ip accounting > /dev/null127.0.0.1 show ip
accounting checkpoint > /tmp/ipcad.stat
/usr/local/etc/collect.pl/tmp/ipcad.stat
×àñòü ñêðèïòà collect.pl :
#!/usr/bin/perlDBI;
#Ëîãèí / ïàðîëü
$dbuser = "root";
$dbpassword
=
"password";=
DBI->connect("DBI:mysql:stat:localhost",$dbuser,$dbpassword) or die "can't connect
to database ", $dbh->errstr, __LINE__;(FIL, "/tmp/ipcad.stat") || die;($line=<FIL>) {
@mass = split(" ",$line);
$dbh -> do ("INSERT INTO `tmp` ( `id` , `date` , `time` , `src` , `srcp` , `dst` ,
`dstp` , `bytes` , `proto`,`class` ) VALUES ('', CURDATE( ) , CURTIME( )$
}
close(FIL);
Ñêðèïò stat.sh íóæíî çàïóñêàòü êàæäûå 20-25 ìèíóò, ïîýòîìó äîáàâëÿåì çàäà÷ó â
cron:
router> crontab -e
,20,40,55 * * * * /usr/local/etc/stat
Òåïðü âñå íóæíûå äàííûå íàõîäÿòñÿ â áàçå äàííûõ, îñòàëîñü òîëüêî âûòàùèòü èõ
íà ñàéò. Äëÿ ýòîãî ðàçðàáàòûâàåì íåñêîëüêî web-ñòðàíèö. Êîä ãëàâíîé ñòðàíèöû
index.php íàõîäèòñÿ â ïðèëîæåíèè 3.
 èòîãå ïîëó÷àåì ñèñòåìó ïîäñ÷åòà òðàôèêà â óäîáíîì òàáëè÷íîì âèäå (ðèñ. 3.4.1),
ñî ñëåäóþùèìè âîçìîæíîñòÿìè:
 Ó÷åò ëþáîãî òðàôèêà äëÿ êàæäîãî ïîëüçîâàòåëÿ îòäåëüíî;

Óñòàíîâêà ëèìèòà òðàôèêà, ïðè ïðåâûøåíèè êîòîðîãî íà ïî÷òó ñèñòåìíîìó
àäìèíèñòðàòîðó ïðèõîäèò èçâåùåíèå.
Ðèñ.3.4.1 Òàáëèöà èïîëüçîâàíèÿ Èíòåðíåò òðàôèêà
Çàêëþ÷åíèå
 ðåçóëüòàòå âûïîëíåíèÿ äèïëîìíîé ðàáîòû ïîëó÷åíû ñëåäóþùèå ðåçóëüòàòû:
1. Ïîñòðîåíà çàùèùåííàÿ êîðïîðàòèâíàÿ ñåòü íà îñíîâå VPN, èñïîëüçóÿ òåõíîëîãèè
OpenVPN è SSH;
1. Ðàññìîòðåíû
ìåòîäû
îðãàíèçàöèè
VPN
ñåòåé:
êëèåíò-ñåðâåðíûé,
òóííåëèðîâàíèå, òî÷êà-òî÷êà;
2.
Ïîëó÷åíû òàáëè÷íûå çíà÷åíèÿ ïðîïóñêíîé ñïîñîáíîñòè çàùèùåííûõ èíòåðíåò
êàíàëîâ äëÿ òåõíîëîãèé OpenVPN è SSH. Äàíà ïðàêòè÷åñêàÿ îöåíêà ïðîèçâîäèòåëüíîñòè
ýòèõ êàíàëîâ ñîçäàííîé êîïðîðàòèâíîé ñåòè. Ïîëó÷åííûå ðåçóëüòàòû ïîçâîëÿþò ñäåëàòü
îáùèé âûâîä: ïðè ïîñòðîåíèè êîðïîðàòèâíîé ñåòè öåëåñîîáðàçíî èñïîëüçîâàòü îáå òåõíîëîãèè
- ñ ïîìîùüþ OpenVPN ñîçäàâàòü çàùèùåííûå ñåòè, ñ ïîìîùüþ SSH - ssh-òóííåëè è
ñîçäàíèå ïîäêëþ÷åíèé äëÿ àäìèíèñòðèðîâàíèÿ;
.
Ðàññìîòðåíû ðåøåíèÿ äëÿ ìîíèòîðèíãà êîðïîðàòèâíîé ñåòè: Nagios, Cacti,
Ipcad, LightSquid. Ñäåëàí âûâîä îá èñïîëüçîâàíèè ýòèõ ðåøåíèé â îäíîì êîìïëåêñå;
.
Ñ öåëüþ ôèëüòðàöèè òðàôèêà è ñëåæåíèÿ çà äåÿòåëüíîñòüþ ïåðñîíàëà
óñòàíîâëåí, íàñòðîåí è ââåäåí â ðàáîòó proxy-ñåðâåð;
.
Ââåäåíà â ýêñïëóàòàöèþ ñèñòåìà ìîíèòîðèíãà, ñîñòîÿùàÿ èç ðàññìîòðåííûõ â
ðàáîòå êîìïîíåíòîâ: Nagios, Cacti, Ipcad, LightSquid;
.
Ðàçðàáîòàí web-èíòåðôåéñ äëÿ ñèñòåìû ó÷åòà òðàôèêà.
Ñïèñîê èñïîëüçóåìîé ëèòåðàòóðû
1. À.Â. Ñîêîëîâ, Â.Ô.Øàíüãèí. Çàùèòà èíôîðìàöèè â ðàñïðåäåëåííûõ êîðïîðàòèâíûõ
ñåòÿõ è ñèñòåìàõ. - Ì.:ÄÌÊ Ïðåññ, 2002. - 656ñ.
2.
Îëèôåð Â.Ã., Îëèôåð Í.À. Êîìïüþòåðíûå ñåòè. Ïðèíöèïû, òåõíîëîãèè, ïðîòîêîëû. -
2001 ã. 668 ñ.
.
Îëåã Êîëåñíèêîâ, Áðàéàí Õåò÷. LINUX. Ñîçäàíèå âèðòóàëüíûõ ÷àñòíûõ ñåòåé
(VPN). - Èçäàòåëüñòâî "ÊÓÄÈÖ-ÎÁÐÀÇ" 2002 ã. 464 ñ.
.
Ñâîáîäíàÿ ýíöèêëîïåäèÿ, URL: http://www.wikipedia.org
.
Ñòàòüè î linux ñèñòåìàõ, URL: http://www.opennet.ru/
6.
Ñòàòüè îá óñòàíîâêå è íàñòðîéêå ðàçëè÷íûõ ïàêåòîâ ïðîãðàìì ïîä Linux/Unix
ñèñòåìû,URL: http://www.lissyara.su/
.
Êîëëåêòèâíûé áëîã íîâîñòåé, àíàëèòè÷åñêèõ ñòàòåé, ñâÿçàííûõ ñ âûñîêèìè
òåõíîëîãèÿìè è Èíòåðíåòîì, URL: http://habrahabr.ru/
Ïðèëîæåíèå 1
Òàáëèöà çíà÷åíèé ïðîïóñêíîé ñïîñîáíîñòè Èíòåðíåò êàíàëà, èñïîëüçóÿ OpenVPN.
¹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Ñ
ð
Áåç VPN
RTT
1,438
1,551
1,532
1,474
1,481
1,471
1,694
1,519
1,470
1,470
1,575
1,475
1,686
1,725
1,706
1,744
1,551
1,529
1,449
1,467
1,499
1,399
1,545
1,530
1,374
1,534
Ñêîðîñòü
9,57
9,51
9,58
9,59
9,59
9,59
9,50
9,58
9,59
9,60
9,58
9,59
9,60
9,59
9,58
9,60
9,60
9,60
9,58
9,62
9,59
9,60
9,59
9,59
9,58
9,584
OpenVPN
AES-256-CBC
RTT Ñêîðîñòü
2,016 9,10
1,925 9,10
1,990 9,10
2,246 9,09
2,258 9,10
2,344 9,10
2,360 9,10
2,285 9,10
2,336 9,09
2,317 9,09
2,282 9,09
2,319 9,10
2,224 9,09
2,258 9,10
1,941 9,09
2,155 9,10
2,313 9,09
2,226 9,10
2,240 9,09
2,218 9,10
2,200 9,10
2,283 9,09
2,264 9,10
2,278 9,09
2,244 9,09
2,221 9,096
Öï ¹1
7,7
4,7
6,6
6
5,7
7,7
8,3
3
7,6
6,3
6,3
6
4,7
4
7,7
6,7
7,3
7,3
8,7
8
7
9,7
7
6,6
8,7
6,772
Öï ¹2
6
8,3
6,3
8,7
8
6,3
8,7
8,7
6,3
8,3
8,7
6,7
8,7
8,3
6,7
8,7
6,3
8,7
8
8,3
8,7
6,3
8
8,7
8,3
7,788
Øèôðîâàíèå ñ ñæàòèåì òðàôèêà
RTT Ñêîðîñòü Öï ¹1
Öï ¹2
1,856 12,10
10,7
8,3
2,119 12,10
17
8,7
2,245 12,10
10,7
8,3
2,236 12,10
25,6
11
2,191 12,10
10,3
8,7
2,212 12,10
10,3
8,7
2,262 12,10
7,3
7,7
2,304 12,10
30,1
11,7
2,208 12,10
12,7
8,7
2,212 12,10
11
8,7
2,258 12,10
23,3
11,7
2,203 12,10
14
8,3
2,267 12,10
10,7
7,7
2,238 12,10
10,3
11,3
2,312 12,10
29,3
8,7
2,187 12,10
11
8,3
2,224 12,10
9,7
11
2,190 12,00
8,3
9
2,288 12,00
31,3
9,3
2,176 12,10
11,3
9,7
2,196 12,10
11
9,3
2,150 12,10
21
8,7
1,825 12,10
16
7,3
2,226 12,10
11,6
12,7
2,273 12,10
10,3
8,3
2,194 12,092
14,992 9,272
 ïðèëîæåíèè 1 èñïîëüçîâàíû ñëåäóþùèå îáîçíà÷åíèÿ:
 ¹ - íîìåð îïûòà. Ïîä îïûòîì ïîíèìàåì ïåðåäà÷ó ôàéëà èç îäíîé ñåòè â äðóãóþ â
òå÷åíèè 10 ñåêóíä;

Áåç VPN - îïûòû ïðîèçâîäèëèñü áåç èñïîëüçîâàíèÿ òåõíîëîãèè VPN;

AES-256-CBC - ïðîèçâîäèòåëüíîñòü êàíàëà ïðè øèôðàöèè ïåðåäàâàåìûõ
äàííûõ ñ ïîìîùüþ 256 áèòíîãî êëþ÷à AES;

Øèôðîâàíèå ñ ñæàòèåì òðàôèêà - ïðîèçâîäèòåëüíîñòü êàíàëà ïðè
èñïîëüçîâàíèè ñæàòèÿ øèôðîâàííîãî òðàôèêà;

RTT - âðåìÿ ìåæäó îòïðàâêîé çàïðîñà è ïîëó÷åíèåì îòâåòà â ìèëëèñåêóíäàõ
(Round Trip Time);

Ñêîðîñòü - ïðîïóñêíàÿ ñïîñîáíîñòü êàíàëà, èçìåðÿåìàÿ â Ìáèò/ñåê;

Öï1 - çàãðóçêà öåíòðàëüíîãî ïðîöåññîðà íà ïåðåäàþùåì ìàðøðóòèçàòîðå;

Öï2 - çàãðóçêà öåíòðàëüíîãî ïðîöåññîðà íà ïðèíèìàþùåì ìàðøðóòèçàòîðå;

Ñð - ñðåäíåå àðèôìåòè÷åñêîå çíà÷åíèå.
Òàáëèöà çíà÷åíèé ïðîïóñêíîé ñïîñîáíîñòè Èíòåðíåò êàíàëà, èñïîëüçóÿ SSH
¹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Ñ
ð
Áåç VPN
RTT
1,438
1,551
1,532
1,474
1,481
1,471
1,694
1,519
1,470
1,470
1,575
1,475
1,686
1,725
1,706
1,744
1,551
1,529
1,449
1,467
1,499
1,399
1,545
1,530
1,374
1,534
Ñêîðîñòü
9,57
9,51
9,58
9,59
9,59
9,59
9,50
9,58
9,59
9,60
9,58
9,59
9,60
9,59
9,58
9,60
9,60
9,60
9,58
9,62
9,59
9,60
9,59
9,59
9,58
9,584
SSH
AES-256-CBC
RTT Ñêîðîñòü
2,068 8,85
2,374 8,85
2,379 8,84
2,354 8,84
2,348 8,85
2,133 8,83
2,451 8,83
2,411 8,86
2,390 8,84
2,423 8,85
2,524 8,86
2,354 8,84
2,423 8,85
2,354 8,85
2,294 8,86
2,133 8,84
2,187 8,84
2,374 8,83
2,258 8,84
2,235 8,85
2,133 8,85
2,212 8,83
2,305 8,85
2,336 8,84
2,273 8,86
2,309 8,845
Öï ¹1
1,3
1
1,7
0,7
2,3
2
2,3
2,7
2
1,3
2
3,3
5
1
1,3
3,3
0,7
2,7
2,3
1,7
1
3
2,3
1,7
1,3
1,704
Öï ¹2
10,3
9,7
10,7
8
10,3
10
10,7
7,7
10,3
10
10
8
10
10,3
7,3
10
10
10
7,7
10
10
9,7
8
10,7
10
8,140
Øèôðîâàíèå ñ ñæàòèåì òðàôèêà
RTT Ñêîðîñòü Öï ¹1
Öï ¹2
2,224 11,60
33,8
13
2,258 10,40
36,7
11,3
2,360 11,40
25
16,6
2,285 11,50
25,3
12
2,282 11,50
71,3
13,7
2,319 11,50
24,9
10,3
2,224 11,50
35,7
17,30
2,524 11,40
35,9
12,7
2,326 11,40
57,7
13,3
2,232 11,60
24
14
1,864 11,70
36,3
12,7
2,235 11,40
54,3
11,3
2,120 11,50
37,3
18,6
2,221 11,40
23,6
12
2,228 11,50
26,6
13,7
2,423 11,30
77
11
2,354 11,50
22,6
16,7
2,423 11,60
31,7
14
2,354 10,40
34,1
13
2,294 11,60
55,4
10,3
2,133 11,20
24,7
15
2,374 11,20
35,6
12,7
2,258 11,30
59,1
12
2,190 11,40
34,3
12
2,288 11,40
25,3
18,3
2,272 11,368
37,928 13,500
 ïðèëîæåíèè 1 èñïîëüçîâàíû ñëåäóþùèå îáîçíà÷åíèÿ:
 ¹ - íîìåð îïûòà. Ïîä îïûòîì ïîíèìàåì ïåðåäà÷ó ôàéëà èç îäíîé ñåòè â äðóãóþ â
òå÷åíèè 10 ñåêóíä;

Áåç VPN - îïûòû ïðîèçâîäèëèñü áåç èñïîëüçîâàíèÿ òåõíîëîãèè VPN;

AES-256-CBC - ïðîèçâîäèòåëüíîñòü êàíàëà ïðè øèôðàöèè ïåðåäàâàåìûõ
äàííûõ ñ ïîìîùüþ 256 áèòíîãî êëþ÷à AES;

Øèôðîâàíèå ñ ñæàòèåì òðàôèêà - ïðîèçâîäèòåëüíîñòü êàíàëà ïðè
èñïîëüçîâàíèè ñæàòèÿ øèôðîâàííîãî òðàôèêà;

RTT - âðåìÿ ìåæäó îòïðàâêîé çàïðîñà è ïîëó÷åíèåì îòâåòà â ìèëëèñåêóíäàõ
(Round Trip Time);

Ñêîðîñòü - ïðîïóñêíàÿ ñïîñîáíîñòü êàíàëà, èçìåðÿåìàÿ â Ìáèò/ñåê;

Öï1 - çàãðóçêà öåíòðàëüíîãî ïðîöåññîðà íà ïåðåäàþùåì ìàðøðóòèçàòîðå;

Öï2 - çàãðóçêà öåíòðàëüíîãî ïðîöåññîðà íà ïðèíèìàþùåì ìàðøðóòèçàòîðå;

Ñð - ñðåäíåå àðèôìåòè÷åñêîå çíà÷åíèå.
Êîä ñòðàíèöû web-èíòåðôåéñà
Index.php:
<?php include "check.php"; ?>
<html>
<head>
<?php("global.php"); $funk, $yearmonth;_connect();
?>
<meta name="GENERATOR" content="Quanta Plus">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK rel="stylesheet" href="style.css" type="text/css">
</head>
<body >
<table class=inv-head align=left>
<tr>
<td align=left valign=top>
<h3>Ïåðñîíàëüíàÿ ñòàòèñòèêà:<br>
<?php
//get checked ips
$query = "SELECT checkedip,uname,INET_NTOA(checkedip) from users
order by checkedip";
$result
=
mysql_query
name=checkedips
($query);($result)
action=index.php>:
{"<form
<select
method=GET
name=checkedip
onChange=checkedips.submit()>
<option>-------"; ($b = mysql_fetch_array ($result))
{
if ($checkedip == $b[0]) {echo "<option value=$b[0] selected=selected>$b[2] :
$b[1]";} {echo "
<option value=$b[0]>$b[2] : $b[1]
";}}"</select>
<input type=hidden name=funk value=$funk>
ìåñÿö <select name=month onChange=checkedips.submit()>
";
$i = 0;($mm as $m_) {
$i++; ($month==$i) echo "<option value=$i selected=selected>$m_";echo "
<option value=$i>$m_";
}
}
?>
</select>
<select name=year onChange=checkedips.submit()>
<?php($yy
as
$y_)
{($year==$y_)
echo
selected=selected>$y_";echo " <option value=$y_>$y_";
}
"<option
value=$y_
?>
</select>
ãîä
</form></h3>
<ul><li><a href=index.php?ch=1>Statistic on all users</a></li></ul>
<ul><?php echo "
<li><a
href=index.php?checkedip=$checkedip&funk=print_month_inet&month=$month&ye
ar=$year>Çàãðóçêà èç Èíòåðíåò çà ìåñÿö</a>
<li><a
href=index.php?checkedip=$checkedip&funk=print_day_inet&month=$month&year
=$year>Çàãðóçêà èç Èíòåðíåò ïî äíÿì</a>
<li><a
href=index.php?checkedip=$checkedip&funk=print_day_inet_upload&month=$mont
h&year=$year>Îòãðóçêà â Èíòåðíåò ïî äíÿì</a>
<li><a
href=index.php?checkedip=$checkedip&funk=print_inet&month=$month&year=$ye
ar&lim=0>Ïîñåùåíèÿ Èíòåðíåò</a>
</ul>
<ul>
<li><a href=lans.php> Ëîêàëüíûå ñåòè</a>
<li><a href=users.php> Ïîëüçîâàòåëè</a>
</ul>
<ul>
<li><a href=exit.php align=left>Âûõîä</a></li>
</ul>
";"<h3><font color=yellow>:: $now ::</font></form></h3>";("calendar.php");
?>
<td align=left valign=top>
<?php
($funk
==
$funk=="print_inet"
"print_time"
||
||
$funk
$funk
==
"print_time_upload"
=="print_lan")
||
{$funk
($year,$month,$lim);}($_GET['ch']==1) all();$funk ($year,$month);_close ();
?>
</table>
</td>
</tr>
<tr><td colspan=2>
 <br>
<p
align="right"><font
size="4"><?php
echo
sysadmin@arscraft.ru</b>";?>
</td>
</tr>
</table>
</body>
</html>
Ðàçìåùåíî íà Allbest.ru
"<b>Òåõ.
ïîääåðæêà:
Download