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

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

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

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

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

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

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

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

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

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

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 9930
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 8138
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 8245
Комментарии: 0
Конкурентное программирование на SCALA

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

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

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

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

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

Друзья сайта  

 Шлюз аутентификации пользователей NuFW

Архив номеров / 2006 / Выпуск №3 (40) / Шлюз аутентификации пользователей NuFW

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

Сергей Яремчук

Шлюз аутентификации пользователей NuFW

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

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

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

Один из вариантов решения проблемы описан в [8]. Проект NuFW (Now User Filtering Works) предлагает несколько иной подход к решению – «authenticating gateway». NuFW позволяет проводить аутентификацию пользователя для каждого соединения, пытающегося получить доступ к межсетевому экрану и некоторым другим сервисам сети. Фактически после аутентификации всегда можно однозначно сказать, что в данный момент времени 192.168.0.2 = Вася Пупкин. Такой подход позволяет не только ограничивать доступ, тонко реализуя политику безопасности, но и регистрировать деятельность, выполнять подсчет трафика, выставлять различное значение QoS (Quality of Service), осуществлять маршрутизацию, динамически изменять списки контроля доступа, опираясь на данные пользователя, а не на IP.

Также правила фильтрования могут в этом случае использовать и данные о приложениях, операционной системе, используемых клиентом (рис. 1).

Рисунок 1. NuFW позволяет делать фильтрацию по IP-адресам, пользователям, приложениям и операционной системе

Рисунок 1. NuFW позволяет делать фильтрацию по IP-адресам, пользователям, приложениям и операционной системе

Хотелось бы отметить, что проект относительно молодой. Сама идея возникла в 2001 году при попытке добавить поддержку LDAP к прокси, обеспечивающему безопасный доступ к telnet/ftp-сервисам. Исходный проект имел название Net Security Master (сейчас GateKeeper). Рабочая альфа-версия NuFW была представлена общественности в июле 2003 г., а первый релиз через два года – в марте 2005 г. Поэтому проекту могут быть присущи болезни молодости, и иногда возникают проблемы с безопасностью, например сообщение о возможности DOS-атаки [4].

Принцип работы

В основе работы NuFW лежит взаимодействие с Netfilter – механизмом фильтрации сетевых пакетов, появившимся в ядре Linux в версии 2.4. Поэтому в настоящее время такой шлюз аутентификации может работать только на Linux, хотя разработчики планируют разработку NuFW и для других операционных систем, в первую очередь BSD.

Для обеспечения услуг доступа используются два демона, которые могут быть запущены на разных компьютерах. Сервер аутентификации – nuauth и работающий на шлюзе – nufw.

Последний обеспечивает связь с Netfilter через цель «-j QUEUE», и таким образом осуществляется фильтрация трафика (рис. 2).

Рисунок 2. Принцип работы NuFW

Рисунок 2. Принцип работы NuFW

Стоит отметить, что в ядре 2.6.14 появилась новая, более мощная опция NFQUEUE, что позволяет совместно с NuFW использовать, например, и IDS Snort в режиме inline (системы остановки атак). На остальных компьютерах должны быть установлены клиентские программы, при помощи которых будет осуществляться аутентификация. Такие программы доступны для Linux, FreeBSD, MacOS X и Windows. Когда клиент пытается отправить пакет через межсетевой экран или шлюз, демон nufw связывается с демоном nuauth, который подтверждает либо отрицает полномочия пользователя. При этом фактически внимание уделяется первой фазе установления соединения, т.е. SYNпакетам.

Начиная с версии 1.1.0 обмен между клиентами и nuauth ведется в UTF-8 (если при конфигурировании использовалась опция «--with-utf8»).

Система аутентификации пользователя выполнена в виде модуля. Демон nuauth для аутентификации пользователей и групп может использовать сервер LDAP, PAM/NSS, базу в формате DBM, обычный текстовый файл или список системных пользователей. NuFW различает протоколы, поэтому можно установить, какие из групп будут иметь доступ к только электронной почте, а какие могут пользоваться http, ftp и другими сервисами.

