การตั้งค่า RADIUS + LDAP สำหรับ WPA2 บน Ubuntu


16

ฉันกำลังตั้งค่าเครือข่ายไร้สายสำหรับผู้ใช้ประมาณ 150 คน กล่าวโดยย่อฉันกำลังมองหาคำแนะนำในการตั้งค่าเซิร์ฟเวอร์ RADIUS เพื่อตรวจสอบสิทธิ์ WPA2 กับ LDAP บน Ubuntu

  • ฉันได้รับ LDAP ที่ใช้งานได้ แต่เนื่องจากไม่ได้ใช้งานจริงมันสามารถปรับให้เข้ากับการเปลี่ยนแปลงใด ๆ ที่โครงการนี้อาจต้องการได้อย่างง่ายดาย
  • ฉันดูที่ FreeRADIUS แล้ว แต่เซิร์ฟเวอร์ RADIUS ใด ๆ ก็ตามจะทำได้
  • เรามีเครือข่ายทางกายภาพแยกต่างหากสำหรับ WiFi ดังนั้นไม่ต้องกังวลเกี่ยวกับความปลอดภัยที่มากเกินไป
  • AP ของเราคือสิ่งที่องค์กรระดับต่ำของ HP - พวกเขาดูเหมือนจะสนับสนุนสิ่งที่คุณคิด
  • เซิร์ฟเวอร์ Ubuntu ทั้งหมดที่รัก!

และข่าวร้าย:

  • ตอนนี้ฉันมีคนที่มีความรู้น้อยกว่าฉันในที่สุดจะเข้ามามีอำนาจจัดการดังนั้นการตั้งค่าจะต้องเป็น "เรื่องไม่สำคัญ" ที่สุด
  • จนถึงตอนนี้การตั้งค่าของเราขึ้นอยู่กับซอฟต์แวร์จากที่เก็บ Ubuntu เท่านั้นยกเว้นเว็บแอปพลิเคชันการดูแลระบบ LDAP ของเราและสคริปต์พิเศษเล็ก ๆ น้อย ๆ ดังนั้น "ดึงแพ็คเกจ X, untar, ./configure"-things หากหลีกเลี่ยงได้

อัพเดท 2009-08-18:

ในขณะที่ฉันพบทรัพยากรที่มีประโยชน์หลายอย่างมีอุปสรรคสำคัญอย่างหนึ่งคือ

Ignoring EAP-Type/tls because we do not have OpenSSL support.
Ignoring EAP-Type/ttls because we do not have OpenSSL support.
Ignoring EAP-Type/peap because we do not have OpenSSL support.

โดยพื้นฐานแล้ว FreeRADIUS รุ่น Ubuntu นั้นไม่รองรับ SSL ( ข้อผิดพลาด 183840 ) ซึ่งทำให้ EAP ที่ปลอดภัยทุกประเภทนั้นไร้ประโยชน์ คนเกียจคร้าน

แต่มีเอกสารที่มีประโยชน์สำหรับใครสนใจ:

อัพเดท 2009-08-19:

ฉันสิ้นสุดการรวบรวมเย็นวานนี้แพคเกจ FreeRADIUS ของตัวเอง - มีสูตรที่ดีจริงๆที่http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html (ดู ความคิดเห็นที่โพสต์สำหรับคำแนะนำปรับปรุง)

ฉันได้รับใบรับรองจากhttp://CACert.org (คุณน่าจะได้รับใบรับรอง "ของจริง" ถ้าเป็นไปได้)

แล้วฉันจะทำตามคำแนะนำที่http://vuksan.com/linux/dot1x/802-1x-LDAP.html ลิงก์นี้ไปยังhttp://tldp.org/HOWTO/html_single/8021X-HOWTO/ซึ่งเป็นการอ่านที่คุ้มค่าหากคุณต้องการทราบว่าการรักษาความปลอดภัยของ WiFi ทำงานอย่างไร

อัพเดท 2009-08-27:

หลังจากทำตามคำแนะนำข้างต้นฉันได้รับ FreeRADIUS เพื่อพูดคุยกับ LDAP:

ฉันได้สร้างผู้ใช้ทดสอบใน LDAP ด้วยรหัสผ่านแล้วmr2Yx36Mสิ่งนี้จะให้รายการ LDAP โดยประมาณ:

