ติดตั้ง pam radius module บน ubuntu

จาก Wiki Opensource

ปรับปรุงล่าสุดเมื่อ 19 ม.ค. 2558

บันทึกโดยวิบูลย์ วราสิทธิชัย

ทดสอบบน

  • Ubuntu 14.04
  • Linux mint 17

เป็นคำแนะนำเกี่ยวกับ


  • PAM คือ Pluggable Authentication Modules
  • เป็นการทำ Internet services ที่ต้องการ authen กับ external user name database โดยใช้วิธีติดตั้ง PAM Radius Module เพิ่มลงใน Ubuntu server
  • เป็นการทำ login ด้วย pam ที่ linux mint (ubuntu client) สำหรับห้องบริการคอมพิวเตอร์
  • แนะนำการติดตั้งแบบ manual ที่ต้องแก้ไข config files ที่เกี่ยวข้อง


ขั้นตอน
1.ติดตั้งด้วยคำสั่ง sudo apt-get install libpam-radius-auth -y

2.ตรวจสอบโดยใช้สิทธิ administrator ว่ามี config files ในที่ต่างๆดังนี้
/etc/pam_radius_auth.conf
/etc/pam.d/

3.แก้ไข /etc/pam_radius_auth.conf
ถ้า RADIUS server อยู่ที่เครื่อง IP 10.0.100.251 และ มี radius shared secret คือ mysecret
เดิม
127.0.0.1 secret 1
other-server other-secret 3

เปลี่ยนเป็น
#127.0.0.1 secret 1
10.0.100.251 mysecret 3
ถ้า RADIUS server อยู่ที่เครื่องนี้ และ มี radius shared secret คือ mysecret
เดิม
127.0.0.1 secret 1
other-server other-secret 3

เปลี่ยนเป็น
127.0.0.1 mysecret 1
#other-server other-secret 3

ถ้า Internet services คือ FTP server ทำต่อขั้นตอน 4 ถึง 7 เท่านั้น
ถ้า Internet services คือ SSH server ทำต่อขั้นตอน 8 ถึง 10 เท่านั้น
ถ้าต้องการเพียงการ login เข้าใช้งาน linux desktop เช่น linux mint client ในห้องบริการคอมพิวเตอร์ ทำต่อขั้นตอน 11 ถึง 13 เท่านั้น

ตัวอย่างการนำไปใช้ 1
ถ้า Internet services คือ FTP server ทำต่อขั้นตอน 4 ถึง 7 เท่านั้น
4.แก้ไข/etc/pam.d/vsftpd
ใส่บรรทัดนี้
auth sufficient pam_radius_auth.so
เหนือบรรทัดนี้
@include common-auth

5.จัดการเพิ่ม user ที่เป็น user name ที่ใช้กับ RADIUS server
ทดสอบสร้าง user
sudo useradd -m -b {HOME_DIR} -s /bin/bash {RADIUS username}
เช่น
sudo useradd -m -b /home -s /bin/bash user1.a
ไม่ต้องตั้ง password นะ เพราะตรวจสอบผ่าน RADIUS
และ
ถ้าให้ใช้ ftp อย่างเดียว ไม่ให้ ssh เข้าเครื่อง ให้ใช้ -s /etc/nologin
sudo useradd -m -b /home -s /etc/nologin user2.a

6.จัดการ config file ของ vsftpd เพื่อให้ใช้งาน ftp server ได้
เช่น
anonymous_enable=YES
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/home/$USER
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list


7.ทดสอบใช้งาน ftp
ftp localhost


ตัวอย่างการนำไปใช้ 2
ถ้า Internet services คือ SSH server ทำต่อขั้นตอน 8 ถึง 10 เท่านั้น
8.แก้ไข /etc/pam.d/sshd
ใส่บรรทัดนี้
auth sufficient pam_radius_auth.so
เหนือบรรทัดนี้
@include common-auth

9.จัดการเพิ่ม user ที่เป็น user name ที่ใช้กับ RADIUS server
ทดสอบสร้าง user
sudo useradd -m -b {HOME_DIR} -s /bin/bash {RADIUS username}
เช่น
sudo useradd -m -b /home -s /bin/bash user1.a
ไม่ต้องตั้ง password นะ เพราะตรวจสอบผ่าน RADIUS

10.ทดสอบ ssh
ssh lulu@ubuntu


ตัวอย่างการนำไปใช้ 3
ถ้าต้องการเพียงการ login เข้าใช้งาน linux desktop เช่น linux mint client ในห้องบริการคอมพิวเตอร์ ทำต่อขั้นตอน 11 ถึง 13 เท่านั้น
11. แก้ไข /etc/pam.d/common-auth
บรรทัดเดิม
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;

เปลี่ยนเป็น
# here are the per-package modules (the "Primary" block)
# wiboon change success to 3 here
auth [success=3 default=ignore] pam_unix.so nullok_secure
# wiboon add 1 line here
auth [success=1 default=ignore] pam_radius_auth.so
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# wiboon add 1 line here
auth optional pam_exec.so /bin/bash /etc/pam.d/pam-useradd.sh
# prime the stack with a positive return value if there isn't one already;

12. สร้างไฟล์เพิ่ม 1 ไฟล์ คือ /etc/pam.d/pam-useradd.sh
#!/bin/bash
if [ -z "$(grep "^${PAM_USER}:" /etc/passwd)" ]; then
useradd -m -b /tmp -s /bin/bash ${PAM_USER}
else
mkhomedir_helper ${PAM_USER} 0077 /etc/skel
fi


13. ในหน้า login
login: ใส่ radius_user
password: ใส่ password ของ radius_user


References:
(1) http://linuxexplore.com/how-tos/pam-with-radius-authentication/
(2) https://www.digitalocean.com/community/tutorials/how-to-use-pam-to-configure-authentication-on-an-ubuntu-12-04-vps