แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - golfreeze

Pages: 1 ... 138 139 [140] 141 142 ... 146
2086
อย่าลืม map ip client ไว้ที่เครื่อง SNMP server ในไฟล์

/etc/hosts ด้วยน่ะครับ

172.x.x.1 SATAN.XXX.COM SATAN
172.x.x.2 DEVIL.XXX.COM DEVIL

2087
สำหรับใครที่ลง snmp กับ OS linux distro Debian ก็ตามนี้ครับ

#apt-get install snmp snmpd

edit config ที่
#vi /etc/snmp/snmpd.conf

com2sec readonly 10.0.0.x/24 ชื่อcommunityเราครับ

เสร็จแล้วก็แก้ที่ไฟล์

#vi /etc/default/snmpd

SNMPDRUN=yes

ผมใส่ # หน้าตัวนี้ครับเพราะว่าถ้าใช้เป็น snmp client ให้ตัว snmp server มาเรียกใช้งาน
#SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

เสร็จแล้ว restart service
#/etc/init.d/snmpd restart
ครับ
check ว่า service รันปกติไม๊ ต้องมี port 199 ขึ้นดังนี้

#netstat -na | grep -i listen
tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN

2088
ปกติ เวลาผมจะ ลง cacti ไว้ที่เครื่องที่ SNMP ตัวหลักแล้ว ก็จะลง พวก

net-snmp ไว้ที่ เครื่องลูกๆ ด้วยครับ ดังนี้

#ลง snmp ที่ เครื่องลูก
#cd /usr/ports/net-mgmt/net-snmp

#make install clean

เสร็จแล้วทำการ config snmpd.conf ที่
#vi /usr/local/share/snmp/snmpd.conf


ดังนี้

syslocation 0
syscontact golfreeze@packetlove.com
sysservices 0
#อนุญาติให้เครื่องไหนบ้างเข้ามาถาม snmp
rocommunity golf 10.0.1.149

#ส่วนของ config วง network ที่จะติดต่อ
com2sec work 10.0.0.0/23 golf

group MyROGroup v1 work

view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

เสร็จแล้วก็กำหนด

#vi /etc/rc.conf
add
snmpd_enable="YES"

แล้วสั่ง
#/usr/local/etc/rc.d/snmpd restart
แล้วลอง สั่ง snmpwalk จากเครื่อง SNMP หลักมาที่เครื่องนี้ ได้ครับ

2089
####
#Create graph cacti in my style
####

Packages:
1.rrdtool
2.apache22+php5+MYsql
3.cacti+report+syslog
4.snmp+(net-snmp)

install net-snmp
#cd /usr/ports/net-mgmt/net-snmp
#make install clean

install php5-snmp
#cd /usr/ports/lang/php5-extension
#make config
เลือก snmp ด้วย
#make install clean

install rrdtool
#cd /usr/ports/net/rrdtool
#make install clean

#fetch http://www.cacti.net/downloads/cacti-0.8.7a.tar.gz


# Unzip and Untar
tar xvf cacti-0.8.6j.tar.gz

# Put Cacti under your public web area document root
mv /usr/src/ cacti-0.8.6j /opt/apache/htdocs/cacti

# Create the MySQL database:
/opt/mysql/bin/mysqladmin --user=root -p create cacti

# Import the default cacti database:
/opt/mysql/bin/mysql --user=root -p cacti < /opt/apache/htdocs/cacti/cacti.sql

# Create a MySQL username and password for Cacti
/opt/mysql/bin/mysql --user=root -p mysql
GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword';
GRANT ALL ON cacti.* TO cactiuser@"%"; IDENTIFIED BY 'cactipassword';
flush privileges;
exit

# Edit include/config.php and specify the MySQL user, password and database for your Cacti
configuration
vi /opt/apache/htdocs/cacti/include/config.php
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipassword";
$config['url_path'] = '/cacti/';

เสร็จแล้ว ทำการสั่ง
/usr/local/bin/php poller.php เพื่อให้ gen graph ให้ด้วยน่ะครับ
หรือไม่ก็เพิ่มใน crontab
#crontab -e

*/5 * * * * /usr/local/bin/php /home/golf/public_html/cacti/poller.php 2>/dev/null

---------------------------------------------------------

เครื่องที่เป็น ศูนย์กลาง ให้ เพิ่มที่ไฟล์ /etc/hosts ด้วยเช่น

central = ip 10.0.1.149

10.0.1.149 x1.xxx.co.th
10.0.1.148 x2.xxx.co.th (เครื่องที่ตอบ snmp มาให้เครื่องหลัก)
10.0.1.146 x3.xxx.co.th(เครื่องที่ตอบ snmp มาให้เครื่องหลัก)

เช็คได้จากเครื่องหลัก คือ
#snmpwalk -v 1 -c ชื่อcommunity ipปลายทางที่ต้องการถามsnmp

-----------------------------------------------------------
#config /usr/local/share/snmp/snmpd.conf เครื่องหลัก

syslocation 0
syscontact golfreeze@packetlove.com
sysservices 0
#อนุญาติให้เครื่องไหนบ้างเข้ามาถาม snmp
rocommunity golf 10.0.1.149

#ส่วนของ config วง network ที่จะติดต่อ
com2sec work 10.0.0.0/23 golf

group MyROGroup v1 work

view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

-----------------------------------------------------------
#config /usr/local/share/snmp/snmpd.conf เครื่องที่จะให้ถูกถามข้อมูล snmp
syslocation 0
syscontact golfreeze@packetlove.com
sysservices 0
#อนุญาติให้เครื่องไหนบ้างเข้ามาถาม snmp
rocommunity golf 10.0.1.149

#ส่วนของ config วง network ที่จะติดต่อ
com2sec work 10.0.0.0/23 golf

group MyROGroup v1 work

view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
----------------------------------------------------------

#install ntop with cacti

แก้ bug ที่ xorg-libraly ก่อนครับไม่งั้นจะ มี error ว่ายังไม่ได้ ทำ symlink

