samag_cover4(149)

В номере:

  • За пределами nss_ldap, или Еще о методах авторизации
    О методах авторизации в Active Directory, которые возможны без использования nss_ldap и при этом нисколько не теряют его функциональности, а, наоборот, более безопасны, потому как могут и не требовать задания пароля открытым текстом.
  • Управление Windows Defender с помощью PowerShell
    Начиная с Windows 8 продукт Windows Defender (Защитник Windows) получил функционал Microsoft Security Essentials и из простейшего сканера шпионских программ теперь стал полнофункциональным антивирусным решением, способным обнаруживать широкий спектр потенциально вредоносного ПО.
  • Проектирование отказоустойчивых систем Часть 1. Термины и определения
    Статья посвящена терминологии построения отказоустойчивых ИТ-систем. Помимо описания самих терминов, рассказывается о принципах создания надежной инфраструктуры.
  • Облачная операционная система OpenStack. Часть 1. Введение
    Статья открывает цикл, в котором автор планирует рассказать о проекте по созданию платформы облачных вычислений «инфраструктура как сервис» OpenStack. Сейчас рассмотрим, что такое OpenStack, его историю иосновные компоненты.
  • Обзор сборок QEMU для Windows
    Эмулятор QEMU является популярным средством виртуализации в мире Linux. В статье сравниваются различные сборки QEMU для Windows.
  • Стеганография: реализация и предотвращение
    Возможность прятать одни данные внутри других может позволить злоумышленнику незаметно похищать массу информации. Поговорим о том, как это реализуется и как с этим бороться.
  • Active Directory и безопасность. Часть 7. Виртуализация и защита контроллеров домена
    Безопасность службы каталога Active Directory требует решения многих задач [1-7]. Нетрудно заметить, что обеспечение безопасности контроллеров доменов (DC) оказывает серьезное влияние на всю систему в целом.
  • Мониторинг блокировок в Oracle. Методы предупреждения и автоматического устранения
    Многолетний опыт эксплуатации баз данных в Oracle в нашей организации показал, что среди проблем, возникающих в базах данных (БД), особое место занимают блокировки, которые могут привести к невозможности дальнейшей работы БД, в связи с чем потребуются срочные меры по их устранению.
  • Конвертация: правильная миграция данных в 1С
    Миграция данных между различными конфигурациями – задача не из тривиальных. Путей решения, как всегда, несколько, но не все они оптимальны. Попробуем разобраться в нюансах переноса данных и выбрать универсальную стратегию решения подобных вопросов.
  • Все, что вы хотели знать об итогах в 1С
    В статье речь пойдет о механизме итогов, существующем в платформе «1С:Предприятие» для ускорения чтения данных.
  • «1С:Предприятие» вместе с «1С-Битрикс». Часть 6. Пример настройки интеграции в картинках
    На основе информации, представленной в предыдущих статьях цикла, будет пошагово разобран пример настройки интеграции. Не обойдется, как обычно, и без подводных камней.
  • Практика использования WebKit
    WebKit – разработанная компанией Apple библиотека, на базе которой строятся браузеры. В статье будут рассмотрены варианты ее использования.
  • Язык программирования Go. Подготовка среды для разработки под Windows
    В статье рассматриваются особенности языка программирования Go и описывается способ подготовки среды для разработки программ на этом языке под операционной системой Windows.
  • Создание контейнера IoC под себя
    С темой IoC-контейнеров связано достаточно много «черной магии». На самом деле все очень просто; мы покажем это на примере создания своего IoC-контейнера.
  • Андрей Крюковский: «Фирменный стиль нашего факультета – участие студентов в серьезной научно-исследовательской работе»
    Российский новый университет (РосНОУ) – один из признанных флагманов системы негосударственного высшего образования России. В гостях у «Системного администратора» – Андрей Крюковский, декан и научный руководитель факультета информационных систем и компьютерных технологий РосНОУ, а также член редакционной коллегии нашего журнала.
  • Вакансия: программист PHP
    Веб-разработчики пользуются на рынке труда большим спросом, даже в кризис. Среди языков программирования одним из неизменных лидеров является PHP, который согласно рейтингу TIOBE за март 2015 года продемонстрировал рост популярности. Мы решили выяснить у представителей компаний, какие они предъявляют требования к потенциальным сотрудникам.
  • Секреты механизмов подпрограмм
    В статье мы обсудим основные механизмы функционирования подпрограмм: вызовы и особенно способы их завершения. Для этого мы заглянем вглубь – туда, куда обычно программисты не смотрят (а многие, увы, даже иглубин не знают). Придется немножко повозиться с адресами памяти и переходами, но это необходимо.
  • Шведское телефонное право
    Компания Еricsson в следующем году торжественно отпразднует свое 140-летие. За без малого полтора века скромная шведская фирма по ремонту импортных телефонов выросла в транснациональный гигант на рынке коммуникаций.
  • Применение Scilab для расчета параметров макромоделей операционного усилителя
    В настоящей работе представлены результаты разработки программ расчета параметров макромоделей операционного усилителя первого и второго уровней с применением математического пакета Scilab. Проведена верификация рассчитанных параметров макромоделей на наборе тестовых схем включения ОУ с применением подсистемы схемотехнического моделирования LTSpice.
  • Компьютерное моделирование радиационного заряжения слабопроводящих диэлектриков
    Проведено компьютерное моделирование радиационного заряжения диэлектриков с удельной объемной проводимостью 10-9–10-14 Ом-1∙м-1. Показано, что чем выше проводимость, тем лучше обеспечивается сток заряда, вносимого в диэлектрик при электронном облучении, и уменьшается вероятность возникновения электростатических разрядов. Результаты моделирования находятся в хорошем согласии с экспериментальными данными, полученными для ряда специально изготовленных образцов композитного модельного диэлектрика с задаваемыми значениями удельной объемной проводимости.
  • Первый звонок
    Впервые он, как известно, прозвучал по телефону – прототипу современного телефона – вечером 10 марта 1876 года в Бостоне. Первые в истории слова «в трубку» произнес изобретатель телефона американец шотландского происхождения Александр Грэм Белл, а услышал их его помощник Томас Уотсон. Первый запатентованный телефонный аппарат – сегодняшний экспонат нашего виртуального музея компьютерной и коммуникационной техники.

Анонсирован мартовский номер № 3 (148) журнала Системный Администратор за 2015 год.

cover03(148)

