Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP

Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP

Автор: salimk.


Я не буду рассказывать что такое wpa и radius и с чем его едят, начну с того что имеем и что надо. А имеем мы офис, кучу крутых юзеров с ноутами и Айпадлами, вай-фай точку (Dlink DWL3200) и серванты с правильной ОСью.



1.Установка Radius2

Можно взять freeradius v1.X, изначально он у меня и стоял, а потом я как то не заметно перешел на freeradius2, по сути там и там будет работать одинакова.


# cd /usr/ports/net/freeradius2
# make install clean

еще понадобится openssl

2.Генерируем ключи и сертификаты

2.1 Качаем нужные скрипты:

Скрипты не мои я их с freeradius.org позаимствовал.
Скрипты для создание и отзыва Сертификатов
файл скачан размер размещён примечание
CA_scritps.tgz
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/*


radiusd -fX


........
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


Maximus, 2011-05-18 в 18:57:42

Скрипты для создание и отзыва Сертификатов - не скачиваются!
За статью спасибо!

Salimk, 2011-05-18 в 19:44:43

>Скрипты для создание и отзыва Сертификатов - не скачиваются!
я сам в шоке вроде все сделал по инструкции а их нету,
поэтому я их выложил на форуме
http://forum.lissyara.su/download/file.php?id=3822&sid=8c23b3775b67a49f601a59407de746b7

fox, 2011-06-03 в 0:02:36

А с контроллером домена на правельной оси под LDAP это реально привязать к учёткам?

Salimk, 2011-06-03 в 8:31:02

> А с контроллером домена на правельной оси под LDAP это реально привязать к учёткам?
Вообще да, но я пока еще это не реализовал, все рука не доходит до делать,
вот мои конфиге для лдап, если за работает отпишитесь что да кака
modules/ldap:
ldap {
server = "192.168.0.1"
   identity = "cn=Manager,dc=mydomain,dc=local"
   password = MY-PASS
   basedn = "ou=Users,dc=mydomain,dc=local"
   filter   = "(posixAccount)(uid=%u))"
}

sites-available/default:
authorize {
   #files
   ldap
}

fox, 2011-06-03 в 11:17:02

Спасибо, скоро буду пробовать обязательно поделюсь впечатлениями!)))

VN8, 2011-07-31 в 20:33:10

Хочу дополнить касательно авторизации EAP-PEAP, т.е. без использования сертификатов, на friradius2. Кроме как в /usr/local/etc/raddb/sites-available/default запись "ntdomein" нужно раскомментировать и в /usr/local/etc/raddb/sites-available/inner-tunnel (тоже в разделе authorize {}). По крайней мере, у меня Win 7 авторизацию не проходила без активации этой записи.

bbk, 2011-08-05 в 10:23:21

Скрины для настройки Win 7 для связки Freeradius2 + EAP-TLS + WPA2 + Windows7 здесь.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0488 секунд
Из них PHP: 32%; SQL: 68%; Число SQL-запросов: 91 шт.
Исходный размер: 82329; Сжатая: 13693