Edit by
#cd /usr/X11R6
#find -d . -print | cpio -pvdam /usr/local
#mv /usr/X11R6 /usr/X11R6.backup
#ln -s /usr/local /usr/X11R6
can solve problem and
#cd /usr/ports/net/ntop ผมเลือก option tcpwrapper อันเดียวครับ
#make install clean

2090
#เพิ่มเติมการทำให้เห็นเป็นแบบ Bit หรือ M
ถ้าทำเป็น bit ก็เพิ่ม option เข้าไปใหม่
แต่ต้องไปลบ index.html อันเดิมก่อนน่ะครับ
แล้วค่อยสั่ง run
#cfgmaker --global 'options[_]: growright,bits'
--global 'WorkDir: /home/golf/public_html/mrtg' --output=/etc/mrtg.cfg public@127.0.0.1

แล้วสั่ง run
#indexmaker /etc/mrtg.cfg --columns=1
--output /home/golf/public_html/mrtg/index.html
แล้วสั่ง
#mrtg 3 ครั้ง
เสร็จ

2091
ใช้ OS Debian
1.สั่งโหลด จาก mirror ในไทยครับ
โดยเพิ่มไปที่ /etc/apt/sources.list
แล้วสั่ง apt-get update แล้ว
#apt-get install snmpd
#apt-get install mrtg
แล้วมา config
#/etc/snmp/snmpd.conf
ให้เอา # ใส่หน้า คำสั่ง
com2sec paranoid default public
แล้วเอาเครื่องหมาย # ออกจากคำสั่ง
com2sec readonly default public
แล้วสั่ง daemon start
#/etc/init.d/snmpd restart
แล้วต่อไปมา config ไฟส์ mrtg บ้าง

แล้วพิมพ์ ตามนี้เพื่อทำการ สั่งให้สร้าง config
#cfgmaker --global 'WorkDir: /var/www/mrtg'
--output /etc/mrtg.cfg public@127.0.0.1

+++++++comment น่ะครับ +++++++
/var/www/ เป็น DocumentRoot ใน Apache ครับ
ควรตั้งให้ตรงกัน
แล้วมาพิมพ์คำสั่งต่อไปเพื่อให้สร้างไฟส์ html ที่จะใช้แสดง ข้อมูล
#indexmaker /etc/mrtg.cfg --columns=1
--output /var/www/mrtg/index.html
แล้วสั่ง run
#mrtg
3 ครั้ง
ก็เป็นอันเสร็จ
แล้วเรียก run
http://<yourIP>/mrtg/
ก็เป็นอันเสร็จครับ
ติดปัญหาหรือมีข้อสงสัย Post ได้น่ะครับ
http://golf.212cafe.com
MSN: golfreeze@hotmail.com

หรือเข้าไปดูได้ที่
http://www.debian-administration.org/articles/366

2092
all application on unix knowledges by golfreeze / radius authen testing
« on: มกราคม 23, 2011, 01:04:25 AM »
เป็นคำแนะนำติดตั้งจัดการปรับแต่ง radius server
ต้นแบบทดสอบด้วย linux ubuntu 6.06, fedora core 6,5,4 ใช้งานภายในมหาวิทยาลัยสงขลานครินทร์
*** บน ubuntu ยังทดสอบไม่สมบูรณ์

วิธีติดตั้ง radius server ด้วยโปรแกรม freeradius
*** แหล่งข้อมูลต้นฉบับ freeradius คือhttp://www.freeradius.org


ติดตั้งโปรแกรม freeradius
หากเป็น ubuntu ใช้คำสั่ง apt-get install freeradius

หากเป็น fedora ใช้คำสั่ง yum install freeradius


หากเป็น fedoara ต้องแก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig radiusd on


สั่งให้ freeradius ทำงาน
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius start

หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd start


ตรวจสอบว่าโปรแกรมทำงานแล้วด้วยคำสั่ง
ps ax | grep radius

หากเป็น ubuntu ได้ผลตัวอย่าง
4165 ? Ssl 0:00 /usr/sbin/freeradius

หากเป็น fedora ได้ผลตัวอย่าง
4480 ? Ssl 0:10 /usr/sbin/radiusd -y


แฟ้มที่เกี่ยวข้อง
หากเป็น ubuntu คือ

/var/log/freeradius/radius.log
/etc/freeradius/radiusd.conf
/etc/freeradius/clients.conf

หากเป็น fedora คือ

/var/log/radius/radius.log
/etc/raddb/radiusd.conf
/etc/raddb/clients.conf


เมื่อให้ radiusd ทำงานแล้ว เริ่มขั้นตอนทดสอบระบบโดยป้อนตัวอย่างคำสั่งดังนี้

radtest root password-root localhost 0 testing123
*** จากตัวอย่าง password-root คือรหัสผ่านของ root
หากเป็น fedora จะได้ผลข้อความตอบกลับดังตัวอย่าง
Sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
Re-sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = \"root\"
User-Password =
\"{\\277\\033\\t\\217\\224\\n\\021\\036
\271$\\301\\026\\234\\353\
225\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=43, length=20

แสดงว่าระบบใช้งานได้แล้ว ถึงแม้ว่าจะมีการแจ้งว่า Access-Reject
เป็นสาเหตุเนื่องจากไม่มีสิทธิในการอ่านแฟ้ม /etc/shadow ของระบบ

ปัญหาที่ว่ามานี้ไม่เกิดกับ ubuntu เพราะ default ของระบบถูกต้องอยู่แล้ว

*** ควรทดสอบและปรับแต่งให้ถูกต้องตามหัวข้อนี้ให้เรียบร้อยก่อน จึงค่อยใช้งานจริง

หากเป็น ubuntu ข้ามตรงนี้ไปทดสอบรหัสผ่านได้เลย
หากเป็น fedora ถ้าต้องการให้ใช้กับบัญชีผู้ใช้ระบบ UNIX
ต้องตั้งค่าให้อ่านแฟ้ม /etc/shadow ได้
โดยแก้ไขแฟ้ม /etc/raddb/radiusd.conf
ทำการ comment ยกเลิกบรรทัดข้อความจากเดิม
user = radiusd
group = radiusd
ให้เป็น
#user = radiusd
#group = radiusd
เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง service radiusd restart

