|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
07-05-2010, 12:36 PM | #1 |
Newbie
Gia nhập: May 2010
Trả Lời: 15
|
Bảo mật Wireless với FreeRADIUS
Bài viết ghi lại việc dùng FreeRADIUS để xác thực Wireless. Mô hình như sau:
Bao gồm: * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP Tiến hành cài FreeRADIUS: Bước này không có gì khó khăn cả. Bạn download về, giải nén và cài như bình thường. Bạn có thể dùng –prefix=/usr/local/freeradius và sudo make install | tee /var/log/source/freeradius.log nếu muốn. Tạo certificates: Chuyển đến thư mục /usr/local/etc/raddb/certs, đọc README file và làm theo hướng dẫn. Mỗi khi tạo một client certificate đặt hết vào một thư mục với tên là common Name cho dễ tìm. Code: su - cd /usr/local/etc/raddb/certs mkdir quanta Mình sửa Makefile như sau: Code: openssl req -new -out quanta/client.csr -keyout quanta/client.key -config ./client.cnf openssl ca -batch -keyfile ca.key -cert ca.pem -in quanta/client.csr -key $(PASSWORD_CA) -out quanta/client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf openssl pkcs12 -export -in quanta/client.crt -inkey quanta/client.key -out quanta/client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) openssl pkcs12 -in quanta/client.p12 -out quanta/client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) cp quanta/client.pem quanta/$(USER_NAME).pem cp quanta/client.key quanta/$(USER_NAME).key (Trong bài viết mình dùng EAP-TLS nên yêu cầu cả server và client certs). Lúc này trong thư mục quanta có những file sau: Code: # ls -l quanta total 32 -rw-r--r-- 1 root radius 4104 2010-02-24 13:59 client.crt -rw-r--r-- 1 root radius 1017 2010-02-24 13:59 client.csr -rw-r--r-- 1 root radius 1743 2010-02-24 13:59 client.key -rw-r--r-- 1 root radius 2493 2010-02-24 13:59 client.p12 -rw-r--r-- 1 root radius 3389 2010-02-24 13:59 client.pem -rw-r--r-- 1 root radius 1743 2010-02-24 14:03 quan.ta$domain.vn.key -rw-r--r-- 1 root radius 3389 2010-02-24 13:59 quan.ta$domain.vn.pem Chỉnh sửa các file cấu hình: /usr/local/etc/raddb/radiusd.conf: * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP /usr/local/etc/raddb/eap.conf * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP /usr/local/etc/raddb/clients.conf * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP /usr/local/etc/raddb/users * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP Thử start freeRADIUS ở debug mode: /usr/local/sbin/radiusd -X -x Nếu bạn nhìn thấy những dòng cuối cùng như sau: Wed Feb 24 17:35:28 2010 : Debug: listening on authentication address 172.16.128.12 port 1812 Wed Feb 24 17:35:28 2010 : Debug: listening on accounting address * port 1813 Wed Feb 24 17:35:28 2010 : Debug: listening on command file /usr/local/var/run/radiusd/radiusd.sock Wed Feb 24 17:35:28 2010 : Info: Ready to process requests. chứng tỏ bạn đã cấu hình và khởi động freeRADIUS thành công. Cấu hình Access Point như sau: aaa new-model ! ! aaa group server radius rad_eap server 172.16.128.12 auth-port 1812 acct-port 1813 ... dot11 ssid xx authentication open eap eap_methods authentication network-eap eap_methods authentication key-management wpa guest-mode ... bridge irb ! ! interface Dot11Radio0 no ip address no ip route-cache ! encryption mode ciphers tkip ... ip default-gateway 172.16.128.252 ip http server ip http authentication local no ip http secure-server ip http help-path http://www.cisco.com/warp/public/779...onfig/help/eag ip radius source-interface BVI1 ! cdp timer 45 cdp holdtime 120 radius-server attribute 32 include-in-access-req format %h radius-server host 172.16.128.12 auth-port 1812 acct-port 1813 key 7 131112011F0405242C radius-server vsa send accounting --> phần key này chính là Shared secret mà bạn đã gán trong file /usr/local/etc/raddb/clients.conf (41r0n3t). Bây giờ chúng ta cấu hình Linux làm client để thử kết nối. (coi như bổ sung vào phần còn thiếu trên wiki) http://wiki.freeradius.org/WPA_HOWTO wrote: ... (at present, I have no experience with Linux clients and so cannot document this) Nếu muốn dùng eapol_test bạn có thể: Remove binary package của wpa_supplicant và compile lại từ source. Code: wget /path/to/wpa_supplicant-0.6.10.tar.gz tar zxvf wpa_supplicant-0.6.10.tar.gz cd wpa_supplicant-0.6.10/wpa_supplicant/ cp defconfig .config Trong file .config, kiểm tra chắc chắn rằng * 1 Linux server chạy Debian dùng để cài FreeRADIUS * 1 Cisco Aironet 1240AG Access Point - ở đây đóng vai trò là NAS (Network Access Server) * 1 Cisco Catalyst switch * 2 clients: 1 dùng Slackware, 1 dùng Windows XP Code: make eapol_test make sudo make install Soạn thảo file cấu hình /etc/wpa_supplicant.conf như sau: Code: network={ scan_ssid=1 ssid="xx" key_mgmt=WPA-EAP pairwise=CCMP TKIP group=CCMP TKIP eap=TLS identity="quan.ta" ca_cert="/etc/radiusclient/certs/ca.pem" client_cert="/etc/radiusclient/certs/quan.ta@domain.vn.pem" private_key="/etc/radiusclient/certs/quan.ta@domain.vn.key" private_key_passwd="quan.ta_pass" } Trong đó: + ca.pem, quan.ta@domain.vn.pem và quan.ta@domain.vn.key được copy từ server về + identity chính là common Name khi tạo client certificate + private_key_passwd chính là giá trị của output_password bạn đã gán trong client.cnf khi tạo client certificate (nếu bạn tạo client cert trực tiếp bằng openssl thì nó chính là passphrase). Thử start wpa_supplicant ở debug mode: Code: wpa_supplicant -d -c /etc/wpa_supplicant.conf -i wlan0 -Dwext Nếu bạn nhìn thấy những dòng như: EAPOL: SUPP_BE entering state REQUEST EAPOL: getSuppRsp EAP: EAP entering state RECEIVED EAP: Received EAP-Request id=8 method=13 vendor=0 vendorMethod=0 EAP: EAP entering state METHOD SSL: Received packet(len=126) - Flags 0x80 SSL: TLS Message Length: 1130 SSL: (where=0x1001 ret=0x1) SSL: SSL_connect:SSLv3 read server session ticket A SSL: (where=0x1001 ret=0x1) SSL: SSL_connect:SSLv3 read finished A SSL: (where=0x20 ret=0x1) SSL: (where=0x1002 ret=0x1) SSL: 0 bytes pending from ssl_out SSL: No Application Data included SSL: No data to be sent out EAP-TLS: Done EAP-TLS: Derived key - hexdump(len=64): [REMOVED] EAP-TLS: Derived EMSK - hexdump(len=64): [REMOVED] SSL: Building ACK (type=13 id=8 ver=0) EAP: method process -> ignore=FALSE methodState=DONE decision=UNCOND_SUCC EAP: EAP entering state SEND_RESPONSE EAP: EAP entering state IDLE EAPOL: SUPP_BE entering state RESPONSE EAPOL: txSuppRsp TX EAPOL: dst=00:1b:2b:a9:0c:f0 EAPOL: SUPP_BE entering state RECEIVE RX EAPOL from 00:1b:2b:a9:0c:f0 EAPOL: Received EAP-Packet frame EAPOL: SUPP_BE entering state REQUEST EAPOL: getSuppRsp EAP: EAP entering state RECEIVED EAP: Received EAP-Success EAP: EAP entering state SUCCESS CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully đồng thời trên cửa sổ đang chạy radiusd bạn thấy: Wed Feb 24 18:17:26 2010 : Auth: Login OK: [quan.ta] (from client aironet port 410 cli 001f.3bd8.62bf) Wed Feb 24 18:17:26 2010 : Info: +- entering group post-auth {...} Wed Feb 24 18:17:26 2010 : Info: ++[exec] returns noop Sending Access-Accept of id 95 to 172.16.128.128 port 1645 MS-MPPE-Recv-Key = 0x3140c0a5ffd54cae58ec5d2bd7f68318ec0efc3edac4c903 6b3ba708188cf7a4 MS-MPPE-Send-Key = 0xf39ea7042321a9d7ee933520f6669758b43b38d5c1474854 89690842d26511a3 EAP-Message = 0x03080004 Message-Authenticator = 0x00000000000000000000000000000000 User-Name = "quan.ta" chứng tỏ bạn đã được xác thực. Xin chúc mừng. Cuối cùng là gán IP cho wlan0: Code: # dhcpcd wlan0 # ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:1f:3b:d8:62:bf inet addr:172.16.128.131 Bcast:172.16.128.255 Mask:255.255.255.0 inet6 addr: fe80::21f:3bff:fed8:62bf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:57843 errors:0 dropped:0 overruns:0 frame:0 TX packets:27473 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18020958 (17.1 MiB) TX bytes:4709688 (4.4 MiB) Phần cấu hình với Windows làm client các bạn có thể tham khảo trên wiki của freeRADIUS. Nguồn Sưu Tầm |
|
|