Você está na página 1de 121

Setup Ubuntu 8.04.

1 Server (ไม่ต้องต่อสาย Lan)

Remark Network Card 2 ใบ

1. Insert Disk Ubuntu 8.04.1 Server Select English

2. Select Install Ubuntu Server


3. Select English

4. Select Other
5. ให้ Select Thailand โดยการกดตัว T 5 ครัง
้ นะครับ

6. Select No
7. Select Thailand

8. และ Thailand
9. Select Atl+Shift

10. Lan Card Select eth0


11. Select Configure network manually

12. ใส่ IP address ตามการใช้งาน


13. ใส่ Netmask ตามการใช้งาน

14. ใส่ Gateway ตามการใช้งาน


15. ใส่ DNS ตามการใช้งาน

16. ใส่ Hostname ตามการใช้งาน


17. ใส่ Domain name ตามการใช้งาน (ถ้าไม่มี Continue ไปเลย
ครับ)

18. Select Guided w use entire disk


19. Select All Partition

20. Select Yes For Begin Format


21. Begin Format & Install

22. ใส่ Full Name New User


23. ใส่ User Name

24. ใส่ Password


25. ใส่ Password Again

26. Enter ผ่านไปเลยครับ


27. Select LAMP Server & OpenSSH Server

28. ใส่ Password Mysql == mysqlroot


29. ใส่ Password Mysql Again

30. ทำาการติดตัง
้ ต่อไปครับ
31. เรียบร้อยแล้วครับ เอา CD ออก Select Continue เพื่อ Restart

32. หลังจาก Restart แล้ว Login ด้วย User Password ทีส


่ ร้างไว้
(ต่อสาย Lan ได้แล้วครับ)
33. หลังจาก Login ด้วย User Password ทีส
่ ร้างไว้

User Password ที่สร้างไว้ไม่สามารถใช้คำาสั่งต่างๆของ root ได้ ลองสังเกตดูว่า


จะมีตัว $ ต่อท้าย จะต้องแปลงร่างเป็ น root กอ่นครับ

# sudo passwd root >>> พิมพ์คำาสั่ง


[sudo] password for khoonin: >>> ให้ใส่รหัสของยูสเซอร์ใช้
งาน
Enter new UNIX password: >>> ใส่รหัส root
Retype new UNIX password: >>> ยืนยันรหัส root
Passwd: password updated successfully >>> เรียบร้อย
แล้ว

Setup Network ตามทีใ่ ช้งานนะครับ

# nano /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
# dns-* options are implemented by the resolvconf package,
if installed
dns-nameservers 192.168.0.1

auto eth1 >>> เพิ่ม

Save แล้ว Exit ได้เลย


34. ทดลองออก Internet ด้วย คำาสัง่ ping www.yahoo.com
Remote Server ด้วย SSH
Login ด้วย SSH เรียบร้อย

Update Ubuntu Server


# apt-get update

Upgrade Ubuntu Server

# apt-get -y upgrade

แก้ไข ip_forward
เราต้องทำาให้เครื่องนี้ทำาหน้ าที่เป็ นเราเตอร์เพื่อ Forward packet ทุกครัง้ ที่รบ
ี ูต
เครื่อง
ให้แก้ไขแฟ้ ม /etc/sysctl.conf

# nano /etc/sysctl.conf

# Uncomment the next line to enable TCP/IP SYN cookies