Единственное ограничение NuFW заключается в том, что пока фильтруется только TCP, но в будущем планируется работа с UDP и ICMP.

Если пользователь принадлежит к группам с противоречивыми настройками, nuauth может быть настроен на разный вариант разрешения ситуации.

Для регистрации действий пользователей применяется syslog, или базы данных MySQL и PostgreSQL. В случае использования базы данных такая система способна сохранить более подробную информацию.

Все соединения по умолчанию закрываются при помощи SSL, что решает проблему спуфинга адресов и раскрытия пароля. Хотя в более ранних версиях протокола на участке клиент – nuauth использовалась только открытая передача данных (на рис. 2 показано оранжевым цветом). Кроме пароля для доступа пользователи могут использовать и TLS (Transport Layer Security) сертификаты.

Но это еще не все. В настоящее время разработаны модули для веб-сервера Apache и Squid, позволяющие им работать совместно с системой NuFW. Пользователь в этом случае будет аутентифицирован только один раз. Такой метод прозрачной аутентификации назван SSO (Single Sign On). Работает система следующим образом: пользователь получает доступ к межсетевому экрану обычным образом и попадает на сервер. Модуль SSO, работающий на сервере, зная параметры связи, запрашивает в базе данных соответствующий вход для каждой связи. Если пользователь аутентифицирован, то доступ к сервису разрешается.

NuFW – полностью открытый проект, все компоненты, за исключением клиента под Windows, распространяются под лицензией GNU GPL v2, протокол полностью документирован [5].

Установка NuFW

Для установки NuFW вам потребуются последние версии: glib2.0, gpg-error, gcrypt, gnutls, cyrus-sasl, gdbm, libident, libpam.

Дистрибутив NuFW на сайте проекта доступен только в исходных текстах, хотя в архивах [6] и им подобных можно найти пакеты для Debian и некоторых rpm-дистрибутивов (для ALTLinux в Сизифе пакетов на момент написания статьи не было). Если планируется контроль над полосой пропускания и QoS, необходима перекомпиляция ядра с патчами ip_queue_vwmark и CONNMARK, которые входят в комплект patchomatic [7].

# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/home/sergej/src/iptables./runme ip_queue_vwmark

# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/home/sergej/src/iptables./runme CONNMARK

После чего нужно пересобрать ядро, модули и утилиты iptables.

На момент написания статьи последней версией пакета NuFW была 1.0.20. Кроме того, доступен нестабильный релиз 1.1.3, в котором клиентская утилита nutcpc начала работать в среде ОС FreeBSD и Mac OS X. При конфигурировании доступен ряд опций. Вот некоторые из них:

  • --with-user-mark – поддержка маркировки пользователя в NuFW;
  • --with-mysql-log, --with-pgsql-log – регистрация поддержки пользователя в соответствующей базе данных;
  • --with-system-auth, --with-ldap, with-gdbm, --with-ident – поддержка соответствующих методов аутентификации пользователей (для текстового режима опций указывать не надо).

Выбираем необходимые опции и конфигурируем.

$ ./configure --with-ldap --with-system-auth --with-mysql-log --sysconfdir=/etc/nufw/ --prefix=/usr  --with-debug

Дальше обычная компиляция.

$ make

# make install

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

# mkdir /etc/nufw/

Настраиваем nuauth

Теперь конфигурационный файл для демона nuauth – /etc/nufw/nuauth.conf. Приведу только основные параметры. Копируем его на место и конфигурируем.

# cp conf/nuauth.conf  /etc/nufw/

# vi /etc/nufw/nuauth.conf 

# Файл /etc/nufw/nuauth.conf

# Адрес, на котором демон nuauth будет принимать клиентов, в нашем случае со всех доступных адресов

