ติดตั้ง Radius Server แบบใช้ฐานข้อมูล MySql



- ทดสอบบน Ubuntu 14.04 LTS
freeradius 2.x, MySQL-Server, Apache2, PHP5, phpMyAdmin

  1. ติดตั้งด้วยคำสั่ง sudo apt-get install freeradius freeradius-utils freeradius-mysql

  2. ทดสอบการทำงานของ radius สามารถทำงานได้หรือไม่ โดยแก้ไขไฟล์ /etc/freeradius/users และเพิ่มท้ายไฟล์ดังนี้

    "testradius"     Cleartext-Password := "hello"
                            Reply-Message = "Hello, %{User-Name}"


  3. สั่งให้ freeradius ทำงานใหม่ด้วยคำสั่ง service freeradius restart 
  
  4. ทดสอบการทำงานด้วยคำสั่ง radtest testradius hello 127.0.0.1 0 testing123 จะได้ข้อความประมาณนี้

      Sending Access-Request of id 31 to 127.0.0.1 port 1812
            User-Name = "testradius"
            User-Password = "hello"
            NAS-IP-Address = 192.168.0.12
            NAS-Port = 0
            Message-Authenticator = 0x00000000000000000000000000000000
     rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=31, length=39
            Reply-Message = "Hello, testradius"

  5. ขั้นตอนการทำงานของ configuration ของ freeradius

      แฟ้ม /etc/freeradius/radiusd.conf  เป็นที่ปรับค่าของระบบต่างๆ


      หากเป็น freeradius 2.x จะมีการแยกแฟ้มย่อยออกไปจาก /etc/freeradius/radiusd.conf
      ไปอยู่ที่ /etc/freeradius/sites-available/default  และ /etc/freeradius/modules

      หากเป็น freeradius 1.x ทุกอย่างจะกระจุกตัวในแฟ้ม /etc/freeradius/radiusd.conf


      เมื่อ radius server ได้รับการติดต่อจากผู้ใช้ radius client
      วิธีการตรวจสอบคุณสมบัติของผู้ใช้อยู่ในส่วนที่ชื่อ authorize {...}
      ภายใน authorize {...} นี้ ประกอบด้วยชื่อ modules ตรวจสอบต่างๆ


      หากคุณสมบัติไม่ตรง ปรกติแล้วระบบก็จะรีบดีดออกมาพร้อมแจ้ง reject
      แต่เราสามารถกำหนดให้ไปตรวจสอบต่อกับ authorize modules
      เรียงลำดับอันถัดๆไปที่เหลืออื่นๆได้อีก


      หากคุณสมบัติผ่าน ก็จะเข้าขั้นตอนตรวจสอบรหัสผ่านของผู้ใช้ว่าถูกต้องหรือไม่
      โดย authorize modules จะเลือก modules ที่ต้องการเอง จากส่วนที่ชื่อ authenticate {...}


      หากรหัสผ่านถูกต้อง ก็จะเข้าสู่ส่วนของ postauth {...}
      เป็นการตรวจสอบทิ้งท้ายก่อนส่งคืนค่ากลับให้แก่ radius client ที่ติดต่อมา


      การบันทึกประวัติใช้งานอยู่ในส่วน accounting {...}


      modules ทุกตัวที่ใช้งาน จะต้องได้รับการประกาศไว้ก่อนแล้ว
      หากเป็น freeradius 2.x จะแยก modules ออกเป็นแฟ้มย่อยๆอยู่ที่ directory ชื่อ /etc/freeradius/modules
      หากเป็น freeradius 1.x จะมี modules อยู่ในแฟ้ม /etc/freeradius/radiusd.conf พื้นที่ส่วนของชื่อ modules {...}


  6. ติดตั้ง MySQL Server สำหรับเป็นฐานข้อมูล ด้วยคำสั่ง sudo apt-get install mysql-server
      - ขณะติดตั้งระบบจจะถามข้อมูลเกี่ยวกับรหัสผ่านของ Mysql แนะนำให้ใส่เหมือนกันทุกครั้ง


  7. ติดตั้ง phpMyAdmin สำหรับเป็นเครื่องมือเข้าจัดการฐานข้อมูล จำเป็นต้องติดตั้ง Apache2 และ PHP5 
      - ติดตั้งด้วยคำสั่ง sudo apt-get install apache2 php5 php5-common php5-gd php-pear php-db libapache2-mod-php5 php5-mysql
      - แก้ปัญหาการแสดง error เตือน ServerName ดูบทความ ติดตั้ง Apache2 บน Ubuntu14.04 LTS 

  8. ติดตั้ง phpMyAdmin ด้วยคำสั่ง sudo apt-get install phpmyadmin
      - เลือกสนับสนุนการทำงานบน apache2 โดยกด space bar ให้ขึ้นเครื่องหมาย * และเลือก OK
      - ขณะติดตั้งระบบจะถามข้อมูลเกี่ยวกับรหัสผ่านของการใช้งานโปรแกรมและ MySql แนะนำให้ป้อนเหมือนกับรหัสผ่านของ Mysql Server
      - ทดสอบเข้าใช้งาน phpMyAdmin ได้โดยเข้าไปที่ http://ip address/phpmyadmin


  9. เพิ่มฐานข้อมูล radius เข้าไปยัง MySql Server
      - ใช้คำสั่ง mysql -u root -p ระบบจะถามรหัสผ่าน Mysql ให้ใส่ลงไปตามที่ตั้งค่าไว้
      - สร้างฐานข้อมูลโดยใช้คำสั่ง CREATE DATABASE radius;
      - ใช้คำสั่ง quit; เพื่อออกจากฐานข้อมูล

  10. เพิ่มตารางลงในฐานข้อมูล radius โดยใช้คำสั่ง
      - mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql -p
      - mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql

  11. ปรับแต่ง freeradius เพื่อใช้เชื่อมต่อฐานข้อมูล Mysql แก้ไขไฟล์ /etc/freeradius/sql.conf
        (แนะนำให้สร้าง user จัดการฐานข้อมูล radius โดยเฉพาะ)
        server = "localhost"
        login = "radius"
        password = "xxxxxxxx"
        radius_db = "radius"
        และเอา # หน้า readclients = yes ออก

  12. แก้ไขไฟล์ /etc/freeradius/radiusd.conf หาข้อความตามบรรทัดด้านล่าง และเอาเครื่องหมาย # ด้านหน้าออก
        modules {
             ...
             ...
             $INCLUDE sql.conf 
             $INCLUDE sql/mysql/counter.conf
             ...
        }

  13. แก้ไชไฟล์ /etc/freeradius/sites-available/default หาข้อความตามบรรทัดด้านล่าง และเอาเครื่องหมาย # ด้านหน้า sql ออก
        authorize {
        #files
        sql
        dailycounter
        monthlycounter
        noresetcounter
        }

        accounting {
        sql
        }

        session {
        #radutmp ปิดการเช็ค session จากระบบ ให้เช็คจาก  sql เท่านั้น
        sql
        }
      
      แก้ไขไฟล์ /etc/freeradius/sql/mysql/dialup.conf โดยเปิดการทำงานของ simultaneous ดังนี้

        #######################################################################
        # Simultaneous Use Checking Queries
        #######################################################################

      simul_count_query = "SELECT COUNT(*) \
                             FROM ${acct_table1} \
                             WHERE username = '%{SQL-User-Name}' \
                             AND acctstoptime IS NULL"


  14. สั่ง freeradius ให้เริ่มทำงานใหม่ด้วยคำสั่ง service freeradius restart

  15. ทดสอบสร้าง user ผ่านทาง phpMyAdmin ดังตัวอย่าง





  16. ทดสอบการทำงานของ radius บนฐานข้อมูล MySql ด้วยคำสั่ง
        - radtest user1 password 127.0.0.1 0 testing123      

          Sending Access-Request of id 142 to 127.0.0.1 port 1812                       
                 User-Name = "user1"                       
                 User-Password = "password"                       
                 NAS-IP-Address = 192.168.0.12                       
                 NAS-Port = 0                       
                 Message-Authenticator = 0x00000000000000000000000000000000                 
           rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=142, length=20

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เปิดการใช้งาน SNMP Service บน Windows 7

Docker : Install docker compose on ubuntu 16.04 LTS