Основы защиты беспроводных сетей (часть 2) [07.02.2007]
Для авторизации пользователей в беспроводных сетях с помощью RADIUS-сервера можно использовать как имя пользователя и пароль (PEAP – Protected EAP), так и сертификаты (EAP-TLS). Рассмотрим настройку RADIUS-сервера для авторизации с помощью PEAP. Для этого сначала установим сервер (я воспользовался FreeRadius) под любую операционную систему Linux (в моем случае, Fedora Core 6). После произведем следующие настройки:
/etc/raddb/clients.conf #---------------------------------------------------- client 192.168.0.125/25 { secret = ap1242ag shortname = ap-1 } #----------------------------------------------------
Эта запись означает, что клиент (точка доступа) с IP-адресом 192.168.0.125 и маской 255.255.255.128 (25 бит) должна использовать для авторизации пароль ap1242ag, а все события, связанные с ней, будут записываться, как произошедшие от устройства ap-1. Также поменяем пароль для локальных клиентов:
#---------------------------------------------------- secret = secret_password #----------------------------------------------------
/etc/raddb/radiusd.conf Секция Modules{}, раздел mschap {}:
use_mppe = yes require_encryption = yes require_strong = yes with_ntdomain_hack = yes
Также в Modules{} должны быть строки:
# # 'domainuser' # realm ntdomain { format = prefix delimiter = "\" ignore_default = no ignore_null = no }
А в Authorize{}:
#---------------------------------------------------- ntdomain #----------------------------------------------------
/etc/raddb/proxy.conf #---------------------------------------------------- realm DEFAULT { type = radius authhost = LOCAL accthost = LOCAL } #----------------------------------------------------
С такими настройками, все клиенты Windows будут проверяться на локальном RADIUS-сервере.
/etc/raddb/eap.conf Далее нужно настроить протокол аутентификации EAP. Сначала подключим EAP к самому RADIUS-серверу (/etc/raddb/radiusd.conf) следующим образом:
#---------------------------------------------------- $INCLUDE ${confdir}/eap.conf #----------------------------------------------------
Теперь в самом /etc/raddb/eap.conf В секции eap{}
#---------------------------------------------------- default_eap_type = peap #---------------------------------------------------- … #---------------------------------------------------- peap { default_eap_type = mschapv2 } #---------------------------------------------------- … #---------------------------------------------------- tls { private_key_password = whatever private_key_file = ${raddbdir}/certs/cert-srv.pem certificate_file = ${raddbdir}/certs/cert-srv.pem CA_file = ${raddbdir}/certs/demoCA/cacert.pem dh_file = ${raddbdir}/certs/dh random_file = ${raddbdir}/certs/random } #----------------------------------------------------
Последний этап активизирует метод EAP-TLS с сертификатом, сгенерированным при установке FreeRadius. Настройку собственных сертификатов пока пропустим, для работы с PEAP этого достаточно.
/etc/raddb/users И, наконец, настроим базу пользователей нашего RADIUS-сервера. FreeRadius умеет хранить учетные записи пользователей в различных хранилищах, например, в системных учетных записях, обычном текстовом файле, LDAP, MySQL, PostgreSQL и т.п. Мы в качестве базы хранилища будем использовать обычный текстовый файл /etc/raddb/users. Формат файла очень простой: одна строчка - одна запись:
#---------------------------------------------------- UserA User-Password == "ABC" UserB User-Password == "CDE" #----------------------------------------------------
В нашей базе прописано два пользователя: UserA и UserB с соответствующими паролями. Файл /etc/raddb/users подключается в секции modules{}, раздел files{} основного конфигурационного файла FreeRadius (/etc/raddb/radiusd.conf) следующей строчкой:
#---------------------------------------------------- files { # <....> usersfile = ${confdir}/users compat = no } #---------------------------------------------------- На этом настройка FreeRadius сервера завершена. Можно запустить его в режиме отладки командой
# /usr/sbin/radiusd -fX
Если ошибок в конфигурационных файлах допущено не было, на экране мы увидим примерно следующее:
=====================================================
s3 ~ # /usr/sbin/radiusd -fX Starting - reading configuration files ... reread_config: reading radiusd.conf Config: including file: /etc/raddb/proxy.conf Config: including file: /etc/raddb/clients.conf Config: including file: /etc/raddb/snmp.conf Config: including file: /etc/raddb/eap.conf Config: including file: /etc/raddb/sql.conf main: prefix = "/usr" main: localstatedir = "/var" main: logdir = "/var/log/radius" main: libdir = "/usr/lib" main: radacctdir = "/var/log/radius/radacct" main: hostname_lookups = no main: max_request_time = 30 main: cleanup_delay = 5 main: max_requests = 1024
<...>
Module: Instantiated detail (detail) Module: Loaded radutmp radutmp: filename = "/var/log/radius/radutmp" radutmp: username = "%{User-Name}" radutmp: case_sensitive = yes radutmp: check_with_nas = yes radutmp: perm = 384 radutmp: callerid = yes Module: Instantiated radutmp (radutmp) Listening on authentication *:1812 Listening on accounting *:1813 Ready to process requests.
=====================================================
Надпись "Listening on authentication *:1812" означает, что сервер ждет запросов на аутентификацию на 1812 порту, а "Ready to process requests" - что он готов к работе. Осталось лишь остановить FreeRADIUS сервер, запущенный в режиме отладки, добавить его в автостарт...
===================================================== # rc-update add radiusd default * radiusd added to runlevel default =====================================================
...для того, чтобы демон radiusd запускался при старте системы, и запустить его (однократно) в нормальном режиме:
===================================================== # /etc/init.d/radiusd start * Starting radiusd ... [ ok ] =====================================================
Все, настройка системы на этом завершена. RADIUS сконфигурирован и запущен, переходим к настройкам точки доступа. Надо сделать следующее:
- включить WPA;
- выбрать тип шифрования (AES или TKIP);
- прописать адрес RADIUS-сервера;
- указать пароль доступа (shared secret) к RADIUS-серверу.
У вышеописанной схемы лишь один минус - подключение к беспроводной сети может происходить только после входа пользователя в операционную систему. Что можно сделать, если у нас на руках ноутбук, включенный в домен, и кроме как по WiFi, подключить его к сети не представляется возможным (или это не удобно)? Ведь при нажатии Ctrl+Alt+Del для ввода логина/пароля для доступа в доменную сеть, компьютер уже должен иметь доступ к сети (хотя бы для того, чтобы найти тот самый домен, куда он должен быть подключен). Тем самым, EAP-PEAP в этом случае не применим, а надо использовать EAP-TLS (продолжение следует…)
Постоянный адрес страницы: http://www.hypercomp.ru/articles/wireless-lan-security-basics-2/
Комментарии [25]
|