nuauth_client_listen_addr="0.0.0.0"

# IP-адрес, на котором nuauth слушает пакеты nufw

nuauth_nufw_listen_addr="127.0.0.1"

# Порт для запросов nufw

nuauth_gw_packet_port=4129

# Порт для пакетов аутентификации пользователей

nuauth_user_packet_port=4130

# Адрес и порт nufw маршрутизатора, на котором он будет ожидать ответ в незащищенном UDP, – это локальный адрес.

# В TLS-режиме это может быть список адресов

# nufw_gw_addr="192.168.75.1 192.168.75.254"

nufw_gw_addr="127.0.0.1"

nufw_gw_port=4128

# Что делать в том случае, когда пользователь является членом групп с противоречивыми установками

# (0 - нет, 1 - разрешить)

nuauth_prio_to_nok=1

# Аутентификация может работать в двух режимах.

# POLL: клиент отправляет пакет в каждом случае, когда требуется аутентификация в этом режиме,

# трафик меньше, поэтому он может использоваться для удаленных либо сильно загруженных сетей

# PUSH: демон nuauth посылает предупреждение клиенту о необходимости аутентификации (лучшее время отклика)

nuauth_push_to_client=1

# Ограничения регистрации пользователей

# 0 : без ограничений (по умолчанию)

# 1 : один вход для пользователя

# 2 : один вход для IP

# nuauth_connect_policy=1

# Для клиентов, не поддерживающих протокол NuFW, или если его применение затруднено, например, использованием NAT

# или межсетевых экранов, разделяющих сети, применяется аварийная (hello) аутентификация, базирующаяся только

# на IP и поддерживающая только одного пользователя. Такой способ работает для всех типов потоков IP

nuauth_hello_authentication=0

nuauth_do_ip_authentication=0

# Модуль аутентификации пользователей (libldap, dbm, plaintext, system)

nuauth_user_check_module=»libdbm»

# Модуль списков контроля доступом (libldap, libplaintext)

nuauth_acl_check_module=»libplaintext»

nuauth_acl_cache=1

# Модуль IP-аутентификации (libipauthident, rpc)

nuauth_ip_authentication_module="libipauthident"

# Ниже перечислены файлы для хранения сертификатов и ключей.

# Cекретный ключ сервера (по умолчанию CONFIGDIR/nuauth.pem)

nuauth_tls_key="/etc/nufw/nuauth.pem"

# Сертификаты сервера

nuauth_tls_cert="/etc/nufw/nuauth-cert.pem"

nuauth_tls_cacert="/etc/nufw/NuFW-cacert.pem"

# Использование клиентом сертификата вместо пароля

nuauth_tls_request_cert=0

# Регистрация событий: «mysql», «pgsql», «syslog» 

nuauth_user_logs_module="syslog"

# Регистрация деятельности пользователей: syslog, mysql, script. В последнем случае при подключении пользователей

# будет запущен скрипт, лежащий в CONFDIR/user-up.sh и при разъединении  CONFDIR/user-down.sh

nuauth_user_session_logs_module="syslog mysql"

# Списки пользователей и ACL при использовании для аутентификации текстовых файлов

plaintext_userfile="/etc/nufw/users.nufw"

plaintext_aclfile="/etc/nufw/acls.nufw"

# Преобразование имени пользователя в верхний регистр

# system_convert_username_to_uppercase=0

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

Последние настройки и запуск

В составе дистрибутива в подкаталоге certs имеются готовые сертификаты, предназначенные для тестирования, там же лежат и сертификаты разработчиков. Копируем их в /etc/nufw/. Для nufw:

# cp conf/certs/nufw-* /etc/nufw/

И для nuauth:

#cp conf/cert/nuauth*.pem /etc/nufw/

#cp conf/cert/NuFW*.pem /etc/nufw/

В рабочей системе создадим свои сертификаты.