uid: testuser
sambaLMPassword: CF3D6F8A92967E0FE72C57EF50F76A05
sambaNTPassword: DA44187ECA97B7C14A22F29F52BEBD90
userPassword: {SSHA}Z0SwaKO5tuGxgxtceRDjiDGFy6bRL6ja

เมื่อใช้radtestฉันสามารถเชื่อมต่อได้ดี:

> radtest testuser "mr2Yx36N" sbhr.dk 0 radius-private-password
Sending Access-Request of id 215 to 130.225.235.6 port 1812
    User-Name = "msiebuhr"
    User-Password = "mr2Yx36N"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
rad_recv: Access-Accept packet from host 130.225.235.6 port 1812, id=215, length=20
> 

แต่เมื่อฉันลองใช้ AP มันก็ไม่ได้บิน - ในขณะที่มันยืนยันว่ามันระบุรหัสผ่าน NT และ LM:

...
rlm_ldap: sambaNTPassword -> NT-Password == 0x4441343431383745434139374237433134413232463239463532424542443930
rlm_ldap: sambaLMPassword -> LM-Password == 0x4346334436463841393239363745304645373243353745463530463736413035
[ldap] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?
[ldap] user testuser authorized to use remote access
rlm_ldap: ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Normalizing NT-Password from hex encoding
[pap] Normalizing LM-Password from hex encoding
...

เป็นที่ชัดเจนว่ารหัสผ่าน NT และ LM แตกต่างจากข้างต้น แต่ข้อความ[ldap] user testuser authorized to use remote access- และผู้ใช้ถูกปฏิเสธในภายหลัง ...


รหัสผ่าน NT และ LM ถูกเข้ารหัสไว้ดังนั้นจึงไม่ชัดเจนว่าจะแตกต่างกันหรือไม่ คุณต้องกำหนดรหัสผ่านที่ AP ใช้และถ้ารหัสผ่านนั้นถูกล้าง MD5 นั้นจะถูกส่งไปแทนที่หรือ ... อย่างอื่น ไคลเอ็นต์ RADIUS สามารถใช้แอตทริบิวต์ RADIUS ได้ไม่ จำกัด จำนวนสำหรับการพิสูจน์ตัวตนด้วยรหัสผ่านหรือรหัสผ่าน นอกจากนี้ลองเติมแอตทริบิวต์การหมดอายุ
kmarsh

คำตอบ:


12

ฉันจะพยายามตอบคำถาม LDAP ที่นี่

นี่คือคำตอบสั้น ๆ : ตรวจสอบให้แน่ใจว่าldapโมดูลถูกลบออกจากauthenticateส่วนและตรวจสอบให้แน่ใจว่าmschapโมดูลนั้นมีอยู่ทั้งในauthorizeและauthenticateส่วน และเพียงเพิกเฉยรหัสผ่าน 'ไม่รู้จัก' ดี '

และตอนนี้นี่คือคำตอบที่ยาวมาก ๆ

โมดูล ldap ทำงานอย่างไร

เมื่อคุณเปิดใช้งานldapโมดูลในauthorizeส่วนนี้จะเป็นอย่างไรเมื่อ FreeRADIUS รับแพ็กเก็ต RADIUS:

  1. พยายามเชื่อมโยงกับเซิร์ฟเวอร์ LDAP (ในฐานะผู้ใช้ทั่วไปหรือใช้ข้อมูลประจำตัวที่กำหนดหากมีการกำหนดค่าไว้ldap.conf)
  2. มันค้นหารายการ DN ของผู้ใช้โดยใช้ตัวกรองภายใต้ฐาน DN (กำหนดค่าในldap.conf)
  3. ดึงข้อมูลแอตทริบิวต์ LDAP ทั้งหมดที่สามารถรับได้จากที่กำหนดค่าไว้ldap.attrmapแล้วแปลงเป็นแอตทริบิวต์ RADIUS
  4. มันเพิ่มคุณสมบัติเหล่านั้นไปยังรายการตรวจสอบของแพ็กเก็ต RADIUS