# This disables TCP Window Scaling
(http://lkml.org/lkml/2008/2/5/167)
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding


for IPv4
#net.ipv4.ip_forward=1 >>> เอา # ข้างหน้าออก

# Uncomment the next line to enable packet forwarding


for IPv6
#net.ipv6.ip_forward=1

Save แล้ว Exit ได้เลย

สัง่ ทำางานโดยไม่ต้อง Restart

# echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

ค่าที่ตอบกลับต้องได้ 1
เปิดการทำางาน TUN/TAP device

# nano /etc/modules

# /etc/modules: kernel modules to load at boot time.


#
# This file contains the names of kernel modules that
should be loaded
# at boot time, one per line. Lines beginning with "#" are
ignored.

loop
lp
fuse
tun >>> เพิ่ม

Save แล้ว Exit ได้เลย


สัง่ ทำางานโดยไม่ต้อง Restart

# modprobe tun

Update วันเวลาของ Server ให้ทำางานทุกครัง


้ ทีเ่ ปิดเครื่อง

# nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the
execution
# bits.
#
# By default this script does nothing.

/usr/sbin/ntpdate time.navy.mi.th >>> เพิ่ม

exit 0

Save แล้ว Exit ได้เลย

Thaicert Nectec มาตรวิทยาแห่งชาติ อุทกศาสตร์ กองทัพ


clock.thaicert.nectec.o time1.nimt.or.th เรือ
r.th time2.nimt.or.th time.navy.mi.th
time3.nimt.or.th time2.navy.mi.th
time3.navy.mi.th
Setup Chillispot

# apt-get -y install chillispot

IP address of radius server 1: == 127.0.0.1


Radius shared secret: == radiussecret

Ethernet interface for DHCP to listen: == eth1


URL of UAM server: ==
https://192.168.3.1/uam/hotspotlogin.php

URL of UAM homepage: ==


https://192.168.3.1/uam/index.php
Shared password between chillispot and webserver: ==
uamsecret

ติดตัง
้ chillispot เรียบร้อยแล้วครับ
เปิดการใช้งาน Chillispot

# nano /etc/default/chillispot

# /etc/default/chillispot
#
# Enable on system start?
# Change to 1 if you want it to be enabled.
# Please make sure you have configured chillispot first.
ENABLED=0 >>> แก้ให้เป็ น ENABLED=1
#
# chillispot default configuration
CHILLICFG=/etc/chilli.conf
#
# daemon arguments
DAEMON_ARGS="--conf $CHILLICFG"

Save แล้ว Exit ได้เลย


แก้ไข File Chilli.conf (โดยการค้นหา)

# nano /etc/chilli.conf

#net 192.168.182.0/24 >>> แก้ให้เป็ น net 192.168.3.0/24


radiusserver1 127.0.0.1
radiusserver2 127.0.0.1
radiussecret radiussecret
dhcpif eth1
uamserver https://192.168.3.1/uam/hotspotlogin.php
uamhomepage https://192.168.3.1/uam/index.php
uamsecret uamsecret
#uamlisten 192.168.182.1 >>> แก้ให้เป็ น uamlisten 192.168.3.1
#uamallowed www.chillispot.org,10.11.12.0/24 >>> แก้ให้เป็ น
uamallowed www.????.com,192.168.3.0/24 (ออกเน็ตได้โดยไม่ติด
บล็อก)

Save แล้ว Exit ได้เลย


ติดตัง
้ Friewall

# cp /usr/share/doc/chillispot/firewall.iptables
/etc/init.d/chilli.iptables
# chmod a+x /etc/init.d/chilli.iptables
# ln -s ../init.d/chilli.iptables /etc/rcS.d/S41chilli.iptables

สัง่ Script firewall ทำางาน

# /etc/init.d/chilli.iptables

สัง่ Restart ChilliSpot

# /etc/init.d/chillispot restart
แก้ไข File chilli.iptables เพื่อ SSH เข้าทาง eth1 ได้

# nano /etc/init.d/chilli.iptables

EXTIF="eth0"
INTIF="eth1"

$IPTABLES -P INPUT DROP


$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#Allow related and established on all interfaces (input)


$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j
ACCEPT

#Allow releated, established and ssh on $EXTIF. Reject everything


else.
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j
ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT

>>> เพิ่ม 2 บรรทัดข้างล่างนี้ ครับ


#Allow releated, established and ssh on $INTIF.
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 22 --syn -j ACCEPT

#Allow related and established from $INTIF. Drop everything else.


$IPTABLES -A INPUT -i $INTIF -j DROP

Save แล้ว Exit ได้เลย


สัง่ Script firewall ทำางาน Again

# /etc/init.d/chilli.iptables

สัง่ Restart ChilliSpot Again

# /etc/init.d/chillispot restart
ChilliSpot Start เรียบร้อยแล้ว ย้าย Notebook มาต่อกับ Network
วง etc1 ได้ IP Address จาก Server แล้ว

Remote SSH ไปที่ IP eth1 ของ Server


ติดตัง
้ Radius Server

# apt-get -y install freeradius freeradius-mysql freeradius-


dialupadmin
ติดตัง
้ phpMyAdmin
แก้ Config phpMyAdmin
ใช้ Edit Plus แก้บรรทัดที่ 73 ให้เป็ น http

ทดสอบ phpMyAdmin http://192.168.3.1/phpMyAdmin-2.6.4/

Restart Apache

# /etc/init.d/apache2 restart
สร้าง Database freeradius

# mysql -u root –p >>> เข้าใช้งาน Mysql


Enter password: mysqlroot >>> password ที่เราตั้งไว้ตอนติดตั้ง LAMP
mysql> CREATE DATABASE radius;
mysql> quit

ใส่ Freeradius database schema ด้วยคำาสัง่ ดังนี้

# zcat /usr/share/doc/freeradius/examples/mysql.sql.gz | mysql -u


root -p radius
Enter password: mysqlroot
แก้ไขไห้ Freeradius ติดต่อกับ Mysql ได้

# nano /etc/freeradius/sql.conf

sql {
# Database type
# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,
# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc,
rlm_sql_freetds
driver = "rlm_sql_mysql"

# Connect info
server = "localhost"
login = "root"
password = "rootpass" >>> แก้ให้เป็ น Password root ของเรา
# Database table configuration
radius_db = "radius"

Save แล้ว Exit ได้เลย


แก้ไข secret share ของ radius

# nano /etc/freeradius/clients.conf

# default, otherwise it's not a secret any more!


#
# The secret can be any string, up to 31 characters in length.
#
secret = testing123 >>> แก้ให้เป็ น radiussecret
#
# The short name is used as an alias for the fully qualified
# domain name, or the IP address.

Save แล้ว Exit ได้เลย


มา Test Freeradius กันนะครับแต่ต้องสร้าง User สำาหร้บทดสอบ
ก่อน

# nano /etc/freeradius/users

#
#"John Doe" Cleartext-Password := "hello"
# Reply-Message = "Hello, %u"

>>> Copy 2 บรรทัดบนมาแก้ไขครับ


"John Doe" Auth-Type := Local, User-Password == "hello"
Reply-Message = "Hello, %u"

#
# Dial user back and telnet to the default host for that port
#

Save แล้ว Exit ได้เลย

Restart Server เลยครับ

# reboot

ถ้าเกิดปั ญหาไม่สามารถ Remote Server eth1 ด้วย SSH ได้ให้


Repair Network ทีเ่ ครื่อง Notebook จะให้ดี Restart Notebook
เลยครับ
มาต่อกันเลยครับ เช็ค Config Freeradius ต้อง Stop Freeradius
ก่อนครับ

# /etc/init.d/freeradius stop

# freeradius -XXX -A

บรรทัดสุดท้ายขึ้นข้อความ Info: Ready to process requests.


แสดงว่า OK แล้วครับ Crtl+C ออกเลยครับ (โอว์ เยส)
สัง่ Start Freeradius

# /etc/init.d/freeradius start

Test Authen radius (file)

# radtest "John Doe" hello 127.0.0.1 0 radiussecret

Sending Access-Request of id 153 to 127.0.0.1 port 1812


User-Name = "John Doe"
User-Password = "hello"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=153,
length=37
Reply-Message = "Hello, John Doe"

ขึ้นข้อความตอบรับว่า rad_recv: Access-Accept แสดงว่า OK


แล้วครับ (โอว์ เยส) อีกซักที่
เปลีย
่ น Freeradius ไห้มาใช้ Database

# nano /etc/freeradius/radiusd.conf

>>> ค้นหาคำานี้ ครับ See "Authorization Queries" in sql.conf

# Read the 'users' file


Files >>> แก้ไห้เป็ น # Files (ใส่ #)

#
# Look in an SQL database. The schema of the database
# is meant to mirror the "users" file.
#
# See "Authorization Queries" in sql.conf
# sql >>> แก้ไห้เป็ น sql (# เอาออก)

Save แล้ว Exit ได้เลย


Add user ลงใน Mysql ครับ (Username == test, Password ==
secret)

# echo "INSERT INTO radcheck (UserName, Attribute, Value)


VALUES ('test', 'Password', 'secret');" | mysql -u root -p radius
# Enter password: mysqlroot

สัง่ Restart Freeradius

# /etc/init.d/freeradius restart

Test Authen radius (SQL)

# radtest test secret 127.0.0.1 0 radiussecret

Sending Access-Request of id 80 to 127.0.0.1 port 1812


User-Name = "test"
User-Password = "secret"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=80,
length=20
ขึ้นข้อความตอบรับว่า rad_recv: Access-Accept แสดงว่า OK
แล้วครับ (โอว์ เยส) ๆๆๆ

แก้ไข SQL Logging เพื่อเวลาใช้งาน ezradius

# nano /etc/freeradius/sql.conf

postauth_query = "INSERT into ${postauth_table} (user,


pass, reply, dat$

#
# Set to 'yes' to read radius clients from the database ('nas'
table)
#readclients = yes >>> แก้ไห้เป็ น readclients = yes (# เอา
ออก)
}