# openssl req –new –x509 –nodes –days 365 –out  /etc/nufw/nuauth-cert.pem –keyout /etc/nufw/nuauth.pem

# openssl req –new –x509 –nodes –days 365 –out  /etc/nufw/nufw-cert.pem –keyout /etc/nufw/nufw-key.pem

Файл users.nufw содержит списки пользователей. Записи в нем состоят из строк вида:

Username: passwd:uid:gid[,gid,gid]

Обратите внимание, в файл заносится пароль в чистом виде, а не хэш. Это не совсем хорошо с точки зрения безопасности, но при установке соответствующих прав в данном случае в принципе приемлемо. Например:

sergej:passwd1:1:102

admin:admin_passwd:2:100,102,103

Для отключения пользователя достаточно добавить какой-либо знак к паролю (обычно «*» или «!»). Списки контроля доступа в этом случае хранятся в файле acls.nufw, в котором вы найдете их подробное описание. Например, для доступа к ssh для пользователей Linux, входящих в группы 100 и 102 с любого адреса, пишем такое правило.

[ssh]

decision=1

gid=100, 102

proto=6

SrcIP=0.0.0.0/0

SrcPort=1024-65535

DstIP=0.0.0.0/0

DstPort=22

App=/usr/bin/ssh

OS=Linux

Для доступа к сервисам без ограничений группе 100.

[full]

decision=1

gid=100

proto=6

SrcIP=0.0.0.0/0

SrcPort=1024-65535

DstIP=0.0.0.0/0

Большая часть параметров очевидна, «proto=6» означает TCP, «decision» позволяет указать варианты правил, если правила пересекаются. В качестве параметров IP могут быть указаны как отдельные адреса сети, так и список, разделенный запятой. В правила можно добавить разрешенные время и день работы.

Для формирования файла DBM используется утилита nufw_dbm, но в случае большого числа пользователей все же удобней применять LDAP, для которого правила формируются при помощи скрипта nuaclgen. При этом информация о соединении LDAP должна быть записана в файл nuaclgen.conf.

Правило для ssh в этом случае задается так.

#nuaclgen.pl –A cn=ssh,ou=Acls,dc=inl,dc=fr –p 6 –dport 22 –AppName "/usr/bin/ssh" –j ACCEPT –g 100

Кроме того, на сайте [3] можно найти Nuface, представляющий веб-интерфейс для создания правил для Netfilter, в том числе и без поддержки NuFW при помощи скрипта nupyf.py, который можно запускать и вручную. Демонстрационная версия Nuface доступна по адресу [9].

Далее проверяем загрузку модуля ядра.

# /sbin/lsmod   | grep ip_queue

ip_queue               10520  0

При необходимости загружаем его при помощи команды:

# /sbin/modprobe ip_queue

Добавляем правило в iptables (в документации и на сайте [2] приведено большое количество конфигураций).

# /sbin/iptables –A OUTPUT –s 192.168.0.0/24 –p tcp –dport 22 –m state –state NEW –syn –j QUEUE

# /sbin/iptables –A OUTPUT –m state –state ESTABLISHED,RELATED –j ACCEPT

Запускаем nuauth:

# /usr/sbin/nuauth –vvvvvvvvv

ip_queue               10520  0

При необходимости загружаем его при помощи команды:

# /sbin/modprobe ip_queue

Добавляем правило в iptables (в документации и на сайте [2] приведено большое количество конфигураций).

# /sbin/iptables –A OUTPUT –s 192.168.0.0/24 –p tcp –dport 22 –m state –state NEW –syn –j QUEUE

# /sbin/iptables –A OUTPUT –m state –state ESTABLISHED,RELATED –j ACCEPT

Запускаем nuauth:

# /usr/sbin/nuauth –vvvvvvvvv

** Message: debug_level is 9

 

** Message: Starting nuauth

** Message: Auth (user) module: plaintext

** Message: ACL module: libplaintext