В номере:

  • Проект Ansible. «Дирижируем» ИТ-инфраструктурой
    Знакомим читателей с системой удаленного управления конфигурацией Ansible и ее дополнением Ansible Tower. В статье раскрываются возможности и освещаются вопросы установки, настройки, использования Ansible для управления удаленными ПК на базе ОС Linux и Windows.
  • Проект Docker. Управляем виртуальными окружениями
    В Linux все большую популярность приобретает виртуализация с использованием контейнеров, основанная на механизмах, встроенных в ядро ОС. А на роль высокоуровневого средства управления такими контейнерами не без оснований претендует Docker.
  • Простой менеджмент конфигураций сетевого оборудования
    С ростом количества рабочих мест увеличивается и численность сетевых устройств, соответственно возникает необходимость в менеджменте конфигураций маршрутизаторов, коммутаторов и прочего оборудования подобного класса.
  • Архивариус SCDPM 2012 R2. Часть 2. Защита данных сервера, баз данных, виртуальных машин
    В статье описываются принципы и понятия, возможности и процессы по резервному копированию и восстановлению сервера с нуля, баз данных MS SQL Server, виртуальных машин в среде Hyper-V.
  • Диски против лент. Выбор средств резервного копирования
    Рассмотрим достоинства и недостатки различных инструментов резервного копирования, познакомимся с эффективными технологиями сохранения данных.
  • Управление Google Chrome в корпоративной среде
    Сегодня многие компании переходят на альтернативные Internet Explorer браузеры, одним из основных при этом является Google Chrome.
  • Приключения демона BSD на острове пингвинов
    Необыкновенные и удивительные приключения демона BSD на острове пингвинов, написанные им самим. Или о всем том необычном, странном, непривычном и удивительном, с чем придется столкнуться, если вдруг возникнет необходимость после длительной работы с FreeBSD перейти на использование Linux.
  • Евгений Питолин: «91% компаний малого и среднего бизнеса существенно недооценивают современные киберугрозы»
    На вопросы «СА» отвечает Евгений Питолин, руководитель отдела по развитию СМБ‑сегмента «Лаборатории Касперского».
  • Устройства Arduino для ИТ и ИБ
    С помощью недорогих макетных плат семейства Arduino можно самому разработать множество устройств. В этой статье речь пойдет о наиболее интересных решениях.
  • Защита SSH от перебора пароля
    Стоит «засветиться» сервису в общедоступной сети, как он сразу становится объектом для атаки. Одна из проблем – попытка получения доступа посредством перебора паролей. И SSH не исключение.
  • Детект уязвимости CVE-2014-8609. Sine ira et studio
    В предыдущей статье мы рассмотрели уязвимость CVE-2014-8609 (напомним, что для большинства устройств закрывающее ее обновление недоступно), которая позволяет полностью удалить все данные с устройства, а также создавать фейковые СМС.
  • Сергей Грушко: «Внедрение IP-телефонии на базе Asterisk – это полноценная бизнес-ниша»
    Asterisk – свободное решение компьютерной телефонии. Приложение работает на операционных системах Linux, FreeBSD, OpenBSD и Solaris и др. Asterisk дает уникальный телефонный функционал для своих пользователей. Не использовать его преимущества в бизнесе – значит, давать конкурентам возможность опередить себя, считает Сергей Грушко.
  • Топ-10 преимуществ системы 3CX Phone System
    Почему вашей следующей телефонной системой должна быть программная АТС от компании 3CX.
  • PGCONF.RUSSIA 2015
    В феврале в Москве, в бизнес-центре Digital October, прошла конференция PGCONF.RUSSIA 2015 для пользователей и разработчиков свободно распространяемой объектно-реляционной системы управления базами данных PostgreSQL.
  • Олег Бартунов: «Нам нужны люди, которые хотят делать карьеру в Open Source!»
    О том, как ему удается вести множество проектов, что ждет Postgres-сообщество в ближайшем будущем, зачем он ходит в горы, и еще о многом другом Олег Бартунов рассказал нашему журналу.
  • WMS на 1С: миф или реальность?
    Обладает ли платформа 1С возможностями, которые подходят под специфичные требования, предъявляемые к WMS-системам относительно традиционных учетных систем?
  • «1С:Предприятие» вместе с «1С-Битрикс». Часть 5. Тонкости настройки интеграции
    Изучаем особенности интеграции «1С:Предприятия» и «1С-Битрикс». Знакомимся с гибкой системой настроек, позволяющей делать интересные вещи.
  • Handler Socket в кластере
    Информация о MySQL-плагине Handler Socket, разработанном японцем Akira Higuchi в 2010 году, не является новинкой. Однако на практике при работе с большим потоком данных выявляется много разных интересных нюансов.
  • Внедряем «Луну»
    Ищете возможность реализовать конфигурацию, с помощью которой можно сформулировать сложную логику работы приложения, критичного к производительности? Перед тем, как создавать свою систему конфигурирования, давайте сначала посмотрим на Lua.
  • Артем Воронов: «Магистратура Физтеха – большой карьерный шанс для выпускников региональных вузов»
    Московский физико-технический институт в 2016 году будет отмечать двойной юбилей: 70 лет с момента основания физико-технического факультета МГУ и 65 лет со дня основания собственно МФТИ. Институт давно и прочно занимает ведущие позиции в подготовке научных и управленческих кадров для высокотехнологичного сектора. В гостях у «Системного администратора» – Артем Воронов, проректор по учебной работе и довузовской подготовке МФТИ
  • Вакансия: бэкенд-веб-разработчик
    Одна из востребованных специальностей в области веб-разработки – это создание бэкенда, то есть серверной части веб-приложения. Для успешного трудоустройства профессионалов необходим определенный багаж знаний и умений. Представители компаний рассказывают, каких специалистов они хотели бы видеть в своей команде.
  • Братская помощь дому и офису
    На перефразированный вопрос из культового фильма: «В чем сила, Brother?» – ведущая японская корпорация могла бы ответить своим нынешним рекламным слоганом: в том, что за век с небольшим всегда оставалась «на вашей стороне» (At Your Side). На «вашей» – в смысле на стороне клиента.
  • Процедурно-генерируемые логотипы в дизайне интерфейсов: технологии создания, возможности и ограничения использования
    Компьютерные интерфейсы – одни из самых динамично развивающихся компонентов виртуальной среды. В своем развитии они прошли несколько последовательных этапов, и сегодня мы вступаем в новую эру самонастраивающихся интерфейсов. Процедурная генерация становится ведущей технологией проектирования контента сайтов и их визуального наполнения. В статье на конкретных примерах рассмотрены преимущества и недостатки использования данной технологии и методов визуализации динамически создаваемых логотипов, описаны основные приемы, с помощью которых можно создать генеративный логотип и сохранить его узнаваемость
  • Семнадцать знаков, которые изменили мир
    Именно 17, если точно посчитать буквы, цифры и знаки препинания (в данном случае – дефисы и точки) в странной фразе, напоминающей сокращенный адрес. Или какое-то зашифрованное послание. А на самом деле обозначающей дату и место рождения замечательного изобретения, без которого и ныне, почти 80 лет спустя, человечество – как без рук..

Уже более 14 лет сетевые соединения Linux защищает iptables, это очень мощный инструмент в руках опытного пользователя. Но по мере развития функциональности появлялись и проблемы, а поэтому пришла идея его полностью заменить. Разработка нового решения длилась почти 6 лет и результатом стал пакетный фильтр nftables.

Чем не устраивает iptables?

Проект netfilter/iptables был основан в 1998, его автором является Расти Расселл (Rusty Russell), занимавшейся до этого разработкой предшественника ipchains. Годом позже образовалась команда Netfilter Core Team, которая и координирует все что связанно с фильтром пакетом в Linux. В марте 2000 г. код был включен в ядро Linux 2.3, и с версии ядра 2.4 используется по умолчанию. iptables сохранил основную идею заложенную еще в ipfwadm — список правил, состоящих из критериев и действия, которое выполняется если пакет соответствует критериям.

До появления iptables, для обеспечения возможностей межсетевого экрана в Linux использовались проекты ipchains в Linux 2.2 и ipfwadm в Linux 2.0 (основанный на ipfw из BSD).

Но netfilter позволял подключать дополнительные модули, ранее архитектура ядра такой возможности не предоставляла. Это дало возможность очень просто развивать подсистему фильтрации, и со временем появилось большое количество новых функций и модулей. Полноценная поддержка IPv6 появилась только в 2011 году, что правда потребовало редизайна netfilter. В результате модуль NAT разделили на два независимых компонента, один из которых включает в себя ядро подсистемы NAT, а второй реализует поддержку протокола третьего уровня. Модули кроме фильтрации обеспечивают классификацию трафика (вплоть до 7 уровня OSI), балансировку нагрузки, манипуляцию с пакетами, маршрутизацию и т.п.

iptables содержит большое количество модулей

Но постепенно накапливались проблемы на функциональном уровне и в дизайне. Код ядра дублировался, становится все сложнее его поддерживать и добавлять новые возможности. Обработка некоторых параметров жестко вшита в ядро, модуль не редко обслуживает только свой протокол. Например, за извлечение номера порта UDP и TCP отвечают два разных модуля. Для реализации любой функции в userspace требуется поддержка модулем ядра, это затрудняет разработку и без пересборки не редко не обойтись. Правила загружаются как один большой дамп, в случае изменения правила выгружаются, меняются и весь набор отправляется обратно. Ядро не в состоянии связать старые правила новыми. Без учета дополнительных расширений, количество опций конфигурирования в ядре давно уже перевалило за сотню.
Дополнительные расширения к iptables со своим синтаксисом создают еще большую путаницу
Еще важный мотив — необходимость сбросить текущий ABI (Application Binary Interface), представляющий собор набор соглашений между программами, библиотеками и ОС, обеспечивающих их взаимодействие на низком уровне. В iptables ABI жестко прописаны специфические для протоколов поля, поэтому расширить его сложно. Как результат приходится сразу запускать iptables, arptables и ebtables, по существу выполняющих одну работу, но каждый на своем уровне. По общим оценкам дублируется 10000 строк кода. Учитывая что все защитные механизмы и цепочки (даже пустые) грузятся изначально и активны, iptables изначально потребляет больше ресурсов, чем реально необходимо.
Администраторам управлять большим количеством правил очень тяжело, сложно сходу разобрать что делают все цепочки, правила начинают повторяться, становится их сложно обслуживать и обновлять. Чтобы настроить два разных действия (вроде MARK и ACCEPT) правила приходится дублировать. Каждое расширение имеет свой синтаксис, одни поддерживают диапазоны, отрицание, префиксы, другие нет.

В Nftables добавлен модуль совместимости с iptables

Назначение nftables