Save แล้ว Exit ได้เลย


แก้ไข File radius.conf ต่อเลยครับ

# nano /etc/freeradius/radiusd.conf

>>> ค้นหาคำานี้ ครับ See "Accounting queries" in sql.conf

# Log traffic to an SQL database.


#
# See "Accounting queries" in sql.conf
# sql >>> แก้ไห้เป็ น sql (# เอาออก)

#
# Instead of sending the query to the SQL server,
# write it into a log file.

>>> ค้นหาคำานี้ ครับ See "Authentication Logging Queries" in


sql.conf

# After authenticating the user, do another SQL query.


#
# See "Authentication Logging Queries" in sql.conf
# sql >>> แก้ไห้เป็ น sql (# เอาออก)

#
# Instead of sending the query to the SQL server,
# write it into a log file.

Save แล้ว Exit ได้เลย


สัง่ Restart Freeradius

# /etc/init.d/freeradius restart

Test Authen radius (SQL) Again

# radtest test secret 127.0.0.1 0 radiussecret

Sending Access-Request of id 80 to 127.0.0.1 port 1812


User-Name = "test"
User-Password = "secret"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=80,
length=20

ขึ้นข้อความตอบรับว่า rad_recv: Access-Accept แสดงว่า OK


แล้วครับ
ติดตัง
้ SSL เป็ น Modules ของ Apache

# apt-get install -y libapache2-mod-auth-mysql

สร้าง Certificate

# apt-get -y install ssl-cert

สร้าง Folder เก็บ Certificate


# mkdir /etc/apache2/ssl

สร้าง Certificate

# sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf


/etc/apache2/ssl/apache.pem
เรียบร้อยแล้วครับ เปิดใช้งาน SSL

# sudo a2enmod ssl

รับค่า Config ใหม่

# /etc/init.d/apache2 force-reload
สร้าง virtualhost ไว้ Link SSL

Upload File hotspot จาก Folder File Config ไปที /etc/apache2/sites-


available/

แก้ไข File hotspot

# nano /etc/apache2/sites-available/hotspot

NameVirtualHost 192.168.3.1:443 >>> แก้ให้เป็ น IP eth1 ของ


Server
<VirtualHost 192.168.3.1:443> >>> แก้ให้เป็ น IP eth1 ของ Server
ServerAdmin webmaster@domain.org
DocumentRoot "/var/www/hotspot"
ServerName "192.168.3.1" >>> แก้ให้เป็ น IP eth1 ของ Server

Save แล้ว Exit ได้เลย


สัง่ ให้ virtualhost ทำางาน

# sudo a2ensite hotspot

# /etc/init.d/apache2 reload
Open Port

Upload File ports.conf จาก Folder file config ไปที /etc/apache2/

แก้ไข File ports.conf

# nano /etc/apache2/ports.conf

#Listen 80
#
#<IfModule mod_ssl.c>
# Listen 443
#</IfModule>
Listen 192.168.3.1:80 >>> แก้ให้เป็ น IP eth1 ของ Server
Listen 192.168.3.1:443 >>> แก้ให้เป็ น IP eth1 ของ Server

Save แล้ว Exit ได้เลย


แก้ไข File default

# nano /etc/apache2/sites-available/default

NameVirtualHost * >>> แก้ให้เป็ น NameVirtualHost *:80


<VirtualHost *> >>> แก้ให้เป็ น <VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None

Save แล้ว Exit ได้เลย

แก้ไข File apache2.conf


# nano /etc/apache2/apache2.conf

# Do NOT add a slash at the end of the directory path.


#
ServerRoot "/etc/apache2"
ServerName 192.168.3.1 >>> เพิ่ม
#
# The accept serialization lock file MUST BE STORED ON A LOCAL
DISK.

Save แล้ว Exit ได้เลย

แก้ไข File apache2.conf


# nano /etc/hosts

127.0.0.1 localhost
192.168.0.100 THAIEN-HOTSPOT >>> แก้ให้เป็ น 192.168.3.1
THAIEN-HOTSPOT

# The following lines are desirable for IPv6 capable hosts


::1 ip6-localhost ip6-loopback

Save แล้ว Exit ได้เลย

Restart Apache
# /etc/init.d/apache2 restart

ทำาการ Upload Hotspot Login

1. เข้าไปที่ /var/www/ สร้าง Floder hotspot


2. Upload Floder uam จาก โปรแกรมที่ใช้ในการทำา\web\ ไปที่
/var/www/hotspot/

3. แก้ไข File conStatus.php อยู่ท่ี โปรแกรมที่ใช้ในการ


ทำา\web\uam\Connections
4. แล้ว Upload ไปทับของเดิม
5. แก้ไข File index.php อยู่ท่ี โปรแกรมที่ใช้ในการทำา\web\uam\
6. แล้ว Upload ไปทับของเดิม

7. ทดสอบหน้า login hotspot http://google.co.th


8. แก้ภาษา โดยการ Upload File charset จาก Folder File Config ไปที
/etc/apache2/conf.d/

Restart Apache

# /etc/init.d/apache2 restart

9. ทดสอบหน้าอีกที login hotspot http://google.co.th

10. ทดสอบออก Internet โดยใช้ User Password ที่เราสร้างไว้


(User == test Password == secret)

ติดตัง
้ ezradius
Upload Floder manage จาก โปรแกรมที่ใช้ในการทำา\web\ ไปที่ /var/www/

ใช้คำาสัง่ เพื่อแก้ไขเจ้าของโฟลเดอร์นะครับ โดยใช้คำาสัง่ chown

# chown -R www-data:www-data /var/www/manage

เข้า Web ezradius http://192.168.3.1/manage/


Config ezradius
ก่อนอื่นต้องมาระบุตัวฐานข้อมูลของ radius กัน
ก่อนนะครับโดยให้คลิก ๊ ที่ Tool > Config editor

แล้วให้ทำาการแก้ไขตามรูปเลยนะครับ แล้วอย่าลืม save ล่ะ

การจัดการกับ group และ user