เมื่อคุณเปิดใช้งานldapโมดูลในauthenticateส่วนนี่คือสิ่งที่ FreeRADIUS ทำ:

  1. ก็พยายามที่จะผูกกับเซิร์ฟเวอร์ LDAP เป็นผู้ใช้
  2. หากสามารถเชื่อมโยงได้แสดงว่าเป็นการรับรองความถูกต้องที่สำเร็จและRadius-Acceptแพ็คเก็ตจะถูกส่งกลับไปยังไคลเอนต์มิฉะนั้นจะเป็นความล้มเหลวนำไปสู่Radius-Rejectแพ็กเก็ต

ดังนั้นฉันจะกำหนดค่า FreeRADIUS เพื่อให้ PEAP / MS-CHAP-v2 ทำงานกับ LDAP ได้อย่างไร

จุดสำคัญที่นี่คือการเชื่อมโยงในขณะที่ผู้ใช้จะทำงานได้ก็ต่อเมื่อเซิร์ฟเวอร์ FreeRADIUS สามารถดึงรหัสผ่าน cleartext ของผู้ใช้จากแพ็กเก็ต RADIUS ที่ได้รับ นี่เป็นกรณีเฉพาะเมื่อใช้วิธีการตรวจสอบความถูกต้อง PAP หรือ TTLS / PAP (และอาจเป็น EAP / GTC ด้วย) เฉพาะวิธีการ TTLS / PAP เท่านั้นที่มีความปลอดภัยจริงๆและจะไม่สามารถใช้ได้ใน Windows หากคุณต้องการให้ผู้ใช้เชื่อมต่อกับ TTLS / PAP คุณต้องให้ผู้ใช้ติดตั้งซอฟต์แวร์ supplicant TTLS ซึ่งเป็นตัวเลือกที่ไม่ค่อยมี เวลาส่วนใหญ่เมื่อปรับใช้ WiFi ด้วย WPA Enterprise securiy PEAP / MS-CHAP-v2 เป็นตัวเลือกที่เหมาะสมเท่านั้น

ดังนั้นบรรทัดล่างคือ: หากคุณไม่ใช้ PAP หรือ TTLS / PAP คุณสามารถลบldapโมดูลออกจากauthenticateส่วนได้และที่จริงแล้วคุณควร: ผูกมัดเนื่องจากผู้ใช้จะไม่ทำงาน

หากการทดสอบของคุณใช้งานได้เมื่อคุณใช้radtestมันอาจหมายความว่าldapโมดูลนั้นเปิดใช้งานในauthenticateส่วน: มันจะพยายามผูกเป็นผู้ใช้และเนื่องจาก radtest ใช้การพิสูจน์ตัวตน PAP ก็จะประสบความสำเร็จ แต่จะล้มเหลวหากคุณพยายามเชื่อมต่อผ่านจุดเชื่อมต่อเนื่องจากคุณใช้ PEAP / MS-CHAP-v2

สิ่งที่คุณควรทำคือลบldapโมดูลออกจากauthenticateส่วนและตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานmschapโมดูลทั้งในauthorizeและauthenticateส่วน สิ่งที่จะเกิดขึ้นก็คือmschapโมดูลจะดูแลการตรวจสอบความถูกต้องโดยใช้NT-Passwordแอตทริบิวต์ที่ดึงจากเซิร์ฟเวอร์ LDAP ในระหว่างauthorizeเฟส

นี่คือสิ่งที่sites-enabled/defaultไฟล์ของคุณควรมีลักษณะ (ไม่มีความคิดเห็นทั้งหมด):

    ...
    authorize {
        preprocess
        suffix
        eap {
            ok = return
        }
        expiration
        logintime
    }
    authenticate {
        eap
    }
    ...

และนี่คือสิ่งที่sites-enabled/inner-tunnelไฟล์ของคุณควรมีลักษณะ:

    ...
    authorize {
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
            ok = return
        }
        ldap
        expiration
        logintime
    }
    authenticate {
        Auth-Type MS-CHAP {
            mschap
        }
        eap
    }
    ...

สิ่งที่เกี่ยวกับคำเตือน 'ไม่รู้จัก' ดีรหัสผ่าน '?

