Site icon KerKer 的模組世界

Freeradius+ldap+802.1X設定

&NewLine;<p class&equals;"wp-block-paragraph">邊做邊學,順便留個筆記,若有錯誤請不吝指教。<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">本篇使用Ubuntu1804版本,freeradius串接ldap進行認證,<br>802&period;1X為使用eap-gtc方法進行認證<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<&excl;--more-->&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">安裝freeradius及freeradius-ldap套件<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>apt-get install freeradius freeradius-ldap<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">編輯client&period;conf,通常路徑為:&sol;etc&sol;freeradius&sol;3&period;0&sol;clients&period;conf<br>在clients&period;conf的最後面依以下格式加入Client:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>client WiFi &lbrace;&NewLine; ipaddr &equals; 192&period;168&period;220&period;16&NewLine; secret &equals; KerKer&NewLine;&rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">這個例子為建立一個名為WiFi的的Client,IP為192&period;168&period;220&period;16,當這個Client來進行Radius請求的密碼為KerKer,可以依自己的環境做替換。<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">將mods-available目錄底下的ldap模組設定檔複製到mods-enabled目錄<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>cp &sol;etc&sol;freeradius&sol;3&period;0&sol;mods-available&sol;ldap &sol;etc&sol;freeradius&sol;3&period;0&sol;mods-enabled&sol;ldap<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">編輯mods-enabled目錄底下的ldap設定檔,找到以下內容並替換成自己環境的ldap server參數:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> server &equals; 'localhost'&NewLine; &num;identity &equals; 'cn&equals;admin&comma;dc&equals;example&comma;dc&equals;org'&NewLine; &num;password &equals; mypass &NewLine; base&lowbar;dn &equals; 'dc&equals;example&comma;dc&equals;org'&NewLine;--->&NewLine; server &equals; '192&period;168&period;220&period;17'&NewLine; identity &equals; 'cn&equals;admin&comma;dc&equals;KerKer'&NewLine; password &equals; KerKer&NewLine; base&lowbar;dn &equals; 'dc&equals;KerKer'<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">如果有過濾認證user身分的需求,在&sol;etc&sol;freeradius&sol;3&period;0&sol;mods-enabled&sol;ldap的user下找到filter選項並依需求自行修改:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> filter &equals; "&lpar;uid&equals;&percnt;&lbrace;&percnt;&lbrace;Stripped-User-Name&rcub;&colon;-&percnt;&lbrace;User-Name&rcub;&rcub;&rpar;"&NewLine;--->&NewLine; filter &equals; "&lpar;&amp&semi;&lpar;uid&equals;&percnt;&lbrace;&percnt;&lbrace;Stripped-User-Name&rcub;&colon;-&percnt;&lbrace;User-Name&rcub;&rcub;&rpar;&lpar;sn&equals;&percnt;&lbrace;&percnt;&lbrace;Stripped-User-Name&rcub;&colon;-&percnt;&lbrace;User-Name&rcub;&rcub;&rpar;&rpar;"<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">上面的例子是我要求過濾uid和sn兩個欄位都要和認證帳號相同才能夠做登入&lpar;預設是uid欄位與認證帳號相同&rpar;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">編輯&sol;etc&sol;freeradius&sol;3&period;0&sol;sites-enabled&sol;default,將LDAP相關設定取消註解:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> &num;Auth-Type LDAP &lbrace;&NewLine; &num; ldap&NewLine; &num;&rcub;&NewLine;---> &NewLine; Auth-Type LDAP &lbrace;&NewLine; ldap&NewLine; &rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">編輯&sol;etc&sol;freeradius&sol;3&period;0&sol;sites-enabled&sol;inner-tunnel,一樣將LDAP相關設定取消註解:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> &num;Auth-Type LDAP &lbrace;&NewLine; &num; ldap&NewLine; &num;&rcub;&NewLine;---> &NewLine; Auth-Type LDAP &lbrace;&NewLine; ldap&NewLine; &rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">到這邊可以開啟freeradius服務進行測試了,以除錯模式運行freeradius:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>freeradius –X<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">若正常運行則應該顯示&&num;8221&semi;Ready to process requests&&num;8221&semi;<br>若出現port已占用之情形請嘗試將服務關閉:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>service freeradius stop<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">如果仍然不行可以嘗試以下指令用來查詢進程代碼,並使用kill指令關閉該進程:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>ps -ef &vert; grep freeradius&NewLine;kill -9 &lt&semi;PROCESS ID HERE><&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">當freeradius除錯模式正確運作時,請開啟另一個terminal,並使用已下指令測試:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>radtest "User-name" "password" 127&period;0&period;0&period;1 0 "testing123"<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">相應欄位請自行帶入ldap上有的帳號及密碼,ip填入本機IP,本機請求的預設secret為testing123。<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">到這邊基本可以確認與ldap server串接正確了,再來我們要做802&period;1X的設定了。<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">這邊使用的是EAP-GTP方法,好處是LDAP server不用做任何修改,壞處是windows主機設定複雜,但手機應該都有內建支援。<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">修改&sol;etc&sol;freeradius&sol;3&period;0&sol;mods-enabled&sol;eap,改成EAP-GTC方法:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> eap &lbrace;&NewLine; default&lowbar;eap&lowbar;type &equals; md5&NewLine; peap &lbrace;&NewLine; default&lowbar;eap&lowbar;type &equals; mschapv2&NewLine; &rcub;&NewLine; &rcub;&NewLine;--->&NewLine; eap &lbrace;&NewLine; default&lowbar;eap&lowbar;type &equals; peap&NewLine; peap &lbrace;&NewLine; default&lowbar;eap&lowbar;type &equals; gtc&NewLine; &rcub;&NewLine; &rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">修改&sol;etc&sol;freeradius&sol;3&period;0&sol;sites-enabled&sol;default,因為GTC的auth-type是PAP,我們要將PAP的auth-type設定為ldap:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> Auth-Type PAP &lbrace;&NewLine; pap&NewLine; &rcub;&NewLine;--->&NewLine; Auth-Type PAP &lbrace;&NewLine; ldap&NewLine; &rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">&sol;etc&sol;freeradius&sol;3&period;0&sol;sites-enabled&sol;inner-tunnel也做相同的修改:<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code> Auth-Type PAP &lbrace;&NewLine; pap&NewLine; &rcub;&NewLine;--->&NewLine; Auth-Type PAP &lbrace;&NewLine; ldap&NewLine; &rcub;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">到這裡802&period;1X就設定完成了,可以再次用除錯模式執行freeradius,並嘗試用802&period;1X進行認證!<&sol;p>&NewLine;

Exit mobile version