การเพิม
่ group
ก่อนที่เราจะทำาการเริ่มเพิ่ม group เพื่อแยกการใช้งานของ user ออกเป็ นกลุ่ม
งาน เช่น อาจารย์ , นักเรียน เราต้องมาทำาความรู้จักกับ Attribute ของ radius
ก่อนซึ่งจะทำาหน้าที่ในการ ควบคุมการใช้งานต่าง ๆ ของระบบของเรานะครับ เรา
จะได้ปรับแต่งการใช้งานได้ตามความเหมาะ อย่างเช่น อาจจะอนุญาตให้อาจารย์
หรือหัวหน้างานมีค่าการ download/upload มากกว่านักเรียนหรือผู้ใช้งานทั่วไป
เอาล่ะเรามาดูความหมายของ Attribute ที่จะนำามาใช้งานกันดีกว่านะครับ

ความหมายของ Attribute ทีน


่ ิ ยมนำ ามาใช้งานในระบบ Chillispot

เริ่มต้นการสร้างกลุ่มงานกันเลยนะครับโดยไปที่ Manage > Add > New


Group

ให้เลือกตามรูปเลยนะครับ
Attribute : Simultaneous-Use คือการ login ซ้อนกันในที่น่ี เราไม่อนุญาตให้
กล่มุ นี้ Logig ซ้อนกันนะครับ ดังนั้นให้ค่า
Perator : :=และ Value : 1 (หากต้องการซ้อนกันได้ให้ Value : 0)

จากนั้นเรามาเพิ่ม Attribute ให้กลุ่มของ teacher กันดีกว่านะครับ


ให้คลิก
๊ ที่ add new attributr แล้วให้ใส่ค่าตามรูปเลยนะครับ

เช็คการใช้งานทุกนาที (60 วินาที) หากไม่ใช้งานให้ diconnect 15


นาที(900 วินาที)

เวลาที่ใช้งานต่อครั้ง 5 ชั่วโมง (18000 นาที) หลังจาก login ให้ redirect ไปยังเว็บ


http://www.srp.ac.th

กำาหนดค่า download เท่ากับ 1024kbps กำาหนดค่า upload เท่ากับ 512kbps

เมื่อทำาการเพิ่ม Attribute แล้วหากไม่มีอะไรผิดพลาดก็จะได้รูป


การจัดการ user

เริ่มต้นการสร้างผู้ใช้งานกันเลยนะครับ โดยไปที่ Manage > Add > New User

ใส่รายละเอียดของผู้ใช้ตามรูปเลขนะครับ จากนั้นก็ Add user แล้วนำาไปใช้งาน


ได้เลยครับ
ไปลองใช้ knoonin กันดีกว่านะครับว่าจะเป็ นอย่างที่เรา set Attribute ไว้หรือ
เปล่าทดลองเปิ ด IE นะครับ

แสดงว่า Certificatr ssl ของเราทำางานแล้วนะครับ ให้เลือกที่ Continue to this


website เลยนะครับ
จะมาเจอหน้าต่างของหน้า index.php ที่เราสร้างไว้ทุกคร้งที่ล๊อคอินนะครับซึ่ง
เราสามารถแก้ไขหน้านี้ แล้วใช้เป็ นประกาศต่าง ๆ ของหน่ วยงานได้นะครับ เช่น
แจ้งการประชุม (เพราะยังไงหากใช้อินเตอร์เน็ตก็ต้องมาเจอหน้านี้ ก่อน) จากนั้น
เลือก เข้าสู่ระบบ

เย้ ๆๆ ได้แล้วค่ะ ใช้งานได้ 5 ชั่วโมง เพราะอยู่ในกลุ่มของ teacher แล้วยัง


redirect หน้าแรกที่ http://www.srp.ac.ch ครบทุกอย่างนะครับ

การใช้งานส่วนต่าง ๆ ของ ezradius


User Online
สำาหรับดูว่า ณ ปั จจุบน
ั มี user อะไรใช้งานอยู่บ้าง โดยไปที่ View > Online
users

จะได้ดังรูป

****หมายเหตุ ezRadius ****


เปลีย
่ นเป็ น Version 1.1.4 and above เพื่อให้สามารถไช้ Password
MD5 ได้

เพิม
่ /แก้ไข user ไม่ต้องเลือก Cleartext password

Add Port 3779 เพื่อ Kick User (1)


# nano /etc/init.d/chillispot

DESC="Chillispot captive portal"


NAME=chillispot
DAEMON=/usr/sbin/chilli
DAEMON_ARGS="--conf /etc/chilli.conf" >>> แก้ไขให้
เป็ น DAEMON_ARGS="--coaport3779 --conf /etc/chilli.conf"

PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

Save แล้ว Exit ได้เลย

Add Port 3779 เพื่อ Kick User (2)


# nano /etc/chilli.conf

# TAG: macsuffix
# Suffix to add to MAC address in order to form the username.
# Normally you do not need to uncomment this tag.
#macsuffix suffix

coaport 3779 >>> เพิ่ม

Save แล้ว Exit ได้เลย

Restart ChilliSpot (นานซักหน่ อย)

# /etc/init.d/chillispot restart

ดูการใช้งานของ User ย้อนหลัง


เราสามารถดูการใช้งานของ User ย้อนหลังได้โดยสามารถระบุวันที่ ที่ต้องการดู
หรือ ชื่อ User ที่ต้องการ หรือทั้งวันที่และ user โดยในที่น้ี จะยกตัวอย่างดู user
และวันที่
โดยให้เลือกที่ Accounting > Per User and Date

ใส่ช่ ือ user วันที่เริ่ม และวันที่สน


ิ้ สุด ตามรูป

จะได้รายละเอียด ดังรูป

การติดตัง
้ Transparent Proxy
เริ่มต้นติดตั้ง squid สำาหรับทำาหน้าที่เก็บ cache และ sarg ไว้รายงานการใช้
งานผ่านหน้าเว็บ

# sudo apt-get -y install squid sarg

หลังจากติดตั้งแล้วให้แก้ไขที่ไฟล์ของ squid โดยใช้คำาสั่ง

# nano /etc/squid/squid.conf

โดยให้แก้ไขดังนี้
http_port 3128
#cache_mem 8 MB
#cache_dir ufs /var/spool/squid 100 16 256
#acl our_networks src 192.168.2.0/24
#http_access allow our_networks
access.log /path/access.log squid
#emulate_httpd_log off

>>> แก้เป็ น (โดยใช้วิธีค้นหา)