คุณสามารถเพิกเฉยได้อย่างปลอดภัย มีเพียงเพราะldapโมดูลไม่สามารถหาUserPasswordแอตทริบิวต์เมื่อดึงรายละเอียดผู้ใช้จากเซิร์ฟเวอร์ LDAP ในระหว่างauthorizeเฟส ในกรณีของคุณคุณมีแอNT-Passwordททริบิวต์และนั่นก็ดีสำหรับการPEAP/MS-CHAP-v2พิสูจน์ตัวตน

ฉันเดาว่าคำเตือนมีอยู่เพราะเมื่อldapโมดูลถูกออกแบบPEAP/MS-CHAP-v2ยังไม่มีอยู่ดังนั้นสิ่งเดียวที่ดูเหมือนสมเหตุสมผลในขณะนั้นคือการดึงแอททริบิว UserPassword จากเซิร์ฟเวอร์ LDAP เพื่อใช้ PAP, CHAP, EAP / MD5 หรือวิธีการรับรองความถูกต้องดังกล่าว


3

ฉันจะพยายามที่จะตอบคำถาม OpenSSL ที่นี่: คำตอบสั้น ๆ คือการใช้ FreeRADIUS 2.1.8 หรือสูงกว่าซึ่งรวมถึง OpenSSL มีให้ใน backport ของ Ubuntu Lucid และ Debian Lenny (และอาจจะจบลงใน backport ของ Ubuntu Karmic ด้วย)

นี่คือคำตอบที่ยาว:

น่าเสียดายที่ใบอนุญาต OpenSSL เคยเป็น (ค่อนข้าง) เข้ากันไม่ได้กับใบอนุญาต FreeRADIUS ดังนั้นคน Ubuntu จึงเลือกที่จะให้บริการไบนารี FreeRADIUS ที่ไม่ได้เชื่อมโยงกับ OpenSSL หากคุณต้องการ EAP / TLS, PEAP หรือ TTLS คุณมีที่จะได้รับแหล่งที่มาและรวบรวมพวกเขาด้วย--with-opensslตัวเลือก (ตามสูตรที่คุณใช้อธิบาย)

แต่เมื่อเร็ว ๆปัญหาการออกใบอนุญาตได้รับการแก้ไข FreeRADIUS เวอร์ชั่น 2.1.8 หรือสูงกว่าสามารถรวบรวมและแจกจ่ายด้วย OpenSSL ข่าวร้ายก็คือการกระจาย Ubuntu ที่เสถียรที่สุด (Karmic Koala) รวมเฉพาะ FreeRADIUS 2.1.0 โดยไม่มี OpenSSL (เหมือนกันสำหรับ Debian เนื่องจาก Lenny มี FreeRADIUS 2.0.4 เท่านั้น) ฉันตรวจสอบ Karmic-backport แล้ว แต่ดูเหมือนว่า FreeRADIUS 2.1.8 หรือสูงกว่านั้นยังไม่ได้อัพโหลดที่นั่น แต่ (แต่อาจจะเพิ่มเร็ว ๆ นี้ลองดูที่นี่) ดังนั้นในตอนนี้คุณต้องเปลี่ยนไปใช้ Ubuntu Lucid (ซึ่งรวมถึง FreeRADIUS 2.1.8) หรือติดตั้งเพื่อคอมไพล์ สำหรับผู้ใช้ Debian สิ่งต่าง ๆ ค่อนข้างสดใส: Lenny backports รวม FreeRADIUS 2.1.8 ดังนั้นหากคุณต้องการสิ่งที่มีเสถียรภาพมากและง่ายต่อการติดตั้งและบำรุงรักษาฉันขอแนะนำให้คุณปรับใช้เซิร์ฟเวอร์ที่มี Debian Lenny และติดตั้งแพ็คเกจ FreeRADIUS backported (มันยังช่วยให้คุณสามารถเขียนโมดูลหลามได้ฟรีโดยไม่ต้องคอมไพล์ โมดูลการทดลองทั้งหมด)

ฉันได้รับใบรับรองจาก http://CACert.org (คุณน่าจะได้รับใบรับรอง "ของจริง" ถ้าเป็นไปได้)

มี "gotcha" หนึ่งใบที่มีใบรับรอง "ของจริง" (ตรงข้ามกับใบรับรองที่ลงชื่อด้วยตนเอง)

