การใช้งาน radius server บน PSU12-Sritrang

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 12-06-2561

ดูแลโดย WIBOON


คำเตือน: รหัสผ่าน 123456 และอื่นๆ รวมทั้ง radius secret ที่ใช้ใน workshop ตั้งขึ้นเพื่อให้สะดวกเท่านั้น หากนำไปติดตั้งใช้งานจริง ต้องเปลี่ยนเป็นอย่างอื่นและจดจำไว้


  • ใน PSU12-Sritrang server นั้น radius server ที่ถูกติดตั้งไว้ให้แล้ว คือ PSU-Radius
  • PSU-radius เป็น FreeRADIUS รุ่นที่ปรับแต่งแล้ว (Custom) และใช้ module exec
  • PSU-radius เป็น RADIUS server ที่มีการพัฒนา script ให้ตรวจสอบกับ Database ได้หลายตัว เช่น OpenLDAP, Microsoft AD, Mail Server เป็นต้น และมี log record บันทึกการใช้งานเครื่อง PC
  • ค่า default ติดตั้งพร้อมใช้งานสำหรับ PSU สามารถ authen กับ PSU passport ได้ทันทีผ่านทาง web service
  • สามารถใช้ editor แก้ไขไฟล์ check-ad-ldap.php เพื่อปรับแต่งให้เชื่อมต่อกับ Microsoft AD ของตนเอง
  • ระบบ radius server นี้ได้ถูกเปิดไว้แล้ว


การทดสอบ radius server ทำงานได้

  1. ค่า secret ของ client 127.0.0.1 คือ testing123
  2. ทดสอบ user ใน server แบบ localhost โดยตรง ใช้คำสั่งว่า
    sudo radtest mama 123456 127.0.0.1 0 testing123
  3. ค่า secret ของ client ใน network คือ mytestkey
  4. ทดสอบ user ใน server ผ่าน network ใช้คำสั่งประมาณว่า
    sudo radtest mama 123456 server_ip 0 mytestkey


การตั้งค่าการใช้งานเกี่ยวกับ shared secret key

  1. หากต้องการปรับตั้งค่า shared secret key ที่ radius server บริการแก่ localhost
    ให้แก้ไขรายการ client ที่แฟ้ม /etc/freeradius/clients.conf
    ตัวอย่างประมาณว่า ตั้งค่า secret สำหรับ localhost 127.0.0.1
    client 127.0.0.1 {
    secret = testing123
    }
  2. หากต้องการปรับตั้งค่า shared secret key ให้ radius server นี้บริการผ่าน network
    ให้แก้ไขรายการ client ผ่าน network ที่แฟ้ม /etc/freeradius/clients.conf
    ตัวอย่างประมาณว่า ตั้งค่า secret สำหรับ network 10.0.5.0/24
    client 10.0.5.0/24 {
    secret = mytestkey
    }
  3. หลังจากปรับแต่งค่าของ freeradius จะต้องรีสตาร์ทเซอร์วิส ด้วยคำสั่ง
    sudo service freeradius restart


