บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 9-10-2554
ดูแลโดย วิบูลย์
สภาพแวดล้อม
- ใช้บริการ adsl router modem ที่มีช่องพอร์ตแลน เพื่อต่อกับ PC
- PC ที่มีการ์ดแลน 2 การ์ด การ์ดใบแรกต่อกับ adsl router modem การ์ดอีกใบต่อกับ access point
- ติดตั้งลงในฮาร์ดดิสก์ที่มีหลายพาร์ทิชัน คือ พาร์ทิชันที่ 1 มี Windows 7 พาร์ทิชันที่ 2 มี linux ubuntu desktop และมีการเตรียมพื้นที่เว้นว่างไว้สำหรับทำเรื่องนี้
- เตรียมแผ่น CD-ROM ชื่อ ubuntu-10.04.3-server-i386
- ใช้เอดิเตอร์ชื่อ vi ในการแก้ไขไฟล์
ซอฟต์แวร์ที่ใช้
-
freeradius ที่ตั้งค่าการทำงานแบบ radius ครอบจักรวาล
- สามารถใช้ username ของ gmail หรืออื่นๆ ได้
- ไม่ต้องสร้าง/ดูแล username
- เพียงแค่กำหนดว่าจะอนุญาต username ใดบ้าง กำหนดในไฟล์ viplist.txt
- หรือไม่อนุญาตใครบ้าง กำหนดในไฟล์ blacklist.txt -
coovachilli เป็น captive portal ที่แจกจ่ายหมายเลขไอพีเอง
default คือ 10.1.0.0/24 - gologin1.24.zip เป็น URL web login ที่ได้จาก chillispot ปรับปรุงมาจาก hotspotlogin.php
ขั้นตอน
-
บูตแผ่น ubuntu-10.04.3-server-i386
-
เลือกจัดการพาร์ทิชันแบบ manual
ระบุพื้นที่ที่เว้นว่างไว้ ให้เป็น ext3 และตั้งชื่อว่าเป็น /
ระบุพื้นที่ที่เว้นว่างไว้อีกที่ ให้เป็น linux-swap
-
เมื่อมีคำถามเกี่ยวกับ grub install ให้เลือก grub on MBR
-
เมื่อมีคำถามเกี่ยวกับ applications ที่จะเลือกติดตั้ง
เลือก OpenSSH server อย่างเดียว
-
เสร็จ ให้รีบูต เอาแผ่นออก
-
จะบูตขึ้นหน้าจอ grub มีหลาย OS ให้เลือกใช้
-
เข้าใช้งานด้วย username ที่ตั้งไว้ เช่น mama
-
ตั้งค่าการเทียบเวลามาตรฐาน
sudo ntpdate pool.ntp.org
-
ตั้งค่าการเทียบเวลาตอนเปิดเครื่องใหม่ และทุกวัน
sudo vi /etc/rc.local
ใส่บรรทัดข้อความดังนี้
ntpdate pool.ntp.org
sudo vi /etc/cron.daily/update-time
ใส่บรรทัดข้อความดังนี้
ntpdate pool.ntp.org
sudo chmod +x /etc/cron.daily/update-time
sudo /etc/init.d/cron restart
-
ปรับปรุง OS
แก้ไขให้ชี้เซิร์ฟเวอร์มาที่ประเทศไทย
sudo vi /etc/apt/sources.list
แทน us ด้วย th
sudo apt-get update
sudo apt-get dist-upgrade
-
สั่งรีบูตเพื่อให้การปรับปรุงมีผล
sudo reboot
-
ติดตั้งโปรแกรม freeradius และ php
sudo apt-get install freeradius freeradius-utils php5 php5-imap php5-cli php-soap
หากต้องการใช้ mysql และ ldap
sudo apt-get install freeradius-mysql freeradius-ldap
-
แก้ไขค่า radius secret key
sudo vi /etc/freeradius/clients.conf
ใส่ข้อมูลดังนี้
client localhost {
secret = mytestkey
shortname = private-network
}
และเพิ่ม client ใดๆ
client 0.0.0.0/0 {
secret = mytestkey
shortname = world-network
}
-
ทดสอบ freeradius ด้วย radius secret key
sudo /etc/init.d/freeradius restart
sudo radtest mama your_password 127.0.0.1 0 mytestkey
-
ติดตั้งโปรแกรมชุด radius ครอบจักรวาล ตามตำรา opensource.psu.ac.th
sudo apt-get install expect mkpasswd
sudo apt-get install libpam-radius-auth
sudo apt-get install gcc
sudo apt-get install gawk
-
แก้ไขค่า secret
sudo vi /etc/pam_radius_auth.conf
แก้ไขค่า secret ให้เหมือนกับ clients.conf
-
ลอก scripts ชุด radius ครอบจักรวาล ตามตำรา opensource.psu.ac.th
copy and paste จากลิงค์
-
ติดตั้ง coovachilli
wget ftp://ftp.psu.ac.th/pub/coova/coova-chilli_1.2.5_i386.deb -P /tmp
sudo dpkg -i /tmp/coova-chilli_1.2.5_i386.deb
sudo cp /etc/chilli/defaults /etc/chilli/config
-
คอนฟิก coovachilli
sudo vi /etc/default/chilli
ตั้งค่าดังนี้
START_CHILLI=1
sudo vi /etc/chilli/config
ตั้งค่าดังนี้
HS_RADSECRET=mytestkey
HS_UAMSECRET=uamsecret
HS_TCP_PORTS="80 443"
เพิ่มบรรทัดต่อท้ายไฟล์
HS_RAD_PROTO=pap
sudo vi /etc/chilli/up.sh
ให้เพิ่มต่อหลังบรรทัดท้ายสุดข้อความว่า iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE
-
ติดตั้ง apache2
sudo apt-get install apache2 apache2-doc libapache2-mod-perl2
sudo vi /etc/apache2/conf.d/charset
กำหนด AddDefaultCharset UTF-8
-
เตรียมสำหรับคอนฟิก apache2 SSL
sudo mkdir -p /etc/apache2/ssl
sudo mkdir -p /var/www/hotspot
แก้ไขชื่อโฮสต์
sudo vi /etc/hosts
แก้ไขดังนี้
127.0.0.1 localhost.local ubuntuplus.local
และเพิ่มบรรทัด
10.1.0.1 ubuntuplus ubuntuplus.local
ดูชื่อโฮสต์ที่จะใช้ในการคอนฟิก SSL
hostname -f
-
คอนฟิก SSL
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
เมื่อถามชื่อโฮสต์ ให้ระบุตาม hostname -f
สร้างไฟล์ apache config สำหรับ SSL
sudo vi /etc/apache2/sites-available/hotspot
มีข้อมูลดังนี้
NameVirtualHost 10.1.0.1:443
ServerAdmin webmaster@domain.org
DocumentRoot "/var/www/hotspot"
ServerName "10.1.0.1"
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /var/www/hotspot/cgi-bin/
);
define('UAMSECRET', 'uamsecret');
ทำรูปใหม่ใช้แทนรูปกราฟฟิค เช่น ตัวอย่างรูปนี้
wget http://netserv.cc.psu.ac.th/files/hotspot/wireless_logo.png
sudo cp wireless_logo.png /var/www/hotspot/gologin/go/
-
คอนฟิก coovachilli
sudo vi /etc/chilli/config
แก้ไขดังนี้
HS_UAMFORMAT=https://\$HS_UAMSERVER/gologin/go/index.php
-
รีสตาร์ทโปรแกรม
sudo /etc/init.d/freeradius restart
sudo /etc/init.d/chilli start
-
ทดสอบโดยนำโน้ตบุ๊คเชื่อมต่อกับ SSID ของ access point แล้วจะเห็นว่าเมื่อไปยังเว็บไซต์จะมีการ redirect มาหน้า login
-
ตั้งค่าให้ coovachilli ทำงานเมื่อเปิดเครื่อง
sudo vi /etc/rc.local
แก้ไขบรรทัด
#!/bin/sh -e
ให้เป็น
#!/bin/sh
แล้วใส่บรรทัดดังนี้
/etc/init.d/chilli start
-
ทดสอบรีบูตอีกครั้ง เมื่อกลับเข้ามาจะต้องเห็น
อินเทอร์เฟส eth0 มีหมายเลขไอพีที่รับจาก adsl router modem เช่น 192.168.10.2
อินเทอร์เฟส eth1 ไม่มีหมายเลขไอพี
อินเทอร์เฟส tun0 มีหมายเลขไอพี 10.1.0.1
-
ต่อไปก็เป็นการตั้งค่าตรวจสอบรายชือผู้มีสิทธิ์ใช้บริการ แก้ไขระบบตรวจสอบสิทธิ์ที่แฟ้ม /etc/freeradius/my-authen.sh ตั้งค่าดังนี้
CHECK_BLACKLIST="YES" หมายถึงตรวจสอบระบบ blacklist ด้วย
รายชื่อในแฟ้ม /etc/freeradius/blacklist.txt จะถูกตัดสิทธ์ใช้งาน
ALL_PASS="NO" หมายถึงว่าต้องตรวจสอบขั้นตอนอื่นตามลำดับถัดไป
CHECK_VIPLIST="YES" หมายถึงตรวจสอบระบบแฟ้ม vip ด้วย
รายชื่อในแฟ้ม /etc/freeradius/viplist.txt ก็จะสามารถผ่านได้เลย
CHECK_PSU_STAFF="YES" หมายถึงตรวจสอบว่าเป็น staff ของ PSU หรือไม่
CHECK_PSU_STUDENT="YES" หมายถึงตรวจสอบว่าเป็น student ของ PSU หรือไม่
# การตรวจสอบดู log ของการ authen และ authorize ใช้คำสั่งดังนี้
sudo cat /var/log/freeradius/myauthen/20110809
ผลลัพธ์ที่ได้จากการคอนฟิก
เมื่อใช้ บัญชีผู้ใช้บนลินุกซ์
20110809:09:53:57;"mama";127.0.0.1;1312858437;CHECK_IN
20110809:09:53:57;"mama";127.0.0.1;1312858437;PASS
เมื่อใช้ อีเมลภายนอก ที่เป็นรายการใน blacklist
20110809:09:56:06;"wwiboon@hotmail.com";127.0.0.1;1312858566;CHECK_IN
20110809:09:56:06;"wwiboon@hotmail.com";127.0.0.1;1312858566;PASS
20110809:09:56:06;"wwiboon@hotmail.com";127.0.0.1;1312858566;BLACKLIST
เมื่อใช้ อีเมลภายนอก ที่เป็นรายการใน viplist
20110809:09:52:04;"wiboon080808@gmail.com";127.0.0.1;1312858324;CHECK_IN
20110809:09:52:04;"wiboon080808@gmail.com";127.0.0.1;1312858324;PASS
เมื่อใช้ PSU Passport wiboon.w ไม่ต้องระบุใดๆต่อท้าย
20110809:10:31:54;"wiboon.w";127.0.0.1;1312860714;CHECK_IN
20110809:10:31:54;"wiboon.w";127.0.0.1;1312860714;PASS
เมื่อใช้ อีเมลมหาวิทยาลัย wiboon.w ไม่ต้องระบุใดๆต่อท้าย
20110809:10:32:18;"wiboon.w";127.0.0.1;1312860738;CHECK_IN
20110809:10:32:18;"wiboon.w";127.0.0.1;1312860738;PASS
โปรแกรมจะทำตามลำดับเช็ค PSU Passport แล้วไปเช็ค PSU e-mail
ลองแล