http_port 3128 transparent


cache_mem 64 MB
cache_dir ufs /var/spool/squid 100 16 2000
acl our_networks src 192.168.3.0/24
http_access allow our_networks
access.log /path/access.log
emulate_httpd_log on
>>> บรรทัดสุดท้าย
visible_hostname THAIEN-HOTSPOT >>>เพิ่ม

Save แล้ว Exit ได้เลย

สัง่ รีสตาร์ท squid

# /etc/init.d/squid restart
จากนั้นมาทำาให้ user เข้าใช้งาน proxy นะครับโดยไปแก้ไขที่ไฟล์
chilli.iptables

# nano /etc/init.d/chilli.iptables

#Allow releated, established and ssh on $EXTIF. Reject everything else.


$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT
#Allow related and established from $INTIF. Drop everything else.
$IPTABLES -A INPUT -i $INTIF -j DROP
#Allow http and https on other interfaces (input).
#This is only needed if authentication server is on same server as chilli
$IPTABLES -A INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT
#Allow 3990 on other interfaces (input).
$IPTABLES -A INPUT -p tcp -m tcp --dport 3990 --syn -j ACCEPT

>>> เพิ่มเข้าไป
#Allow Tranparent proxy
$IPTABLES -A INPUT -p tcp -m tcp --dport 3128 --syn -j ACCEPT

#Allow everything on loopback interface.


$IPTABLES -A INPUT -i lo -j ACCEPT

>>> เพิ่มเข้าไป
#Allow Tranparent proxy
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 3128 --syn -j
DROP
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 192.168.3.0/16 --dport
80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 80 -j REDIRECT
--to-ports 3128
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 88 -j REDIRECT
--to-ports 3128

Save แล้ว Exit ได้เลย


การเพิม
่ Port ต่างๆให้ Redirect ไปที่ Proxy (เช่น port 88)

# nano /etc/init.d/chilli.iptables

#Allow everything on loopback interface.


$IPTABLES -A INPUT -i lo -j ACCEPT

#Allow Tranparent proxy


$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 3128 --syn -j
DROP
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 192.168.3.0/16 --dport
80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 80 -j REDIRECT
--to-ports 3128
>>> เพิ่มเข้าไป
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 88 -j REDIRECT
--to-ports 3128

Save แล้ว Exit ได้เลย


การเพิม
่ port ให้ผ่าน Proxy ได้ (เช่น port 88)

# nano /etc/squid/squid.conf

>>>ค้นหาคำานี้ acl to_localhost dst 127.0.0.0/8

#Recommended minimum configuration:


acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 88 # http cz >>>เพื่มบรรทัดนี้
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais

Save แล้ว Exit ได้เลย

สัง่ รีสตาร์ท squid

# /etc/init.d/squid restart

สัง่ ให้ transparent ทำางาน


# /etc/init.d/chilli.iptables

ดู access.log ของ Squid

ทดลองใช้งาน internet ผ่าน gateway server

# tail /var/log/squid/access.log -f

Ctrl+c ออก

การดูรายงานของ SARG (Squid report)


สั่งให้ sarg ทำางานได้เลยโดย

# sarg

จากนั้นก็สามารถเข้าดูรายงานการใช้เว็บได้เลยครับโดยดูจาก IE ได้เลข
โดยพิมพ์ว่า http://192.168.3.1/squid-reports

ตัง
้ เวลาให้ sarg ทำางานผ่าน crontab

# nano /etc/crontab

# m h dom mon dow user command


17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
#sarg squid report
0* * * * root /usr/bin/sarg
#Shut Down
05 20 * * * root shutdown -h now

Save แล้ว Exit ได้เลย


Logrotate

เป็ นกลไกของระบบปฏิบัติการลีนุกซ์ท่ีช่วยลบ log file ที่เก่ากว่าออกไป แล้ว


สร้างไฟล์ log ขึ้นใหม่ ซึง
่ มีผลทำาให้ไฟล์ log ไม่ใหญ่มากเกินไป โดยการสร้าง
log file มาใหม่น้ันจะไปสร้างซำ้ากับไฟล์เดิม จะมี option มากกมายให้เราแก้ไข
แต่ พอสรุป ได้ คราวๆ ดังนี้

1. Weekly-daily-monthly หมายถึง ให้มีการ rotate ใน ทุกๆ


อาทิตย์ (weekly) หรือ ทุกๆ วัน (daily) หรือ เดือน (monthly)
2. rotate xx หมายถึง สั่งให้มีการ rotate xx ครั้ง ก่อนลบไฟล์เก่าทิ้งไป
3. compress หมายถึง สั่งให้มีการ zip ไฟล์ท่ีถก ู rotate ไปแล้ว
4. delaycompress หมายถึง สั่งให้มีการชะลอการ zip ไป 1 ครั้ง ทำาให้
การ rotate ครั้งแรกเป็ นการเปลี่ยนชื่อไฟล์เพียงอย่างเดี่ยว และจะถูก
zip ในการ rotate ในครั้งต่อไป
5. notifemply-ifemply หมายถึง ไม่ให้มีการ rotate เมื่อ log file
นั้นว่าง
6. postrotate เป็ นการกำาหนดให้มีการรันคำาสั่ง หลังจาก ที่มีการ rotate
ไปแล้ว
7. endscript เป็ นการจบคำาสั่งของ postrotate
8. mail(address) เป็ นการสั่งให้ระบบส่ง log file ให้ผู้ดูแลระบบทาง E-
mail
9. prerotage/endscript เป็ นการกำาหนดให้มีการรันคำาสั่ง ก่อน ที่จะมี
การมีการ rotate ซึ่งจะเป็ นแบบ postrotate
แก้ไข Logrotate squid

# nano /etc/logrotate.d/squid

/var/log/squid/access.log {
daily
compress
delaycompress
rotate 2
missingok
nocreate
sharedscripts
# prerotate
# test ! -x /usr/sbin/sarg-maint || /usr/sbin/sarg-maint
# endscript
# postrotate
# test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
# endscript
}

>>> แก้เป็ น

/var/log/squid/access.log /var/log/squid/store.log {
daily
compress
# delaycompress
rotate 1
missingok
nocreate
sharedscripts
# prerotate
# test ! -x /usr/sbin/sarg-maint || /usr/sbin/sarg-maint
# endscript
# postrotate
# test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate

# endscript
}
>>> เพิ่ม
/var/log/squid/cache.log {
weekly
compress
rotate 2
missingok
nocreate
sharedscripts
}