การตั้งค่าเกี่ยวกับ PSU-radius

  1. การ ยืนยันตัวตนใช้ username / password ตั้งให้ authen กับ server ต่างๆได้ที่แฟ้ม /etc/freeradius/imap-authen.sh เลือกตั้งค่าดังนี้

    CHECK_PREBLACKLIST="YES" หมายถึงตรวจสอบระบบ blacklist ด้วย (default=YES)
    รายชื่อ blacklist อยู่ในแฟ้ม /etc/freeradius/preblacklist.txt
    ถ้ามีชื่อปรากฏในแฟ้ม /etc/freeradius/preblacklist.txt ระบบจะไม่ไป authen เพื่อลดการโดน spam ถล่ม

    AUTHEN_SHADOW="YES" หมายถึงให้ authen กับแฟ้ม /etc/passwd ด้วย (default=YES)

    AUTHEN_AD_LDAP="NO" หมายถึงไม่ต้อง authen กับ ldaps server (default=NO)
    ถ้าต้องการให้ authen กับ ldaps server ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_AD_LDAP="YES"
    แล้วแก้ไขแฟ้ม /etc/freeradius/check-ad-ldap.sh ตั้งค่า LDAP SEVER ให้ถูกต้อง

    AUTHEN_PSU_PASSPORT="YES" หมายถึง authen กับระบบ PSU passport (default=YES)
    ถ้าไม่ต้องการให้ authen กับระบบ PSU passport ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_PSU_PASSPORT="NO"
    หมายเหตุ AUTHEN_PSU_PASSPORT="YES" จะเรียกใช้ web service ผ่านไฟล์ชื่อ soap-authen.php ซึ่งใช้ได้ทันทีใน ม.อ.

    AUTHEN_PSU_MAIL="NO" หมายถึงไม่ต้อง authen กับ mail server ต่างๆใน PSU ด้วย (default=NO)
    ถ้าต้องการให้ authen กับ mail server ต่างๆใน PSU ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_PSU_MAIL="YES"
    ให้ปรับค่า DEFAULT_PSU_MAIL_SERVER="mail.psu.ac.th" ให้เป็น mail server ที่ต้องการ

    AUTHEN_MAIL="NO" หมายถึงไม่ต้อง authen กับ mail server อื่นๆ นอก PSU เช่น gmail, hotmail, yahoo ด้วย (default=NO)
    ถ้าต้องการให้ authen กับ mail server ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_MAIL="YES"
    ให้ ปรับค่า DEFAULT_MAIL_SERVER="gmail.com" ให้เป็น mail server ที่ต้องการ (หมายเหตุ ในวันที่เขียนบทความนี้ gmail account มีการตรวจสอบเข้มกว่า ทำให้ผู้ใช้ต้องตั้งค่าที่ gmail ให้เป็นแบบ simple authentication)

    AUTHEN_LDAP="NO" หมายถึงไม่ต้อง authen กับ PSU ldap server (default=NO)
    ถ้าต้องการให้ authen กับ PSU ldap server ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_LDAP="YES"
    แล้วแก้ไขแฟ้ม /etc/freeradius/check-ldap.sh ตั้งค่า LDAP SEVER ให้ถูกต้องเช่น
    LDAP_HOST="ldap://your.domain"
    LDAP_BASE="dc=aa,dc=bb"

    AUTHEN_SSH="NO" หมายถึงไม่ต้อง authen กับ ssh server (default=NO)
    ถ้าต้องการให้ authen กับ ssh server ต้องแก้ไขตัวแปรเปลี่ยนเป็น AUTHEN_SSH="YES"
    และปรับค่า SSH_SERVER="server.domain" ให้เป็น ssh server ที่ต้องการ

  2. เมื่อ authen ด้วย username / password ถูกต้องผ่านมาได้แล้ว ต่อไปก็เป็นการตรวจสอบรายชือผู้มีสิทธิ์ใช้บริการ
    แก้ไขระบบตรวจสอบสิทธิ์ที่แฟ้ม /etc/freeradius/my-authen.sh ตั้งค่าดังนี้

    CHECK_BLACKLIST="YES" หมายถึงตรวจสอบระบบ blacklist ด้วย (default=YES)
    รายชื่อ blacklist อยู่ในแฟ้ม /etc/freeradius/blacklist.txt
    ถ้ามีชื่อปรากฏในแฟ้ม /etc/freeradius/blacklist.txt จะถูกตัดสิทธ์ใช้งาน

    ALL_PASS="YES" หมายถึงไม่ต้องตรวจสอบ ให้ผ่านได้ทุกคน (default=YES)
    หากเปลี่ยนป็น ALL_PASS="NO" หมายถึงว่าต้องตรวจสอบขั้นตอนอื่นตามลำดับถัดไป

    CHECK_VIPLIST="NO" หมายถึงไม่ต้องตรวจสอบระบบแฟ้ม vip ด้วย (default=NO)
    ถ้าเปลี่ยนเป็น YES จะหมายถึงต้องตรวจสอบด้วยว่า หากมีรายชื่อปรากฏในแฟ้ม /etc/freeradius/viplist.txt ก็จะสามารถผ่านได้เลย

    CHECK_PSU_STAFF="NO" หมายถึงไม่ตรวจสอบว่าเป็น staff ของ PSU หรือไม่ (default=NO)
    ถ้าเปลี่ยนเป็น YES จะหมายถึงว่า ไม่อนุญาตทุกคนที่ authen ผ่าน แต่อนุญาตเฉพาะบุคลากร

    CHECK_PSU_STUDENT="NO" หมายถึงไม่ตรวจสอบว่าเป็น student ของ PSU หรือไม่ (default=NO)
    ถ้าเปลี่ยนเป็น YES จะหมายถึงว่า ไม่อนุญาตทุกคนที่ authen ผ่าน แต่อนุญาตเฉพาะนักศึกษาที่ระบุเจาะจะตามค่าตัวแปร MYSTUDENT=" "

  3. มี บันทึก log record อยู่ที่ /var/log/freeradius/myauthen และ /var/log/freeradius/myaccount ซึ่งต้องใช้สิทธิ Administrator หรือ root เพื่อเข้าดูข้อมูล
    ตัวอย่างเช่น
    root@ubuntu:~# tail /var/log/freeradius/myauthen/20150202
    20150202:15:55:00;"lulu";10.0.100.251;1422867300;CHECK_IN;;127.0.1.1;;PASS
    20150202:15:55:21;"5310110293";10.0.100.251;1422867321;CHECK_IN;;127.0.1.1;;PASS
    20150202:15:57:13;"5310110293";10.0.100.4;1422867433;CHECK_IN;;10.0.100.4;;PASS