ต่อไปลองป้อนตัวอย่างคำสั่งเดิมเพื่อทดสอบดังนี้
radtest root password-root localhost 0 testing123
คราวนี้จะได้ผลข้อความว่า
Sending Access-Request of id 82 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=82, length=20
โดยมีผลการแจ้งว่า Access-Accept ถูกต้องตามต้องการ


ถ้าต้องการให้ radius client เข้ามาติดต่อใช้งานระบบ radiusd นี้ได้
หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/clients.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/clients.conf
ทำให้มีค่าดังตัวอย่างนี้
client 10.0.1.0/24 {
secret = mytestkey
shortname = private-network
}
ตัวอย่างคือให้ radius client ที่มีหมายเลข ip 10.0.1.x
สามารถเข้ามาใช้ด้วย secret key ว่า mytestkey
เมื่อแก้ไขเสร็จแล้วให้ reload ใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ลองทดสอบด้วยคำสั่งตัวอย่าง
radtest root passwordroot 10.0.1.1 0 mytestkey
*** ค่า passwordroot คือ รหัสผ่านของ root และ 10.0.1.1 คือหมายเลข ip ของ radius server
ได้ผลแสดงข้อความดังตัวอย่าง
Sending Access-Request of id 246 to 10.0.1.1:1812
User-Name = \"root\"
User-Password = \"passwordroot\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 10.0.1.1:1812, id=246, length=20

ถึงขั้นตอนนี้เป็นอันเปิดใช้ระบบ radius server ได้แล้ว


ขั้นตอนการทำงานของ configuration ของ freeradius
หากเป็น ubuntu คือแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora คือแฟ้ม /etc/raddb/radiusd.conf
มีการปรับค่าของระบบต่างๆ

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

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

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

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

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

modules ทุกตัวที่ใช้งาน จะต้องได้รับการประกาศไว้ก่อนแล้ว อยู่ในส่วนชื่อ modules {...}


*** แนะนำให้ทำขั้นตอนนี้ด้วย เลิกใช้ module file
เพราะ module files ทำงานแล้วอาจเจอปัญหาแปลกๆ

หลังจากที่ radiusd ทำงานได้ดีแล้ว หากต้องการให้ radiusd ตรวจสอบผู้ใช้จากแฟ้ม /etc/passwd
ขอแนะนำให้มีการแก้ไขปรับปรุงดังนี้คือ โดย default ในแฟ้ม /etc/raddb/radiusd.conf
ส่วนของ authorize {...} มีการใช้ module ชื่อ files
ที่สั่งให้ระบบไปเปิดแฟ้ม users เพื่อทำงานต่อ
หากเป็น ubuntu คือ /etc/freeradius/users
หากเป็น fedora คือ /etc/raddb/users
ผลคือหากผ่าน module files แล้ว จะไม่สามารถไหลต่อไปให้ modules ที่เหลือถัดไปอีก
แนะนำให้เลิกใช้ module files แล้วสร้าง module ใหม่เพื่อการตรวจสอบกับแฟ้ม /etc/passwd
หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf

ส่วนของ modules {...} ที่บริเวณข้อความ passwd etc_smbpasswd {...}
...
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
passwd mypasswd {
filename = /etc/shadow
format = \"*User-Name::\"
authtype = unix
}

ส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
ให้ comment บรรทัด files เพื่อยกเลิกค่านี้
แล้วแทรกเพิ่มบรรทัดข้อความเพิ่ม กลายเป็นว่า
# files
mypasswd {
ok = return
}

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ทดสอบผลงานด้วยคำสั่ง radtest root password-root localhost 0 testing123
หากได้ผลข้อความประมาณว่า
Sending Access-Request of id 82 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=82, length=20
โดยมีผลการแจ้งว่า Access-Accept แสดงว่าถูกต้องตามต้องการแล้ว


หากต้องการตรวจสอบผู้ใช้กับ mail server ผ่าน imap ให้ทำดังนี้

ตัวอย่างนี้จะตรวจสอบกับ mail server ชื่อ your.mail.server

ต้องติดตั้ง php และ php-imap ก่อนแล้ว
หากเป็น ubuntu ติดตั้งด้วยคำสั่ง
apt-get install php5 php5-imap php5-cli
แล้วแก้ไขแฟ้ม /etc/php5/cli/php.ini เพิ่มให้มีบรรทัดว่า
extension=imap.so

หากเป็น fedora ติดตั้งด้วยคำสั่ง yum install php php-imap