Впервые заговорили о nftables (netfilter.org/projects/nftables) в октябре 2008 года на Netfilter Workshop. Задача проекта заменить подсистемы iptables, ip6table, arptables и ebtables единственным решением. Разработкой новой подсистемы пакетной фильтрации занимается та же команда под управлением Патрика МакХарди (Patrick McHardy). Альфа была представлена уже в марте 2009 года, хотя до 2012 года проект практически спал.
Дерево патчей состояли из более 100 патчей, которые в конце октября 2013 были соединены в 17, в стандартную ветку nftables включен с релиза ядра 3.13. Хотя высокоуровневые инструменты все еще находятся в разработке, документация ориентированная на пользователя отсутствует. Старая и новая подсистемы будут некоторое время сосуществовать рядом, так как nftables еще требует доработки и тестирования. Для обеспечения обратной совместимости предоставляется специальная прослойка, позволяющая использовать iptables/ip6tables поверх инфраструктуры Nftables.
В Nftables реализована идея схожая с BPF (Berkeley Packet Filters) правила фильтрации в пространстве пользователя компилируются в байткод, а затем через Netlink API передаются в ядро, для принятия решения по дальнейшим действиям с пакетом выполняются с использованием конечного автомата (pseudo-state machine), представляющего собой простейшую виртуальную машину выполняющую байткод.
Виртуальная машина способна манипулировать наборами данных (как правило, IP-адреса), позволяя заменить несколько операций сравнения единым набором поиска. Для принятия решений на основе этих данных могут быть использованы арифметика, битовые операторы и операторы сравнения. Возможен и обратный процесс декомпиляции объектов позволяющий воссоздать текущую конфигурацию в ядре.
Использование userspace значительно упрощает код ядра и позволяет гораздо более проще анализировать и принимать решения по отдельным протоколам. Отсутствует дублирование кода, особенности каждого протокола уже не встраиваются.
Все операции по определению условий и связанных с ними действий выполняются в пространстве пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. Присутствует поддержка словарного маппинга и поиска по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети).
В качестве базовых блоков по-прежнему используются компоненты Netfilter, в том числе существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога. Хотя работа в userspace позволяет получать больше отчетов об ошибках.
Соответственно отличается и алгоритм работы, который сделан более универсальным, теперь разборкой пакета занимаются операторы (expression). Специальное payload expression загружает данные из пакета в один из регистров общего назначения. Базовое смещение специфичное для протокола берется из struct nft_pktinfo, модулей netfilter (IPv4, ARP и т.д.). То есть уже нельзя сказать, «сравни IP источника с IP 192.168.0.1″, теперь механизм «знает», что нужно извлечь определенную часть заголовка, помещает его в переменную и затем сравнивает с нужным адресом. При этом становится очень простой обработка пакета несколькими правилами, используя так называемый «verdict register», то есть мы можем запретить пакет, активировать счетчик, запротоколировать и т. д. Также легко пропустить ненужные операции, вроде счетчиков, если в них нет необходимости, меньше ресурсов требует поиск и сопоставление с диапазоном.
В итоге простое правило iptables в памяти занимает 112 байт, аналогичное nftables — 24 байта. Проверка пинга “-d 192.168.0.1 -p icmp –icmp-type echo-request”, 152 и 96 банта соответственно.
Улучшенный API позволяет производить инкрементные обновления правил или атомарную замену правила, гарантирующие эффективность и согласованность, без выгрузки/загрузки всего набора в пределах одной транзакции Netlink.
Для взаимодействия kernel < -> userspace nftables API использует особый компонент ядра Netlink (man netlink (7)) позволяющий через обычный сокет передавать и принимать сообщения, сформированные особым образом. При этом сам Netlink позволяет:

  • получать уведомления об изменении сетевых интерфейсов, таблиц маршрутизации и состоянии пакетного фильтра;
  • управлять параметрами сетевых интерфейсов, таблицами маршрутизации и параметрами netfilter;
  • управлять arp таблицей;
  • взаимодействовать со своим модулем в ядре.

Именно через Netlink работает утилита iproute2, пришедшая на смену ifconfig и route.
Собственно взаимодействие с кодом, работающим на уровне ядра, возложено на интерфейсные библиотеки libmnl (Netlink), libnftables (userspace Netlink API) и построенный поверх фронтэнд, работающий на уровне пользователя. Для формирования правил фильтрации в nftables подготовлена утилита nft, которая проверяет корректность правил и транслирует их в байткод. Утилита iptables-nftable позволяет использовать правила iptables.

Правила

Конечно писать низкоуровненые правила системные администраторы не будут, доступен понятный язык описания. Новый синтаксис правил не похож на iptables, главное отличие использование иерархических блочных структур вместо линейной схемы. Группировка позволяет легко составлять, читать и понимать настройки без особых пояснений. Синтаксис при этом, чем то напоминает ipfw из FreeBSD. Язык классификации правил основан на реальной грамматике, при обработке которой используется парсер bison. К сожалению документация в этом вопросе мало помогает, она просто еще не готова. О возможностях можно судить по отрывкам информации и анализе исходного кода.
Правила могут содержать:

  • таблицы — контейнеры для одного семейства протоколов, поддержка мультипротокола не реализована в netfilter, хотя в будущем вероятно и что-то изменится;
  • цепочки (chains) — контейнеры для правил, могут использован в действии перехода (jump), но в отличие от iptables, цепи не содержат счетчики.
  • базовые цепочки (base chains) — особый тип цепи, которые регистрируются с хуками netfilter крюк обеспечивая отправную точку для таблиц. Регистрируются при вставке первого правила.
  • правила (rules) — атомарная единица содержащая “expressions”

Сами правила очень просты и легко читаются. Разрешаем ping (ICMP-сообщения echo-request):

nft add rule filter input icmp type echo-request accept

Для настройки правил используется утилита nft

Теперь разрешаем доступ с подсети 192.168.1.0/24 и IP 192.168.0.10 по SSH, блокируем для всех доступ по 80 порту и разрешаем все пакеты уже установленного соединения (connection tracking).

nft add rule ip global filter ip daddr {192.168.1.0/24, 192.168.0.10} tcp dport {22} accept
nft add rule ip filter input tcp dport 80 drop
nft insert rule filter input ct state established accept

Счетчики необязательный элемент в правилах и если он нужен его необходимо активировать. Теперь в одном правиле можно указать сразу несколько действий. Например, подсчитаем количество пакетов отправленных на 192.168.0.1 и блокируем соединение пишем:

nft add rule ip filter output ip daddr 192.168.0.1 counter drop

В iptables администратор так легко бы не отделался. Вместо IP в правилах возможно использование доменного имени:

nft add rule ip6 filter output ip6 daddr example.org accept

Фильтр интерфейса позволяет указывать правило для конкретной сетевой карты (она должна присутствовать в системе иначе оно не будет активным):

nft insert rule filter input meta iif eth0 accept

Еще один ньюанс. Утилита nft может работать в трех режимах, чем то напоминая управление в Cisco. Например, все настройки можно указать в файле и затем просто скормить его nft, это очень удобно для переноса на несколько ПК. В каталоге files/nftables с исходными текстами уже имеются ряд шаблонов, перед началом использования nftables необходимо выбрать нужные и активировать:

# nft -f files/nftables/ipv4-filter
# nft -f files/nftables/ipv6-filter

Режим командной строки, когда нужная настройка указывается сразу и интерактивный режим CLI. Перейти в CLI просто:

# nft -i

Теперь можем последовательно давать команды или считывать настройки. Единичные правила объединяются в таблице, образуя иерархическую блочную структуру, чем-то напоминающая pf и npf.

nft> list table filter -n -a
 
table filter {
 chain output {
 table filter hook output priority 0;
 ip protocol tcp counter packets 190 bytes 21908 # handle 7 
 ip daddr 192.168.1.100 drop # handle 8
 }
}

Правило можно вставить в нужную позицию (handle), здесь работают две директивы add и insert. Первая добавляет правило позволяет после указанной позиции, а вторая — перед. Например, чтобы вставить правило перед handle 8 пишем.

nft insert rule filter output position 8 ip daddr 127.0.0.1 drop

Удаляются правила в цепочке при помощи параметра delete:

nft delete rule filter output handle 9

Если не указывать номер правила, то будет очищена вся цепочка. При помощи flush сбрасывается вся таблица:

nft flush table filter

Настройка NAT не сложнее, вначале необходимо загрузить модули.

modprobe nft_nat
modprobe nft_chain_nat_ipv4
modprobe nft_chain_nat_ipv6

Создаем цепочку:

nft add table nat
nft add chain nat post \{ type nat hook postrouting priority 0 \; \}
nft add chain nat pre \{ type nat hook prerouting priority 0 \; \}

И теперь добавляем в нее правила:

nft add rule nat post ip saddr 192.168.1.0/24 meta oif eth0 snat 192.168.1.1
nft add rule nat pre udp dport 53 ip saddr 192.168.1.0/24 dnat 8.8.8.8:53

Первое активирует NAT для всего трафика с 192.168.1.0/24 на интерфейс eth0, второе перенаправляет весь DNS трафик на 8.8.8.8.
В поставке Nftables идут шаблоны правил

Установка nftables в Ubuntu

В ближайшее время вряд ли увидим nftables в поставке дистрибутивов, поэтому единственный выход изучить новинку, это установить его самостоятельно. Сам процесс сложным назвать нельзя. Нам потребуются библиотеки и стандартный набор для сборки ПО:

$ sudo apt-get install autoconf2.13 dh-autoreconf libmnl-dev libmnl0