วิธีเข้าไปเอา radius accounting มาทำ report
อนุญาตเข้าถึง
chmod -R o+rx /var/log/freeradius

สร้างเส้นทางเชื่อมต่อ
ln -s /var/log/freeradius/myaccount /var/www/html

ตอนนี้
สามารถ view file ทางเว็บได้จาก http://server-ip/html/myaccount
สามารถใช้คำสั่ง grep หาข้อมูลที่ /var/www/html/myaccount
และ
สามารถ get file ไปเก็บอีกเครื่องได้ด้วยคำสั่ง wget ดังนี้
ควรสร้างไดเรกทอรีเก็บไฟล์ไว้ก่อน
mkdir -p server-ip; cd server-ip
wget http://server-ip/html/myaccount/

ไม่อนุญาตเข้าถึง
chmod -R o-rx /var/log/freeradius

ส่วนข้างล่างนี้สำหรับ PSU User
วิธีใช้งาน check-ad-ldap.php ที่พร้อมใช้ LDAPS ของ PSU Passport (ขั้นตอนสำหรับ AUTHEN_AD_LDAP="YES")

การขอใช้งาน LDAPS
ขั้นตอน
1.ไปที่ https://passport.psu.ac.th/
2.ดาวน์โหลด แบบฟอร์มขอใช้ระบบยืนยันตัวตน แล้วทำตามคำแนะนำในหน้าเว็บ เช่น IP ที่นำไฟล์ check-ad-ldap.php ไปรัน
3.(ในกรณีเร่งด่วน) อีเมลเรื่อง "php-ldap for PSU Passport" ส่งมาที่ passport@psu.ac.th (แล้วส่งเป็นหนังสือทางการตัวจริงตามหลัง) พร้อมแนบไฟล์ แบบฟอร์มขอใช้ระบบยืนยันตัวตน ที่กรอกแล้ว หากใช้งานกับ PSU12-Sritrang/PSU-RADIUS แจ้งด้วยว่า "ขอรับรหัสผ่านสำหรับ enable.psu สำหรับ PSU12-Sritrang/PSU-RADIUS"

วิธีใช้งาน
ขั้นตอน
1.โปรดตรวจสอบ php-ldap ติดตั้งแล้ว และ ไฟล์ /etc/ldap/ldap.conf มีบรรทัดนี้ไว้ด้วย
TLS_REQCERT never

2.หากยังไม่มีไฟล์ ให้ไปดาวน์โหลดไฟล์ 3 ไฟล์นี้จาก ftp server เอามาไว้ใน /etc/freeradius

cd /etc/freeradius
wget http://ftp.psu.ac.th/pub/psu-radius/updatefiles/check-ad-ldap_php.psu.gpg -O check-ad-ldap_php.psu.gpg
wget http://ftp.psu.ac.th/pub/psu-radius/updatefiles/enable.psu -O enable.psu
wget http://ftp.psu.ac.th/pub/psu-radius/updatefiles/testpsupassport.sh -O testpsupassport.sh


3.รัน bash enable.psu
คำอธิบาย enable.psu จะเป็น shell script ทำงาน 2 อย่าง
- รอรับรหัสผ่านเพื่อถอดรหัสไฟล์ประเภท gpg เปลี่ยนไฟล์ check-ad-ldap.php ให้กลายเป็นสูตร PSU
- เปลี่ยน imap-authen.sh บรรทัด AUTHEN_AD_LDAP="YES" และ AUTHEN_PSU_PASSPORT="NO" ด้วยคำสั่ง sed ให้เลย

4.แล้วไปเปิดไฟล์ check-ad-ldap.php ดูว่าจะใช้ dc ของวิทยาเขตไหน ก็แก้เองเลย
เวอร์ชันใหม่นี้(updated 2559-08-11) จะเกิดไฟล์ /var/www/html/userinfo.txt ด้วย เปลี่ยนได้ที่ตัวแปร infopath

5.ทดสอบ
bash testpsupassport.sh php-ldap หรือ
bash testpsupassport.sh webservice