ต่อไปสร้างแฟ้ม /root/imap.php ให้มีเนื้อหาว่า
<?php
error_reporting(0);
$host = $argv[1];
$username = $argv[2];
$password = $argv[3];
$imap_host=\"{\" . $host . \":143/imap/notls}\";
$mbox = imap_open(\"$imap_host\", \"$username\",
\"$password\");
$folders = imap_listmailbox($mbox, \"$imap_host\", \"*\");
if ($folders == false) {
echo \"false\";
} else {
echo \"true\";
}
imap_close($mbox);
?>

สร้างแฟ้มคำสั่ง shell script ชื่อ /root/imap-authen.sh มีเนื้อหาว่า
#!/bin/sh
user=`echo $USER_NAME | cut -d\'\"\' -f2`
password=`echo $USER_PASSWORD | cut -d\'\"\' -f2`
key=`/usr/bin/php /root/imap.php your.mail.server $user $password`
if echo $key|grep -w \"true\" > /dev/null ; then
exit 0
fi
exit 1

สร้างแฟ้มแบบ text ชื่อ /root/myusers มีเนื้อหาว่า
DEFAULT Auth-Type := Accept
Exec-Program-Wait=\"/bin/sh /root/imap-authen.sh\"

หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
ส่วนของ modules {...} ที่บริเวณข้อความ files {...}
...
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
files myimap {
usersfile = /root/myusers
}

ส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
แทรกเพิ่มบรรทัดข้อความเพิ่ม กลายเป็นว่า
myimap

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว ทดสอบผลงานได้เลย


ถ้าต้องการให้ใช้ได้กับ LDAP ด้วย
หากเป็น ubuntu ต้องติดตั้ง freeradius-ldap เพิ่มเติม
ด้วยคำสั่ง apt-get install freeradius-ldap
แล้วให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf

หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
เพื่อให้รองรับและเชื่อมต่อกับ LDAP server ดังนี้

ส่วนของ modules {...} ที่บริเวณข้อความ
ldap {
**** ให้แก้ไขค่าของ server , basedn ดังตัวอย่าง
server = \"myldap.net\"
basedn = \"dc=my, dc=net\"
**** ให้ comment บรรทัด access_attr เพื่อยกเลิกค่า เนื่องจากไม่ได้ใช้รูปแบบนี้
# access_attr = \"dialupAccess\"

แก้ไขส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
ให้มีการตั้งค่าเลือก ldap อยู่ด้วย

แก้ไขส่วนของ authenticate {...} ที่บริเวณพื้นที่ขึ้นต้นด้วยข้อความว่า authenticate {
...
# Auth-Type LDAP {
# ldap
# }
*** ให้แก้ไขด้วยการ uncomment บรรทัดข้อความเพื่อให้ระบบกำหนดวิธี LDAP
Auth-Type LDAP {
ldap
}
*** ในส่วนของ authenticate แก้ไขเพียงแค่นี้

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ทดสอบใช้งานกับ user บน ldap ได้เลย


หากต้องการตรวจสอบผู้ใช้กับฐานข้อมูลพิเศษของตนเอง

ต้องสร้างแฟ้มแบบ text เพื่อเก็บรายชื่อผู้มีสิทธิ์ใช้งาน
ตัวอย่างนี้คือแฟ้ม /root/myusers.txt มีข้อมูลคือ
root
mama
demo
รายชื่อต้องเรียงลำดับไปบรรทัดละคน
ให้ป้อนรายชื่อเข้าไปตามต้องการ

สร้างแฟ้มคำสั่ง shell script ชื่อ /root/my-authen.sh มีเนื้อหาว่า
#!/bin/sh
valid_file=\"/root/myusers.txt\"
key=`echo $USER_NAME | cut -d\'\"\' -f2`
if grep -w \"$key\" $valid_file > /dev/null ; then
exit 0
fi
exit 1

หากเป็น ubuntu แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora แก้ไขแฟ้ม /etc/raddb/radiusd.conf
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
ส่วนของ modules {...} ที่บริเวณข้อความ exec {...}
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
exec my-auth {
program = \"/bin/sh /root/my-authen.sh\"
wait = yes
input_pairs = request
output_pairs = reply
packet_type = Access-Accept
}

ส่วนของ post-auth {...} ที่บริเวณข้อความขึ้นต้นด้วย post-auth {
...
แทรกเพิ่มบรรทัดข้อความเพิ่ม
my-auth

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว ทดสอบผลงานได้เลย


radius server สามารถส่งค่าบอกเวลาที่ยังคงเหลือให้ใช้งาน
โดยส่งค่ากลับมาที่ attribute ชื่อ Session-Timeout
แต่ตัวมันเองคำนวณไม่เป็น ต้องหาวิธีอื่นในการคำนวณเวลา
แล้วส่งกลับมาให้ radius ส่งคำตอบให้อีกทอดหนึ่ง

จากข้อ 13 หากต้องการใส่ค่าเวลาที่เหลือในการใช้งาน
ตัวอย่างเช่นเหลือ 120 วินาที ให้เพิ่มบรรทัดข้อความว่า
echo \"SESSION-TIMEOUT = \\\"120\\\"\"
ลงไปก่อนบรรทัดข้อความ exit 0 ดังตัวอย่าง

if grep -w \"$key\" $valid_file > /dev/null ; then
echo \"SESSION-TIMEOUT = \\\"120\\\"\"
exit 0
fi

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว PC ที่ติดต่อเข้ามาจะได้รับคำตอบกลับไป
ระบุว่าเหลือเวลาใช้งานอีกเท่าไร ขึ้นกับตัวเลขทีกำหนดส่งออกมา
จากตัวอย่างให้แก้ไขตัวเลข 120 เป็นอื่นๆตามต้องการ


แนะนำให้ยกเลิกการกำหนดค่าการทำงานบางตัวที่ไม่ได้ใช้งาน
โดยการ comment บรรทัดข้อความในแฟ้ม
หากเป็น ubuntu คือแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora คือแฟ้ม /etc/raddb/radiusd.conf

ถ้าไม่ได้ใช้เป็น proxy radius ควรยกเลิก
โดยเปลี่ยนจากเดิม proxy_requests = yes
ให้เป็น proxy_requests = no

ควรยกเลิกบาง authorize ที่ไม่ได้ใช้เช่น
authorize {
# preprocess
# chap
# mschap
# suffix
# ldap ---> ระบบ ldap
# files --> ระบบ UNIX หรือแฟ้ม /etc/shadow


การบันทึกประวัติการใช้งานของ radius โดย defualt จะบันทึกไว้ในพื้นที่
หากเป็น ubuntu อยู่ที่ /var/log/freeradius/radacct
หากเป็น fedora อยู่ที่ /var/log/radius/radacct
โดยแยกเป็น directory ของแต่ละหมายเลข ip ของ radius client
แล้วยังแตกย่อยออกเป็นแฟ้มของแต่วันอีก ซึ่งอาจไม่สะดวกต่อการวิเคราะห์ข้อมูล
เราสามารถเพิ่ม module บันทึกประวัติการใช้งานเพิ่มเติมจากของเดิม ตัวอย่างคือ
ต้องการบันทึกไว้ใน directory ชื่อ /var/log/freeradius/myaccount หรือ /var/log/radius/myaccount
แล้วเก็บแฟ้มแยกเป็นรายวันในรูปแบบ 20060729 ภายในแฟ้มมีรูปแบบว่า
20060729:15:54:05;\"demo\";10.0.0.153;1154163245;\"a5f56ebd6ebc1321
";Start;

20060729:15:55:06;\"demo\";10.0.0.153;1154163306;\"a5f56ebd6ebc1321
";Stop;6
1

ให้ทำดังนี้ สร้างแฟ้มคำสั่ง shell script ชื่อ /root/log-radius-account.sh มีเนื้อหาว่า
#!/bin/sh
export LANG=en.US
###
mydir=\"/var/log/freeradius/myaccount\"
## หากเป็น fedora เปลี่ยนเป็น mydir=\"/var/log/radius/myaccount\"
###
if [ ! -d $mydir ] ; then
mkdir -p $mydir
fi
today=`date \"+%Y%m%d\"`
myfile=\"$mydir/$today\"
if [ ! -e $myfile ] ; then
touch $myfile
fi
mytime=`echo $1|awk \'{print strftime(\"%Y%m%d:%H:%M:%S\",$1)}\'`
echo
\"$mytime;$USER_NAME;$CLIENT_IP_ADDRESS;$1;$ACCT_UNIQUE_SESSION_ID;$ACCT_STATUS_TYPE;$ACCT
_SES
SION_TIME\" >> $myfile

แฟ้ม shell script จบแค่นี้ ต่อไปแก้ไขแฟ้ม radiusd.conf
หากเป็น ubuntu แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora แก้ไขแฟ้ม /etc/raddb/radiusd.conf

ส่วนของ modules {...} ที่บริเวณข้อความ exec {...}
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
exec my-log-account {
wait = no
program = \"/bin/sh /root/log-radius-account.sh %l\"
}

ส่วนของ accounting {...} ที่บริเวณข้อความ accounting {
...
detail
ให้แทรกเพิ่มบรรทัดข้อความว่า
my-log-account

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload

---------------------------------------------------------------------------------
ขอขอบคุณ : http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=16193

2093
การกู้ข้อมูลในระบบ UNIX

ในระบบ UNIX หรือ LINUX จะใช้ระบบของ device file system ในการติดต่อใช้งานข้อมูลระหว่างระบบและ ดิสก์
[1] เข่น ใน /dev/hda ดังนั้นระบบไฟล์จะทำงานใน device ดังกล่าวจะสามารถมองเป็นรูปแบบของ text ไฟล์ได้
ซึ่งการค้นหาและกู้ไฟล์สามารถใช้คำสั่งที่เกียวกับการค้นหาข้อความได้ เช่น grep, seekcat เป็นต้น
รูปแบบทั่วไปของคำสั่งที่ใช้ในการเรียกไฟล์ในระบบ UNIX มีดังนี้

grep -a -B[size before] -A[size after] 'text' /dev/[your_partition]

** grep ต้องเป็นเวอร์ชั่นของ GNU
size before ขนาดของข้อมูลที่ต้องการตัดก่อนหน้าข้อความ 'text'
size after ขนาดของข้อมูลที่ต้องการตัดหลังข้อความ 'text'
your_partition ไฟล์ device ของดิสก์
ในบางครั้งโครงสร้างของไฟล์อาจจะไม่ต่อเนื่องกัน
ส่งผลทำให้ข้อมูลที่ได้รับเข้ามาอาจจะไม่ถูกต้องตามความต้องการ ดังนั้นเมื่อได้รับผลมาควรใช้ script
perl ในการตัดเอาส่วนที่ไม่ต้องการออก แต่อย่างไรก็ตามข้อมูลในส่วนของ CVS และ RCS
ที่เป็นข้อมูลเกี่ยวกับไฟล์ที่ต้องการกู้ยังสามารถนำมาส่วนในการค้นหาได้

การกู้ข้อมูลในระบบ LINUX

ระบบ LINUX จะมีโปรแกรมช่วยในการดีบัก device file system ที่เรียกว่า debugfs ในโปรแกรมจะมีคำสั่ง
lsdel เพื่อเรียกดูไฟล์ต่างๆ ที่ถูกลบออกจากระบบ
เช่น
# debugfs /dev/hda6
debugfs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
debugfs: lsdel
1844 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
749300 1000 100664 27018 2/ 7 Tue May 9 19:08:17 2000
749301 1000 100444 1671 1/ 1 Tue May 9 19:08:17 2000
...... .... ...... .... .. ..........................
944887 1037 100600 597 1/ 1 Sat May 26 18:00:00 2001
717281 1000 100400 1 1/ 1 Sat May 26 18:08:13 2001
32605 1000 100644 15 1/ 1 Sat May 26 18:09:06 2001

จากตัวอย่างโปรแกรมจะแสดงค่าต่างๆ ของ inode หากต้องการนำ output แสดงลงไฟล์ทำได้โดยใช้คำสั่ง
# echo lsdel | debugfs /dev/hda6 > /tmp/lsdel-output
ใช้คำสั่ง dump -p เพื่อนำกู้ข้อมูลตามหมายเลข inode เช่น
debugfs: dump -p <32605> /tmp/recovered_file
ดังนั้นในการใช้งานโปรแกรม debugfs เพื่อกู้ไฟล์คืน นั้นจำเป็นต้องมีข้อมูลของไฟล์ดังนี้
- เจ้าของไฟล์เป็นของใคร
- เมื่อไรที่ไฟล์ถูกลบ
- ค่าประมาณของขนาดของไฟล์
หากไฟล์ที่ต้องการค้นหามีจำนวนมากแล้วผู้ใช้ต้องทำการเขียน script เพื่อช่วยค้นหา และ กู้ไฟล์ที่ต้องการ
Recover [3] เป็นโปรแกรมแบบ shell script ที่ช่วยในการค้นหาและกู้ไฟล์ ในระบบ LINUX ให้ง่ายในการใช้งาน
โปรแกรมจะอาศัยหลักการทำงานของ โปรแกรม debugfs ผ่านคำถามที่เป็นลำดับขั้นเพื่อการค้นหา
ไฟล์ที่ผู้ใช้ต้องการ ซึ่งคำถามคร่าวๆ มีดังนี้
- ชื่อของ Device ของดิสก์
- วัน/เดือน/ปี โดยอาจจะบอกเป็นช่วงได้
- ขนาดสูงสุด และต่ำสุดของไฟล์
- ไอดีของผู้ใช้ (User ID)
- ตัวอักษรที่อยู่ในไฟล์
โปรแกรมจะทำการสรุป ค่าของ inode และรายละเอียดของไฟล์ที่ต้องการกู้และข้อมูลที่กู้มาได้


_------------------------------------------------------------
ขอบคุณข้อมูลดีๆ จาก : http://thaicert.nectec.or.th/paper/unix_linux/recov-file.phpครับ

2094
all application on unix knowledges by golfreeze / Re: install vsftpd in freebsd
« on: มกราคม 23, 2011, 01:03:00 AM »
ปกติ ถ้าเราเรียกใช้ config default ของ vsftpd.conf

ถ้าเรา login เข้า ftp ของ user นั้นๆ แล้ว มันจะมองเห็นไฟล์ของ user ในห้องนั้นทั้งหมด

แต่ถ้า บาง user ดันเข้ามาก่อกวนแล้ว กด up higher level เพื่อออกไปดู folder ที่อยู่ใน path อื่นๆ
เช่นเข้าไป path "/" , "/var" บ้าง
เราก็แก้ไข โดย ใช้ตัว chroot เข้ามาช่วยครับ

#vi /etc/vsftpd.conf

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

แล้วเพิ่ม user ftp ตัวนั้นเข้า ใน /etc/vsftpd.chroot_list

แล้ว restart ftp 1 รอบก็เรียบร้อยครับผม

2095
all application on unix knowledges by golfreeze / Re: install vsftpd in freebsd
« on: มกราคม 23, 2011, 01:02:49 AM »
#####ใน Debian ลง vsftpd ได้ดังนี้ golfreeze step ######

#apt-get install vsftpd
#vi /etc/vsftpd.conf

##### Config for use ftp for each account non annoynemous#######
listen=YES
#listen_ipv6=YES
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=NO
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror"
assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
#
# Debian customization
#
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default. These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty. Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

2096
all application on unix knowledges by golfreeze / install vsftpd in freebsd
« on: มกราคม 23, 2011, 01:02:34 AM »
#freeBSD
การติดตั้ง vsftpd บน FreeBSD

พิมพ์บน command ตามลำดับดังนี้นะครับ

#pw groupadd -g 75 -n ftp
#pw useradd -u 75 -g ftp -c &#8220;FTP Service&#8221; -d /home/ftp -m -s /sbin/nologin -n
ftp
#cd /usr/ports/ftp/vsftpd
#make install clean
#cd /home
#chown root:wheel ftp
#chmod og-w ftp
#vi /usr/local/etc/vsftpd.chroot_list แล้วเพิ่มชื่อ user ที่ต้องการทำ chroot

จากนั้นแก้ไขไฟล์ /usr/local/etc/vsftpd.conf ดังนี้

anonymous_enable=YES
local_enable=YES
write_enable=YES
chroot_list_enable=YES
chroot_list_file=/usr/local/etc/vsftpd.chroot_list
secure_chroot_dir=/home/ftp

แก้ไขไฟล์ /etc/inetd.conf ดังนี้
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd

แล้วพิมพ์ที่ command shell ดังนี้
#killall inetd
#inetd &#8211;Ww
ก็เป็นอันเสร็จเรียบร้อยแล้วครับสำหรับ vsftpd
#ที่มา : www.thaibsd.com

2097
ทุกอย่างเกี่ยวกับ Sun Solaris

###Website download package
http://www.sunfreeware.com

#แตกไฟล์
gunzip file.tar.gz
tar xvf file.tar

#สำหรับ Package ที่ download มาแล้วน่ะครับแตกออกโดย
gunzip gcc-3.3.2-sol10-sparc-local.gz
gunzip libiconv-1.9.2-sol10-sparc-local.gz

ต่อจากนั้นทำการ install ซึ่งคำสั่งจะคล้ายๆ pkg_add ของ freebsd
[ root@mooky:/home/golf] pkgadd -d libiconv-1.9.2-sol10-sparc-local
[ root@mooky:/home/golf] pkgadd -d gcc-3.3.2-sol10-sparc-local


The following packages are available:
1 SMCgcc gcc
(sparc) 3.3.2

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: enter ไปเลย

เสร็จจะขึ้นเป็นข้อความ
Installation of <SMCgcc> was successful.

##ถ้าต้องการจะลบ package ที่ลงไป หาจาก pkginfo ก่อนครับ
# pkginfo | grep glib
application SMCglib1 glib

##ได้ชื่อแล้วทำการลบโดย
# pkgrm SMCglib1

ถ้าสงสัยก็ Pm มาได้น่ะครับ เพิ่งลองเหมือนกัน อิอิ

อีกนิดหนึ่งเวลา เช๊ค version ว่าเป็น solaris รุ่นไหนดูได้จาก
#uname -a

ถ้าออกมาเป็น Sun 5.9

น่าจะเป็น Solaris 9 ครับ

เพราะเขาจะนับจุด ด้านหลัง Grin

golfreeze[at]packetlove.com

2098
1 Compile a New Kernel

First you have to compile/install a kernel that supports quota (not enabled by default) (more
information about compiling a new kernel can be found here:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html).

cd /usr/src/sys/i386/conf
cp GENERIC MYKERNEL

Edit the file MYKERNEL and add the line

options QUOTA

Then run the following commands:

/usr/sbin/config MYKERNEL
cd ../compile/MYKERNEL

(For FreeBSD version prior to 5.0, use instead:

cd ../../compile/MYKERNEL )

make depend
make
make install


2 Enable Quota

Edit the file /etc/fstab and look for the entry, in which the directory /home is mentioned, e.g.

/dev/ad0s1d /home ufs rw 2 2

Add the words userquota and groupquota as follows:

/dev/ad0s1d /home ufs rw,userquota,groupquota 2 2

To enable quota at boot time you have to add the following lines to /etc/rc.conf:

quota_enable="YES"
check_quotas="YES"

Reboot the system:

shutdown -r now

After the reboot run the following commands:

quotacheck -a
quotaon -a

เราสามารถกำหนด quota ได้โดย

#edquota golf
Quotas for user golf:
/home: blocks in use: 62, limits (soft = 0, hard = 0)
inodes in use: 25, limits (soft = 0, hard = 0)


Change tthis lines as displayed below to set up the limits:

Quotas for user golf:
/home: blocks in use: 62, limits (soft = 1024, hard = 204
inodes in use: 25, limits (soft = 0, hard = 0)

เรากำหนด quota ของ user=golf ไว้แค่ 1M ครับแล้วไม่เกิน 2M

* ภายในไฟล์
o blocks คือ พื้นที่(ขนาดไฟล์) ที่ใช้ไป
o soft คือ Soft Limit เป็น quota ขั้นต่ำ อนุญาตให้ user ใช้พื้นที่เกิน quota นี้ได้
แต่ไม่เกิน grace วัน
o hard คือ Hard Limit เป็น quota สูงสุด ไม่อนุญาตให้ user ใช้พื้นที่เกิน quota นี้ (เกิน
soft ได้ แต่ห้ามเกิน hard)
o inodes คือ จำนวนไฟล์ ที่ใช้ไป โดยมี soft และ hard เช่นเดียวกับ blocks
o grace คือ จำนวนวันที่สามารถใช้พื้นที่เกิน soft limit ได้

หมายเหตุ: หน่วยของพื้นที่ที่ใช้คือ Kilobyte (KB)

* เปิดการใช้งาน User Quota

* แสดงรายละเอียด quota ของทุกๆ user

repquota -a

2099
วันนี้ มีโจทย์ชิวๆ มาลองทำครับ

1.ทำเครื่องให้รัน script Tomcat JSP + PHP ได้

ลองเอา ispconfig 3 มาลองดูด้วยครับ

ผมคิดว่า control panel ตัวนี้ก็เจ๋งดีน่ะครับ เพราะมีทีม พัฒนา ทำออกมาเรื่อยๆ แก้ bug ต่างๆ มาเรื่อยๆ

มี tool ให้จัดการได้เยอะดี ทำพวก mail spam ก็เจ๋งใช้ได้ , จัดการพวก DNS ก็ง่ายๆ

มาเริ่มกันเลยครับ ผมลง กับ debian 5.0.2 ครับ
ลง พวก ssh ntp
#apt-get install ssh ntp ntpdate openssh-server

ถัดมาลง พวก mail gateway ครับ
#apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon
courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2
libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4
rkhunter binutils

แล้วมันจะถามคำถาม
New password for the MySQL "root" user: <-- ปปป
Repeat password for the MySQL "root" user: <-- ปปป
Create directories for web-based administration? <-- No
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.packetlove.com
SSL certificate required <-- Ok

#/etc/init.d/mysqld restart
#/etc/init.d/courier-imap-ssl restart
#/etc/init.d/courier-pop-ssl restart

ต่อมาลงพวก scan engine ครับ
#apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop
cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl
libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ต่อมาลงพวก web server + php5 ครับ
#apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1
ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli
php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick
imagemagick libapache2-mod-suphp php5-cli php5-mysql

ทำการ enable module เหล่านี้ซะ
#a2enmod suexec rewrite ssl actions include

ต่อไปลงพวก FTP และกำหนด quota
#apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
แก้ไขไฟล์ /etc/default/pure-ftpd-common
#vi /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

แก้ไฟล์ inetd.conf
comment บันทัด ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql start

แก้ไข fstab
#vi /etc/fstab
/dev/sda2 /var ext3 errors=remount-ro,usrquota,grpquota 0 1

#touch /var/quota.user /var/quota.group
#chmod 600 /var/quota.*
#mount -o remount /var
เริ่มใช้งาน quota
#quotacheck -avugm
#quotaon -avug

ลง MyDNS
#apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
cd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
tar xvfz mydns-1.2.8.25.tar.gz
cd mydns-1.2.8
./configure
make
make install
เสร็จแล้วสร้าง sciprt mydns
#vi /etc/init.d/mydns
----------------------------------------------mydns -----------------------------------------------
#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern < phil@philkern.de>;.
# Based upon skeleton 1.9.4 by Miquel van Smoorenburg
# < miquels@cistron.nl>; and Ian Murdock < imurdock@gnu.ai.mit.edu>;.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC="DNS server"
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
start-stop-daemon --stop --oknodo --quiet \
--exec $DAEMON
echo "."
;;
reload|force-reload)
echo -n "Reloading $DESC configuration..."
start-stop-daemon --stop --signal HUP --quiet \
--exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo \
--exec $DAEMON
sleep 1
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
---------------------------------------end of mydns ------------------------------
#chmod +x /etc/init.d/mydns
#update-rc.d mydns defaults

ต่อไปลงพวก web เก็บ log
#apt-get install vlogger webalizer
ลงพวก jailkit
apt-get install build-essential autoconf automake1.9 libtool flex bison
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
tar xvfz jailkit-2.5.tar.gz
cd jailkit-2.5
./configure
make
make install
cd ..
rm -rf jailkit-2.5*

ต่อไปลง fail2ban
#apt-get install fail2ban

ต่อไปลง webmail
#apt-get install squirrelmail
#ln -s /usr/share/squirrelmail/ /var/www/webmail
ส่วนการ config หาเอาใน google น่ะครับ
หรืออ่านได้ที่
http://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3-p5

ต่อไปลง ispconfig ครับ

#cd /home/xxx
#wget http://golfreeze.packetlove.com/download/ispconfig/ISPConfig-3.0.1.tar.gz
#tar xvfz ISPConfig-3.0.1.tar.gz
#cd ispconfig3_install/install/
#php -q install.php

ถ้าขึ้น error แบบนี้
Notice: Undefined variable: distver in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distid in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distbaseid in /tmp/ispconfig3_install/install/lib/install.lib.php on
line 135

Linux Distribution or Version not recognized.
เข้าไปแก้ไฟล์
#vi ispconfig3_install/install/lib/install.lib.php
เปลี่ยน version ให้ตรงกับ os เราแล้วสั่ง
#php -q install.php
อีกรอบ ก็เรียบร้อยครับ

ต่อไปทำการลงพวก apache-tomcat + jdk java + mod_jk ทำหน้าที่เป็น module ที่เข้าไปใช้งานกับ apache
ครับ ถ้าใครใช้ jdk 5 ก็ใช้เป็น apache-tomcat5 ด้วยน่ะครับเพื่อจะได้ไม่ error
#wget http://golfreeze.packetlove.com/download/ispconfig/jdk-1_5_0_20-linux-i586.bin
#chmod +x jdk1.5.0_20-linux-i586.bin
#./jdk1.5.0_20-linux-i586.bin
#mv jdk1.5.0_20 /usr/lib
#cd /usr/lib
#ln -s jdk1.5.0_20 jdk

เขียน JAVA_HOME ไว้ที่ /root/.bashrc
#vi /root/.bashrc
JAVA_HOME="/usr/lib/jdk"
export JAVA_HOME

ลอง echo ดูจะได้
#echo $JAVA_HOME
ออกมาเป็น
/usr/lib/jdk

ต่อไปทำการลง tomcat-apache
#wget http://golfreeze.packetlove.com/download/ispconfig/apache-tomcat-5.5.28.tar.gz
#mv apache-tomcat-5.5.28 /usr/lib
#cd /usr/lib
#ln -s apache-tomcat-5.5.28 apache-tomcat
ทำการ running tomcat ดูครับ
#cd /usr/lib/apache-tomcat/bin
#sh startup.sh
#sh shutdown.sh

ต่อไปลง tomcat-connector หรือ mod_jk.so ครับเอาไว้ connect กับ apache2 ครับ
#apt-get install libapache2-mod-jk
ลองเช๊ค น่ะครับ หลังจาก install เสร็จมันจะ load module เข้ามาให้ที่
/usr/lib/apache2/modules/mod_jk.so

เขียนไฟล์ workers.properties
#touch /etc/apache2/workers.properties

ใส่ดังนี้
-----------------------------------workers.properties
---------------------------------------------------------------
workers.tomcat_home=/usr/lib/apache-tomcat
workers.java_home=/usr/lib/jdk

ps=/

worker.list=worker1

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1

worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

worker.inprocess.cmd_line=start

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

-------------------------------------------------------จบไฟล์
---------------------------------------------

ต่อไปทำการ แก้ไขไฟล์ server.xml ไฟล์นี้เปรียบได้กับ httpd.conf ของ apache2 ครับ
ไฟล์นี้ของผม แก้ไขเพื่อใช้งานกับ ispconfig น่ะครับ โดยให้รันที่ port "2117"
ถ้าใครอยากได้ port อื่นก็เปลี่ยนเอาครับ
----------------------------------------- server.xml
-------------------------------------------------------
<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListen
er" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListe
ner"/>

<!-- Global JNDI resources -->
<GlobalNamingResources>

<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer"
value="30"/>

<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>


<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">

<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
-->

<!-- Define a non-SSL HTTP/1.1 Connector on port 2117 (default 8080) -->
<Connector port="2117" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="5"
maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
/>

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443"
protocol="AJP/1.3" />

<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false" acceptCount="100"
connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->

<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->

<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<!-- Define the default virtual host -->
<!--
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
-->
<!-- www.example.com input for testing website kub -->
<Host name="www.example.com"
appBase="/var/www/example.com/web/xxx"
unpackWARs="true" autoDeploy="true">

<Context path="" docBase="jsp-examples"
debug="0" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="web1_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
<Listener className="org.apache.jk.config.ApacheConfig"
modJk="/usr/lib/apache2/modules/mod_jk.so"
workersConfig="/etc/apache2/workers.properties"/>

</Engine>

</Service>

</Server>
---------------------------------- server.xml
-------------------------------------------------------
Reload configuration มันจะสร้างไฟล์ /usr/lib/apache-tomcat/conf/auto/mod_jk.conf ให้ครับ
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh
แล้วใส่ mod_jk.conf เข้าไปที่ apache2.conf ครับ
#vi /etc/apache2/apache2.conf
Include /usr/lib/apache-tomcat/conf/auto/mod_jk.conf

เพิ่ม config นี้ลงไปที่ vhosts_ispconfig.conf ครับ
# Send servlet for context /servlets-examples to worker named worker1
JkMount /*/servlet/* worker1
# Send JSPs for context /jsp-examples to worker named worker1
JkMount /*.jsp worker1

เสร็จแล้วทำการ copy file jsp เพื่อทดสอบ
#cp -R /usr/lib/apache-tomcat/webapps/jsp-examples /var/www/example.com/web/xxx/.

เสร็จแล้วทำการ reload config ทั้ง apache และ tomcat ครับ
#/etc/init.d/apache2 restart
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh

แล้วทดสอบเข้าเว็บ

ไปเขียน ไฟล์ hosts

10.x.x.x www.example.com

แล้วเรียกเว็บดูครับ

http://www.example.com:2117/jsp-examples/ครับ ก็ใช้งาน script jsp /servlet ได้แล้ว

ส่วน ISPconfig ก็เข้าที่
http://localhost:8080ครับผม
default user pass = admin

เรียบร้อยครับ ถ้าหากมีตรงไหนผิดพลาดก็แนะนำ ได้น่ะครับ
MSN & Email = golfreeze[at]packetlove.com

2100
## ถ้าเราส่งเมลแล้วขึ้น error "temporary failure. Command output: /usr/bin/maildrop: Unable
to create a dot-lock at example.com/xxx/6994.0.pop01."

##ถ้าเราใช้ maildrop ใน postfix ด้วยให้ config ที่ไฟล์ดังนี้

#vi /etc/maildroprc

############# Begin #############

MAILDIR=$HOME/$DEFAULT
`test -d "$MAILDIR"` # check if dir exist
if ($RETURNCODE != 0)
{
`mkdir -p $MAILDIR` # create dirs with parents
`rmdir $MAILDIR` # remove dir for init
`/usr/bin/maildirmake $MAILDIR` # create maildir
}

############ Finish ##############

#/etc/init.d/postfix restart

แล้วลองส่งอีกรอบ ครับ

Pages: 1 ... 138 139 [140] 141 142 ... 146