Я не буду рассказывать что такое wpa и radius и с чем его едят, начну с того что имеем и что надо. А имеем мы офис, кучу крутых юзеров с ноутами и Айпадлами, вай-фай точку (Dlink DWL3200) и серванты с правильной ОСью.
1.Установка Radius2
Можно взять freeradius v1.X, изначально он у меня и стоял, а потом я как то не заметно перешел на freeradius2, по сути там и там будет работать одинакова.
# cd /usr/ports/net/freeradius2
# make install clean
|
еще понадобится openssl
2.Генерируем ключи и сертификаты
2.1 Качаем нужные скрипты:
Скрипты не мои я их с freeradius.org позаимствовал.
Скрипты для создание и отзыва Сертификатов
|
файл
|
скачан
|
размер
|
размещён
|
примечание
|
|
1360
|
1.6kb
|
2011-05-19
|
Скрипты для создание и отзыва Сертификатов
|
|
CA_root.sh
CA_server.sh
CA_client.sh
2.2. Создаем файл xpextensions
[color=green]#
# For use with the 'CA.all' script.
#
[ xpclient_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
[ xpserver_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
[/color]
|
2.3 Создаем корневой сертификат
# ./CA_root.sh ROOTPASSWORD
|
-----
Country Name (2 letter code) [KZ]: KZ
State or Province Name (full name) [ALMT]: ALMT
Almaty []: Almaty
Organization Name (eg, company) [My Favorite Company]:
Organizational Unit Name (eg, section) [IT-department]:
Common Name (eg, YOUR name) []:RADIUS Root Certificate
Email Address []:root@mydomain.org
MAC verified OK
|
2.4 Создаем сертификат сервера
# echo "01" > ./demoCA/serial
# touch ./demoCA/index.txt
|
./CA_server.sh server.name.local SERVERPASSWORD ROOTPASSWORD
|
-----
Country Name (2 letter code) [KZ]:
State or Province Name (full name) [ALMT]:
Almaty []:
Organization Name (eg, company) [My Favorite Company]:
Organizational Unit Name (eg, section) [IT-department]:
Common Name (eg, YOUR name) []:server.name.local
Email Address []:root@mydomain.org
A challenge password []:SERVERPASSWORD
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
MAC verified OK
|
2.5 Создаем сертификат клиента
[color=red]
# ./CA_client.sh client.name.local CLIENTPASSWORD ROOTPASSWORD
[/color]
|
-----
Country Name (2 letter code) [KZ]:
State or Province Name (full name) [ALMT]:
Almaty []:
Organization Name (eg, company) [My Favorite Company]:
Organizational Unit Name (eg, section) [IT-department]:
Common Name (eg, YOUR name) []:client.name.local
Email Address []:client@mydomain.org
A challenge password []:CLIENTPASSWORD
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
|
2.6 Создаем ключ Diffie-Hellman
# openssl dhparam -out dh1024.pem 1024
|
2.7 Записываем Random длиной 1024 байт
# dd if=/dev/urandom of=random count=2
|
2.8 Следующие ключи копируем в папку /usr/local/etc/raddb/certs
# cp ./pem/root.pem /usr/local/etc/raddb/certs/
# cp ./server.name.local.pem /usr/local/etc/raddb/certs/
# cp ./dh1024.pem /usr/local/etc/raddb/certs/
# cp ./random /usr/local/etc/raddb/certs/
|
После этого переходим непосредственно к настройке конфигурационных файлов FreeRADIUS
3. Настройка FreeRADIUS
3.1 EAP-TLS
/usr/local/etc/raddb/clients.conf
### В самый конец пихаем:
client 192.168.0.150/32 {
secret = qwerty
shortname = LocolNet Access point
}
|
Эта запись означает, что клиент с адресом 192.168.0.150 авторизируется на RADIUS-е с паролем qwerty
Shortname будет использована при логировании событий связанных с этой точкой доступа
/etc/raddb/radiusd.conf
Этот файл не требует никаких настроек относительно стандартных.
Единственное надо проверить чтобы в секции modules был включен файл настроек eap.conf
modules {
........
$INCLUDE ${confdir}/modules/
........
$INCLUDE eap.conf
........
}
|
/usr/local/etc/raddb/eap.conf
default_eap_type = tls # используем протокол EAP-TLS
........
tls {
certdir = ${confdir}/certs
cadir = ${confdir}/certs
private_key_password = SERVERPASSWORD
private_key_file = ${certdir}/server.name.local.pem
certificate_file = ${certdir}/server.name.local.pem
CA_file = ${cadir}/root.pem
dh_file = ${certdir}/dh1024.pem
random_file = ${certdir}/random
}
|
3.2. EAP-PEAP
Ранее я писал о том что у пользователей есть коммуникаторы (iPad, iPhone, Nokia и т.п), здесь проблема в том что в них нельзя установит наши сертификаты, как быть с ними, ради этого мне еще пришлось настраивать EAP-PEAP, может кому и пригодится если нет можете пропустить этот пункт
/usr/local/etc/raddb/modules/mschap
mschap {
use_mppe = yes # использовать алгоритм mppe
require_encryption = yes # использовать шифрование
require_strong = yes # всегда требует ключ 128 бит шифрования
with_ntdomain_hack = yes # Windows посылает нам имя пользователя в форме
# ДОМЕН \ пользователь, но посылает вызов ответ
# на основе только часть пользователей. Этот хак
# корректирует, что неправильное поведение.
|
добавляем следующие строки в
/usr/local/etc/raddb/modules/realm
realm ntdomain {
format = prefix
delimiter = "\\"
ignore_default = no
ignore_null = no
}
|
/usr/local/etc/raddb/sites-available/default
authorize {
.........
# suffix
ntdomain
.........
}
|
добавляем следующие строки в
/usr/local/etc/raddb/proxy.conf
realm DEFAULT {
type = radius
authhost = LOCAL
accthost = LOCAL
}
|
Далее открываем eap.conf и подключаем к нашему TLS еще PEAP
/usr/local/etc/raddb/eap.conf
default_eap_type = tls peap
........
peap {
default_eap_type = mschapv2
}
|
Теперь надо завести базу пользователей с паролями, FreeRaduis может хранит базу пользователей в различных хранилищах в текстовом файле, LDAP, MySQL, PgSQL и даже системные. Я не стал заморачиватся с SQL и LDAPом, а проста завел в текстовый файл, тем более у меня их всего 4 юзера.
/usr/local/etc/raddb/modules/files
files {
usersfile = ${confdir}/users.db
compat = no
}
|
/usr/local/etc/raddb/users.db
user1 Cleartext-Password := "user1pass"
user2 Cleartext-Password := "user2pass"
user3 Cleartext-Password := "user3pass"
user4 Cleartext-Password := "user4pass"
|
вроде все нечего не забыл
3.3 Тестирование и запуск FreeRadius
# echo 'radiusd_enable="YES"' >> /etc/rc.conf
# chown freeradius:freeradius /usr/local/etc/raddb/certs/*
|
........
Listening on authentication address 192.168.0.X port 1812
Listening on accounting address 192.168.0.X port 1813
Listening on command file /var/run/radiusd/radiusd.sock
Listening on proxy address 192.168.0.X port 1814
Ready to process requests.
|
все ОК
4. Настраиваем точку доступа
Заходим в настройки точки доступа http://192.168.0.150 (у меня так, а вообще по дефолту 192.168.0.50)
Заходим Basic Settings -> Wireless
Wireless Network Name (SSID): Bla-bla-bla
Authentication: WPA2-Enterprise или WPA-Enterprise
RADIUS Server Settings
  RADIUS Server: айпи_вашего_радиус_сервера
  RADIUS Port: 1812 # по дефольту
  RADIUS Secret: qwerty # указываем secert что в clients.conf
Нажимаем кнопку "Apply" -> Configuration -> Save and Active
после перезагрузки точки доступа можно подключать клиентов.
5. Настройка и подключение клиента
Ранее мы создали сертификат для клиента (для каждого клиента нужен отдельный сертификат чтобы не парится)
Копируем клиентские сертификаты из папки 'p12' и корневой сертификат из папки der на флешку (кому как удобна)
# cp ./der/root.der /mnt/
# cp ./p12/client.name.local.p12 /mnt/
|
5.1. Настройка Windows XP
Открываем корневой сертификат "root.der" что ранее записали на флешку
Нажимаем кнопку "Установить сертификат...", в окне "Мастер импорта сертификатов" нажимаем Далее,
Выбираем "Поместить все сертификаты в следующие хранилище", нажмите кнопку "Обзор"
Появившемся окне "Выбор хранилища сертификата", выберем "Доверенные корневые центры сертификации", затем "ОК", мы вернулись обратно к мастеру, нажимаем "Далее", вылезет окно...
На вопрос "Установить данный сертификат?" отвечаем "ДА".
Теперь надо установить клиентский сертификат "client.name.local.p12" проделываемым тоже самое на запрос пароля вводим "CLIENTPASSWORD", нажимаем "Далее"...
на запрос выбор хранилище ставим "Автоматически выбрать хранилище на основе типа сертификата" или выбрать хранилище "Личные", нажимаем "Далее" и ОК.
Все сертификаты установили, идем далее.
Открываем "Беспроводное сетевое соединение"
Выберем нашу беспроводную сеть, нажимаем кнопку "Подключить".
На моем ноутбуки помимо нашего сертификата установлено еще куча других клиентских сертификатов (другие WiFi, Банк-Клиент, Почта), если у вас больше нет других сертификатов то тогда у вас не должен выйти такой запрос, можете продолжат дальше...
Щелкаем по нему...
Выберем нам нужный сертификат...
После (по любому) должен выйти вот такой запрос...
Щелкаем по нему, выходить вот такое окно...
Подтверждаем сертификат сервера нажатием на кнопку "ОК"
Все мы подключили компьютер к сети
5.2. Настройка FreeBSD 8.X
Не забываем про нашу любимую ОС
Подгружаем модули
/boot/loader.conf
wlan_ccmp_load="YES" # Включаем поддержку AES
#wlan_tkip_load="YES" # TKIP мне не нужен, уж больно не надежен
|
Подгружаем драйвера
/boot/loader.conf
if_ath_load="YES" # у меня Ralink RT2500USB но в примере я возьму Atheros
|
Настраиваем WPA_supplicant
создаем папку mkdir /etc/wpa_supplicant, вы можете выбрать другую папку, копируем туда наши сертификаты из папки pem
root.pem
client.name.local.pem
/etc/wpa_supplicant.conf
network={
ssid="bla-bla-bla"
proto=RSN
key_mgmt=WPA-EAP
eap=TLS
identity="loader"
ca_cert="/etc/wpa_supplicant/root.pem"
client_cert="/etc/wpa_supplicant/client.name.local.pem"
private_key="/etc/wpa_supplicant/client.name.local.pem"
private_key_passwd="CLIENTPASSWORD"
}
|
/etc/rc.conf
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"
|
# /etc/rc.d/netif restart
|
Если вы запустили FreeRadius в режиме отладки то во время подключение клиентов к сети вы уведите следующие:
..........
Message-Authenticator = 0x58eXXXXXXXXXXXXXXXXXXXXXXXXX
Service-Type = Framed-User
User-Name = "client.name.local"
Framed-MTU = 1488
State = 0xe7b150a9e4b85d68bcd4fc8d4cb0b30c
Called-Station-Id = "00-1E-XX-XX-XX-XX:bla-bla-bla"
Calling-Station-Id = "00-1B-XX-XX-XX-XX"
NAS-Identifier = "D-Link Access Point"
NAS-Port-Type = Wireless-802.11
Connect-Info = "CONNECT 54Mbps 802.11g"
EAP-Message = 0x020900060d00
NAS-IP-Address = 192.168.0.150
NAS-Port = 3
NAS-Port-Id = "STA port # 3"
..........
|
6.Отзыв клиентского сертификата
Бывает такая ситуация когда пользователи увольняются, прихватывая за собой свои ноутбуки, надо сделать так чтобы эта злыдня писюкатая не могла больше войти в сеть, для этого отзываем сертификат, в архиве для этого есть скрипт CA_revoke.sh.
# echo "01" >> ./demoCA/crlnumber
# ./CA_revoke.sh client.name.local ROOTPASSWORD
|
в папке revoke появится файл root-revoked.pem, копируем этот ключ в /usr/local/etc/raddb/certs
# cp ./revoke/root-revoked.pem /usr/local/etc/raddb/certs
|
/usr/local/etc/raddb/eap.conf
tls {
.........
# CA_file = ${cadir}/root.pem # меняем на
CA_file = ${cadir}/root-revoked.pem
.........
#### добавляем
check_crl = yes
}
|
# /usr/local/etc/rc.d/radiusd restart
|
Вот и все
P.S. Информация для счастливых обладателей Windows XP SP2 я хочу на помнить что в данной ОС нет поддержки WPA2, решение данной задачи обновления системы до SP3 или поставит патчик
P.S. Насчет как подключить коммуникаторы? я думаю разберитесь сами, пишите на форуме, язык и до Киева до видеть
http://wiki.freeradius.org/
http://www.freebsd.org/doc/handbook/network-wireless.html
размещено: 2011-05-17,
последнее обновление: 2011-10-17,
автор: salimk
Комментарии пользователей [7 шт.]