Save แล้ว Exit ได้เลย


ต้องไปแก้ค่าทีไ
่ ฟล์ radiusd.conf

# nano /etc/freeradius/radiusd.conf

>>> ค้นหา detailfile

detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d

>>> แก้ไห้เป็ น

detailfile = ${radacctdir}/%{Client-IP-Address}/details

Save แล้ว Exit ได้เลย

แก้ไขไฟล์ ชื่อว่า /etc/logrotate.d/freeradius เพื่อจัดการกับไฟล์ ดังกล่าว

# nano /etc/logrotate.d/freeradius

/var/log/freeradius/*.log {
weekly
rotate 52
compress
notifempty
}

>>> แก้เป็ น

/var/log/freeradius/radacct/127.0.0.1/details {
daily
compress
rotate 1
missingok
notifempty
}

Save แล้ว Exit ได้เลย


สัง่ freeradius Restart

# /etc/init.d/freeradius restart

ทดลอง login เข้า internet จะมี file details ขึ้นมา


ที่/var/log/freeradius/radacct/127.0.0.1

สัง่ logrotate ทำางาน

# /etc/cron.daily/logrotate
ในทีน่ ้ี ผมได้สร้าง folder /home/LOG ไว้แล้วนะครับ ใครทีย
่ ังสร้างไม่
เป็ น ก็สร้างตามนี้ เลย

# mkdir /home/LOG

สร้าง File changeaccess.sh เพื่อเปลียนชื่อ File

# nano /home/changeaccess.sh

#!/bin/sh
timeaccess=`date +%Y-%m-%d`
cp /var/log/squid/access.log.1.gz /home/LOG/$timeaccess-
access.log.gz
cp /var/log/squid/store.log.1.gz /home/LOG/$timeaccess-
store.log.gz
cp /var/log/freeradius/radacct/127.0.0.1/details.1.gz /home/LOG/
$timeaccess-freeradius.log.gz

Save แล้ว Exit ได้เลย

chmod +x /home/changeaccess.sh ( เพื่อให้ โปรแกรมสามารถ


รัน script นี่ ได้)

# chmod +x /home/changeaccess.sh

เวลาจะเรียกใช้

# cd /home
# ./changeaccess.sh
ตัง
้ เวลาให้ logrotate ทำางานผ่าน crontab

# nano /etc/crontab

# m h dom mon dow user command


17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
#sarg squid report
00 20 * * * root /usr/bin/sarg
#logrotate
05 20 * * * root /etc/cron.daily/logrotate
#change File name
15 20 * * * root sh /home/changeaccess.sh
#Shut Down
30 20 * * * root shutdown -h now

Save แล้ว Exit ได้เลย

TIP ก่อนจบคอร์ส
แก้ไขปั ญหา session ค้าง
ท่านจะนำาไปสร้าง shell scrip ไว้สำาหรับสะดวกในการใช้งานก็ได้นะครับ

# nano /home/clearlog.sh
rm /var/log/freeradius/radutmp
rm /var/log/freeradius/radwtmp
touch /var/log/freeradius/radutmp
touch /var/log/freeradius/radwtmp
chown freerad:freerad /var/log/freeradius/radutmp
chown freerad:freerad /var/log/freeradius/radwtmp

Save แล้ว Exit ได้เลย

แก้ permittion

# chmod 700 /home/clearlog.sh

เวลาใช้งาน

# cd /home

# ./clearlog.sh

จากนั้นนำาไปไว้ใน /etc/rc.local นะครับ

ดูสถานะของ Lan card

# mii-tool

ดูเนื้ อที่เก็บ Cache

# du –sh /var/spool/squid

ติดตัง
้ bandwidthd แทน sarg ใน ubuntu

# apt-get -y install bandwidthd


เลือก การ์ด ทีต ่ ้องการ ให้แสดงผล
any ทุกการ์ด
การ์ดอื่นก็แล้วแต่ ถ้าทำา chilli ก็ tun

เลือก IP Address tun0 (วงภายใน) รอจนเสร็จ


แก้ไข Config Apache
# nano /etc/apache2/apache2.conf

# The internationalized error documents require mod_alias,


mod_include
# and mod_negotiation. To activate them, uncomment the
following 30 lines.

>>> เพิ่ม 5 บรรทัดด้นล้างนี้ ครับ

Alias /bandwidthd "/var/lib/bandwidthd/htdocs"


<Directory "/var/lib/bandwidthd/htdocs">
Order Allow,Deny
Allow from All
</Directory>

# Alias /error/ "/usr/share/apache2/error/" >>> ค้นหาบรรทัดนี้ ครับ


#
# <Directory "/usr/share/apache2/error">
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var

Save แล้ว Exit ได้เลย

Restart Apache
# /etc/init.d/apache2 restart

แก้ Config bandwidthd

# nano /etc/bandwidthd/bandwidthd.conf

ตรงนี้ เลื่อนไปบรรทัดล่างสุดๆ เอา # หน้าบรรทัดสุดท้ายออก

#Set META REFRESH for static pages in seconds(default 150, use


0 to disable).
#meta_refresh 150

meta_refresh 150

#Set the static html output directory


#htdocs_dir "/var/lib/bandwidthd/htdocs" >>> เอา # ออก

Save แล้ว Exit ได้เลย

เสร็จแล้วสัง่ ให้ทำางาน
# bandwidthd

แล้ว restart bandwidthd

# /etc/init.d/bandwidthd restart

ดูผลหน้าเวบเลยครับ http://192.168.3.1/bandwidthd

ตัง
้ crontab ให้ bandwidthd อัพเดทข้อมูลทุกวันตอน เทียงคืน 5 นาที
# nano /etc/crontab

#
#sarg squid report
00 * * * root /usr/bin/sarg
#bandwidthd
50 * * * root /usr/bin/bandwidt
#Shut Down
10 0 * * * root shutdown -h now

Save แล้ว Exit ได้เลย

ติดตัง
้ syslog-ng
# apt-get -y install syslog-ng

ดาวน์โหลดโปรแกรม php syslog viewer ด้วยคำาสัง่ ไว้ใน /tmp/

# cd /tmp/

# wget http://downloads.sourceforge.net/phpsyslogviewer/phpsyslogviewer-
7.2.1.tar.bz2

ติดตัง
้ โปรแกรม bzip2 ด้วยคำาสัง่ ยังอยู่ใน /tmp/ นะครับ
# apt-get install bzip2

แตกไฟล์ phpsyslogviewer ด้วยคำาสัง่

# tar xjvf phpsyslogviewer-7.2.1.tar.bz2

ดาวน์โหลดโปรแกรม speedupd

ซึ่งเป็ นโปรแกรมเร่งความเร็วให้เอนจิ้นป้ อนข้อมูลสู่ฐานข้อมูล mysql ด้วยคำาสั่ง


# wget
http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/spee
dupd-7.3.2.tar.bz2

โฟลเดอร์ install ของ phpsyslogviewer จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้


กับฐานข้อมูล เราจะต้องทำาการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิด
พลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้ มีข้ันตอนดังนี้

1. เปลี่ยนไดเร็กทอรี่ไปยังโฟลเดอร์ phpsyslogviwer-7.2.1

# cd phpsyslogviewer-7.2.1

2. เข้าสู่ mysql ด้วยคำาสั่ง


mysql -u root -p แล้วป้ อนรหัสผ่านของ root
# mysql -u root -p

3. สร้างฐานข้อมูลชื่อ syslogng ด้วยคำาสั่ง

mysql>create database syslogng;

4. ออกจาก mysql ด้วยคำาสั่ง

mysql> exit;
5. สร้างตารางข้อมูลด้วยการใช้ script จากไฟล์ install/phpsyslogviewer.
sql ด้วยคำาสั่ง

# mysql -u root -p syslogng < install/phpsyslogviewer.sql

ป้ อนค่า username และ password เข้าไปในไฟล์ intall/newuser.sql.php ดัง


เช่น

# nano install/newuser.sql.php

// 02110-1301, USA.
// -------------------------------------------------------------------

$user = ""; // Your Username >>> ใส่ User


$pass = ""; // Your Password ใส่ Password

// -------------------------------------------------------------------
Save แล้ว Exit ได้เลย

*****User และ Password ต้องไม่ซ้ ำากัน


ติดตั้งโปรแกรม php5-cli เพื่อให้รันคำาสั่ง php ผ่าน command line ด้วยคำาสั่ง

# apt-get -y install php5-cli


รันภาษา php-command line เพื่อ insert ข้อมูล user และ pass เข้าสู่ตาราง
ข้อมูล user ของฐานข้อมูล syslogng ด้วยคำาสั่งดังนี้

# php install/newuser.sql.php

รันภาษา php-command line ด้วยคำาสั่งต่อไปนี้

# php install/newuser.sql.php | mysql -u root -p syslogng

จัดการเว็บไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ได้ ด้วยการ
สำาเนาไฟล์ ด้วยคำาสั่งดังนี้

# cp -R htdocs /var/www/phpsyslogviewer
แก้ไขไฟล์คอนฟิ กคือ /var/www/phpsyslogviewer/config.php เพื่อกำาหนด
ค่าที่สำาคัญเกี่ยวกับฐานข้อมูลดังนี้

# nano /var/www/phpsyslogviewer/config.php

// USER DEFINED VARIABLES


// -------------------------------------------------------------------

$db_user = "syslog"; // Database Username


$db_pass = "syslog"; // Database Password
$db_host = "localhost"; // Database Hostname
$db_name = "syslog"; // Database Name

>>> แก้เป็ น

$db_user = "root"; // Database Username


$db_pass = "mysqlroot"; // Database Password
$db_host = "localhost"; // Database Hostname
$db_name = "syslogng"; // Database Name

Save แล้ว Exit ได้เลย

รันคำาสัง่ ต่อไปนี้
# chown root:www-data /var/www/phpsyslogviewer/config.php

# chmod 440 /var/www/phpsyslogviewer/config.php

เข้าดูเว็บไซต์ของ phpsyslogviewer ที่ http://192.168.3.1/phpsyslog


viewer
ติดตัง ้ แพ็คเกจ speedupd-7.3.2
เพื่อเร่งความเร็วให้เอนจิ้นป้ อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้ อาจย่ง
ุ ยากนิ ด
หน่ อย เพราะต้องทำาการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ ขอยำ้าว่าต้องทำานะครับ
ขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็ นอย่างไร ให้ทำา
ตามคำาสั่งต่อไปนี้

# cd .. >>> ออกมาที่ /tmp/ ก่อนครับ

# tar xjvf speedupd-7.3.2.tar.bz2

# cd speedupd-7.3.2 >>> เข้าไปที่ / speedupd-7.3.2 / ก่อนครับ


# apt-get –y install build-essential cmake libmysqlclient15-dev
libdaemon-dev libconfuse-dev

# apt-get -y install debhelper cmake libdaemon-dev libconfuse-


dev fakeroot
ถ้า่มีปัญหาให้อ่านดู อาจจะต้องติดตั้ง libmysqlclient15-dev เิพิ่มเติมด้วยคำาสั่ง

# apt-get –y install libmysqlclient15-dev

# dpkg-buildpackage –rfakeroot
ตอนนี้ เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.deb
(สำาหรับ 64 bit OS จะชื่อ speedupd_7.3.0_amd64.deb) ให้ตด ิ ตั้งแพ็คเกจ
และกำาหนดค่าให้กับไฟล์ speedupd.conf ดังนี้

# cd ..

# ls

(สำาหรับเครื่องที่เป็ น 64 bit ใช้ dpkg -i speedupd_7.3.0_i386.deb)


(สำาหรับเครื่องที่เป็ น 64 bit ใช้ speedupd_7.3.0_amd64.deb)

# dpkg -i speedupd_7.3.0_i386.deb

แก้ไข Config speedupd


# nano /etc/speedupd.conf

dbusername = syslog
dbpassword = syslog
dbhostname = localhost
dbdatabase = syslog

>>> แก้เป็ น

dbusername = root
dbpassword = mysqlroot
dbhostname = localhost
dbdatabase = syslogng

Save แล้ว Exit ได้เลย

Start Speedupd
# /etc/init.d/speedupd start

ต่อไปเป็ นการกำาหนดค่า syslog-ng

ให้กับ syslog-ng ทำาการส่งค่าไปเก็บยังฐานข้อมูลทำาตามนี้ เลยครับ ง่าย ๆ ผู้


เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถ
ทำาความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิ คเก่าอยู่แล้วก็เพิ่มเติมเฉพาะ
ส่วนที่ต้องการเก็บข้อมูลในฐานข้อมูลได้เลยครับ โดยให้แก้ไขในไฟล์
/etc/syslog-ng/syslog-ng.conf เป็ นดังต่อไปนี้ ซึ่งถ้าส่วนไหนมีอยู่แล้วก็ไม่ต้อง
นะครับ

# nano /etc/syslog-ng/syslog-ng.conf

***options
options {
recv_time_zone (+07:00);
send_time_zone (+07:00);
sync (0);
time_reopen (100);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (yes);
chain_hostnames(yes);
keep_hostname (yes);
};

***source
source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
udp(ip(0.0.0.0) port(514));
tcp(ip(0.0.0.0) port(514) keep-alive(yes));
};

***destination
destination d_mysql {pipe("/var/log/mysql.pipe" template("INSERT
INTO logs (host, facility, priority, level, tag, datetime, program, msg)
VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG',
'$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM',
'$MSG' );\n") template-escape(yes));
};

***filter
filter f_kernel { facility (kern); };
filter f_messages { level(info..emerg) and not (facility(mail) or
facility(authpriv) or facility(cron)); };

***log
log {source(s_sys); filter(f_messages); destination(d_mysql); };
log {source(s_sys); filter(f_kernel); destination(d_mysql); };

Save แล้ว Exit ได้เลย

สร้างสคริปเพื่อทำาไปน์สำาหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้
เป็ น bash สคริปครับ ฟั งดูวุ่นวายแต่ทำาจริงง่ายมากครับ ให้
สร้าง script file ด้วยคำาสัง่ ต่อไปนี้
# nano syslog2mysql.sh

>>>แล้วใส่ข้อมูลต่อไปนี้ ลงไปในไฟล์ แล้วบันทึกไฟล์

#!/bin/bash
if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
mysql -u root --password=radius syslogng < /var/log/mysql.pipe
>/dev/null
done

Save แล้ว Exit ได้เลย

ทำาการเปลีย
่ นสิทธิไฟล์ แล้วรันคำาสัง่ ต่อไปนี้

# chmod +x syslog2mysql.sh

# ./syslog2mysql.sh &

# /etc/init.d/syslog-ng start

****หมายเหตุ****
จากการติดตัง
้ phpsyslogviewer แล้ว phpsyslogviewer มีแต้ log
Start,stop ของ Syslog-ng เท่านัน

การส่งค่าจาก squid ไปยัง syslog


# tail -F /var/log/squid/access.log | logger -t squid -p user.info

จากนัน
้ ทำาการส่งค่าจาก radiusd ไปยัง syslog ดัง
้ นี้

# tail -F /var/log/radius/radacct/127.0.0.1/details | logger -t


radiusd -p user.info

หมายเหตุ คำาสั่ง logger -t จะใช้กำาหนดชื่อข้อมูลการจราจรคอมพิวเตอร์ ในที่น้ี


เราจะใช้แทนว่าข้อมูลการ
จราจรคอมพิวเตอร มาจากเซอร์ วิสใด เช็น squid และ radius เป็ นต้น และต้อง
ห้ามลืมใช้ tail -F เพราะจะเป็ นการ
กำาหนดให้ tail ทำางานไม่ว่าไฟล์ ต้นทางจะมีการสร้างไฟล์ ใหม่หรือไม่ก็ตาม
สำาาหรับวิธีการแก้ปัญหาไฟล์ ที่อาจจะใหญ่เกินไปสำาหรับข้อมูลล็อกไฟล์ ของ
radius Server เราสามารถ
ใช้งานร่วมกันกับ

การตัง
้ ค่าให้ส่งข้อมูลการจราจรคอมพิวเตอร์ จาก squid และ radius
โดยให้ทำางานทุกครัง ้ หลังเปิดเครื่องดัง
้ นี้

# nano /etc/init.d/rc.capture

#!/bin/bash
tail -F /var/log/squid/access.log | logger -t squid -p user.info &
tail -F /var/log/freeradius/radacct/127.0.0.1/details | logger -t
radiusd -p user.info &

Save แล้ว Exit ได้เลย

จากนัน ้ สัง่ ให้สามารถรันได้และสร้างลิงค์ ให้ทำางานทุกครัง


้ หลังเปิด
เครื่อง

# chmod a+x /etc/init.d/rc.capture

# ln -s /etc/init.d/rc.capture /etc/rcS.d/S88rccapture
สัง่ ให้ rc.capture ทำางาน

# /etc/init.d/rc.capture

ตรวจสอบ syslog

# tail -f /var/log/syslog

ทดลองใช้งาน Internet

ติดตัง
้ webmin
# cd /var

# tar zxvf webmin-1.480.tar.gz

# cd webmin-1.480

# sh setup.sh
การทำางานของ Samba จะทำางานอยู่บน Port 137,138 และ 139

* 137 Name Service : SMB จะใช้ port นี้ ในการถามชื่อเครื่องคอมพิวเตอร์


ด้วย การรับส่ง package UDP (User Datagram Protocol) (โดยไม่ต้องใช้ IP
เข้ามาช่วย)

* 138 Datagram Service : SMB จะใช้ port นี้ ในการ Browse หาชื่อเครื่อง

* 139 Session Service : SMB จะใช้ Port นี้ ในการรับส่งข้อมูลระหว่างเครื่อง


ด้วย โปรโตคอล TCP ซึ่ีงแน่ นอนว่ามีการรับรองการส่ง ข้อมูลว่าไปถึงปลายทาง
แน่นอน
แก้ไข File chilli.iptables เพื่อ webmin และ samba เข้าทาง eth1
ได้

# nano /etc/init.d/chilli.iptables

#Allow releated, established and ssh on $EXTIF. Reject everything


else.
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j
ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT

#Allow releated, established and ssh on $IXTIF.


$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 22 --syn -j ACCEPT
>>> เพิ่ม 5 บรรทัดข้างล่างนี้ ครับ
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 137 --syn -j
ACCEPT
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 138 --syn -j
ACCEPT
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 139 --syn -j
ACCEPT
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 445 --syn -j
ACCEPT
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 10000 --syn -j
ACCEPT

#Allow related and established from $INTIF. Drop everything else.


$IPTABLES -A INPUT -i $INTIF -j DROP

Save แล้ว Exit ได้เลย


ทดสอบเข้า webmin http://192.168.3.1:10000/

เอกสารชุดนี่ ได้ข้อมูลได้ความรู้มาจาก http://www.linuxthai.org


และ Web Linux ต่างๆอีกมากมายและต้องขอบคุณ คุณ chalee
VDO3,VDO4

ขอแสดงความนับถือ
วิสุทธิ ์ การะเกตุ

Você também pode gostar