** Message: User logs module: syslog

** Message: creating acl cache thread

** Message: Creating search_and_fill thread

** Message: Creating 3 acl checkers

** Message: Creating 3 user checkers

** Message: Creating 2 user loggers

** Message: Creating tls authentication server thread

** Message: Creating tls nufw server thread

** Message: Threads system started

 

И nufw:

#/usr/sbin/nufw –D –vvvv –d 127.0.0.1 –p 4129

В комплект дистрибутива входят консольный клиент, работающий под управлением Linux, FreeBSD и Mac OS X. Параметр -S, необходимый для SSL-соединения, при тестировании можно пока не применять. Если в качестве адреса назначения использовать localhost, в соединении будет отказано, поэтому указывайте только внешний интерфейс.

$nutcpc –S –U 102 –H 192.168.0.1

Вводим имя пользователя и пароль. В случае неудачи вам будут выведены сообщения, достаточные для локализации проблемы. Сообщения также можно будет просмотреть в /var/log/messages. Для работы в среде Windows имеется графический клиент NuWINс, который доступен в двух вариантах: один для работы в домене, работающий прозрачно для пользователя и запускающийся в качестве сервиса, второй – в классическом варианте. Демонстрационную версию последнего, разрешающую только 30 минут сессии, можно скачать с сайта [3]. На том же сайте доступен графический клиент для Linux-систем nuapplet, представляющий собой апплет для Gnome 2.x.

Работа с базами данных

Превым делом необходимо создать пользователя, обладающего привилегиями UPDATE, INSERT к conntrack_ulog, и занести эти параметры в файл nuauth.conf. Для создания самих таблиц используйте готовые сценарии nulog.mysql.dump и nulog.pgsql.dump, которые вы найдете в подкаталоге conf дистрибутива. Кроме того, в подкаталоге script лежит скрипт clean_conntrack.pl, при помощи которого таблицы очищаются от «мертвых» соединений. Его необходимо периодически запускать при помощи cron, иначе таблица быстро будет переполняться и задерживать ответ клиентам. Время нужно подбирать индивидуально для каждой сети (обычно 5-10 минут достаточно). Для работы этого скрипта необходимо создать пользователя, обладающего привилегиями SELECT и DELETE для таблицы «conntrack_ulog» и INSERT для «ulog». И внести эти данные во внутрь скрипта (по умолчанию используется root, что излишне). Кроме того, в этом же подкаталоге лежат два скрипта – ulog_rotate_daily.sh и ulog_rotate_weekly.sh, при помощи которых можно очищать базы журналов от переполнения. Для детального просмотра результатов удобно использовать веб-приложение nulog, демонстрационная версия которого доступна по адресу [10]. Кроме того, в настоящее время ведется работа над приложением корреляции и выдачи предупреждений Nualert и генератором отчетов Nureport.

Ссылки:

  1. Официальный сайт проекта – http://www.nufw.org.
  2. Сайт поддержки NuFW – http://regit.free.fr/nufw.
  3. Сайт INL develops – http://www.inl.fr.
  4. http://www.security.nnov.ru/Kdocument456.html.
  5. Протокол и алгоритм работы – EFICAAS (Extending Firewalling Infrastructure Capabilities and Aggregating Authentication Systems) – http://www.nufw.org/eficaas.
  6. Архивы программного обеспечения – http://packages.debian.org/unstable/source/nufwhttp://rpm.pbone.net.
  7. Сайт проекта Netfilter – ftp://ftp.netfilter.org/pub/patch-o-matic.
  8. Ачилов Р. Настройка Squid для использования авторизации из домена Windows 2000. – Журнал «Системный администратор», №10, 2004 г. – 30-35 с. (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=10.2004;a=05).
  9. Демонстрационная версия Nuface – https://nuface.inl.fr.
  10. Демонстрационная версия nulog – http://www.inl.fr/download/ulog-demo.

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

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

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

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

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