(Last updated: 19 ก.ค. 2561)
เปลี่ยน pGina เวอร์ชั่นให้เหมาะกับ Firewall มหาวิทยาลัย ล่าสุด https://sysadmin.psu.ac.th/2017/04/12/pgina-fork-3-2-4-1-configuration/
(Last updated: 4 ก.ย. 2561)
มีเวอร์ชั่น pGina 3.9.9.12 ที่เพิ่ม plugins อีกเยอะ และ แก้บั๊ก
https://sysadmin.psu.ac.th/2018/09/04/pgina-fork-3-9-9-12-configuration/
ทั้ง pGina 3.2.4.1 กับ 3.9.9.12 ก็ใช้งานได้
บทความนี้เกี่ยวกับการตั้งค่าโปรแกรม pGina for Windows และการตั้งค่าในเครื่องบริการ FreeRADIUS เพื่อส่งค่า RADIUS Accounting ไปยัง Firewall ของมหาวิทยาลัย
pGina คือ โปรแกรมสำหรับให้ผู้ใช้ใส่ username และ password ก่อนใช้งาน Windows ได้ (Windows Authentication)
FreeRADIUS คือ เครื่องบริการที่ทำหน้าที่ตรวจสอบ Authentication, Authorization และ Accounting ของการใช้งานบัญชีผู้ใช้
Firewall ของมหาวิทยาลัยสงขลานครินทร์ทำหน้าที่เป็น Internet Authentication อนุญาตการใช้งานด้วย ค่า username และ password จากหน้า login รวมทั้งค่าที่ถูกส่งต่อมาจาก wireless adaptor ที่ตั้งค่า 802.1x และ RADIUS server
เครื่องคอมพิวเตอร์ที่ติดตั้ง Windows ในห้องบริการคอมพิวเตอร์ตามคณะ หากติดตั้งโปรแกรม pGina for Windows ที่ตั้งค่าได้ถูกต้องก็จะทำให้ผู้ใช้งานในมหาวิทยาลัยที่มี Firewall เปิด/ปิดการอนุญาตให้ใช้งานอินเทอร์เน็ต ไม่จำเป็นที่จะต้อง login ซ้ำอีกครั้งหนึ่งหลังจากที่ login ผ่านหน้าโปรแกรม pGina แล้ว
วิธีการก็คือ ตั้งค่าโปรแกรม pGina เลือกใช้ RADIUS Plugin ดังนี้
ที่แท็บ Plugin Selection ใส่ค่าต่าง ๆ ที่จำเป็น สำหรับ RADIUS Plugin
ช่อง Server: ใส่ IP Address ของเครื่องบริการ FreeRADIUS
ช่อง Authentication Port: ใส่เลข 1812 (ค่า default)
ช่อง Accounting Port: ใส่เลข 1813 (ค่า default)
ช่อง Timeout: ใส่เลข 2.50 (ค่า default)
ช่อง Retry: ใส่เลข 3 (ค่า default)
ช่อง Shared Secret: ใส่รหัสที่ตรงกับที่ตั้งไว้ใน FreeRADIUS (/etc/freeradius/clients.conf)
ตัวเลือก Machine Identifier เลือก IP Address Only (ค่า default)
ตัวเลือก Use modified username for accounting ไม่ใช้ (ค่า default)
ช่อง IP Address Suggestion: ใส่เลขส่วนต้นของ IP Address (ในรูปคือใช้ IP ที่ขึ้นต้นด้วย 10.0.100) เพื่อใช้ในกรณีที่เครื่อง Windows อาจมีการติดตั้งโปรแกรม Oracle VM VirtualBox ซึ่งทำให้เกิดมี network adaptor มากกว่า 1 อันทำให้มี IP มากกว่า 1 เลข (ดูด้วย ipconfig /all)
คำอธิบาย IP Address Suggestion
IP Address Suggestion – When recording the IP address of the machine, the plugin will record the first viable IP address in the system. In setups with multiple network adapters (including virtual adaptors), this may record the wrong address. You may enter any regular expression that will match the desired IP address. For example “192.168.1.” will attempt to find an address matching the 192.168.1 subnet. “192.168.(24|25).” will match the 192.168.24 or 192.168.25 subnets. If no match is found, the first viable IP address is used.
ที่แท็บ Plugin Order ในส่วนแรก Authentication ตั้งให้ RADIUS Plugin อยู่ก่อน Local Machine
จากนั้นให้ตั้งค่าที่เครื่องบริการ FreeRADIUS ดังนี้
แก้ไขเพิ่มเติมเมื่อ 22 มี.ค. 2560
เพื่อให้ส่งค่า port = 1813 (ประมาณบรรทัดที่ 176 ใน section home_server localhost {…})
FreeRADIUS Version 2.2.8 แก้ไขไฟล์ /etc/freeradius/proxy.conf อาจด้วยคำสั่ง vi หรือ nano ตามชอบ
FreeRADIUS Version 3.0.16 แก้ไขไฟล์ /etc/freeradius/3.0/proxy.conf
เพื่อให้มีค่า realm NULL (ประมาณบรรทัดที่ 672) ที่กำหนดค่า Accounting Port เพียงอย่างเดียวส่งไปยังเครื่อง Firewall
ในรูปตัวอย่างเครื่อง Firewall คือ radius.hatyai.psu.ac.th และต้องรู้ค่า secret ที่ตั้งเพื่อใช้สำหรับเครื่อง FreeRADIUS และ Firewall ในที่นี้คือ yoursecret (อันนี้ต้องมีการติดต่อกับ network administrator ของมหาวิทยาลัยเพื่อร่วมกันตั้งค่านี้)
(25 ก.ค. 2561 เพิ่มเนื้อหา)
FreeRADIUS Version 2.2.8 แก้ไขที่แฟ้ม /etc/freeradius/sites-available/default
FreeRADIUS Version 3.0.16 แก้ไขที่แฟ้ม /etc/freeradius/3.0/sites-available/default
ประมาณบรรทัดที่ 325 Pre-accounting ใน module ชื่อ preacct
preacct {
preprocess
เพิ่ม
}
หากยังไม่มีบรรทัดเหล่านี้ ให้เพิ่มด้วยต่อท้ายบรรทัด preprocess
# append update for pGina no attribute Framed-IP-Address if (NAS-IP-Address != 127.0.0.1) { update request { Framed-IP-Address = "%{NAS-IP-Address}" } }
(จบส่วนเพิ่มเนื้อหา)
แล้ว restart FreeRADIUS ใหม่
sudo service freeradius stop
sudo service freeradius start
จากนั้นรอให้ทางฝั่งผู้ดูแล Firewall ตั้งค่าโปรแกรมที่ดึงข้อมูลที่ FreeRADIUS ของเราส่งไปนำไปใส่ใน Firewall Rule อนุญาตเครื่องไคลเอ็นต์ไม่ต้อง login ซ้ำ