史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 網路疑難應用技術研討區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2004-07-26, 10:05 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 使用FreeRADIUS和XSuppicant進行802.1x的EAP/TLS驗證

剛看了「無線網路閘道通過 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的無線網路結構如下圖:

http://www.nsfocus.net/magazine_upload/auth.png



從右邊至左邊配置如下:

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


http://www.nsfocus.net/magazine_upload/cfg1.png

192.168.5.200是驗證伺服器的IP(AP的IP是192.168.5.131),Shared Secret使用前面CA.all裡whatever這個密碼。

設定驗證方式:
Home -> Setup -> Security -> Radio Data Encryption (WEP)

http://www.nsfocus.net/magazine_upload/cfg2.png


配置完以後,無線客戶端就可以使用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
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 02:25 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1