По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Представьте себе, что рядом с вами в организации есть сетевая розетка и все, что туда подключается, автоматически получает туда доступ. Любые устройства - даже если они являются "шпионскими" или не авторизованными. Вы конечно скажете - но есть же простой, как тапок, протокол под названием Port Security! Верно, но как он работает? Вы либо указываете MAC-адрес, который может подключиться к порту и получить доступ в сеть, либо указываете какое-то количество таких MAC адресов, которые будут динамически опознаны коммутатором или смешиваете два этих способа. Но что если вы находитесь в публичной зоне, например там, куда вы приглашаете клиентов, или, к примеру вы находитесь на некой веранде, откуда зачастую можно работать. Там внедрён Port Security, все нормально. Но вдруг ваш ноутбук кто-то умудрился ловко спереть и что тогда? У кого-то постороннего появится доступ в вашу сеть, так как доступ по его MAC-адресу разрешен. Тут-то и вступает в дело 802.1X - он позволяет проводить аутентификацию не устройства, но пользователя. Таким образом, если устройство будет украдено, злоумышленники все равно не получат доступ в сеть. Логичным вопросом будет "Как же я обеспечу гостей доступом в сеть без предоставления им полного доступа"? Ответ - легко, и вариантов десятки: гостевая учетка и гостевой VLAN, специальный портал саморегистрации для гостей и так далее и тому подобное. Также некоторые скажут - ну конечно, у меня в компании доступ к беспроводной сети так и организован, через синхронизацию с AD и по учетным записям пользователей. Но как это работает в случае проводного доступа? Сразу отвечу, что 802.1X используется как в беспроводной сети, так и в проводной. Подробнее о принципе действия, его компонентах я расскажу ниже. Из чего состоит 802.1X У 802.1X есть три основных компонента - суппликант, аутентификатор и сервер аутентификации. Суппликант - это ваше оконечное устройство и пользователь с определенным ПО (здесь нет смысла углубляться в различные виды суппликантов). Аутентификатор - это коммутатор или точка доступа (первое сетевое устройство уровня доступа, на который пришел трафик с суппликанта. И, наконец, сервером аутентификации является специальное ПО или устройство, принадлежащее к классу NAC - Network Access Control, или средствам контроля сетевого доступа. Конкретный класс решений для реализации 802.1X называется RADIUS-сервером. Итак, порядок подключения следующий: вы пытаетесь получить доступ в сеть и аутентификатор говорит - предъявите, пожалуйста документы. Ваше устройство (суппликант) предоставляет нужную информацию - логин и пароль, сертификат, обе этих сущности вместе и прочие. Далее аутентификатор отправляет полученную информацию на сервер аутентификации и ждёт ответа. Далее, в базовом варианте, сервер аутентификации отправит обратно на аутентификатор разрешение и после этого аутентификатор разрешение суппликанту. До этого момента почти никакой трафик разрешен не будет! Важно понимать, что в сторону аутентификатора уходит фрейм с определенным регистром (для этого и нужен суппликант), а аутентификатор энкапсулирует отправляет полученную информацию от суппликанта в сторону сервера аутентификации как IP – пакет (чтобы его можно было маршрутизировать). Протоколы в технологии 802.1X Давайте теперь подробнее поговорим о протоколах в этой технологии – так как 802.1X являет собой неикий собирательный термин. Основных протоколов 2 – EAPoL (Extensible Authentication Protocol over LAN) и RADIUS (Remote Authentication Dial-In User Service). Есть очень простые и не очень безопасные формы EAP и очень надежные, но крайне сложные в настройке. В простейшем виде будет необходим только логин и пароль. В более сложных – сертификат, токен и прочее. Есть правило – чем проще настроить EAP – тем он менее взломостойкий и наоборот :) В наше время одним из популярных и очень умных RADIUS – серверов является Cisco ISE. Он позволяет авторизовывать пользователей в зависимости от их контекста: Что за устройство? Кто? Где? Когда? Было ли устройство скомпрометировано ранее? и автоматически профилировать каждое подключенное устройство для того, чтобы понимать какие устройства есть у вас в сети и в каком состоянии они находятся – многие даже не подозревают о том, как много у них в организации подключено неизвестных устройств (при количестве пользователей более 1000). Ниже на диаграмме можно увидеть весь процесс установления соединения при использовании 802.1X:
img
Одной из основных составляющих IP – PBX на базе Asterisk являются SIP – транки в сторону провайдера и оконечные телефонные аппараты, или как их принято называть «пиры» (peers). Сегодня мы расскажем о способе автоматизации мониторинга состояния транков и пиров, с отправлением на почту системного администратора. Мониторинг пиров Итак, начнем с мониторинга состояния пиров. Для этого мы напишем небольшой bash – скрипт. Предположим, что у нас есть 3 площадки, А, B и C. АТС Asterisk находится на площадке A. Предварительно, перед началом работы, создадим 2 файлы: первый – для логов нашего скрипта, а второй, будет служебным, и будет использоваться только в рамках исполнения скрипта. Внутри каждого скрипта, мы будем писать комментарии к каждой из его строк. Скачать скрипт мониторинга пиров вы можете по ссылке ниже: Скачать скрипт мониторинга пиров [root@asteriskpbx]# touch /home/admin/log_mail.txt [root@asteriskpbx]# touch /home/admin/message.txt Далее, создаем переменные для нашего скрипта: #!/bin/sh LOGSIZE=`ls -l /home/admin/log_mail.txt | awk '{ print $5 }'` //проверяем размер файла с логами problempeers=`/usr/sbin/asterisk -rx 'sip show peers' | grep UNKNOWN` //выводим командой 'sip show peers' через консоль Asterisk, и затем, с помощью команды grep UNKNOWN фильтруем пиры, чтобы отобразить только те, состояние которых является UNKNOWN GWB=`ping -c4 11.22.33.44 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //по протоколу ICMP, пингуем IP – адрес шлюза на удаленной площадке четырьмя пакетами. Если все ОК, и шлюз доступен, до значение переменной будет равно 4. В противном случае, оно будет равно 0. GWC=`ping -c4 44.33.22.11 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //аналогичным образом пингуем шлюз на площадке C ResultB="" //служебная переменная ResultC="" //служебная переменная FILENAME=/home/admin/message.txt //записываем в переменную путь к лог- файлам LOGFILE=/home/admin/log_mail.txt DATE="`date +%d.%m.%Y" "%H:%M:%S`" //выводим текущую дату и время в формате дд.мм.гггг чч:мм:сс echo "$problempeers" > /home/admin/message.txt //записываем содержимое переменной problempeers в служебный файл. В этой переменной содержится результат вывода команды по статусу пиров. FILESIZE=$(stat -c%s "$FILENAME") //проверяем размер служебного файла message.txt. Если в нем есть какая-либо информация, значит есть проблемы с пирами (имеются в статусе UNKNOWN), если он пустой, то все ОК. На этом этапе, мы сформировали все необходимые переменные и у нас имеются все необходимые для формирования письма (если надо) на email системному администратору. Перейдем к исполнительной части скрипта: if [ $GWB -eq 0 ]; then //если число ответов шлюза на площадке B на пинг равно 0, то запускаем процесс формирования письма ResultB ="на площадке B НЕ ДОСТУПЕН!" //формируем часть текста. Мы ее включим в заголовок письма else ResultB ="" //если все таки шлюз ответил на пинг, то оставляем переменную пустой fi if [ $GWС -eq 0 ]; then //если число ответов шлюза на площадке С на пинг равно 0, то запускаем процесс формирования письма ResultС="на площадке С НЕ ДОСТУПЕН!" //по аналогии. Указываем в заголовок, что роутер C недоступен else ResultС ="" //если все ОК, то оставляем переменную пустой fi if [ $FILESIZE -ne 1 ]; then //если наш служебный файл message.txt не пустой, то проверяем следующее условие if [ $GWB -eq 0 ] || [ $GWC -eq 0 ]; then //если хотябы один из роутеров недоступен по пинг, то переходим к следующему пункту скрипта echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутер $ResultB $ResultC!" -r "info@merionet.ru" youremail@some.ru </home/admin/message.txt && //отправляем на почту письмо, где указываем, что у нас есть проблемы с пирами, и, если какой-то из роутеров не доступен, указываем это. В теле письма мы отправляем вывод недоступных пиров. echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //параллельно с отправкой письма, записываем в лог файл запись, что у нас есть проблемы с пирами (в вывод так же можно добавить с какими именно) else echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутеры ДОСТУПНЫ!" -r "info@merionet.ru" youremail@some.ru < /home/admin/message.txt && //если оба наших роутера доступны, то мы просто формируем письмо, в котором указываем перечень недоступных пиров. echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //аналогично вносим запись в лог – файл. fi else echo "OK :: $DATE :: all phones are OK" >> "$LOGFILE" //если служебный файл пустой, то мы вносим запись в лог – файл что все хорошо и проверка успешно прошла. fi if [ $LOGSIZE -ge 150000 ]; then //елси размер нашего лог – файла больше или равен 150 КБ, то мы очищаем этого (можете подкрутить эту величину, как вам угодно.) cat /dev/null > /home/admin/log_mail.txt fi cat /dev/null > /home/admin/message.txt //на выходе чисти служебный файл message.txt, для последующего использования Теперь давайте проверим, что приходит нам на почту в случае, если несколько пиров стали недоступны, но все роутеры доступны: Мониторинг транков Отлично, перейдем к формированию скрипта по мониторингу транков. Здесь все несколько проще, и мы просто будем сравнивать общее количество транков, и количество зарегистрированных транков: Скачать сам скрипт можете ниже: Скачать скрипт мониторинга транков #!/bin/bash ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" //выводим регистрации по протоколу SIP ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` //численное обозначение всех имеющихся транков REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l` //численное обозначение всех зарегистрированных транков DATE="`date +%d.%m.%Y" "%H:%M:%S`" //формируем текущую дату, для логов LOGFILE=/home/admin/log_mail.txt //для лог – файла, указываем тот же файл, что и для скрипта по мониторингу пиров if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then //если число зарегистрированных транков меньше чем число всех транков sleep 5 //ждем 5 секунд echo `/usr/sbin/asterisk -rx "sip reload"` \ перезагружаем модуль SIP, в целях перерегистрации. Эта команда автоматически перерегистрирует транк на оборудовании провайдера, после чего, он, зачастую, начинает работать. sleep 5 //ждем еще 5 секунд VAR=`/usr/sbin/asterisk -rx "sip show registry"` //после перезагрузки SIP модуля, снова смотрим SIP –регистрации. Если данная команда не дала своих результатов, то в переменной VAR будет записаны не работающие транки. Если она помогла, то на email админу придет рабочий вывод всех зарегистрированных транков. Это весьма удобно. echo "$VAR"| mailx -s "Мониторинг транков" -r "info@merionet.ru" youremail@some.ru // отправляем письмо на почту системного администратора, с выводом SIP регистраций после перезагрузки модуля else echo "OK :: $DATE :: all trunks are OK" >> "$LOGFILE" //если число зарегистрированных транков, равно общему числу, то записываем в лога файл соответствующую запись. fi Теперь, когда мы автоматизировали процессы мониторинга состояния на Asterisk, сделаем выполнение этих скриптов регулярным. Сохраним наши скрипты в формате .sh, можно сделать это, например, в Notepad ++. Сделаем выполнение мониторинг транков раз в 2 минуты, а выполнение мониторинга пиров раз в 10 минут. Перед загрузкой скриптов на сервер, дадим им необходимые права и, что очень важно, преобразуем скрипт в Linux формат: [root@asteriskpbx]# dos2unix peer.sh //преобразуем скрипт для мониторинга пиров [root@asteriskpbx]# dos2unix trunk.sh //преобразуем скрипт для мониторинга транков [root@asteriskpbx]# chmod 777 peer.sh //дадим необходимые права обоим скриптам [root@asteriskpbx]# chmod 777 trunk.sh [root@asteriskpbx]# crontab -e В открывшемся cron, задаем задачи для выполнения наших скриптов: */10 * * * * /bin/bash /home/peer.sh >/dev/null //исполнять файл раз в 10 минут */2 * * * * /bin/bash /home/trunk.sh >/dev/null //исполнять файл раз в 2 минуты Вот и все. Теперь мы имеет достаточно простой, но порой очень нужный и эффективный мониторинг состояния транков и пиров на нашем Asterisk
img
В предыдущих статьях были рассмотрены три обширные задачи, которые должна решать каждая плоскость управления для сети с коммутацией пакетов, и рассмотрен ряд решений для каждой из этих задач. Первой рассматриваемой задачей было определение топологии сети и ее доступности. Во-вторых, вычисление свободных от петель (и, в некоторых случаях, непересекающихся) путей через сеть. Последняя задача- это реакция на изменения топологии, на самом деле представляет собой набор задач, включая обнаружение и сообщение об изменениях в сети через плоскость управления. В этой серии лекций мы объединим эти заждачи и решения путем изучения нескольких реализаций распределенных плоскостей управления, используемых для одноадресной пересылки в сетях с коммутацией пакетов. Реализации здесь выбраны не потому, что они широко используются, а потому, что они представляют собой ряд вариантов реализации среди решений, описанных в предыдущих лекциях. В каждом конкретном случае рассматривается базовая работа каждого протокола; в последующих статьях мы будем углубляться в вопросы сокрытия информации и другие более сложные темы в плоскостях управления, поэтому здесь они не рассматриваются. Классификация плоскости управления Плоскости управления обычно классифицируются по двум характеристикам. Во-первых, они разделяются в зависимости от того, где вычисляются loop-free пути, будь то на передающем устройстве или выключенном. Плоскости управления, в которых фактические коммутационные устройства непосредственно участвуют в расчете loop-free путей, затем разделяются на основе вида информации, которую они несут о сети. Классификация, основанная на алгоритме, используемом для вычисления loop-free путей, отсутствует, хотя это часто тесно связано с типом информации, передаваемой плоскостью управления. В то время как централизованные плоскости управления часто связаны с несколькими (или одним, концептуально) контроллерами, собирающими информацию о достижимости и топологии от каждого коммутационного устройства, вычисляющими набор loop-free путей и загружающими полученную таблицу пересылки на коммутационные устройства, концепция гораздо менее строгая. Ц В более общем смысле централизованная плоскость управления означает просто вычисление некоторой части информации о пересылке где-нибудь, кроме фактического устройства пересылки. Это может означать отдельное устройство или набор устройств; это может означать набор процессов, запущенных на виртуальной машине; это может означать вычисление всей необходимой информации о пересылке или (возможно) большей ее части. Плоскости распределенного управления обычно различаются тремя общими характеристиками: Протокол, работающий на каждом устройстве и реализующий различные механизмы, необходимые для передачи информации о доступности и топологии между устройствами. Набор алгоритмов, реализованных на каждом устройстве, используемый для вычисления набора loop-free путей к известным пунктам назначения. Способность обнаруживать и реагировать на изменения доступности и топологии локально на каждом устройстве. В распределенных плоскостях управления не только каждый прыжок (hop by hop) с коммутацией пакетов, но и каждый прыжок определяет набор loop-free путей для достижения любого конкретного пункта назначения локально. Плоскости распределенного управления обычно делятся на три широких класса протоколов: состояние канала, вектор расстояния и вектор пути. В протоколах состояния канала каждое устройство объявляет состояние каждого подключенного канала, включая доступные пункты назначения и соседей, подключенных к каналу. Эта информация формирует базу данных топологии, содержащую каждое звено, каждый узел и каждый достижимый пункт назначения в сети, через который алгоритм, такой как Dijkstra или Suurballe, может быть использован для вычисления набора loop-free или непересекающихся путей. Протоколы состояния канала обычно заполняют свои базы данных, поэтому каждое устройство пересылки имеет копию, которая синхронизируется с каждым другим устройством пересылки. В протоколах вектора расстояния каждое устройство объявляет набор расстояний до известных достижимых пунктов назначения. Эта информация о достижимости объявляется конкретным соседом, который предоставляет векторную информацию или, скорее, направление, через которое может быть достигнут пункт назначения. Протоколы вектора расстояния обычно реализуют либо алгоритм Bellman-Ford, либо алгоритм Garcia-Luna’s DUAL, либо аналогичный алгоритм для расчета маршрутов без петель в сети. В протоколах вектора пути, путь к пункту назначения, записывается по мере того, как объявление о маршрутизации проходит через сеть, от узла к узлу. Другая информация, такая как показатели, может быть добавлена для выражения некоторой формы политики, но первичный, свободный от петель, характер каждого пути вычисляется на основе фактических путей, по которым объявления проходят через сеть. На рисунке 1 показаны эти три типа распределенных плоскостей управления. На рисунке 1: В примере состояния связи- вверху каждое устройство объявляет, что оно может достичь любе друге устройство в сети. Следовательно, A объявляет достижимость B, C и D; в то же время D объявляет достижимость 2001:db8:3e8:100::/64 и C, B и A. В примере вектора расстояния - в середине D объявляет достижимость до 2001:db8:3e8:100:: 24 до C с его локальной стоимостью, которая равна 1. C добавляет стоимость [D,C] и объявляет достижимость до 2001:db8:3e8:100::64 со стоимостью 2 до B. В примере вектора пути - внизу D объявляет о достижимости до 2001:db8:3e8:100::/24 через себя. C получает это объявление и добавляет себя к [D,C]. Плоскости управления не всегда аккуратно вписываются в ту или иную категорию, особенно когда вы переходите к различным формам сокрытия информации. Некоторые протоколы состояния канала, например, используют принципы вектора расстояния с агрегированной информацией, а протоколы вектора пути часто используют некоторую форму расположения метрик вектора расстояния для увеличения пути при вычислении loop-free путей. Эти классификации - централизованный, вектор расстояния, состояние канала и вектор пути - важны для понимания и знакомства с миром сетевой инженерии.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59