![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#1 |
榮譽會員
![]() |
![]() 剛看了「無線網路閘道通過 web 認證上網 計費 」這篇帖子
http://www.slime2.com.tw/forums/show...ght=FreeRADIUS ,想起自己以前看過的一篇類似的文章,貼上來,share一下: 引用: http://www.missl.cs.umd.edu/wireless/eaptls/ 貼了半天沒辦法把html搞定,先給個連接吧 不過……又發現早 出了翻譯版羅,look: 引用: 使用FreeRADIUS和XSuppicant進行EAP/TLS驗證(一個開放源碼的802.1X解決方案) 作者:san <san@nsfocus.com> 主頁:http://www.nsfocus.com 日期:2003-03-03 一、IEEE 802.1X簡介 當前802.11無線網路的安全性還是非常脆弱的,很多情況下無線客戶端如果得到接入點(AP)的SSID,就可以獲得網路的訪問權限。而且由於管理員的懶惰沒有修改AP廠商預設設定的SSID,甚至配置AP向外廣播其SSID,那麼安全性還將更低。最常 見的解決方法是使用WEP加密,在鏈路層採用RC4對稱加密技術,用戶的加密金鑰必須與AP的密鑰相同時才能獲准存取網路的資源,從而防止非授權用戶的監聽以及非法用戶的訪問。WEP提供了40位(有時也稱為64位)和128位長度的密鑰機制,但是它仍然 存在許多缺陷,例如一個服務區內的所有用戶都共享同一個密鑰,一個用戶丟失或者洩漏密鑰將使整個網路不安全。而且由於WEP加密被發現有安全缺陷,可以在幾個小時內被破解。 一些一般AP廠商的預設SSID和預設WEP密鑰、密碼可以參考如下連接: http://www.wi2600.org/mediawhore/nf0...ults-1.0.5.txt IEEE 802.1X是IEEE在2001年6月發佈的一個標準,用於對IEEE 802區域網路(包括乙太網、Token Ring和FDDI)的認證和密鑰管理。 802.1X不是加密算法,不同於WEP、3DES、AES或其它的算法,IEEE 802.1X只關注認證和密鑰管理,不關心來源密鑰使用什麼安全服務傳送。所以它可以對認證來源和密鑰使用任意的加密算法,還可以週期性的更新密鑰和重新認證來保證密鑰的安全。 IEEE 802.1X不是一個單獨的認證方法,它利用可擴展認證傳輸協定(EAP)作為它的認證框架。這意味著有802.1X功能的交換機和AP可以支持各種認證方式,包括關於證書的認證、智能卡、標記卡(token cards)、一次性密碼等。然而802.1X本身並沒有指定和要求使用何種認證方式,交換機和AP只是EAP的一個通道,所以可以只需在主機和後台認證伺服器安裝軟體而無需對交換機和AP昇級就可以增加一個新的認證方式。 IEEE 802.1X沒有對包進行封裝(不像PPPOE或VPN),實現起來不會對交換機和AP的效能有所影響。這意味著IEEE 802.1X處理的速度可以從11 Mbps (802.11) 到 10+ Gbps,並且只要昇級交換機的固件而不必購買新的硬體就可以實現。對於主機,IEEE 802.1X可以由網路卡驅動來實現,不必使用新的操作系統。 RADIUS伺服器(包括Windows 2000 IAS)支持EAP,可以用來管理關於IEEE 802.1X網路的訪問。通過RADIUS,IEEE 802.1X允許管理每個用戶的授權,包括過濾(2層或3層)、隧道、動態VLANs、速率控制等。 EAP/TLS是802.1X架構的一種認證方式,802.1X和EAP/TLS是無線網路一個越來越受歡迎的安全解決方案。以下是Adam Sulmicki的一個關於開放源碼軟體的802.1X解決方案。 二、網路結構圖 Adam Sulmicki的無線網路結構如下圖: ![]() 從右邊至左邊配置如下: 1. 驗證伺服器-radius伺服器 硬體: IBM THINKPAD T23 2647-2KU 100 Mbps乙太網卡 軟體: Linux Red Hat 7.2 FreeRadius (cvs) OpenSSL (snapshot) 2. 驗證端-接入點(AP) 硬體: CISCO AIRONET 340 series 11 Mbps ACCESS POINT AIR-AP342E2C 主機板: MPC860 50MHz, 2048KB FLASH, 16384KB DRAM, Revision 21 100 Mbps乙太網卡 軟體: 系統:EnterpriseAP Sys 11.10 3. 請求端-radius伺服器 硬體: IBM THINKPAD T23 2647-2KU CISCO AIRONET 340 SERIES 11 Mbps WIRELESS ADAPTER AIR-PCM342 軟體: Linux Red Hat 7.2 xsupplicant (cvs tarball) 三、軟體安裝 1. OpenSSL FreeRADIUS和Xsuppicant需要使用穩定版本的OpenSSL,而FreeRADIUS的EAP/TLS模組卻需要使用最新的非穩定snapshot版本OpenSSL(或者是2002年3月份以後的穩定版本,OpenSSL 0.9.7或更新),所以要安裝兩個版本的OpenSSL。 注意非穩定版本的SSL不要使用檔案名帶stable的,也不要使用帶」e」的版本,那一般是用於硬體加密的。 從OpenSSL的網站下載: ftp://ftp.openssl.org/snapshot/opens...0020227.tar.gz 然後進行配置安裝: mkdir -p /usr/src/802/openssl cd /usr/src/802/openssl ncftpget ftp://ftp.openssl.org/snapshot/opens...0020227.tar.gz tar zxvf openssl-SNAP-20020227.tar.gz cd openssl-SNAP-20020227 ./config shared --prefix=/usr/local/openssl make make install 注意:snapshot版本不要安裝在常用的路徑如:--prefix=/usr或—prefix=/usr/local/ssl,只有FreeRADIUS的EAP/TLS模組需要snapshot版本。 安裝後需要修改/usr/local/openssl/ssl/openssl.cnf文件,以下是一個配置修改樣例,openssl.conf-diff: --- /usr/local/openssl/ssl/openssl.cnf-backup Thu Feb 28 03:35:54 2002 +++ /usr/local/openssl/ssl/openssl.cnf Thu Feb 28 03:38:12 2002 @@ -117,30 +117,33 @@ [ req_distinguished_name ] countryName = Country Name (2 letter code) -countryName_default = AU +countryName_default = US countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = Some-State +stateOrProvinceName_default = Maryland localityName = Locality Name (eg, city) +localityName_default = College Park 0.organizationName = Organization Name (eg, company) -0.organizationName_default = Internet Widgits Pty Ltd +0.organizationName_default = University of Maryland # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) -#organizationalUnitName_default = +organizationalUnitName_default = MISSL commonName = Common Name (eg, YOUR name) commonName_max = 64 +commonName_default = adam emailAddress = Email Address emailAddress_max = 64 +emailAddress_default = adam@cfar.umd.edu # SET-ex3 = SET extension number 3 @@ -148,6 +151,7 @@ challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 +challengePassword_default = whatever unstructuredName = An optional company name 定制這個文件使得產生自己的密鑰和證書變得簡單。產生密鑰可以使用下面位址的指令碼: http://www.missl.cs.umd.edu/wireless/eaptls/doc/CA.all 指令碼裡的whatever是使用的密碼,可以根據自己的需要修改。這個指令碼會產生私鑰、CA和兩個證書,樣例可以從如下位址檢視: http://www.missl.cs.umd.edu/wireless.../keys/cert.tgz 這裡的密碼都是』whatever』。把證書放到相應路徑: mkdir -p /usr/src/802/keys cd /usr/src/802/keys wget http://www.missl.cs.umd.edu/~adam/802/keys/cert.tgz tar zxvf cert.tgz mkdir -p /etc/1x mv /usr/src/802/keys /etc/1x/ 2. LibNet Xsupplicant需要使用LibNet,如果系統裡沒有必須另行安裝: mkdir -p /usr/src/802/libnet cd /usr/src/802/libnet wget http://ftp.debian.org/debian/dists/p....0.orig.tar.gz tar zxvf libnet_1.0.orig.tar.gz cd Libnet-1.0/ ./configure make make install 3. FreeRADIUS 需要使用2002年3月1日以後cvs版本的FreeRADIUS,可以通過cvs下載,也可以從如下位址獲得該可用版本: http://www.missl.cs.umd.edu/wireless...2.28.02.tar.gz 安裝配置: tar zxvf radiusd-02.28.02.tar.gz cd radiusd ./configure --prefix=/usr/local/radius make make install /usr/local/radius/sbin/run-radius -X -A 有幾點注意: 1. make前需要修改radiusd/src/modules/rlm_eap/types/rlm_eap_tls/下的Makefile文件,讓它編譯EAP-TLS以及使用snapshot版本的OpenSSL。 --- radiusd/src/modules/rlm_eap/types/rlm_eap_tls/Makefile 2002/01/24 +++ radiusd/src/modules/rlm_eap/types/rlm_eap_tls/Makefile 2002/02/28 @@ -1,11 +1,12 @@ TARGET = +TARGET = rlm_eap_tls #TARGET = rlm_eap_tls SRCS = rlm_eap_tls.c eap_tls.c cb.c tls.c -RLM_CFLAGS = $(INCLTDL) -I../.. -I/path/to/openssl/include +RLM_CFLAGS = $(INCLTDL) -I../.. -I/usr/local/openssl/include HEADERS = eap_tls.h RLM_INSTALL = -RLM_LDFLAGS += -L/path/to/openssl/lib +RLM_LDFLAGS += -L/usr/local/openssl/lib RLM_LIBS += -lssl $(STATIC_OBJS): $(HEADERS) 2. 目前的linux系統由於對gethostbyadd_r()和gethostbyname_r()的檢測會存在失誤,需要在make前對radius的autoconf.h打上如下修正檔: diff -u -r1.44 autoconf.h --- src/include/autoconf.h +++ src/include/autoconf.h @@ -100,10 +100,10 @@ #undef HAVE_CTIME_R /* Define if you have the gethostbyaddr_r function. */ -#undef HAVE_GETHOSTBYADDR_R +//#undef HAVE_GETHOSTBYADDR_R /* Define if you have the gethostbyname_r function. */ -#undef HAVE_GETHOSTBYNAME_R +//#undef HAVE_GETHOSTBYNAME_R /* Define if you have the gethostname function. */ #undef HAVE_GETHOSTNAME 另外的辦法是編輯radiusd/src/lib/misc.c文件,修改成適合Linux語法的gethostbyadd_r() 和gethostbyname_r()使用。還有方法是修改configure.in配置指令碼,詳細資料可參考如下連接: http://marc.theaimsgroup.com/?t=101488214000003&r=1&w=2 3. 編譯安裝完radius後需要對伺服器進行配置,radius的配置文件在/usr/local/radius/etc/raddb目錄下,需要修改啟用EAP/TLS功能,以下參考的配置文件: http://www.missl.cs.umd.edu/wireless...dius.conf-diff http://www.missl.cs.umd.edu/wireless...ient.conf-diff http://www.missl.cs.umd.edu/wireless...ddb-users-diff 4. /usr/local/radius/sbin/run-radius是啟動radius服務的指令碼,這個指令碼定義了LD_LIBRARY_PATH和LD_PRELOAD兩個環境變數可以讓EAP/TLS使用正確的libssl庫,並且libssl庫也能裝載正確的libcrypto。 #!/bin/sh -x LD_LIBRARY_PATH=/usr/local/openssl/lib LD_PRELOAD=/usr/local/openssl/lib/libcrypto.so export LD_LIBRARY_PATH LD_PRELOAD /usr/local/radius/sbin/radiusd $@ 4. xsupplicant xsupplicant需要使用2002年3月1日以後最新的cvs版本,可以從如下位址下載: http://www.open1x.org/xsupplicant-cvs-current.tar.gz xsupplicant必須使用穩定版的OpenSSL,系統一般都使用穩定版,目錄在/usr/local/ssl。 安裝xsupplicant: mkdir -p /usr/src/802/xsup cd /usr/src/802/xsup wget http://www.open1x.org/xsupplicant-cvs-current.tar.gz tar zxvf xsupplicant-cvs-current.tar.gz cd xsupplicant-cvs-current ./configure make make install /sbin/iwconfig eth1 essid rtest /sbin/ifconfig eth1 up xsupplicant -i eth1 注意: 1. 執行xsupplicant之前需要設定essid讓無線客戶端和AP管理,可以使用iwconfig指令,也可以在/etc/pcmcia/wireless.opts指定。 2. 執行xsupplicant之前必須讓無線網路卡起來。 3. xsupplicant的配置文件是/etc/1x/1x.conf,下面是一個配置樣例: rtest:id = adam-ctl rtest:cert = /etc/1x/r/cert-clt.der rtest:key = /etc/1x/r/cert-clt.pem rtest:root = /etc/1x/r/root.pem rtest:auth = EAP 無線網路的名稱是rtest,登入ID為adam-ctl,和radius配置文件/etc/raddb/users一致。下面三行是指定驗證文件。不過目前xsupplicant還不支持關於DSA的密鑰。 四、測試 把驗證伺服器和AP的乙太網口互聯,然後對AP進行配置: 設定radius伺服器: Home -> Setup -> Security -> Authentication Server ![]() 192.168.5.200是驗證伺服器的IP(AP的IP是192.168.5.131),Shared Secret使用前面CA.all裡whatever這個密碼。 設定驗證方式: Home -> Setup -> Security -> Radio Data Encryption (WEP) ![]() 配置完以後,無線客戶端就可以使用802.1x傳輸協定進行驗證了。以下兩個文件是服務端和客戶端進行驗證時的日誌文件: http://www.missl.cs.umd.edu/wireless/eaptls/doc/srv.log http://www.missl.cs.umd.edu/wireless/eaptls/doc/clt.log 參考資訊 http://www.missl.cs.umd.edu/wireless/eaptls/ http://www.impossiblereflex.com/8021x/eap-tls-HOWTO.htm http://www.drizzle.com/~aboba/IEEE/ http://www.xfocus.net/article_view.php?id=465 |
![]() |
送花文章: 3,
![]() |