為了將公司內部認證統一化,啟用了802.1x認證,認證流程如下:
UserClient->AC控制器->Freeradius->OpenLdap
其中:
Freeradius做認證使用
OpenLdap存儲用戶賬戶密碼
現在開始配置:
環境:
Centos7
OpenLdap2.4.4
Freeradius 3.0.13
1.安裝Freeradius
#yum -y install freeradius* //Free RADIUS Version 3.0.13
2.修改配置文件
vim/etc/raddb/users
最后一行添加
testuser Cleartext-Password := "test123"
說明:這一步僅僅是添加一個測試用戶,測試Freeradius是否正常啟動的,如果不想測試,可以不建這個用戶
3.vim/etc/hosts如果設置host這里應該設置hostname的值。
[ip][hostname]
4.測試
再打開一個終端,執行
radtest testuser test123 127.0.0.1 0 testing123
其中 testuser 是用戶 test123是密碼 ,就是步驟2中新建的用戶 testing123是共享密鑰
如果看到
SendingAccess-Requestofid87to127.0.0.1port1812 User-Name="testuser" User-Password="testpassword" NAS-IP-Address=192.168.50.65 NAS-Port=1812 Message-Authenticator=0x00000000000000000000000000000000 rad_recv:Access-Acceptpacketfromhost127.0.0.1port1812,id=87,length=20 則表示radius服務器配置成功。
5.編輯eap文件
配置文件如下
cat /etc/raddb/mods-enabled/eap|grep -v "#"|grep -v "^$"
eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
max_sessions = ${max_requests}
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls-config tls-common {
private_key_password = whatever
private_key_file = ${certdir}/server.pem
certificate_file = ${certdir}/server.pem
ca_file = ${cadir}/ca.pem
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "DEFAULT"
cipher_server_preference = no
ecdh_curve = "prime256v1"
cache {
enable = no
}
verify {
}
ocsp {
enable = no
override_cert_url = yes
url = "http://127.0.0.1/ocsp/"
}
}
tls {
tls = tls-common
}
ttls {
tls = tls-common
default_eap_type = peap
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
}
peap {
tls = tls-common
default_eap_type = mschapv2
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
}
mschapv2 {
}
}
6.啟用ldap功能,因為賬戶密碼存儲在ldap上,所以freeradius需要配置ldap的連接信息
# ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
7 編輯ldap配置文件
cat mods-enabled/ldap|grep -v "#"|grep -v "^$"
ldap {
server = '127.0.0.1'
port = 389
identity = 'cn=root,dc=domain,dc=com'
password = 'your_password'
base_dn = 'ou=OP,dc=domain,dc=com'
sasl {
}
update {
control:Password-With-Header += 'userPassword'
control:NT-Password := 'sambaNTPassword' //重要,一定要記得更改這一行,下面會說原因
control: += 'radiusControlAttribute'
request: += 'radiusRequestAttribute'
reply: += 'radiusReplyAttribute'
}
如果Freeradius的eap配置中 default_eap_type = peap 如果配置成peap的話,OpenLdap中的用戶密碼存儲的時候可以采用兩種方式
1.)明文存儲,Freeradius認證沒問題,但是很不安全,因為能看到用戶的明文密碼
2.)使用NT-Password加密存儲,他其實是xp系統中用的MD4加密,所以OpenLdap中就需要添加samba的支持,然后將sambaNTPassword存儲的密碼字段映射為Freeradius中的NT-Password字段
我采用的是方式2
這段配置可以參考資料 https://hub.packtpub.com/storing-passwords-using-freeradius-authentication/
8.vim sites-available/inner-tunnel 取消里面的所有的ldap注釋
9 vim sites-available/default 取消里面的所有的ldap注釋
至此,Freeradius的配置部分就完成了
啟動radius可以使用
radiusd -X //帶有debug模式啟動,可以查看調試信息
第二部分 OpenLdap配置
1.安裝不寫了,參考我的文章 http://www.cnblogs.com/Kevin-1967/p/8931304.html
2.安裝完成后,需要按照上述步驟7中說的那樣,添加samba支持,方法如下:
#yum install -y samba-common samba samba-client #cp /usr/share/doc/samba-4.6.2/LDAP/samba.schema /etc/openldap/schema/ #cp /usr/share/doc/samba-4.6.2/LDAP/samba.ldif /etc/openldap/schema/ #ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/samba.ldif #systemctl restart slapd
重啟完OpenLdap的進程后,添加用戶entry的時候就可以使用sambaSamAccount 的objectclass了,我添加用戶的ldif文件模板如下
dn: uid=testuser,ou=OP,dc=domain,dc=com objectClass: top objectClass: sambaSamAccount objectClass: inetOrgPerson cn: 測試用戶1 sambaSID: testuser sn: testuser uid: testuser mail: testuser@163.com sambaNTPassword: C941B8F73337FAC694888A9AA7376678 telephoneNumber: 18812341234 userPassword: e1NTSEF914cxeVRDWdeuR2NZdjl0e991bWtzNn0kn3pVNQ==
說明:
Freeradius認證拿的是SambaNTPassword字段的值,如果你還需要openldap完成其他認證,就需要同步修改userPassword字段
所以,你需要寫個網頁,用戶自助修改密碼的時候同時修改OpenLdap中的sambaNTPassword字段和userPassword字段
然后在cisco無線控制器上添加Freeradius即可,配置無線走802.1x認證,步驟略
配置完。。。
參考資料: http://www.178pt.com/179.html https://www.cnblogs.com/lemon-le/p/6207695.html 參考資料: http://zgssheng.cn/2014/03/FreeRadius%20+%20802.1x:WPA%20+%20OpenLDAP%20wifi%E7%99%BB%E5%BD%95%E4%BD%BF%E7%94%A8%E4%B8%AA%E4%BA%BA%E5%B8%90%E5%8F%B7/