ฉันใช้ลายเซ็นของ Thawte มันใช้งานได้ดีและผู้ใช้จะเห็นใบรับรอง "ถูกต้อง" ที่สวยงามซึ่งมีชื่อคล้ายwww.my-web-site.comกัน เมื่อผู้ใช้ยอมรับใบรับรองคอมพิวเตอร์ของเขาเข้าใจดีว่าใบรับรองทั้งหมดที่ออกโดยผู้ออกใบรับรองเดียวกันควรเชื่อถือได้ (ฉันทดสอบกับ Windows Vista และ MacOSX Snow Leopard)! ดังนั้นในกรณีของฉันหากแฮ็กเกอร์มีใบรับรองให้พูดwww.some-other-web-site.comเช่นลงชื่อโดย Thawte จากนั้นเขาสามารถเรียกใช้การโจมตี Man-in-the-middle ได้อย่างง่ายดายโดยไม่มีการเตือนใด ๆ บนคอมพิวเตอร์ของผู้ใช้!

การแก้ปัญหานี้อยู่ลึกลงไปในการกำหนดค่าเครือข่ายของคอมพิวเตอร์ของผู้ใช้เพื่อระบุเฉพาะว่า "www.my-web-site.com" ควรเชื่อถือได้ ใช้เวลาเพียงไม่กี่นาที แต่ผู้ใช้ส่วนใหญ่จะไม่ทราบว่าจะกำหนดค่านี้ที่ไหนเว้นแต่คุณจะให้ขั้นตอนที่ชัดเจนและให้แน่ใจว่าผู้ใช้ทุกคนติดตามมัน ฉันยังคงใช้ใบรับรอง "ถูกต้อง" แต่จริงๆแล้วมันน่าผิดหวังที่เห็นว่าทั้ง Windows และ MacOSX แบ่งปัน "บั๊ก" นี้: เชื่อใจผู้ออกใบรับรองแทนใบรับรองเฉพาะ อุ๊ย ...


1

ตามรายงานข้อผิดพลาดการสร้าง FreeRADIUS อย่างง่ายควรแก้ไขปัญหาการสนับสนุน OpenSSH จะต้องทำเพียงครั้งเดียว

ฉันไม่แน่ใจว่าการดูแลระบบจะทำอย่างไรกับการตั้งค่า บ่อยครั้งที่การตั้งค่าที่เกี่ยวข้องและมีรายละเอียดมากขึ้นจะง่ายต่อการจัดการเนื่องจากการตั้งค่าครอบคลุมฐานทั้งหมด คุณหมายถึงการกำหนดค่าจะต้องถูกดร็อปบนเซิร์ฟเวอร์อื่นได้ง่ายเช่นกัน? คุณตั้งค่า LAN แบบไร้สายจำนวนเท่าใด

เมื่อกำหนดค่าแล้วการดูแลระบบควร จำกัด เฉพาะผู้ใช้ LDAP ที่เพิ่มลบและแก้ไข สิ่งเหล่านี้ควรจะง่ายพอที่จะเขียนสคริปต์ด้วย ldapmodify (et al) หรือค้นหาส่วนหน้าแบบกราฟิกของ LDAP ที่เหมาะสมและบันทึกกระบวนการด้วยภาพหน้าจอ


ก่อนอื่นคุณต้องคอมไพล์แพ็คเกจใหม่ทุกครั้งที่มีการอัพเดท (อิจฉา Gentoo-folks ที่นี่ :)) ในส่วนอื่น ๆ ฉันเห็นด้วยอย่างสมบูรณ์ - หากการตั้งค่าครอบคลุมทุกฐานผู้สืบทอดของฉันจะมีงานต้องทำน้อยลง
Morten Siebuhr

0

ฉันพบปัญหาเดียวกัน ฉันต้องดาวน์โหลดแหล่งที่มาของ RADIUS และรวบรวมมันเอง


-1

คุณสามารถใช้ FreeRADIUS2 (พร้อม OpenSSL) + EAP-TLS + WPA2- Enterprice นี่ wery ditailed HOW-TO Windows XP SP3 รองรับการใช้งานดั้งเดิมเช่นเดียวกับ Windows 7, Android 2.3, iPhone, Symbian แต่ฉันไม่ทราบเกี่ยวกับความเข้ากันได้กับ SLDAP ในแบบแผนดังกล่าว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.