Библиотеку можно ставить и из сырцов (git://git.netfilter.org/libmnl), но пока версии доступной в репозитарии достаточно. Копируем код libnftables и nftables.

$ git clone git://git.netfilter.org/libnftables
$ git clone git://git.netfilter.org/nftables

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

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

В некоторых системах (в Ubuntu например) при конфигурировании nftables следует активировать ряд функций:

ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ./configure

Далее вводим make oldconfig, переходим в Core Netfilter Configuration, где находим специфичные для nftables настройки (их кстати на порядок меньше, чем для iptables), собираем ядро.
Конфигурирование поддержки Nftables в ядре Linux

Журналирование в nftables

Для регистрации событий используется Netfilter, при помощи модулей xt_LOG (регистрирует в syslog) и\или nfnetlink_log. Последний использует демон сбора информации ulogd2, вышедший примерно полтора года назад и способный накапливать данные на уровне отдельных пакетов или потоков и сохранять их в том числе и в БД. Затем механизм журналирование для каждого протокола настраивается через /proc.

# cat /proc/net/netfilter/nf_log
 
0 NONE (nfnetlink_log)
1 NONE (nfnetlink_log)
2 ipt_LOG (nfnetlink_log,ipt_LOG)

По номером два у нас скрывается IPv4. Меняем на nfnetlink_log

echo "nfnetlink_log" >/proc/sys/net/netfilter/nf_log/2

Заключение

Пока поддержка nftables не заявлена ни одном дистрибутиве Linux, хотя это скорее вопрос времени, а учитывая число установок обе системы еще долго будут сосуществовать рядом. За iptables – большое количество готовых правил, на все случаи, nftables выигрывает более простым дизайном, скоростью работы и понятными правилами.

Сканеры уязвимости позволяют в автоматическом режиме произвести оценку эффективности защиты систем. OpenSource решение OpenVAS по своим возможностям не уступает коммерческим аналогам.

Интерес к сканерам уязвимости или безопасности в последнее время заметно утих, хотя их значимость от этого не изменилась ни сколько. Это по прежнему нужный инструмент в руках администратора. Хотя некоторые администраторы игнорируют такой класс программ, обычно ссылаясь на то что они периодически обновляют ПО и им бояться нечего. На самом деле наличие свежей версии программы вовсе не означает отсутствие проблем. И например уязвимость может проявляться только при определенных настройках, версия ПО роли не играет. Также критически сервисы многие стараются не трогать пока работает. Сканер уязвимости здесь будет очень кстати, так как про такие системы бывает просто забывают.
Сами сканеры уязвимости являются логическим продолжением сетевых сканеров, они умеют обнаруживать узлы и идентифицировать сервисы (по банеру, заголовку и т.д.) и проверять их по базам известных уязвимостей и на наличие специфических дыр связанных с неправильной настройкой. Для некоторых проверок может производится имитация атаки (тесты безопасности). По итогам администратор получает отчет, в котором наглядно показана текущая ситуация. Нужно помнить что сканер уязвимости это не панацея, он не может найти то чего нет в базе.
Список продуктов очень велик Nessus vulnerability scanner, Xspider, GFI LanGuard, SAINT, BeyondTrust Retina Network Security Scanner и другие. Практически все решения ранее предлагавшиеся бесплатно сегодня коммерцизировались и максимум что можно получить это ограниченную версию. Поэтому наличие бесплатных программ вроде OpenVAS (openvas.org) очень кстати.

Возможности OpenVAS

Распространяемый по лицензии GNU GPL OpenVAS (OpenSource Vulnerability Assessment Scanner) является форком популярного сканера безопасности Nessus, изначально открытого, но в 2005 году ставшего закрытым продуктом. И хотя они в чем то сохранили схожесть, на данный момент это совершенно разные решения. С версии 6 в OpenVAS реализована новая концепция управления информацией о безопасности. В основе работы OpenVAS лежит коллекция NVT (Network Vulnerability Tests) тестов безопасности (более 30000), позволяющих выявить уязвимость. Описание известных проблем затем проверяется по базам автоматизированного управления уязвимостями CVE и OpenSCAP (Security Content Automation Protocol). Сам OpenSCAP (open-scap.org) поддерживает несколько спецификаций: XCCDF, OVAL, ARF, CCE, CVSS и CVE.
Как и Nessus OpenVAS построен по клиент-серверной схеме и состоит из нескольких из нескольких сервисов и инструментов. Ядром является сервис OpenVAS Scanner, который собственно и выполняет сканирование (работает на 9391 порту). Причем в процессе проверок систем используются известные продукты: nmap и pnscan, ike-scan, pnscan, strobe и другие. Вся интеллектуальная часть содержится в OpenVAS Manager (порт 9390), которая может собирать и анализировать результаты собранные с нескольких установок OpenVAS. Это основной сервис который обеспечивает полной контроль над уязвимостями, реализованы управление политиками, сканирование по расписанию, обнаружение ложных срабатываний, представление отчетов в самых разных форматах (XML, HTML, LateX и др.). Для управления сканерами используется протокол OTP (OpenVAS Transfer Protocol), сам может получать команды по XML подобном OpenVAS Management Protocol (OMP). Все настройки и собранная информация хранится централизованно в SQL базе данных (SQLite).
Управление всеми функциями (основные учетными записями и потоками OpenSCAP ) производится через OpenVAS Administrator (порт 9393), который реализован в виде инструмента командной строки или может работать как сервис. Реализованы три клиентские части: консольная OpenVAS CLI (omp), веб-интерфейс Greenbone Security Assistant (GSA) (порт 443 или 9392, используется свой microhttpd веб-сервер) и настольный Qt клиент Greenbone Security Desktop (GSD). При этом CLI и GSD доступны для Linux и Windows.
Кроме этого поддерживается интеграция с другими продуктами, класса ISMS (Information Security Management System) и системами мониторинга (Nagios).
Мажорные обновления OpenVAS выходят каждые 12 месяцев.

Развертывание OpenVAS

Проект для установки предлагает исходные тексты, также на сайте OpenVAS доступны ссылки на репозитарии для CentOS/RedHat 6, Debian 6-7, Fedora 15-20, openSUSE. Открыв репозиторий (download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/) для Debian находим ссылки на репозитарии для Ubuntu 12.10-13.04, SUSE Linux Enterprise 11 и Mandriva 2011. Также разработчики Ubuntu предлагают неофициальный репозитарий для этой ОС (launchpad.net/~openvas). Для проверки правильности установки предлагается специальный скрипт openvas-check-setup (svn.wald.intevation.org/svn/openvas/trunk/tools/openvas-check-setup) который может обнаружить любые ошибки в конфигурации и наличие нужных служб, а также выдает рекомендации по их устранению.
Также предлагается OVA образ для виртуальных машин который совместим с VirtualBox и ESXi (внутри Debian Squeeze). В большинстве случаев это самый удобный вариант, его и рассмотрим далее. В системе несколько аккаунтов по умолчанию: root/root, openvas/openvas и администратор веб-панели admin/admin. Все пароли следует обязательно изменить при помощи команды passwd и для admin Extras/My Settings. После загрузки виртуальной машины заходим как пользователь root, после чего обновляем ОС:

# apt-get dist-upgrade
# apt-get upgrade

Раскладка в локальной консоли не очень удачная (ее можно поменять в /etc/default/keyboard), поэтому лучше все настройки системы и запуск консольных команд производить удаленно через ssh.

# apt-get install openssh-server

Адрес для входа в веб-интерфейс автоматически отображается в консоли после регистрации пользователя openvas, его также можно узнать при помощи ifconfig.
Далее рекомендуется изменить ключи:

# gpg --homedir=/usr/local/etc/openvas/gnupg --delete-secret-keys 94094F5B
# gpg --homedir=/usr/local/etc/openvas/gnupg --delete-keys 94094F5B
# openvasmd --create-credentials-encryption-key 
# /etc/init.d/openvas-manager restart

Этого достаточно. Более подробная информация по некоторым настройкам приложений можно получить в файлах INSTALL и README в подкаталогах /root/build, в меню Greenbone (Help – Contents или нажав знак «?» в подменю), и конечно же на сайте проекта.

Производим сканирование

Интерфейс GSA вообще не сложен, и хотя не локализован сориентироваться в настройках очень легко. В самом верху расположено меню содержащее 7 пунктов соответствующих определенной задаче или настройкам. После регистрации можно сразу приступить к проверке, в этом поможет мастер встречающий в окне приветствия, по нажатию на фиолетовый значок в панели Tasks. Поле «Quick start: Immediately scan an IP address» (рис.1) позволяет сразу же создать задачу для проверки узла или сети. Для этого нужно просто указать IP или имя. Сканирование производится с настройками по умолчанию (Full and fast), выбрав гиперссылку рядом сразу можем просмотреть установки.

Мастер позволяет быстро создать задание на проверку

Сами политики сканирования настраиваются в Configuration – Scan Configs. Здесь уже имеется 5 политик: одна пустая (empty) и 4 преднастроенные. По количеству тестов (на момент написания этих строк 33144) преднастроенные политики между собой не отличаются. Разница лишь в настройках сканера. Готовые политики делятся также на fast и deep. Вторые не учитывают результаты предыдущих тестов и вся процедура каждый раз повторяется сначала. По опыту скажу что deep редко когда выдает что-то особенное, но вот время сканирования увеличивается в разы. Поэтому при первом сканировании достаточно использовать Full and fast или Full and fast ultimate, в последующем критические системы можно (для самоуспокоения) дополнительно проверить deep политиками. Настройки конкретной политики легко узнать выбрав в поле Actions фиолетовую кнопку «Scan Config Detail» (рис.2).

Настройки отдельного теста

Настройки готовых политик менять нельзя, но их можно экспортировать (зеленая Export Scan Config) или клонировать чтобы создать на их основе свою, для просто нажимаем оранжевую Clone. В результате появляется еще одна политика с окончанием Clone 1. Используя кнопку Edit Scan Config изменяем параметры. Их здесь очень много, все NVT тесты сгруппированы по различным типам операционных систем и сетевого оборудования, содержат настройки nmap, ping, snmpwal, настройки логина, использование ARP, проверки паролей и много другого. Конечно некоторое время потребуется чтобы во всем разобраться (если нет желания использовать установки по умолчанию). Сами тесты могут быть динамическими (добавляются самостоятельно) или статическими.
В подразделе Configuration имеется еще ряд полезных пунктов с которым следует ознакомится, так как затем настройки будут фигурировать в задании. Например, в Targets — Port List задается список портов, которые будут проверяться на конечных узлах. Здесь 9 преднастроек, по умолчанию в задании используется OpenVAS Default. В Targets – Credential указываются учетные записи пользователей от имени которых будет производится подключение к удаленным узлам и проверка системы (если пользователь доменный, то логин указываем в формате домен\логин). Для аутентификации можно использовать как логин и пароль, так и публичный/приватный ключ. В Configuration – Slave добавляются дополнительные OpenVAS Manager, который будет использоваться для проверки узлов. Задания можно запускать вручную, но лучше это производить автоматически во время меньшей загруженности систем. Для этого следует в Configuration – Schedules создать задачи. Выбираем New Schedule и в предложенных полях указываем название, время первого запуска, часовой пояс (если не совпадает с текущим), и периодичность.
Теперь настраиваем узлы которые будут сканироваться. Переходим в Configuration – Target, здесь находим готовое задание для проверки локальной системы и созданное при помощи Quick start. Нажимаем New Target (звездочка) и указываем название, вписываем узлы ( IP, диапазон, имя узла), Port List, подключаем Credential. Возможно прописать все узлы в текстовый файл, который и указать при помощи «From file».
Все готово чтобы создать новую задачу проверки безопасности. Переходим в раздел Scan Management — New Task, и заполняем поля (рис.3): указываем имя и описание, в выпадающих списках выбраем все, что мы раньше настраивали — политику сканирования, узлы, расписание и т. д.
Создание задачи на проверку в OpenVAS

Некоторые параметры подписаны как optional их можно не трогать. Нажимаем Create Task, задача появляется в Scan Management — Task. Текущее состояние отображается в поле Status, в поле Actions находятся кнопки позволяющие управлять задачей: запустить, остановить, изменить настройки, клонировать, экспортировать и т. д. Нажимаем Start и ожидаем окончания сканирования (перед этим лучше установить автообновление окна, чтобы видеть прогресс). По окончании сканирования можем просмотреть отчет, для этого следует нажать на Task Detail (рис.4).
Результат проверки

Отчет содержит две позиции Threat (угрозы) и Scan Results. Все предупреждения разбиты на 4 позиций по уровню опасности. Основное внимание следует обратить на High, Medium и Low, которые собственно и указывают на проблемы. Отчеты None, Log и False Pos показывают обычно предупреждения о неудачных операциях. Подробный отчет можно увидеть нажав Details, и затем выбрать формат для экспорта (PDF, TXT, HTML, XML и другие) и при необходимости фильтры. Кнопка Compare позволяет сравнить отчеты. Это очень полезная операция, позволяющая увидеть что изменилось со времени последнего сканирования, например оценить эффективность принятых мер безопасности.
В Asset Management — Hosts доступен еще один вид отчета Prognostic Report позволяющий оценить все предупреждения относящиеся к конкретнуму узлу полученные в ходе предыдущих проверок. Вполне вероятно что некоторые отчеты сканера могут содержать ложные срабатывания, чтобы они не мешали используется раздел Override В Note можно прописывать некоторое объяснение которое привязывается к NVT тесту.
Периодически следует обновлять NVT/SCAP/CERT базы, все настройки находятся в Administration, в трех одноименных разделах. Кроме этого можно использовать консольные команды:

# openvas-nvt-sync
# openvas-scapdata-sync
# openvas-certdata-sync
# openvassd
# openvasmd --rebuild
# killall openvassd
# /etc/init.d/openvas-scanner restart
# /etc/init.d/openvas-manager restart
# /etc/init.d/openvas-administrator restart
# /etc/init.d/greenbone-security-assistant restart

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

***

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

cover01-02(146-147)
Анонсирован январь-февральский номер № 1-2 (146-147) журнала Системный Администратор за 2015 год.

В номере:

  • «Интернет как поле битвы». Исчезнет ли в будущем Интернет? Станет ли в 2015 году больше государственных кибератак? Какая мобильная ОС, с технической точки зрения, лучше защищена от вредоносных файлов? Используется ли антивирусное ПО в проекте «Золотой щит»? Подорожают ли антивирусы? На эти и другие вопросы читателей
    журнала «Системный администратор» отвечают эксперты «Лаборатории Касперского».
  • Прямые и косвенные проверки надзорных органов ИТ-инфраструктуры бизнеса. Чем больше бизнес, тем сильнее
    внимание государственных надзорных органов, контролирующих бизнес в соблюдении требований норм, описанных в законодательных документах, часть которых напрямую регулирует деятельность ИТ-службы компании. Давайте рассмотрим, какие бывают проверки и с чем можно столкнуться
  • Архивариус SCDPM 2012 R2. Часть1. Возможности, описание, настройка бэкапа клиентского ПК. Познакомимся
    с продуктом System Center Data Protection Manager 2012 R2 (SCDPM), предназначенным для создания резервных копий данных, произведем защиту пользовательских компьютеров
  • VBScript на службе системного администратора. Всем известно, что с помощью shell-скриптов в UNIX можно творить чудеса. А как обстоит дело с чудесами в Windows? Реализуем с помощью VBScript резервное копирование данных
  • Магнитная лента в резервном копировании. Применение накопителей и носителей на магнитной ленте в современных ИТ-системах
  • Восстановление элементов в Exchangе 2013 без использования резервных копий. Как быть, если из почтового
    ящика оказалось удалено или потеряно важное сообщение?
  • Кластер виртуализации. Часть 3. Разворачиваем бюджетное отказоустойчивое решение. Обеспечиваем контроль
    целостности данных кластера – настраиваем экстренное выключение сбойного узла (STONITH), мониторинг и управление ИБП.
  • Подключаемся к Active Directory c помощью realmd. Несмотря на то что Linux и Windows уже не редкость в одной сети, интеграции из коробки до сих пор нет. Как нет и единого решения. Проект realmd упрощает подключение Linux-систем к AD.
  • 36 Open Linux Management Infrastructure. Инструментарий удаленного администрирования от Red Hat. С точки зрения
    корпоративного сектора одно из преимуществ Red Hat Enterprise Linux (RHEL) и построенных на его основе систем – наличие мощных автоматизированных средств администрирования большого парка машин.
  • Автоматический мониторинг ошибок в БД Oracle с рассылкой результатов мониторинга по e-mail. Существуют
    разнообразные средства мониторинга БД Oracle. Каждое из них успешно решает ту или иную задачу по администрированию и мониторингу БД. Вместе с тем эти средства не решали в комплексе перечень задач, которые
    возникли в нашей организации в процессе эксплуатации нескольких БД
  • Защита Windows с помощью EMET. Для Windows доступно не мало защитных технологий, способных усложнить атаку на операционную систему, но они не затрагивают установленные в ней приложения. EMET помогает решить эту проблему.
  • Возможности файрволов уровня приложений. Шлюзы уровня приложений – это серьезное средство их защиты или бесполезная трата денег?
  • Active Directory и безопасность. Часть 6. Защищая информацию посредством шифрования, нужно помнить, что все, что зашифровано, может быть рано или поздно расшифровано.
  • Разбор уязвимости CVE-2014-8609, или Когда можно будет спать спокойно. Вредоносные программы – это плата
    за популярность ОС. Да, конечно, троянцы существуют и для очень редких ОС, но куда проще зарабатывать на распространенных системах, в которых трудится огромное количество непрофессионалов. Многие
    из них уверены в том, что «уж они-то заметят, когда вирус будет заражать их систему».
  • Завести пингвина или умереть. ОC Windows небезопасна, неза висимо от того, установлены ли у вас последние обновления, используется ли антивирус и защищен ли доступ к ней брандмауэром. ОC Windows
    небезопасна изначально, и единственный способ защитить свои данные это не использовать ее для работы. Таково мое мнение
  • «1С:Предприятие» вместе с «1С-Битрикс». Часть 4. Настраиваем обмен заказами. Следующий этап после задания
    параметров выгрузки товаров – настройка обмена заказами.
  • Новое в Tarantool. Вышла версия, которая в корне отличается от предыдущих. Чем же она хороша, и что нового нас ожидает?
  • Реверс-инженер – это хакер. Но белый и пушистый. Мы решили побеседовать о том, что значит быть реверс-инженером,
    какие перспективы у этой профессии и можно ли ее отнести к «белому хакерству», с теми, кто уже много лет этим занимается. Знакомьтесь – реверс-инженеры компании Parallels Михаил Филиппов и Василий Жданов.
  • Исследование операции поиска символа в строке (PHP).
    В статье рассказывается о способе измерения времени выполнения и сравнения эффективности конструкций языка программирования PHP.
  • Гибкие методологии разработки современных программных приложений. Краткий обзор наиболее распространенных
    стандартных гибких методологий, успешно применяемых в разработке современных программных приложений разных уровней сложности. Взгляд автора на преимущества и недостатки при практическом использовании
  • Статический анализ типов в JavaScript. Пробуем анали затор Flow от Facebook. Компания Facebook представила открытый проект Flow – статический анализатор кода для языка JavaScript. Основной целью разработки анализатора является упрощение поиска ошибок.
  • Альтернативы JavaScript от Microsoft и Google. Надоели «сюрпризы» JavaScript? Не понимаете, как можно жить без классов? Не приемлете идею прототипированного наследования, и вас просто трясет от отсутствия строгой типизации? А с другой стороны, без JavaScript сейчас ведь просто не обойтись… Беда. Но выход есть! Даже несколько!
  • Средства самопознания в Ruby. Что программа на Ruby может знать о самой себе? Практически все современные
    языки программирования содержат средства, позволяющие во время выполнения программы получить какие-то данные о структуре самой этой программы.
  • OpenGL для Android на Java и C++. В данной статье поговорим о программировании компьютерной графики на основе OpenGL на примере операционной системы Android.
  • Александр Тихонов: «Ребята не стали менее талантливы, да и мы пока умеем учить!» Московский институт
    электроники и математики – одно из старейших учебных заведений России, со своими славными традициями и научными школами. В январе этого года МИЭМ переехал в новое современное здание, и у вуза начался новый этап жизни и развития. В гостях у «Системного администратора» – Александр Николаевич Тихонов, научный руководитель,
    директор МИЭМ НИУ ВШЭ.
  • Вакансия: программист Python. Согласно рейтингу TIOBE Index в нынешнем январе Python занимал восьмое место. Профессия программиста востребована – представители компаний рассказывают, каких специалистов они хотят видеть в своей команде. Рекрутинговая компания SuperJob представляет аналитический обзор спроса и предложений.
  • Незаменимая роскошь. В статье рассказывается о роли ИТ и поднимаются вопросы о перспективах отечественного бизнеса
  • Карл Винсент: «Наша реальность заканчивается там, где перестает тянуть Wi-Fi». Современные компьютерные
    и интернет-технологии все глубже проникают в нашу повседневность и для многих начинают определять образ жизни. ИТ позволяют не только работать удаленно, но и радикально изменять наше качество жизни, попутно меняя мировоззрение. Яркий пример тому – наш собеседник Карл Винсент, активист движения цифровых отшельников.
  • Творец роботов. Вообще-то слово «робот» ввел в языки мира чешский писатель Карел Чапек – в 1920-м, в пьесе «R.U.R.». Но в том же году – вот ведь совпадение! – 2 января в другой стране родился другой писатель, которому мы обязаны не только образами «разумных» роботов, но и первой системой морали для этих человеко-
    подобных существ.
  • Оптимизация временных затрат на проверку проектной документации на предприятиях топливно-
    энергетического комплекса.
    В статье представлен метод определения полноты проектной документации на предприятиях
    топливно-энергетического комплекса, разработанный для сокращения трудозатрат на этапах принятия текстовых документов проектной документации. Приведены результаты сравнения различных комбинаций
    методов. Представлены результаты работы метода и сравнение с проверкой вручную.
  • Прогнозирование развития парадигм построения компьютерных интерфейсов. Рассмотрено развитие
    компьютерных интерфейсов на протяжении последних 10 лет, среди которых авторы выделяют три основных парадигмы их построения: завершившийся миметический скевоморфизм, пришедший ему на смену флэт, будущее интерфейсостроения – глитч или самонастраивающиеся интерфейсы. Прогнозирование осуществляется с опорой
    на антропологические и культурологические методы, позволяющие проводить аналогии между развитием интерфейсов и развитием культуры в ХХ веке, что дает возможность определить тенденции в индустрии до того, как они начнут получать реальное воплощение в UX/UI-продуктах.
  • Разработка и исследование программной системы принятия решений с методом выбора доминирующе-
    го варианта.
    Разрабатывается и исследуется программная система поддержки принятия решений с методом стохастической аппроксимации с выбором доминирующего варианта.
  • Общесистемный объект НСИ – основа единой НСИ. Ведение НСИ – одна из важнейших задач, необходимых для обеспечения функционирования информационных систем предприяти
  • Робот за «отца» отвечает. С создателем фантастических роботов – Айзеком Азимовым – читатель уже познакомился в статье, опубликованной в этом номере журнала. А экспонат нашего виртуального музея компьютеров и ИТ, с которым знакомство только предстоит, – это один из самых совершенных на сегодня реальных роботов.
    Точнее, роботов-андроидов – иначе говоря, человекоподобных

Корпоративные VoIP сети из средства позволяющего сэкономить на звонках, стали неотъемлемой частью бизнес-процессов, ежедневно обеспечивая сотрудников возможностью обмена сообщениями, позволяя более эффективно управлять организацией. Но из-за слабой защищенности или неправильной настройки сервисы могут стать причиной серьезных финансовых потерь.

Проблемы защиты VoIP

Любой VoIP сервис подвержен всем классическим атакам направленными на сетевое приложение, которые могут нарушить его работу. На первом месте по популярности стоит DDOS, затем MITM (Man-in-Middle), спам, вирусы и черви, использующие уязвимости в реализации сервера. Конечно для VoIP в каждом случае есть и своя специфика. Например, в случае DDOS не обязательно «заваливать» сервер запросами открывающими новые соединения. Можно «вмешаться» в разговор отправляя пустые пакеты, на обработку которых будет затрачивать ресурс, что обычно вызывает задержки, а разговор вести уже невозможно (атака Call tampering).
Причем взлом VoIP один из самых удобных способов монетизации хакера. Найдя ошибку в сервисе хакер может выполнить определенные действия: провести DOS, прослушать разговоры, совершать звонки на платные сервисы, или рассылать аудиоспам. В разное время уязвимости приходилось срочно закрывать Cisco, Skype, разработчикам Asterisk и таких примеров очень много. Еще одна специфическая проблема — головосовой фишинг и спам (SPIT (spam over Internet telephony) или VAM (voice/VoIP spam). В первом случае пользователь вместо того чтобы работать слушает рекламу, во втором абонент получает предложение от некоторого популярного сервиса, позвонить на «сервисный» номер для уточнения некоторых вопросов. В итоге либо он оплачивает разговор по увеличенному тарифу или раскрывает персональные данные. Спит и фишинг еще не стали массовым явлением, но уже замечен и объемы увеличиваются. Их реализация сама по себе не сложная, нужен подготовленный файл и программа дозвона (например, Asterisk + Spitter).
Еще одним частым способом атаки является подбор логинов и паролей и перехват данных VoIP. Чтобы реализовать MITM не обязательно нужно находиться в той же сети, достаточно изменить DNS или перехватить сеанс (SIP registration hijacking). Так как SIP использует UDP, это упрощает атаку. Хакер вклинивается в процесс подключения к серверу отправляя ложные сведения о клиенте в пакете SIP REGISTER и регистрируется от имени пользователя. В последующем он пропускает через себя весь трафик. Сниффер Cain & Abel(oxid.it/cain.html) умеет извлекать аудио и сохранять в формат WAV

Защита VoIP

Защита VoIP не включается одной кнопкой и должна строиться на нескольких уровнях: от сетевого (iptables, IPS) до правильной настройки плана набора.
Традиционные межсетевые экраны не могут полностью противостоять специфическим, ведь они работают на транспортном уровне, а не уровне приложения и не умеют смотреть внутрь пакета. Здесь нужны специализированные решения относящиеся к NGFW (Next-Generation Firewall) и представленные сегодня различными вендорами: Check Point Voice over IP, Certes Networks, SonicWall и другие.
Могут быть эффективными традиционные мероприятия по борьбе с DOS — регулировка трафика на маршрутизаторе, использование пограничных контроллеров сессий (SBC, session border controllers), правильная настройка сервера и приложения. Так SBC являясь единой точкой входа и анализируя пакеты в реальном времени, способны предотвращать DDOS-атаки, распространение спама и вирусных эпидемий. Плюс некоторые реализации умеют шифровать трафик. Рекомендовано под VoIP выделять отдельные сети (физические или VLAN), это позволит скрыть голосовой трафик от пользователей сети и лучше контролировать QoS для VoIP. Хотя не следует считать эту меру панацеей, так как сниферы без проблем найдут трафик VoIP VLAN.
Защита от MITM давно уже отлажена. Это и проверка МАС-адреса на файерволе, использование протокола контроля доступа и аутентификации IEEE 802.1x, шифрование потока. Шифрование на ряду с продвинутыми методами аутентификации и правильной парольной политикой позволяет защититься от возможности подбора пароля.
В настоящее время реализовано несколько вариантов: VPN, TLS/SSL, SRTP (Secure Real Time Protocol) или ZRTP (Z and Real-time Transport Protocol). Виртуальные сети наиболее популярны у провайдеров услуг, но VPN увеличивая накладные расходы на передачу пакета не редко являются причиной задержек. Да и не с каждым протоколом VPN можно обеспечить соединение удаленному пользователю в конкретных условиях. Кроме того обычно шифруется канал только между VPN серверами, а внутри сети сотрудники ведут переговоры незащищенному каналу.
Теперь рассмотрим реализацию этих методов на примере Asterisk.

Протокол SRTP/ZRTP

Наиболее оптимальным с точки зрения производительности является SRTP (RFC 3711), позволяющий шифровать (AES) и обеспечивать проверку подлинности (HMAC-SHA1) информации. Однако он не обеспечивает защиту процесса аутентификации и дополнительно необходимо использовать сторонние инструменты вроде TLS/SSL. Связку SRTP + TLS/SSL легко можно организовать на Asterisk (с 1.8), FreeSWITCH (wiki.freeswitch.org/wiki/SRTP), SIP-коммутаторе OpenSIPS и других решениях.
Кроме этого Asterisk и FreeSWITCH поддерживают протокол ZRTP, который специально разработан для VoIP Филиппом Циммерманном (Phil Zimmermann) создателем PGP (отсюда и первая буква Z в названии). Протокол стандартизирован в RFC 6189, обеспечивает безопасную аутентификацию и обмен данными. Во время инициализации ZRTP звонка используется метод обмена ключами Диффи — Хеллмана, для аутентификации применяется SAS (Short Authentication String). Весь разговор шифруется, причем пара ключей генерируется для каждого сеанса автоматически, это очень удобно, так как возможно легко встроить этот механизм в уже существующие продукты и не требуется инфраструктура PKI.
В дополнение к SRTP в Asterisk 11 в канальном драйвере chan_sip добавлена поддержка безопасного транспортного протокола DTLS-SRTP, предназначенного для передачи мультимедийных RTP-потоков c использованием шифрования, которая может быть задействована для абонентов, использующих WebRTC и SIP.
Конечно пс SRTP и ZRTP должны уметь работать и клиенты (софтфоны и аппаратные): Linphone (TLS, SRTP, ZRTP), Jitsi (TLS, SRTP, ZRTP), Blink (TLS, SRTP), MicroSIP (TLS, SRTP). Некоторая информация доступна в (voip-info.org/wiki/view/Asterisk+encryption). Сам Циммерманн предложил собственный софтфон Zfone (zfoneproject.com, в версиях для Linux, Windows и Mac OS X) работающий по ZRTP. В настоящее время Zfone находится в состоянии бета, но уже 2 года скачать его с официального сайта по техническим причинам нельзя.

Настройка SRTP + TLS/SSL в Asterisk

Сервер Asterisk поддерживает TLS между серверами и сервер-клиент. Для активации TLS достаточно прописать в настройках (sip.conf) всего несколько команд:

tcpenable=yes
tcpbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/cert/asterisk.pem
tlscafile=/etc/asterisk/cert/ca.crt
tlsprivatekey=/var/lib/asterisk/keys/voip.example.org.key
tlsclientmethod=tlsv1

Настраиваем TLS в Asterisk
Проверяем подключение:

$ openssl s_client host localhost port 5061

В настройках клиента ставим transport=tls.
RSA ключи используемые для шифрования можно сегенерировать при помощи команды «openssl genrsa», специальных скриптов astgenkey (astgenkey -n keyname) или ast_tls_cert (копируют ключи в /var/lib/asterisk/keys). Последние не всегда доступны в пакетах или специальных дистрибутивах вроде Elastix, взять их можно на SVN сервере (svnview.digium.com/svn/asterisk/branches/12/contrib/scripts).
Теперь подключение безопасно, и подсмотреть регистрационные данные нельзя, хотя сами переговоры не шифруются. Штатный для Asterisk протокол IAX2, как и SIP можно настроить с поддержкой шифрования SRTP (AES128). Для этого необходимо добавить одну строку в файле iax.conf или sip.conf:

encryption=yes

Перезапускаем настройки «sip reload/iax2 reload», проверяем загружен ли модуль

CLI> module show like res_srtp.so

Команда «iax show peers» должна показывать (E) напротив подключенных клиентов, означающее что шифрование активно. В журналах появится запись вида «..encrypt_frame: Encoding ..».

Защита от подбора пароля

Попытки подбора паролей к SIP аккаунтам не такая уже и большая редкость. Тем более, что готовые инструменты есть в свободном доступе, а простой скрипт пишется за день. Например, комплект утилит SIPVicious (code.google.com/p/sipvicious) позволяет получить списки SIP в указанном диапазоне IP, рабочие расширения (extensions) и попробовать подобрать к ним пароль.
Все это приводит к необходимости использования только устойчивых к взлому паролей, обязательно отключить демо аккаунты и расширения. Имя пользователя прописываемое в user не должно быть простым (вроде 101, 102 …) и несовпадать с названием расширения.
И конечно использование TLS/SSL как показано выше. Гостевые вызовы отключается в sip.conf одной строкой:

allowguest=no

Хотя некоторые SIP-устройства не смогут устанавливать соединения, при таких настройках.
Сервер в случае ошибки запроса на соединение отправляет сообщение:

  • 401 Unauthorized — несанкционированный доступ (только серверы регистрации)
  • 404 Not Found — пользователь не найден
  • 404 Unknown user account — неизвестный логин и пароль
  • 407 Proxy Authentication Required — требуется авторизация для прокси сервера.

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

$ ./svwar.py force e 1001000 192.168.1.1 m REGISTER

Но можно усложнить ему задачу заставив сервер выдавать одну и ту же ошибку (401 Unauthorized) во всех случаях, для этого нужно лишь прописать один параметр:

alwaysauthreject=yes

Отключение анонимного вызова в Elastix
Сервер при подключении выдает полную информацию о версии ПО, что тоже на руку хакеру, который теперь легко может подобрать эксплоит, не стоит ему в этом помогать, а поэтому установим в sip.conf произвольное значение:

useragent=VoIPServer
sdpsession=VoIPServer
realm=VoIPServer

Сразу после установки в Asterisk доступно большое количество модулей (в Elastix например их 229), некоторые из них не используются. Лишние тоже следует убрать. Проверяем “module show” и выгружаем “module unload chan_gtalk.so” или если постоянно — прописываем в modules.conf

noload => chan_gtalk.so

После установки Asterisk использует большое количество модулей
Следует ограничить возможность регистрации внутренних абонентов только с доверенных IP адресов, задав для каждого экстеншена допустимый IP или диапазон, и установить МАС-адрес, если клиентское устройство стационарно.

Deny=0.0.0.0/0.0.0.0
Permit=192.168.1.10
;macaddress = deadbeef4dad

Теперь подключение клиента будет приниматься только с 192.168.1.10. Аналогичные ограничения следует предусмотреть для AMI интерфейса (Asterisk Manager Interface) в manager.conf.
Более сложные параметры доступа задаются при помощи ACL. В Asterisk 11 стали доступны именованные ACL (Named ACL), которые в отличие от обычных ACL, не привязаны к определенным конфигурациям модуля, поэтому их можно использовать одновременно в нескольких модулях. Настройка NACL производится при помощи тех же Deny/Permit в acl.conf, затем нужный ACL просто подключается в расширении при помощи директивы acl.
Сам сервер следует «заставить» слушать только определенный интерфейс и изменить порт по умолчанию прописав в sip.conf:

bindaddr = 192.168.1.1
bindport = 7777

Для IAX настройки в iax.conf аналогичны (порт 4569). Изменение порта по умолчанию конечно не панацея, так как при серьезном исследовании сети это не спасет, ведь любой сканер сразу обнаружит подвох. Зато потребует дополнительной перестройки всех клиентов. В некоторых ситуациях можно просто пробрасывать порт:

iptables -I FORWARD 1 -d 127.0.0.1 -p tcp --dport 4569 -j ACCEPT

Хотя многие специализированные и самописные скрипты просто тестируют подключение на 5060 и если он закрыт — игнорируют узел. А сканирование легко заблокировать при помощи IPS. И конечно же следует файрволом прикрыть SIP порты 5060/5061, чтобы они не светились наружу.
Что же делать сотрудникам которые находятся вне LAN? Самый наверное простой и проверенные временем варианты: VPN или размещение VoIP сервера с ограниченными возможностями в DMZ. Другой способ — организация нечто вроде Captive портала. Например, Travelin Man (nerdvittles.com/?p=689) позволяет автоматически реконфигурировать Asterisk при подключении пользователя на специальную веб-страницу, после чего он может соединяться с SIP с указанными параметрами.
Еще вариант DISA (Direct Inward System Access) предоставляющая возможность через городской номер совершить дозвон до внутренних или внешних абонентов.

exten => s,1,Answer
exten => 000,1,DISA(1234|default)

Более экзотический вариант — техника Knocking Port, позволяющая открыть нужный порт, выполнив попытку подключения к закрытым портам с определенной последовательностью. В Elastix например такая функциональность настраивается через веб-интерфейс.
В Asterisk используется специальный SIP Security Event Framework, позволяющий в том числе собирать информацию о проблемах безопасности. Подключив соотвествующий журнал в logger.conf: «security_log => security», мы можем блокировать все попытки перебора пароля при помощи анализатора журналов fail2ban.
Активация Port Knocking в Elastix

Настройки экстешна

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

exten => _5X.,1,Dial(SIP/${EXTEN})

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

exten => _8495XXXXXXX,1,Dial(SIP/${EXTEN})

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

exten => 3XXX,1,GotoIfTime(9:00-18:00|mon-fri|*|*?OUT,s,1)
; include => <context>[|<hours>|<weekdays>|<monthdays>|<months>]
include => daytime|9:00-18:00|mon-fri
</months></monthdays></weekdays></hours></context>

В случае нарушения можно предусмотреть отправку почтового сообщения на потчовый ящик админа:

same => n,System(echo ${EXTEN}> mail -s "ALARM!!!" admin@example.org)

Чтобы увидеть в журнале IP абонента, можно добавить в диалплан Noop(SIP packet from ${SIPCHANINFO(recvip)}) и далее автоматизировать бан таких хостов с помощью фильтра в fail2ban.
Если уже все таки взломали, то лучше сразу ограничить абонента количеством одновременных соединений добавив в расширение параметр «call-limit=1″.
Используемую систему биллинга, лучше сразу настроить на резкое возрастание количества междугородних звонков и установить лимит по расходам на абонента.
Именованные ACL позволяют более тонко управлять доступом
В поставке специальных дистрибутивов можно найти специальные аддоны позволяющие автоматически обнаруживать и блокировать попытки мошенничества, защищать от атак, определять аномалии в вызовах. Например в Elastix (addons.elastix.org) доступны Humbug Analytics, Mango Analytics и Anti-Hacker.
Настраиваем разрешенные IP для клиента

Заключение

Сервис VoIP это сложное решение и для его защиты следует применять именно комплексный подход, блокируя возможные угрозы на всех уровнях. Кроме прочего следует беспокоиться и о об обычных мероприятиях: актуальности версии ПО и ОС сервера, обновлении прошивки и безопасности оконечного оборудования.

Анонсирован декабрьский номер № 12 (145) журнала Системный Администратор за 2014 год со спецприложением «БИТ. Бизнес & Информационные технологии».
cover12(145)

В номере:

  • Прививка от вирусов. Выбираем отечественные средства?
    По просьбе читателей редакция «Системного администратора» организовала с компанией «Доктор Веб» заочный круглый стол по проблемам выбора и применения антивирусного ПО. Какие антивирусные программы предпочитают пользователи? И чьего производства – зарубежного или российского? На вопросы отвечает ведущий аналитик отдела развития компании Вячеслав Медведев.
  • Георепликация с помощью GlusterFS
    Рассмотрим возможности георепликации, реализованные в распределенной файловой системе GlusterFS, с помощью которой можно строить систему катастрофоустойчивого резевного копирования.
  • О схемах ротации, управляемом хаосе, и почему нужно иметь больше носителей для копирования
    Рано или поздно приходится перезаписывать старый носитель новой информацией. Хорошо если этот процесс происходит через определенные промежутки времени и организован по понятной схеме.
  • Кластер виртуализации. Часть 2. Разворачиваем бюджетное отказоустойчивое решение
    Настраиваем ресурсы кластера – подсистемы хранения данных, блокировок образов и менеджмента виртуальных машин.
  • Кэширование с Varnish. Готовим HTTP-сервер к слэшдот-эффекту
    Ускорить обработку входящих запросов можно с помощью кэширования ответов сервера. В этой статье мы познакомимся с одним из лидеров в сфере обработки запросов HTTP.
  • Система Nagios. Комплексный мониторинг. Часть 3
    Описания специфичных сервисов для мониторинга принтеров, сетевого оборудования, устройств бесперебойного питания, хостов виртуализации, а также создание dashboard средствами Nagios Core и сторонними программами.
  • Одноплатный компьютер Cubieboard2. Часть 1. Первое знакомство
    Основные особенности одноплатного компьютера Cubieboard2 и варианты его использования.
  • Настройка Windows Firewall с помощью PowerShell
    В будущих релизах Windows Microsoft планирует отказаться от использования утилит netsh; для настройки сетевых функций и Windows Firewall будут применяться только командлеты PowerShell.
  • Защищаем АСУ ТП
    Как правильно определить те угрозы, от которых нужно защищаться, и какие меры необходимо предпринять в соответствии с требованиями российских регуляторов.
  • DeviceLock Discovery: усиливая защиту от утечек
    Технический прогресс в развитии потребительской микроэлектроники и телекоммуникационных технологий кардинально изменил подходы к предоставлению доступа к используемым в бизнес-процессах данным, способам и средствам их хранения и передачи.
  • Active Directory и безопасность. Часть 5. Обзор служб каталогов компании Microsoft
    Обеспечение безопасности службы каталога Active Directory складывается из множества компонентов. Крайне важно обеспечить безопасность контроллеров доменов
  • «1С:Предприятие» вместе с «1С-Битрикс». Часть 3. Настраиваем выгрузку товаров на сайт
    После заполнения вкладки «Общие настройки» переходим к настройке выгрузки товаров. Сейчас большую часть из них можно сделать простым изменением параметров.
  • Аудит в MySQL
    Для обеспечения соответствия нормативным требованиям стандартов безопасности (SOX, HIPAA, PCI-DSS и т.д.) предприятия внедряют различные технологии мониторинга и аудит данных. Одним из пунктов, который предстоит выполнить, является детальное протоколирование доступа к серверам и таблицам баз данных.
  • Метапрограммирование в Ruby: разбор примера
    Добавление собственных абстракций в объектную модель – это просто. И интересно. От частных примеров – к общим принципам программирования в Ruby.
  • Смотрим на «Луну»
    Lua – маленький скриптовый язык, за внешней простотой которого скрывается огромная мощь. Давайте вместе изучим его возможности.
  • Путешествуйте с Интернетом!
    Наступила зима, впереди длинные новогодние праздники. Хочется провести их ярко, интересно, не обязательно дома. Чтобы 2015-й так и покатился – легко и счастливо. Ведь недаром говорят: как начнешь год, так его и проведешь. А что может быть лучше хорошего путешествия? Только новое путешествие! Как организовать его так, как хочется? На вопросы «Системного администратора» отвечает наш постоянный автор, ведущий популярных рубрик журнала «Ретроспектива», «Путешествие с Интернетом», и сам бывалый путешественник Владимир Гаков.
  • Прививка от кризиса
    Инновационные образовательные технологии – опыт центра «Специалист» при МГТУ им Н.Э. Баумана.
  • Вакансия: системный администратор Windows
    Операционной системе Windows уделяется немало внимания в вузах. В том числе вопросам системного администрирования. Но при практическом использовании появляется множество неожиданных нюансов! Каких специалистов хотят видеть компании на этой позиции?
  • Странная формула. Часть 5. Вездесущая единица
    Все, о чем мы будем говорить в этой части статьи, основано на факте, известном уже младшим школьникам: за каждым числом, начиная с нуля, следует число, на единицу большее. Это может показаться тривиальным, но если присмотреться чуть внимательнее, то обнаруживается нечто удивительное. Давайте этим и займемся.
  • Американский связной
    В следующем году американская компания Verizon Communications отметит свое пятнадцатилетие. Юбилей более чем скромный, чего не скажешь о размахе и достижениях телекоммуникационного гиганта, одного из крупнейших в мире.
  • Первый звонок
    Сегодняшний экспонат нашего виртуального музея ИТ и компьютерных технологий – этот увесистый агрегат массой чуть более килограмма (см. фото) в руках у бывшего сотрудника компании Motorola Мартина Купера. Фото 2007 года. А ровно за 30 лет до того, 3 апреля 1973 года, Купер, стоя на нью-йоркской улице, у входа в отель Hilton, держал в руках тот же прибор, который, кстати, сам же изобрел. Прототип первого в истории сотового телефона DynaTAC.
Наверх