ติดตั้ง ftp server + lib-pam-radius + authen psu-passport และ ldaps

จาก Wiki Opensource

ปรับปรุงครั้งล่าสุดวันที่ 09-09-2564
เขียนโดย วิบูลย์

  • ทดสอบกับ ubuntu 14.04 server
  • ทดสอบกับ ubuntu 16.04 server
  • ทดสอบกับ ubuntu 20.04 server


วิธีทำ
1. ติดตั้ง ubuntu server ในขั้นตอน Install ให้เลือกแพ็กเกจ OpenSSH และ LAMP
หากไม่ได้ทำตอน Install Ubuntu 20.04 ใช้คำสั่งนี้
sudo apt-get install apache2 php7.4 mysql-server php7.4-mysql libapache2-mod-php7.4 php7.4-ldap

2. อัปเดต OS
sudo apt-get update
sudo apt-get dist-upgrade

3. ลบแพ็กเกจเก่าๆที่ไม่ใช้แล้วที่เกิดจากการอัปเดต
sudo apt-get autoremove
และ
แก้ปัญหา locale error
แก้โดย ใช้คำสั่ง locale-gen ตัวอย่าง
sudo locale-gen en_US en_US.UTF-8 th_TH th_TH.UTF-8
sudo dpkg-reconfigure locales

4. ติดตั้ง FreeRADIUS
ทำขั้นตอนตามเอกสารการติดตั้ง PSU-radius บน ubuntu
wget http://ftp.psu.ac.th/pub/psu-radius/psu-radius.tgz -N -P /tmp
tar -zxpvf /tmp/psu-radius.tgz -C /tmp
cd /tmp/psu-radius
sudo bash install-psu-radius.sh
และ
ทำ reboot server

5. ติดตั้ง vsftpd
wget http://ftp.psu.ac.th/pub/psu-installer/install-psu-vsftpd.sh -N -P /tmp
cd /tmp
sudo bash install-psu-vsftpd.sh
ตรวจสอบผล /etc/vsftpd.conf ดูที่ท้ายไฟล์ ตัวแปรที่ต้องใช้
#PSU-vsftpd-2557-12-16
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
ทดสอบสร้าง user
sudo useradd -m -b {HOME_DIR} -s /bin/bash {username}
เช่น
sudo useradd -m -b /home -s /bin/bash boy
sudo passwd boy

6. ติดตั้ง lib-pam-radius
wget http://ftp.psu.ac.th/pub/psu-installer/install-psu-pam-radius.sh -N -P /tmp
cd /tmp
sudo bash install-psu-pam-radius.sh
ตรวจสอบผล
/etc/pam_radius_auth.conf
/etc/pam.d/sshd
/etc/pam.d/vsftpd
ทดสอบสร้าง user
sudo useradd -m -b {HOME_DIR} -s /bin/bash {RADIUS username}
เช่น
sudo useradd -m -b /home -s /bin/bash user1.a
ไม่ต้องตั้ง password นะ เพราะตรวจสอบผ่าน RADIUS

7. และถ้าต้องการแก้ไขไฟล์ที่เกี่ยวข้องกับ freeradius เพื่อเลือก database
/etc/freeradius/imap-authen.sh เพื่อเลือก database
ค่า default เลือกตรวจสอบ username ของ PSU-Passport ผ่าน web service
AUTHEN_PSU_PASSPORT="YES"
หากต้องการ เลือกตรวจสอบ username ของ LDAPS ให้ตั้งค่านี้
AUTHEN_AD_LDAP="YES"
แล้วแก้ไขไฟล์ /etc/freeradius/check-ad-ldap.php


หมายเหตุ ถ้าให้ใช้ ftp อย่างเดียว ไม่ให้ ssh เข้าเครื่อง ให้ใช้ shell nologin
ตรวจสอบว่ามี shell ชื่อ nologin อยู่ที่ไหน

mama@ubuntu:~$ which nologin
/usr/sbin/nologin


ตรวจสอบดูรายการใน /etc/shells

mama@ubuntu:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen


ถ้าไม่มีรายการ nologin
ใช้คำสั่งเพิ่ม shell nologin เข้าไปใน /etc/shells เพราะว่า vsftpd จะให้ user ftp เข้ามาได้นั้น shell ของ user นั้นต้องอยู่ใน /etc/shells (ubuntu 20.04 ไม่ต้องทำตรงนี้แล้ว)

mama@ubuntu:~$ echo $(which nologin) | sudo tee -a /etc/shells


ตรวจสอบดูรายการใน /etc/shells อีกครั้ง

mama@ubuntu:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen
/usr/sbin/nologin


ตอนนี้สร้าง user ใหม่ ที่จะให้ใช้ ftp อย่างเดียว และ ssh ไม่ได้

mama@ubuntu:~$ sudo useradd -m -b /home -s /usr/sbin/nologin bobby
mama@ubuntu:~$ sudo passwd bobby


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