Freeradius+ldap+802.1X設定

邊做邊學,順便留個筆記,若有錯誤請不吝指教。

本篇使用Ubuntu1804版本,freeradius串接ldap進行認證,
802.1X為使用eap-gtc方法進行認證

安裝freeradius及freeradius-ldap套件

apt-get install freeradius freeradius-ldap

編輯client.conf,通常路徑為:/etc/freeradius/3.0/clients.conf
在clients.conf的最後面依以下格式加入Client:

client WiFi {
        ipaddr = 192.168.220.16
        secret = KerKer
}

這個例子為建立一個名為WiFi的的Client,IP為192.168.220.16,當這個Client來進行Radius請求的密碼為KerKer,可以依自己的環境做替換。

將mods-available目錄底下的ldap模組設定檔複製到mods-enabled目錄

cp /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/ldap

編輯mods-enabled目錄底下的ldap設定檔,找到以下內容並替換成自己環境的ldap server參數:

    server = 'localhost'
    #identity = 'cn=admin,dc=example,dc=org'
    #password = mypass  
    base_dn = 'dc=example,dc=org'
--->
    server = '192.168.220.17'
    identity = 'cn=admin,dc=KerKer'
    password = KerKer
    base_dn = 'dc=KerKer'

如果有過濾認證user身分的需求,在/etc/freeradius/3.0/mods-enabled/ldap的user下找到filter選項並依需求自行修改:

    filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
--->
    filter = "(&(uid=%{%{Stripped-User-Name}:-%{User-Name}})(sn=%{%{Stripped-User-Name}:-%{User-Name}}))"

上面的例子是我要求過濾uid和sn兩個欄位都要和認證帳號相同才能夠做登入(預設是uid欄位與認證帳號相同)

編輯/etc/freeradius/3.0/sites-enabled/default,將LDAP相關設定取消註解:

    #Auth-Type LDAP {
    #       ldap
    #}
--->    
    Auth-Type LDAP {
            ldap
    }

編輯/etc/freeradius/3.0/sites-enabled/inner-tunnel,一樣將LDAP相關設定取消註解:

    #Auth-Type LDAP {
    #       ldap
    #}
--->    
    Auth-Type LDAP {
            ldap
    }

到這邊可以開啟freeradius服務進行測試了,以除錯模式運行freeradius:

freeradius –X

若正常運行則應該顯示”Ready to process requests”
若出現port已占用之情形請嘗試將服務關閉:

service freeradius stop

如果仍然不行可以嘗試以下指令用來查詢進程代碼,並使用kill指令關閉該進程:

ps -ef | grep freeradius
kill -9 <PROCESS ID HERE>

當freeradius除錯模式正確運作時,請開啟另一個terminal,並使用已下指令測試:

radtest "User-name" "password" 127.0.0.1 0 "testing123"

相應欄位請自行帶入ldap上有的帳號及密碼,ip填入本機IP,本機請求的預設secret為testing123。

到這邊基本可以確認與ldap server串接正確了,再來我們要做802.1X的設定了。

這邊使用的是EAP-GTP方法,好處是LDAP server不用做任何修改,壞處是windows主機設定複雜,但手機應該都有內建支援。

修改/etc/freeradius/3.0/mods-enabled/eap,改成EAP-GTC方法:

    eap {
        default_eap_type = md5
        peap {
            default_eap_type = mschapv2
        }
    }
--->
    eap {
        default_eap_type = peap
        peap {
            default_eap_type = gtc
        }
    }

修改/etc/freeradius/3.0/sites-enabled/default,因為GTC的auth-type是PAP,我們要將PAP的auth-type設定為ldap:

    Auth-Type PAP {
            pap
    }
--->
    Auth-Type PAP {
            ldap
    }

/etc/freeradius/3.0/sites-enabled/inner-tunnel也做相同的修改:

    Auth-Type PAP {
            pap
    }
--->
    Auth-Type PAP {
            ldap
    }

到這裡802.1X就設定完成了,可以再次用除錯模式執行freeradius,並嘗試用802.1X進行認證!