|
9.65 วิธีเปิดบริการ samba
: เปิดบริการให้ระบบ windows มองเห็นระบบแฟ้มใน linux
ทดสอบ samba ของ RH8.0 แก้ไขดังข้างล่างแล้วไม่พบปัญหาใดเลย .. ง่ายมากครับ
เปิดบริการ samba ด้วยคำสั่ง setup, system services แล้วเลือกเปิด smb แล้วเข้าไปในห้อง /etc/samba แล้วใช้ pico smb.conf จากนั้น restart ด้วย /etc/rc.d/init.d/smb restart และให้พิมพ์ chkconfig smb on จะทำให้ samba start ทุกครั้งที่เปิดเครื่อง
คำสั่งที่ใช้สร้าง user คือ smbpasswd -a [username] [userpassword]
::::::: เดิม :::::::
; hosts allow = 192.168.1. 192.168.2. 127.
security = user
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
;[tmp]
; comment = Temporary file space
; path = /tmp
; read only = no
; public = yes
;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
| ::::::: ใหม่ :::::::
hosts allow = 192.168.1. 192.168.2. 127. 202.29.78
security = share
[homes]
comment = Home Directories
browseable = yes
writable = yes
create mode = 0664
directory mode = 0775
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = @staff
|
|
9.66 เปิดบริการ DNS server
: บริการ Domain Name service เพื่อให้ทุกเครื่องสามารถเรียกเว็บ หรือบริการด้วยชื่อได้
เปิดบริการ DNS server เพื่อทำให้ระบบเครือข่ายเรียกชื่อเว็บ เป็นตัวอักษรได้ และเป็นชุดที่ใช้กำหนดชื่อเครื่องในระบบทั้งหมด ถ้าในระบบเครือข่ายของท่าน มีเครื่องที่ต้องการตั้งชื่อหลายเครื่อง แต่ถ้าท่านเป็นเครื่องใช้พิมพ์งานธรรมดาก็ไม่จำเป็นต้องมีชื่อให้ใครเรียกเข้ามา ปกติเครื่องที่จะมีชื่อมักเป็น web server หรือ ftp server
การเปิดบริการนี้ต้องเปิดด้วยการสั่ง #setup แล้วเข้าไปในส่วน system services แล้วเลือก named เมื่อจะสั่งให้ named ทำงานต้องสั่ง #/etc/init.d/named restart ตรวจสอบได้ว่า named ทำงานหรือไม่โดยพิมพ์ #ps aux|grep named
ทดสอบเปิดบริการ named แบบ foreground ด้วย #named -g -p 53 ถ้าเลิกก็กด CTRL-C
พบ error เรื่อง permission ของห้อง /var/run/named เดิมเป็น 755 ไม่สามารถ start named ผมต้องเปลี่ยนเป็น 777 จึง ok
ใช้คำสั่ง #nmap localhost ดูได้ว่า port 53 ถูกเปิดหรือไม่ ถ้าไม่เปิด ก็แสดงว่าเครื่องยังไม่เป็น DNS หรือ Domain server (หัวข้อ 2.29)
9.66.1 :: /etc/named.conf
# ใน DNS server (star.yonok.ac.th)
# เพิ่มเพียง 4 บรรทัดนี้เข้าไป
# ใน unix พบแฟ้มนี้ใน /export/local/etc
zone "yonok.ac.th" in {
type master;
file "db.yonok.ac.th";
allow-query {any;};
allow-transfer {202.28.18.65;};
};
zone "isinthai.com" in {
type master;
file "db.isinthai.com";
};
zone "78.29.202.in-addr.arpa" in {
type master;
file "db.202.29.78";
};
9.66.2 :: /var/named/db.isinthai.com
# ใน DNS server (star.yonok.ac.th)
# ถ้าเครื่องไม่เป็น ns ก็ไม่จำเป็นต้องมี
; isinthai.com
@ IN SOA www.isinthai.com. postmaster.www.isinthai.com. (
2001022605 43200 7200 1209600 172800 )
IN NS star.yonok.ac.th. ; ตรงกับ checkdomain.com
IN MX 5 www.isinthai.com.
www IN A 202.29.78.1
mail IN CNAME www.isinthai.com.
wichep IN CNAME yn2.yonok.ac.th.
9.66.3 :: /var/named/db.yonok.ac.th
; yonok.ac.th
@ IN SOA star.yonok.ac.th. postmaster.star.yonok.ac.th. (
2003011001 43200 7200 1209600 172800 )
IN NS star.yonok.ac.th.
IN NS mars.uni.net.th.
IN MX 5 star.yonok.ac.th.
star IN A 202.29.78.12
door IN A 202.29.78.254
email IN A 216.200.145.34
IN MX 6 sitemail.everyone.net.
mail IN CNAME star.yonok.ac.th.
;email IN CNAME siteurl.everyone.net.
9.66.4 :: /var/named/db.202.29.78
- ใน DNS server (star.yonok.ac.th)
- ถ้าเครื่องไม่เป็น ns ก็ไม่จำเป็นต้องมี
; Yonok.ac.th
$ORIGIN 78.29.202.IN-ADDR.ARPA.
@ IN SOA star.yonok.ac.th. postmaster.star.yonok.ac.th. (
2001022601 ;serial
43200 ;Refresh 12 hours
7200 ;Retry 2 hours
1209600 ;Expire 2 weeks
172800) ;TTL
IN NS star.yonok.ac.th.
1 IN PTR www.isinthai.com.
2 IN PTR isinthai.yonok.ac.th.
12 IN PTR star.yonok.ac.th.
|
|
9.67 ติดตั้ง Free hosting ด้วย easyhost_free.zip
: ช่วยให้ server สามารถบริการ free hosting ได้โดยง่ายผ่าน file manager
- Download CGI script นี้จาก http://cyberscript.net/products/easyhost_free/download.html
- รายละเอียดการติดตั้งอ่านได้จาก http://cyberscript.net/support/docs/
- copy แฟ้มทั้งหมดในห้อง cgi-bin ไป /var/www/cgi-bin ด้วยคำสั่ง #mv * /var/www/cgi-bin
- copy ห้อง data และ images ไป /var/www/html ด้วยคำสั่ง #mv images /var/www/html
- ใช้คำสั่ง #chmod 755 /var/www/cgi-bin/*.*
- ใช้คำสั่ง #chmod 777 /var/www/cgi-bin/config.ini
- ใช้คำสั่ง #chmod 777 /var/www/html/data
- ใช้คำสั่ง #chmod 777 /var/www/html
- เปิดเว็บ http://www.isinthai.com/cgi-bin/admin.cgi
- ถ้าเปิด admin.cgi แล้ว error โดยหาสาเหตุไม่ได้แสดงว่าไม่ได้ upload แบบ ascii ให้ใช้ pico เพิ่มบรรทัดว่างล่างสุดแล้ว save ทับ
- ถ้า CGI ยังไม่ทำงาน ให้ไปแก้แฟ้ม /etc/httpd/conf/httpd.conf เพื่อเปิดบริการต่าง ๆ ของ apache web server
- สมาชิกใหม่จะมีห้อง images และแฟ้ม index.html ที่คัดลอกมาจากห้อง /var/www/html/data/default เข้าไปแก้ไขห้องนี้ได้
ข้อมูลในแฟ้ม /var/www/cgi-bin/config.ini
space_limit=55000
reserved_names=cgi-bin,data,images,mail
title_min=3
root_url=http://www.isinthai.com
password_max=20
site_password=asaRYYyl3HBzW
description_required=on
title_max=50
name_min=3
banned_extensions=.cgi,.pl,.php,.php3,.exe,.mp3,.dat,.mpg,.mpv,.zip,.rar,.ace,.class
distinct_email=1
use_validation=off
site_email=webmaster@yonok.ac.th
description_max=150
root_dir=/var/www/html
data_dir=/var/www/html/data
password_min=2
site_title=isinthai.com :: Case study of free hosting with 55 Mb
name_max=20
script_url=http://www.isinthai.com/cgi-bin
|
|
9.68 ติดตั้ง Web-based mail ด้วย uebimiau-2.7.2-any.zip
: ช่วยให้ server สามารถอ่าน mail จาก POP3 และส่งด้วย SMTP ผ่านระบบ Web-based mail
- Download จาก http://uebimiau.sourceforge.net (PHP script)
- เคยแนะนำการเปิดบริการ pop3 ใน win2003 กับโรงเรียนเขลางค์
อ่านจาก http://www.windowsnetworking.com/articles_tutorials/Windows_POP3_Service.html
- copy ห้องทั้งหมดภายใต้ห้อง uebimiau-2.7.2 หลังคลาย zip ไปไว้ใต้ห้อง /var/www/html/mail
- แก้แฟ้ม /var/www/html/mail/inc/config.php กำหนด pop และ smtp ให้เป็นตามต้องการ
- ใช้คำสั่ง #chmod 777 /var/www/html/mail/database
- แก้แฟ้ม /var/www/html/mail/langs/th.txt เพื่อให้มีภาษาไทยตามที่เราต้องการ
- แก้แฟ้ม /var/www/html/mail/themes/default/login.htm เพื่อปรับหน้าจอของหน้าแรก
แก้แฟ้ม inc/config.php ให้อ่านกับ POP3 ของ windows server 2003
จาก "login_type" => "%user%"
เป็น "login_type" => "%user%@%domain%"
|
|
9.69 ติดตั้ง DHCP server แจก Dynamic IP
: เพื่อให้เครื่อง Server มีบริการแจก IP ปลอมให้กับเครื่องในองค์กร เพราะปกติองค์กรจะได้ IP มา 1 Class C มี 256 หมายเลข แต่ถ้าในองค์กรมีเครื่องจำนวนมากกว่านั้น ก็จำเป็นต้องสร้าง DHCP server เพื่อแจก IP ปลอม และยังมีประโยชน์ในเรื่องของความปลอดภัย เพราะเครื่องที่ได้ IP ปลอม ย่อมต้องมีการทำงานขึ้นกับเครื่อง server จะแอบออกไปน้องเครือข่ายได้ยาก
ขั้นตอนการทำให้ Linux server บริการ DHCP (Dynamic Host Configuration Protocol)
- ถ้าใช้คำสั่ง setup เพื่อเปิดบริการ DHCP แล้วไม่พบบริการ ต้องติดตั้ง DHCP จากแผ่น CD ด้วยการใช้คำสั่งด้านล่าง ในห้องที่เก็บแฟ้มนี้ ก็ใช้ setup เข้าไปเปิดบริการนี้ใหม่
rpm -i dhcp*
- ต้องใช้โปรแกรม ipchains ท่านควรตรวจหาในเครื่องว่ามีหรือไม่ด้วยการการใข้ rpm -q ipchain ถ้าไม่มีก็ต้องติดตั้งเพิ่มจากแผ่น CD ด้วยคำสั่ง rpm -i ipchain* แล้ว ต้องใช้คำสั่ง setup เพื่อเข้าไปเปิดบริการ ipchains อีกครั้ง
- ทำให้เครื่องมี IP ปลอมเกิดขึ้นด้วย โดยพิมพ์สั่งใส่ใน /etc/rc.d/rc.local เพื่อกำหนด IP ปลอมแก่เครื่อง server นี้ ทุกครั้งที่เปิดเครื่อง
/sbin/ifconfig eth0:1 192.168.3.1
- สร้างแฟ้ม /etc/dhcpd.conf ด้วย pico หรือ vi
- การทำให้ใช้ IP forwarding ต้องแก้แฟ้ม /etc/sysctl.conf จาก 0 เป็น 1 โดยแก้เป็นบรรทัดด้านล่าง
net.ipv4.ip_forward = 1
เมื่อแก้ไขเสร็จแล้วให้พิมพ์คำสั่งใน command line ดังนี้
echo "1" >/proc/sys/net/ipv4/ip_forward
- ต้องสั่ง IP forwarding เพราะเครื่องลูกไปไหนไม่ได้ แต่เครื่อง server มี IP จริง และ IP ปลอม จึงต้องสั่งให้ IP ปลอมมาเข้ากับ IP จริง ด้วยการใช้ ipchains กำหนดการ forward
/sbin/ipchains -A forward -i eth0 -s 192.168.3.1/24 -j MASQ
- หลังผมเปิดบริการ เครื่องลูกก็ใช้งานได้แล้ว แต่ไม่อยากใช้งาน จึงปิดบริการด้วยการสั่ง setup แล้วเลือก * หน้า dhcp ออก
|
|
9.71 ติดตั้ง Web Mail ของ Adjeweb หรือ Squirrelmail
: โปรแกรมให้บริการที่ผมทดสอบให้บริการ มี 2 โปรแกรม ตอนหลังมาผมใช้แต่ squirrelmail เพราะนิยมใช้กันมาก
ขั้นตอนการติดตั้ง squirrelmail.org
- download โปรแกรมนี้จาก http://squirrelmail.org/download.php เพราะเชื่อว่าของใหม่ย่อมดีกว่าที่ติดมากับ RH9.0
- ใช้ rpm -i squirrelmail-1.4.5-1.noarch.rpm โปรแกรมก็จะเข้าไปใน /usr/share/squirrelmail
- ใน httpd.conf เพิ่ม Alias /webmail/ "/usr/share/squirrelmail/" เพื่อเรียกเว็บ http://... /webmail
- เปิดแฟ้ม /usr/share/squirrelmail/config/config.php แล้วแก้ไข option ต่าง ๆ ได้
จาก $default_charset = 'iso-8859-1'; เป็น $default_charset = 'windows-874';
จาก $squirrelmail_default_language = 'en_US'; เป็น 'th_TH';
- แค่นี้ก็ ok เพราะเครื่องเดียวกันเป็น web, mail และ smtp ในตัวเองครับ
- ยกเลิก comment คลุมภาษาไทย ใน /usr/share/squirrelmail/functions/i18n.php
$languages['en_US']['NAME'] = 'English';
$languages['en_US']['CHARSET'] = 'tis-620';
$languages['en_US']['LOCALE'] = 'en_US.ISO8859-1';
$languages['en']['ALIAS'] = 'en_US';
- Download plugins select_language จาก http://www.squirrelmail.org/plugin_download.php?id=253&rev=1228
- แฟ้มที่เก็บ Top menu ด้านขวา คือ /usr/share/squirrelmail/functions/page_header.php
+ พบคำว่า You must be logged in to access this page. ตรวจแล้วเกิดจาก server เต็ม จึง login ผ่าน webmail ไม่ได้
+ แก้ไขโดยเข้าห้อง /var/mail แล้วใช้คำสั่ง ls -alS
ขั้นตอนการติดตั้ง adjeweb.com
ข้อ 1 และ 2 จะทำเมื่อใช้คำสั่ง rpm -qa|grep imap แล้วไม่พบว่ามีอยู่แล้ว จึงต้องติดตั้งเพิ่ม
- หากยังไม่ได้ mount cd ต้องทำก่อนโดยใช้คำสั่ง mount /dev/cdrom ก็จะทำให้มีห้อง /mnt/cdrom ขึ้นมา ใช้คำสั่ง cd เข้าไปดูได้
- ติดตั้ง imap ซึ่งก็คือ pop3 นั่นเองจาก CD ที่ใช้ลง linux ด้วยคำสั่ง rpm -i imap-4.7-5.i386.rpm และ rpm -i imap-devel-4.7-5.i386.rpm
- ถ้าต้องการให้เครื่องนี้บริการ pop3 เอง สามารถเปิดบริการ โดยแก้แฟ้ม /etc/inetd.conf นำ # ออกหน้าคำว่า pop3 pop2 imap มิเช่นนั้นจะไม่สามารถบริการ pop ได้ แต่สามารถรับส่ง mail ด้วย telnet หรือจะใช้ adje ไปขอบริการจาก pop server ตัวอื่นก็ได้
คำสั่งที่ใช้ re-read inetd.conf คือ killall -HUB inetd และคำสั่งที่น่ารู้คือ ntsysv เพื่อใช้เปิด หรือปิดบริการใน /etc/services
- อาจตรวจสอบว่าเปิดบริการหรือไม่ด้วยคำสั่ง setup, system services ดูในส่วนบริการ ipop2 และ ipop3 จะต้องมีเครื่องหมาย x เพื่อแสดงว่าบริการนี้เปิดแล้ว
- สร้าง user ชื่อ webmail แล้วใช้ user นี้ทำงาน หรือใช้ su - webmail เพื่อเปลี่ยนตนเองอย่างง่าย ๆ ก็ได้
- copy โปรแกรมสำหรับ install จาก adjeweb.com หรือ install.pl # (ตัวนี้ต้อง rename ก่อน เพราะผม save เปลี่ยนชื่อไว้)
- หมายความว่าเมื่อ copy adjewebmailinstall.pl.txt มาได้แล้วให้ใช้ mv adjewebmailinstall.pl.txt install.pl เพราะถ้าผมเก็นในสกุล .pl ท่านจะ copy มาไม่ได้
- ก่อนลงโปรแกรมให้ chmod ห้อง /home/httpd/cgi-bin เป็น 777 ก่อนแล้วค่อยเปลี่ยนคืนเป็น 755 ด้วยคำสั่ง chmod 777 /home/httpd/cgi-bin
- เมื่อได้โปรแกรมมา ให้ chmod 755 install.pl
- Install ด้วยการพิมพ์ว่า ./install.pl ซึ่งแฟ้มนี้ควรอยู่ใน home directory ของท่าน
- เมื่อถามว่า cgi อยู่ห้องใดก็มักจะเป็น /home/httpd/cgi-bin
- เมื่อถามว่า pop server คืออะไร ก็ตอบว่า www.isinthai.com หรือ กดปุ่ม Enter หรือ จะใส่ ip ของเครื่องก็ OK เป็นต้น
- เมื่อถามว่า pop server คืออะไร ก็ตอบว่า mail.loxinfo.co.th เป็นต้น
- reboot สักหน่อย แล้วเปิดเว็บเรียก http://www.isinthai.com/cgi-bin/WebMail/inbox.cgi ก็เรียบร้อย
- จะให้ดีเป็น su แล้วให้ ln -s /home/httpd/cgi-bin/WebMail /home/httpd/html/webmail จะทำให้เปิดเว็บด้วย http://www.isinthai.com/webmail ซึ่งสั้นกว่ากันเยอะ
|
|
9.72 ติดตั้ง squid เป็น Proxy server ที่ 3128
: โปรแกรมนี่จะทำให้ความเร็วในการให้บริการ internet โดยรวมขององค์กรดีขึ้น ถ้าปฏิบัติตามระเบียบในการใช้ proxy
ระเบียบการใช้ proxy
- เมื่อติดตั้ง squid ลงไปใน linux server ขององค์กรแล้ว ท่านก็จะได้เครื่อง proxy server ขึ้นมา 1 ตัว
- ไปกำหนดในเครื่องทุกเครื่องให้มองมาที่ proxy server ตัวนี้ เช่น www.isinthai.com บน port 3128 อย่ากำหนดมาที่นี่นะครับ เพราะจะทำให้เครื่องท่าน เปิดเว็บช้าโดยใช่เหตุ แต่ถ้าเครื่องของท่านตั้งอยู่ในเครือข่ายของโยนก นั่นจะเป็นอะไรที่ถูกต้อง
- หลังจากกำหนด proxy ให้ชี้ไปที่ www.isinthai.com อย่างถูกต้องแล้ว ทุกครั้งที่เปิดเว็บด้วย browser จะวิ่งไปที่เครื่องนั้นก่อน เพื่อตรวจว่า เว็บที่ขอเปิดเคยเปิดหรือไม่ ถ้าเคยเมื่อไม่นานนี้ ก็จะไม่ออกไปนอกเครือข่าย แต่จะเอาข้อมูลจาก proxy มาให้ท่าน ทำให้ไม่ต้องออกไปนอกเครือข่าย โดยไม่จำเป็น
ขั้นตอนข้างล่างนี้ อาจไม่จำเป็น ต้องทำทุกขั้นตอน ถ้าตอน install linux ได้เลือก squid หรือ everything ก็ไม่จำเป็นต้อง ลงโปรแกรมอีกรอบ
เพียงแต่เข้าไป set up แฟ้ม squid.conf ใน /home/squid/etc/squid.conf หรือ /etc/squid/squid.conf แต่ถ้าเปลี่ยนใจต้องการ ลง squid ใหม่ แทนที่จะใช้ตัวที่ติดตั้งมาก็ลบตัวเดิมออกด้วยคำสั่ง rpm -e squid-2.3.STABLE1-5 เพราะผมใช้คำสั่ง rpm -qa|grep squid แล้วพบว่า install มาตอนติดตั้ง linux ครับ
(squid-2.3-200103110000-src.tar.gz ขนาด 971,877 byte)
ติดตั้ง squid เพื่อทำให้ server เป็น proxy สำหรับองค์กร ที่ต้องการลดปัญหาคอขวด มีบทความแนะนำที่ http://www.thailinux.com/1999/04/18/topic1.html คุณ new way เขียนได้ละเอียดดีมาก ต้องยกนิ้วให้ครับ ซึ่งแนะนำให้ Download squid ของ http://squid.nlanr.net/Squid/ เมื่อลง squid ตามขั้นตอนแล้ว มี จุดที่ต้องแก้ไขในแฟ้ม ~/etc/squid.conf คือ cache_effective_user squid และ cache_effective_group squid และ cache_peer www.isinthai.com parent 3128 3130 และ http_access allow all
ดู log file ของ squid ที่ห้อง ~/logs ในแฟ้ม cache.log (ต้องใช้ user squid ในการ set squid ตลอดนะครับ) โดยใช้คำสั่ง tail -f access.log และสามารถอ่านรายละเอียด การกำหนดเพิ่มเติม ได้ที่ http://www.squid-cache.org/Doc/Hierarchy-Tutorial/
ขั้นตอนการติดตั้ง squid ให้เครื่องเป็น proxy server http://www.thailinux.com/1999/04/18/topic2.html
su
adduser squid
passwd squid
su squid (ไม่ใช้ user squid ก็ได้ แต่ถ้าใช้ดูด้วยว่า gcc เปิดหรือไม่)
cd /home/httpd/html/thaiall
tar xfvz squid-2.3-200103110000-src.tar.gz
cd squid-2.3-200103110000
./configure --prefix=/home/squid
make all
make install (แปลกมากที่ บรรทัดนี้ error แต่ก็ไม่เป็นไร เพราะใช้งานได้ปกติ)
cd /home/squid/etc
pico squid.conf
# Detail in file /home/squid/etc/squid.conf หรือ /etc/squid/squid.conf
http_port 3128
cache_peer www.isinthai.com parent 3128 3130
cache_mem 8 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
minimum_object_size 0 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_dir ufs /home/squid/cache 100 16 256
cache_access_log /home/squid/logs/access.log
cache_log /home/squid/logs/cache.log
cache_store_log /home/squid/logs/store.log
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
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 SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow all
icp_access allow all
miss_access allow all
cache_effective_user squid
cache_effective_group squid
ทดสอบการทำงานของ squid
cd /home/squid/bin หรือ /usr/sbin
squid -z สร้าง swap directory
squid สั่ง start manual
ps aux|grep squid ดูว่า squid ทำงานใน process หรือไม่
cd /home/squid/logs ห้องนี้เก็บ ผลการทำงานเมื่อใช้ squid
tail -f access.log เมื่อมีคนเปิดเว็บแล้วใช้บริการ squid จะมีผลต่อแฟ้มนี้
วิธีทำให้ทุกครั้งที่เปิดเครื่องแล้ว run squid อัตโนมัติ หรือปรับปรุง
# เพิ่มบรรทัดข้างล่างนี้ไปในแฟ้ม /etc/rc.d/rc.local
su -c "nohup /home/squid/bin/squid&" squid
หรือ
su -c "nohup /usr/sbin/squid&" squid
# เมื่อปรับค่า เช่นขนาดของ cache ใน /home/squid/etc/squid.conf หรือ /etc/squid/squid.conf
แล้วต้องทำบรรทัดข้างล่างนี้ เพื่อ update ค่าต่าง ๆ ใหม่
squid -k reconfigure
# แสดง option ของ squid ให้พิมพ์ว่า
squid -k
|
|
9.73 เพิ่ม incoming ในบริการ ftp
: บริการ ftp ทำให้ท่านสามารถเข้ามา คัดลอกแฟ้ม หรือส่งแฟ้มไว้ได้ เช่น ftp://www.isinthai.com ftp://ftp.isinthai.com
พบว่าการปิด gcc นั้นสามารถป้องกัน hacker ในระดับ telnet ได้ระดับหนึ่ง แต่ถ้ามีการเปิด ftpd ด้วย ถึงไม่ telnet เข้ามา hacker ก็สามารถเจาะเข้ามาในระบบได้ .. เขาทำได้
รายชื่อห้องใน /home/ftp แต่เราได้เพิ่ม incoming เข้าไป เพื่อให้ส่งแฟ้มเข้ามาได้
d--x--x--x 2 root root 4096 Mar 9 20:51 bin
d--x--x--x 2 root root 4096 Mar 9 20:51 etc
drwxr-xr-x 2 root root 4096 Mar 9 20:51 lib
drwxrwxrwx 2 root root 4096 Mar 20 23:55 incoming
drwxr-sr-x 2 root ftp 4096 Mar 11 13:34 pub
วิธีสร้างห้อง incoming เพื่อให้ใคร ๆ ส่งแฟ้มเข้ามาได้
su
cd /home/ftp
mkdir incoming
chmod 777 incoming
|
|
9.74 User authentication ด้วย .htpasswd + .htaccess
: การปิดห้อง แต่ยอมให้เข้าด้วย username และ password ที่กำหนด
อ่านเพิ่มเติมได้จาก http://www.apacheweek.com/features/userauth หรือ http://www.thaiall.com/cgi/htpasswd.pl
ขั้นตอนการ lock ห้องของตนเอง ในฐานะผู้ใช้ทั่วไป
- ท่านต้องส่งแฟ้ม 2 แฟ้มคือ .htpasswd และ .htaccess ไปไว้ในห้องที่ต้องการ lock โดยทำการถาม User และ password ก่อนเข้า
- .htaccess นั้นสามารถคัดลอกด้านล่างไปได้เลย โดยแก้ไขอะไรเล็กน้อยตามต้องการ เช่นเปลี่ยนคำว่า lock ที่บรรทัดแรก เป็น username ของท่าน
- .htpasswd แต่ละบรรทัดคือ 1 user สำหรับแฟ้มนี้ ถ้าผู้ดูแลไม่คิดบริการ ท่านก็ใช้บริการไม่ได้ สำหรับ server ที่ผมดูแล ได้ทำ โปรแกรมเข้ารหัส สร้างรหัสให้
ถ้าเป็นผู้ดูแล(Super user) สามารถใช้
คำสั่ง #htpasswd -nb yourname yourpassword แสดงรหัสผ่าน ที่ shell prompt
คำสั่ง #htpasswd -c .htpasswd yourname สร้างแฟ้ม .htpasswd พร้อม รอรับรหัสผ่าน จากแป้นพิมพ์
ดูเพิ่มเติมจาก #man htpasswd ที่ shell prompt
- เปิดเว็บ http://www.isinthai.com/lock/index.php เพื่อป้อนรหัสผู้ใช้ และรหัสผ่าน จะได้รหัสที่สร้างขึ้น เพื่อนำไปเพิ่มในแฟ้ม .htpasswd
http://www.isinthai.com/lock/.htaccess
AuthUserFile /var/www/html/lock/.htpasswd
AuthName "User:yourname Password:yourpassword for accessing this directory"
AuthType Basic
require valid-user
DirectoryIndex index.html index.htm index.shtml index.php
http://www.isinthai.com/lock/.htpasswd
test:1A/c8vPQJQiL2
yourname:UtecEDcEa3/L2
ปัญหา และวิธีแก้ไข ที่ผู้ดูแลอาจพบ
ครั้งแรกที่สร้าง .htaccess และ .htpasswd ก็ไม่เกิดผล คือสองแฟ้มนี้ไม่ทำงาน ตรวจสอบแล้วพบว่าผู้ดูแลต้องแก้แฟ้ม /etc/httpd/conf/httpd.conf
ให้ส่วนของ <Directory "/var/www/html"> ในบรรทัดที่เขียนว่า AllowOverride None เปลี่ยนเป็น AllowOverride All
หรือส่วนของ <Directory "/"> ในบรรทัดที่เขียนว่า AllowOverride None เปลี่ยนเป็น AllowOverride All ถ้าท่านใช้ public_html
http://www.isinthai.com/lock/index.php
:: ใช้แสดงรหัสที่ผู้ใช้กำหนดขึ้น และนำไปเพิ่มในแฟ้ม .htpasswd ของ directory ที่ต้องการ lock
<form action=index.php method=get>
User: <input name=u value=yourname><br>
Password: <input name=p value=yourpassword><br>
<input type=submit value=generate_password>
</form>
This line for .htpasswd<br><font face='TLWGTypewriter'>
<?
$x = "htpasswd -nb ". $_GET['u'] . " " . $_GET['p'];
echo `$x`;
?>
<hr>
Detail of .htaccess and .htpasswd at<br>
http://www.thaiall.com/cgi/htpasswd.pl
|
|
9.75 เปิดบริการ SSI (Server Side Include)
: บริการนี้ทำให้การเขียน CGI มีสีสรรขึ้นอีกมาก และเพิ่มลูกเล่นให้กับเว็บได้อีกเพียบ
SSI คือการทำให้สามารถเรียก CGI เช่น perl เข้าไปประมวลผลในเว็บ htm โดยทำการประมวลผล แล้วส่งค่าเข้าคืนให้กับผู้เรียกเว็บ การทำงานลักษณะนี้ จะเป็นการ run program ที่ server แล้วส่งผลให้กับผู้ร้องขอเช่นตัวอย่างข้างล่างนี้
ผลของการเปิดเว็บ test.htm จะแสดงตัวอักษร x บนจอภาพ ซึ่งเกิดจากบริการ ssi นั่นเอง แต่ถ้า server ไม่บริการ ssi บรรทัดคำสั่งก็จะแสดงผลอย่างนั้น แต่จะไม่เห็นผลอะไรบนจอภาพเลย เนื่องจากคำสั่งดังกล่างไม่ได้ถูกประมวลผล ตามหน้าที่ของ ssi
ถ้า SSI work นะครับ เวลาเปิด test.htm จะเห็น x ตัวเดียว เรียกว่า ssi สมบูรณ์ หรือเปิดเว็บ pro.pl แล้วต้องเห็น x ตัวเดียวเช่นกัน แต่ถ้าเปิดแล้วเห็น source code แสดงว่าไม่มีการประมวลผล .pl นั้น
สมมุติให้ test.htm เขียนดังข้างล่างนี้
<body>
<!--#exec cgi="pro.pl"-->
</body>
สมมุติให้ pro.pl เขียนดังข้างล่างนี้
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "x";
การทำให้ Linux (RH 8.0)ให้บริการ SSI
บริการนี้มีอยู่แล้วไม่ต้องลงโปรแกรมเพิ่ม เพียงแต่แก้ไขข้อกำหนดในแฟ้ม /etc/httpd/conf/httpd.conf เท่านั้น โดยผมได้ดูตัวอย่างพร้อมคำอธิบายจาก http://www.c2.net/support/sh3/admin_guide/chapter7.fm.html ซึ่ง Search เจอจาก redhat.com
# <Directory "/var/www/html"> ของเดิม
# Options Indexes FollowSymLinks ของเดิม
<Directory "/home/httpd/html">
Options All
# AddHandler cgi-script .cgi ของเดิม
AddHandler cgi-script .cgi .pl
# AddType text/html .shtml ของเดิม
# AddHandler server-parsed .shtml ของเดิม
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
จากการ set up ครั้งนี้ทำให้การประมวลผล Perl ที่ต้อง Run จากห้อง cgi-bin เช่น http://www.isinthai.com/cgi-bin/thaiall/test.pl มาเป็น http://www.isinthai.com/thaiall/test.pl ทำให้สะดวกขึ้นมาก และที่ผมพบวิธีการ setup SSI ในครั้งนี้ต้องยกความดีความชอบให้ Redhat.com เพราะเขาเขียนอธิบายไว้พอเข้าใจ รู้สึกว่าเข้าที่นี่แล้วหาอะไร ก็เจอไปหมดครับ
|
|
9.76 การติดตั้ง Radius
: เพื่อทำเครื่อง Radius server รับบริการ Connect Internet ทางโทรศัพท์ผ่าน External modem
โปรแกรมที่ใช้ install คือ radius-1.16.tar.GZ 27804 Byte
ขั้นตอนการลงโปรแกรม
su
tar xvfz radius-1.16.tar.GZ
cd radius-1.16
cd src
make
จะเกิด error ว่า
radiusd.o: In function `unix_pass':
radiusd.o(.text+0x1c77): undefined reference to `crypt'
collect2: ld returned 1 exit status
make: *** [radiusd] Error 1
จะพบว่า make ไม่ผ่านให้
ให้แก้แฟ้ม Makefile ด้วยคำสั่ง pico Makefile
แล้วแก้บรรทัดหนึ่งใน Makefile
จาก LIBS=
เป็น LIBS= -lcrypt
make
cd ../raddb
pico /etc/services
radius 1645/udp radiusd
radacct 1646/udp
#radius 1812/tcp # Radius
#radius 1812/udp # Radius
#radacct 1813/tcp # Radius Accounting
#radacct 1813/udp # Radius Accounting
umask 22
mkdir /usr/adm
mkdir /etc/raddb /usr/adm/radacct
chmod 700 /etc/raddb /usr/adm/radacct
cp * /etc/raddb
cp ../src/radiusd /etc
cd /etc/raddb
cp clients.example clients
cp users.example users
เพิ่มคำว่า /etc/radiusd ในแฟ้ม /etc/rc.d/rc.local
เพื่อให้ทุกครั้งที่เปิดเครื่องจะสั่ง run radiusd ขึ้นมา
ให้แก้แฟ้ม users โดยลบ user อื่นออกให้หมด เพื่อต่อไปจะถาม user จาก /etc/passwd
ให้แฟ้ม /etc/raddb/users เหลือเฉพาะส่วนข้างล่างนี้
ให้แก้แฟ้ม /etc/raddb/users ให้เป็นไปดังข้างล่างนี้จะรับระบบโทรศัพท์ได้
DEFAULT Password = "UNIX"
User-Service-Type = Login-User,
Framed-Protocol = PPP,
Framed-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Compression = Van-Jacobsen-TCP-IP,
Framed-MTU = 1500
แฟ้ม /etc/raddb/users สามารถเขียนได้อีกรูปแบบเพื่อบริการ Modem
ที่เข้ามาสอบถาม user แต่ตัว modem ไม่ได้ติดอยู่กับตัวเครื่อง
yonokadmin Password = "123"
User-Service-Type = Shell-User,
Login-Service = Telnet,
yonok Password = "456"
User-Service-Type = Shell-User,
Login-Service = Telnet,
student1 Password = "789"
User-Service-Type = Login-User,
Framed-Protocol = PPP,
Framed-Address = 255.255.255.254,
Framed-Netmask = 255.255.255.255,
Framed-Routing = None,
Framed-Filter-Id = "std.ppp.in",
Framed-MTU = 1500,
student2 Password = "17890"
User-Service-Type = Login-User,
Framed-Protocol = PPP,
Framed-Address = 255.255.255.254,
Framed-Netmask = 255.255.255.255,
Framed-Routing = None,
Framed-Filter-Id = "std.ppp.in",
Framed-MTU = 1500
เมื่อต้องการเก็บข้อมูลการ login เข้ามาใช้บริการ
ต้องสร้าง user ใหม่ด้วย useradd radius จะสร้างห้อง /home/radius ขึ้นมาให้ ดังข้างล่างนี้ก่อน
su
useradd radius
cd /home/radius
mkdir backup
สร้าง runacct เก็บในห้อง /home/radius
เขียน shell script สำหรับเก็บผลการ login ผ่านเข้ามาในระบบ
เมื่อเขียนเสร็จแล้วให้ใช้คำสั่ง chmod 700 เพื่อให้เป็นโปรแกรมประมวลผล
(ตอนแรกผมก็ไม่รู้ว่า detail นั้นอยู่ที่ไหน เจอเพราะใช้ find / -name detail ครับ)
#!/bin/sh
cp /usr/adm/radacct/door.yonok.ac.th/detail /home/radius
/bin/date +%d > /tmp/date
/bin/date +%m > /tmp/month
/bin/date +%y > /tmp/year
DATE=`cat /tmp/date`
MONTH=`cat /tmp/month`
YEAR=`cat /tmp/year`
TODAY="$DATE$MONTH$YEAR"
cd /home/radius
cp detail backup
mv detail $TODAY
cd /tmp
rm date month year
rm /usr/adm/radacct/door.yonok.ac.th/detail
ห้อง /etc/cron.daily
ให้เพิ่มแฟ้มอีก 1 แฟ้มในห้อง /etc/cron.daily โดยมีขั้นตอนดังนี้
su
pico radiusprocess
พิมพ์คำนี้ลงไป /home/radius/runacct แล้ว ctrl-x ออกมาเลย
chmod 755 radiusprocess
สรุปในเรื่องของ Radius ดังนี้
- แฟ้ม /etc/rc.d/rc.loal อาจต้องเพิ่มไป 2 บรรทัด
เพราะแฟ้มนี้ทำหน้าที่เสมือน autoexec.bat ของ dos และคำสั่ง 2 บรรทัดนี้อาจไม่จำเป็นก็ได้ แล้วแต่กรณี
/etc/radiusd
/sbin/ifconfig eth0:1 202.29.78.15
- ห้อง /home/radius มีแฟ้มชื่อ runacct ซึ่งเป็น script สำหรับเก็บข้อมูลการ login ไว้ทำสถิติ
- ห้อง /etc/raddb มีแฟ้มชื่อ users ซึ่งเก็บ account สำหรับ connect เข้ามาทั้งหมด
- ห้อง /etc/cron.daily มีแฟ้มชื่อ radiusprocess เพื่อสั่งให้ประมวลผลแฟ้ม /home/radius/runacct ทุกวัน
- แก้แฟ้ม /etc/raddb/clients ให้มีคำว่า 202.29.78.254 YournameRadiuS แทนคำว่า postmaster1 testing123
จึงจะรับ connection จากชุด Router Modem แต่ถ้าเป็นการ Connect Modem ผ่าน Com port แฟ้มนี้ไม่แก้อะไรก็ใช้ได้
- สำหรับ crond ต้องเปิดด้วย ใช้ ntsysv ดูว่า crond ถูกปิดหรือไม่ ถ้าไม่เปิดก็เก็บประวัติการเข้าใช้ไม่ได้
|
|
9.77 ติดตั้ง Modem สำหรับให้บริการเรียกเข้ามา
: Radius server คือการทำให้เครื่องให้บริการในการสอบถาม user แต่การติดตั้ง Modem เข้าไปก็เป็นอีกเรื่องหนึ่ง
วิธีการติดตั้ง Modem แบบ x window http://www.thailinux.com/1999/03/14/topic1.html
สำหรับเรื่อง Modem ตอนนี้ผมยังไม่ได้ทำ เพราะหาเครื่องทดลองยังไม่ได้ แต่มอบหมายให้สุวิทย์ไปดูอยู่ครับ
การติดตั้ง Modem ที่ง่ายที่สุดคือใช้ Modem tool โดยการ startx แต่ถ้าจะทำแบบ text mode ต้องอ่านที่ http://www.thailinux.com/1999/03/21/topic1.html โดยติดตั้งที่ COM1 ทำ symbolic link ใน directory /dev จาก ttyS0 เป็น modem หรือถ้าติดตั้งบน COM2 ก็ ttyS1 แล้วก็ไล่เลขไปเรื่อย ๆ ถ้าคุณมี serial port มากกว่า 2 (ขอย้ำ วิธีที่ง่ายที่สุดคือ startx แล้วเรียก modemtool)
การต่อ modem โทรเข้า isp แบบ text mode
#ls -l /dev/modem ตรวจสอบการเชื่อมต่อ modem
ถ้าไม่ได้ต่อ แต่เอาโมเด็มเสียบเข้าเครื่องที่หลัง ให้สร้างการเชื่อมต่อใหม่
#ln -sf /dev/cua0 /dev/modem สำหรับต่อ modem จาก com1
#ln -sf /dev/cua1 /dev/modem สำหรับต่อ modem จาก com2
สร้าง Script testmodem เชื่อมต่อ 13 บรรทัดข้างล่างนี้
#!/bin/bash
TELEPHONE=188,125 # The telephone number for the connection
ACCOUNT=george # The account name for logon (as in 'George Burns')
PASSWORD=gracie # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
export TELEPHONE ACCOUNT PASSWORD
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS1 115200 \
asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
# /usr/sbin/pppd debug lock /dev/modem 115200 defaultroute
จากนั้นก็ chmod 700 testmodem เพื่อให้โปรแกรมนี้ run ได้
คำสั่งที่สำหรับ disconnect
cp /usr/doc/ppp-2.3.11/scripts/ppp-off /root/ppp-off
chmod 700 /root/ppp-off
เพิ่มบรรทัดข้างล่างนี้เข้าไปในแฟ้ม /etc/mgetty+sendfax/login.conf
* - @ /usr/sbin/pppd auth -chap +pap login modem crtscts lock
|
|
9.78 SMTP สำหรับ outgoing ของ Outlook ..
: Sendmail Transfer protocol ทำให้ส่ง e-mail ผ่าน outlook หรือโปรแกรมอื่น ๆ ในลักษณะเดียวกันได้
บริการนี้ทำให้ส่ง e-mail ผ่านโปรแกรม outlook ได้ การเปิดบริการ smtp มีขั้นตอนหลายอย่าง ตั้งแต่การเปิด port และเปิด relay ให้กับเครื่องในเครือข่าย ถ้าไม่เปิด relay ให้ก็หมดสิทธิใช้ เพราะ relay จะ denied การให้บริการ SMTP เพราะ SMTP เหมาะกับการเปิดบริการให้กับสมาชิกเท่านั้น
อธิบายการใช้ cyrus เป็น imap http://rd.cc.psu.ac.th/content/view/23/46/
ใน FC4 ใช้ dovecot แทน imap ดูจาก http://www.itwizard.info/webboard/view.php?No=545
#getsebool -a แสดงสถานะว่าบริการอะไร Active อยู่บ้าง
#setsebool -P httpd_can_network_connect=1 (เปลี่ยนเป็น active แบบถาวร)
อ่านเพิ่มเติมได้ที่
- http://thaicert.nectec.or.th/paper/unix_linux/sendmail.php
- http://www.redhat.com/support/resources/faqs/RH-sendmail-FAQ/book1.html
- เข้า setup เลือก system services แล้วเลือกเปิด sendmail
ผลการเปิด sendmail จะทำให้ port 25 ถูกเปิด
ลองใช้คำสั่ง netstat -a จะแสดงรายชื่อ port ที่เปิดให้บริการ
ถ้าไม่มีตัวเลือก sendmail ก็ต้องหาแผ่น CD มาติดตั้งเพิ่มด้วยการใช้คำสั่ง rpm -i sendmail
- แก้แฟ้ม /etc/mail/sendmail.mc (เพิ่มบริการตรวจสอบ Blacklist)
เดิม DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
ใหม่
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
dnl changed FEATURE(dnsbl, `rbl.maps.vix.com', `Open spam relay - see http://maps.vix.com/')dnl
dnl changed FEATURE(dnsbl, `blackholes.mail-abuse.org', `Rejected - see http://www.mail-abuse.or$
dnl changed FEATURE(dnsbl, `dialups.mail-abuse.org', `Dialup - see http://www.mail-abuse.org/dul$
dnl changed FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://work-rss.mail-$
dnl changed FEATURE(dnsbl, `inputs.orbz.org', `Open spam relay - see http://orbz.org/')dnl
dnl changed FEATURE(dnsbl, `outputs.orbz.org', `Open spam relay - see http://orbz.org/')dnl
FEATURE(dnsbl, `orbs.dorkslayers.com', `Open spam relay - see http://dorkslayers.com/')dnl
FEATURE(dnsbl, `dev.null.dk', `Open spam relay - see http://null.dk/')dnl
FEATURE(dnsbl, `bl.spamcop.net', `Open spam relay - see http://spamcop.net/')dnl
FEATURE(dnsbl, `relays.osirusoft.com', `Open spam relay - see http://osirusoft.com/')dnl
FEATURE(dnsbl, `relays.visi.com', `Open spam relay - see http://visi.com/')dnl
FEATURE(dnsbl, `list.dsbl.org', `Open spam relay - see http://dsbl.org/')dnl
FEATURE(dnsbl, `relays.ordb.org', `Open spam relay - see http://ordb.org/')dnl
FEATURE(dnsbl, `proxies.relays.monkeys.com', `Open spam relay')dnl
FEATURE(dnsbl, `dnsbl.sorbs.net', `Open spam relay')dnl
FEATURE(dnsbl, `dynablock.easynet.nl', `Open spam relay')dnl
FEATURE(delay_checks)dnl
FEATURE(relay_based_on_MX)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
Cwlocalhost.localdomain
Cwmail.yonok.ac.th
Cw202.29.78.1
+ การเพิ่มบรรทัดข้างบนนี้ท่านต้องแน่ใจว่า server ของท่านไม่อยู่ใน black list มิเช่นนั้นจะไม่ได้รับ e-mail เข้ามาเลย
+ ถ้าเครือข่ายต่างประเทศล่ม แล้วท่านยังใช้บริการ black list ท่านจะไม่สามารถรับจดหมายใหม่ จากเครื่อข่ายในไทย เพราะระบบกรอง mail ล้มเหลว
- พบว่า config ใน sendmail.mc ผิด เรื่อง local_procmail ต้องแก้ให้ถูก ถ้าไม่ถูก .procmailrc ใน home ก็ไม่ทำงาน .. เท่านั้นเอง
หลักการนี้ยังมีปัญหา อย่างพึ่งทำอะไรนะครับ ผมต้องค้นข้อมูลอีกที เพราะใช้แล้วระบบส่ง mail ไม่ออก
เดิม FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
ใหม่ FEATURE(`local_procmail',`procmail -t -Y -a $h -d $u')dnl
- แก้แฟ้ม /etc/mail/access เพื่อเปิด relay
localhost.localdomain RELAY
localhost RELAY
202.29.78 RELAY
127.0.0.1 RELAY
10 550 No service
- เคยใช้บรรทัดนี้ แต่ใน RH9.0 ไม่ได้ลง SQL จึงใช้คำสั่งนี้ไม่ได้ # update /etc/mail/*.db
- # cd /etc/mail
- # make
- # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
- # /etc/init.d/sendmail restart
- # /sbin/chkconfig --level 3 sendmail on
วิธีหยุด spam หรือ junk แบบ procmail ที่ http://www.redhat.com
- เปิดแฟ้ม /etc/postfix/main.cf ควบคุมการส่งอีเมลขยะออกจากเครื่อง ผ่าน relayhost
#relayhost = [an.ip.add.ress]
relayhost = smtp.yonok.ac.th
แล้ว Restart Sendmail อีกครั้ง ตรวจด้วย ps -aux | grep sendmail
local_destination_concurrency_limit = 3
- เปิดแฟ้ม /etc/postfix/master.cf ควบคุมการส่งอีเมลขยะออกจากเครื่อง ผ่าน spamassassin
smtp inet n - n - - smtpd -v (ทำให้เก็บ log ได้ละเอียด)
smtp inet n - - - - smtpd -o content_filter=spamassassin
spamassassin unix - n n - - pipe
- flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
|
|
9.79 ติดตั้ง SSL (Secure Sockets Layer)
: ปกป้องรหัสของผู้ใช้เมื่อเชื่อมต่อกับเครื่องบริการ
SSL (Secure Sockets Layer) เป็นระบบรักษาความปลอดภัยในเว็บไซต์รูปแบบหนึ่งที่เป็นที่นิยมกัน ซึ่ง SSL จะใช้เพื่อเข้ารหัส (encrypt) ข้อมูลตัวมันเอง ใช้เพียงแต่การตรวจสอบหรือยืนยันได้เฉพาะฝั่งผู้ขายเท่านั้นว่ามีตัวตนจริง ไม่สามารถยืนยันตัวผู้ซื้อได้ ซึ่ง SSL จะมีความเร็วในการทำงานมากกว่า PKI ประมาณ 10 - 100 เท่า และยังสามารถใช้งานกับบราวเซอร์ต่าง ๆ ได้ การทำงานจะเริ่มจาก ผู้ใช้งานเริ่มกระบวนการติดต่อไปยังเว็บเซิร์ฟเวอร์ที่มีระบบ SSL หลังจากนั้นเซิร์ฟเวอร์จะส่งใบรับรอง (Server Certificate) กลับมาพร้อมกับการเข้ารหัสด้วยกุญแจสาธารณะ (Public Key) ของเซิร์ฟเวอร์ จากนั้นคอมพิวเตอร์ของฝั่งผู้รับจะทำการตรวจสอบใบรับรองอีกที เพื่อตรวจสอบตัวตนของฝั่งผู้ค้า หลังจากนั้นจะทำการสร้างกุญแจสมมาตร (Symmetric Key) โดยการสุ่มและทำการเข้ารหัสกูญแจสมมาตรด้วยกุญแจสาธารณะของเซิร์ฟเวอร์ที่ได้รับมาเพื่อส่งกลับไปยังเซิร์ฟเวอร์ เมื่อได้รับแล้วก็จะทำการถอดรหัสด้วยกุญแจส่วนตัว (Private Key) ก็จะได้กุญแจสมมาตรของลูกค้ามาใช้ในการติดต่อสื่อสาร เพื่อให้การติดต่อสื่อสารถึงกันได้อย่างปลอดภัย
อ.อิทธิพล เพื่อนของผมทดสอบใช้โปรแกรม sniffer ในเครือข่ายของเรา ทำให้ผมต้องศึกษา SSL อย่างจริงจัง แต่เครื่องเมล์ของผมใช้ Fedora ซึ่งมีเอกสารเกี่ยวกับรุ่นนี้ไม่มากนัก จึงใช้เวลา Config อยู่นานกว่าจะลงตัว Port ของ SSL คือ 443
ตัวอย่างคำสั่ง
#rpm -q httpd
#rpm -ql openssl
#rpm -q mod_ssl
#rpm -qa |grep ssl
#yum -y install httpd
#yum -y install mod_ssl
#find / -name openssl.cnf
#openssl version -a
#openssl help
#openssl speed
#ln -s /etc/pki/tls/certs/Makefile /etc/httpd/conf/
#cd /etc/httpd/conf
#make server.key
#/usr/bin/openssl rsa -in server.key -out server.key
#make server.csr
#/usr/bin/openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
#chmod 400 server.*
#vi /etc/httpd/conf.d/ssl.conf
old #DocumentRoot "/var/www/html"
new DocumentRoot "/var/www/html"
old #ServerName www.example.com:443
new ServerName yn1.yonok.ac.th:443
old SSLCertificateFile /etc/pki/tls/certs/localhost.crt
new SSLCertificateFile /etc/httpd/conf/server.crt
old SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
new SSLCertificateKeyFile /etc/httpd/conf/server.key
#vi /etc/sysconfig/selinux
old SELINUX=enforcing เพื่อสั่งเปิด
new SELINUX=disabled เพื่อสั่งปิด
#vi /etc/httpd/conf/httpd.conf
<VirtualHost 202.29.78.1:443>
DocumentRoot /var/www/html/ssl
ServerName www.isinthia.com:443
SSLEngine on
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key
</VirtualHost>
#/etc/init.d/httpd restart
เว็บเพจที่พบข้อมูลเกี่ยวกับ SSL
*** http://www.linux-sxs.org/internet_serving/apache2.html ละเอียดชัดเจน
*** http://forum.modoeye.com/module30-32.html (สุดยอดจริง ๆ )
*** http://www.madboa.com/geek/openssl/
*** http://fedoracore4.com/SSLv-domain.php
*** http://www.macmil.co.jp/macmil/linux017.htm (core 3 และ core 4)
http://www.zend.com/tips/tips.php?id=152&single=1
http://www.linuxhelp.net/guides/apachessl/
http://www.moph.go.th/helpdesk/squid/linux-01.php
http://nuke.thaihealth.net/article86.html
http://bloggang.com/mainblog.php?id=naigod&month=07-12-2005&group=4&blog=1
http://itweb.lib.ru.ac.th/webboard/00193.html
http://www.witty.net/books/apache.html
http://www.ca.tot.co.th/knowledge_ssl.html (ความหมายไม่ยาว)
http://thaicert.nectec.or.th/paper/unix_linux/apache_chklist.php (เป็นเพียง check list)
http://www.acisonline.net/article_prinya_eweek_151147.htm (ช่องโหว่ของ SSL)
http://www.phpconcept.com/index.php?option=content&task=view&id=12&Itemid=28 (ติดตั้งหลายอย่าง)
http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x246.html
http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x195.html
http://www.stanton.dtcc.edu/stanton/cs/admin/notes/ssl/
http://bruno.vernay.free.fr/wp/index.php?tag=fedora
http://www.joreybump.com/code/howto/smtpauth.html (SSL for SMTP)
http://silas.psfc.mit.edu/tp41FC4.html (Thinkpad และ Fedora Core 4)
http://fedorasrv.com/postfix-tls.shtml
http://www.esensualstudios.com/linux.php
http://www.shitomi.jp/server/apache.html
http://www.trdlo.cz/webserver.php
http://www.scalix.com/community/viewtopic.php?t=1634
http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html
http://www.tc.umn.edu/~brams006/selfsign.html
http://www.apache-ssl.org/httpd.conf.example
http://www.a-yu.com/net/apache07.html
http://www.aconus.com/~oyaji/www/apache_linux_ssl.htm
http://www.mail-archive.com/modssl-users@modssl.org/msg17111.html
|
|
9.95 การย้ายระบบ user จากเครื่องหนึ่งไปอีกเครื่องหนึ่ง
: วิธี copy passwd, shadow, group และแฟ้มอื่น ๆ อีกมากมาย
ขั้นตอนการ copy passwd,shadow,group
ขั้นตอนที่ 1 : เตรียมพร้อม และทำความเข้าใจ
- ใจเย็น ๆ ดูว่านอกจาก 3 แฟ้มดังกล่าวแล้ว ท่านจะคัดลอกแฟ้มอื่นอีก หรือไม่ เช่น mail ใน inbox ซึ่งอยู่ในห้อง /var/spool/mail หรือ ข้อมูลใน home directory ของทุกคน ถ้าทำก็จะยุ่งหละครับ ถ้าไม่อยากยุ่งยากใช้ ghost copy harddisk ตามหัวข้อ 9.96 ดีกว่าครับ 20 นาทีก็เสร็จ และขั้นตอนก็ไม่มีอะไรมาก แค่ถอดเครื่อง เสียบ harddisk ให้ถูก port แล้วก็ใช้โปรแกรม ghost ก็จะได้ harddisk 2 ตัวที่เหมือนกัน
- เหตุที่ต้อง copy /etc/passwd, /etc/shadow, /etc/group ใน case ของผม คือ server ตัวเก่ามีปัญหาสารพัด ลง server ตัวใหม่สมบูรณ์ดีแล้ว และที่หนักก็คือระบบเดิมเป็น scsi ใน sun ระบบใหม่เป็น linux เสียดาย account ถ้าสร้าง user ใหม่ทีละคน ก็ต้องใช้เวลา จึงต้อง copy account ทั้งหมดมา
ขั้นตอนที่ 2 : เริ่ม copy และ backup
- ให้ใช้โปรแกรม ftp ดี ๆ จะได้สะดวกเช่น ws_ftp หรือ cute_ftp ย้ายข้อมูล หรือใช้ ftp จากเครื่องใหม่ติดต่อเข้าเครื่องเก่าก็ได้ สะดวกดี แต่ต้อง backup ของเดิมในเครื่องใหม่ด้วย
- เข้าไป copy ข้อมูลด้วย root ไปเก็บใน home ของ user demo และเปลี่ยน permission จะได้ copy ออกมาได้ เหตุที่ต้องใช้ demo เพราะแฟ้มที่กำลังจะ copy ส่วนใหญ่เป็นความลับ คนที่เข้าได้คือ root เท่านั้น แต่จะใช้ user root เปิด ftp ก็ไม่ได้ จึงต้องคัดลอกไปไว้ใน home ของ demo แล้วเปลี่ยน permission จะได้ คัดลอกออกมาได้
- ส่งข้อมูลทั้งหมดเข้าไปใน server ตัวใหม่ โดย get แบบ binary (ย้ำว่าแบบ ascii ไม่ work)
- ให้ copy passwd,shadow,group เก็บไว้อีกที่หนึ่ง เพราะถ้าส่งเข้าไปทับแล้วไม่ work จะมีปัญหาซะเปล่า เมื่อ copy เข้าไปแล้วก็อย่างพึ่ง reboot ให้ลองใช้ user ที่ copy มา connect เข้าไปเป็น root ถ้าใช้ได้ก็ถือว่า copy สำเร็จ
- copy แฟ้มทั้งหมดในห้อง /var/spool/mail ซึ่งเป็นห้องเก็บ inbox ของทุกคน
- copy แฟ้มทั้งหมดในห้อง /var/www/html ซึ่งเป็นห้องเก็บ web space ของทุกคน
- copy แฟ้มทั้งหมดในห้อง /home ซึ่งเป็นห้องเก็บข้อมูลต่าง ๆ ของทุกคน (อาจสร้างให้ใหม่ได้)
ขั้นตอนที่ 4 : แก้ permission และสร้าง home
- สร้างรายชื่อสมาชิกทุกคนให้ใช้คำสั่ง cut /etc/passwd --fields=1 --delimiter=: >listall จะได้แฟ้มชื่อ listall ซึ่งมี username ของทุกคน
- ใช้ pico listall เข้าไปลบรายชื่อที่ไม่คิดจะสร้าง home เช่นรายชื่อของผู้ใช้ที่ระบบสร้างให้ ให้ท่านลบทิ้งซะ
- เนื่องจาก mail ใน /var/spool/mail ที่คัดลอกมามี owner และ permission ไม่ถูกต้อง และ home แต่ละคนก็ยังไม่มี จึงใช้ shell script ด้านล่าง
อย่าลืมเอา # ออกตามสมควร
#!/bin/sh
# exit 0
# chmod 700 crthome
# shell>crthome <listall
read getu
while [ $getu. != '.' ]
do
echo $getu
## change mail owner
chown $getu:mail /var/spool/mail/$getu
chmod 660 /var/spool/mail/$getu
## create home
# mkdir /home/$getu
# chown $getu:users /home/$getu
# mkdir /home/$getu/public_html
# chown $getu:users /home/$getu/public_html
# chmod 711 /home/$getu
# chmod 755 /home/$getu/public_html
read getu
done
ขั้นตอนที่ 5 : แฟ้มอื่น ๆ ที่ต้องพิจารณาที่จะคัดลอก
db.yonok.ac.th
db.isinthai.com
db.lampang.net
db.202.29.78
resolv.conf
named.conf
httpd.conf
grub.conf
lilo.conf
sendmail.mc
procmailrc
localhost.zone
rc.local
|
|
9.96 วิธี copy server หรือ host(Backup)
: เนื่องจากผมเป็นมือใหม่อยู่มาก จึงลอง backup ระบบไว้หลายวิธี ทั้งวิธี copy ใน harddisk ตัวเดียว หรือต่าง harddisk
ข้อมูลเบื้องต้นสำหรับทำความเข้าใจในปัญหาการ backup หรือ copy server
- Harddisk ที่มีอยู่ ไม่มีขนาดที่เท่ากัน ทำให้การคัดลอก หรือแบ่ง partition ให้เท่ากันมีปัญหานิดหน่อย
- Harddisk ส่วนใหญ่ที่มีเป็น bad sector บางตัว backup เสร็จแล้ว เมื่อนำมาใช้ก็ใช้ไม่ได้
- คอมพิวเตอร์ที่มีอยู่มีปัญหาเช่นมองเห็น harddisk ขนาดคงที่ ไม่ว่าจะใส่ขนาดเท่าใดก็มองเห็นเพียง 8 Gb เป็นต้น
สรุปล่าสุดเมื่อ 24 มกราคม 2548
ประเสริฐ ประสารยา ให้ข้อมูลใหม่ว่าปีก่อนที่ใช้ ghost HD linux 2 ตัว แล้วมีปัญหา ตอนนี้แก้ไขได้แล้ว
หลังจากที่ Ghost เรียบร้อย นะครับ ให้ Boot ด้วย CD ติดตั้ง Linux โดยที่หน้าจอแรก
พิมพ์ลงไปตรง prompt ว่า linux rescue แล้วกด enter พอพบหน้าจอให้ config อะไรนิดหน่อย ให้กดผ่านไปเลย
จนกระทั่งได้ prompt ของระบบมา แล้วพิมพ์คำสั่ง # chroot /mnt/sysimage
# grub-install /dev/hda
# exit
# exit
reboot ใหม่ก็จะใช้งานได้ครับ
สรุปล่าสุดเมื่อ 3 มีนาคม 2546
เนื่องจากพยายามหา Norton ghost ที่มีความสามารถ copy harddisk ที่มีขนาดแตกต่างกัน มาคัดลอก RH8.0 แต่จากการหามาและทดสอบ ปรากฏว่าไม่สำเร็จ เพราะคัดลอกแล้วผลคือแจ้งว่า completely แต่นำไปใช้งานไม่ได้ ทำให้ต้องหยุดการศึกษา Norton ghost สำหรับ RH8.0 ไว้เพียงเท่านี้
วิธี Backup ล่าสุด คือ หา Harddisk ที่มีลักษณะคล้ายกัน แม้ขนาดไม่เท่ากันก็ได้ แต่ตัวลูกต้องใหญ่กว่าหรือเท่ากับตัวแม่ โดยใช้ #fdisk /dev/hda และ #fdisk /dev/hdc ตรวจสอบ แล้วคัดลอกด้วยคำสั่ง dd จาก harddisk ที่มีขนาดเล็กกว่า ไป harddisk ที่มีขนาดใหญ่กว่า พบว่าไม่มีปัญหาใด ๆ คำสั่งที่ใช้คือ #dd if=/dev/hda of=/dev/hdc หรือ #dd if=/dev/hda2 of=/dev/hdb2
วิธีที่ 1 : NortonGhost :: โปรแกรมสำหรับคัดลอก harddisk ได้สมบูรณ์มาก แต่ล่าสุดทดสอบกับ RH8.0 ไม่สำเร็จ
หลังถูก hacker เข้ามาป่วนระบบ ทำให้ต้องหาโปรแกรมมา Backup server เก็บไว้ และโปรแกรมที่หามาได้ก็คือ NortonGhost เพื่อ copy harddisk โดยคุณประเสริฐ ประสารยา [prasert@cat.net.th] ซึ่งเป็นทีมงานของ isinthai.com ได้ช่วยหา NortonGhost2002 มา clone HD Linux RH7.2 และใช้งานได้เรื่อยมา
ในเดือน มกราคม 2545 ทีมงานตัดสินใจใช้ Redhat 8.0 แต่ทั้ง NortonGhost 2002 และ 2003 ต่างก็ใช้คัดลอก Redhat 8.0 ไม่ได้ ปัญหาที่เกิดขึ้นไม่แน่ใจว่าเกิดจากอะไร และเกิดในหลายรูปแบบ เช่น ไม่สามารถ Boot ได้ หรือเห็นเฉพาะคำว่า LI ตอน boot แล้วก็ hang ไปเฉย ๆ หรือ copy partition มาไม่หมด .. จึงตัดสินใจศึกษาการใช้คำสั่ง dd และ cp เพื่อคัดลอก harddisk อย่างจริงจังอีกครั้ง
วิธีที่ 2 : tar.gz :: โปรแกรมบีบอัดแฟ้ม หรือ folder ซึ่งนิยมใช้กันมาก (ทีมงานไม่ได้ทดสอบหลักการนี้อย่างจริงจัง)
วิธีนี้สามารถ copy ทั้ง partiton เก็บเป็น file เดียว หากมีปัญหาก็คลายแฟ้มนี้เท่านั้น
#tar zcf total.tar.gz / :: เพื่อบีบอัดทั้ง root เป็นแฟ้ม total.tar.gz
#tar zcf total.tar.gz /dev/hda :: เพื่อบีบอัดทั้ง harddisk เป็นแฟ้ม total.tar.gz
#tar zxf total.tar.gz :: คล้ายข้อมูลใน total.tar.gz ไว้ในห้องปัจจุบัน
วิธีที่ 3 : cp :: โปรแกรมคัดลอกที่ใช้คัดลอกข้อมูลระหว่าง harddisk หรือ partiton ได้ (ทีมงานไม่ได้ทดสอบหลักการนี้อย่างจริงจัง)
ตัวอย่างการใช้ cp คัดลอกทั้ง partition เก็บเข้า partition ใหม่ใน hd เดิม
เมื่อต้องการดูว่าในเครื่องมี partition อะไรแบ่งไว้บ้างด้วย fdisk -l หรือ df -a จะเห็นขนาดของแต่ละ partitions และคำสั่ง mount หรือ cat /proc/mounts ถูกใช้เพื่อดูรายการแฟ้มที่ถูก mount ไว้
#mkfs -t ext3 /dev/hda3 3076447
:: ใช้สำหรับจัดรูปแบบ ของ partitions /dev/hda3 ตามขนาดจริง ซึ่งเห็นใน cat /proc/partitions
#mkdir /rest :: สร้างห้องชื่อ rest ในห้อง /
#mkswap /dev/hda7 :: เพื่อกำหนดให้ /dev/hda7 เป็น swap partition
#mount -t ext3 /dev/hda3 /rest :: ต่อไป /rest ก็คือ /dev/hda3 ซึ่งมีขนาด 3076447
#df -a :: แสดงรายชื่อ และขนาดที่ mount สำเร็จ
#cp -a /dev/hda2 /dev/hda3 :: คัดลอกทั้งหมดใน /dev/hda2 ไป /dev/hda3
วิธีที่ 4 : dd :: โปรแกรมคัดลอกทั้ง partition
ตัวอย่างการใช้ dd คัดลอกทั้ง partition หรือ harddisk ไปยัง partition หรือ harddisk ใหม่
ล่าสุดผมใช้วิธีนี้ backup server หรือ copy harddisk นั่นเอง โดยพื้นฐานแล้ว คำสั่งนี้เหมาะกับ harddisk ที่มีขนาดเท่ากัน แต่ผมไม่มี harddisk ที่เท่ากัน แต่ใช้ตัวที่มีลักษณะต่าง ๆ ใกล้เคียงกัน โดยเฉพาะตัวลูกต้องใหญ่กว่า หรือเท่ากับตัวแม่
#dd if=/dev/hda of=/dev/hdc :: คัดลอก harddisk ทั้งลูกจากลูก hda ไป hdc
#dd if=/dev/hda1 of=/dev/hdc1 bs=1024k :: คัดลอก harddisk ทั้งใน partition 1 ของลูกหนึ่ง ไป partition 1 ของอีกลูกหนึ่ง
|
|
9.97 Server ตัวนี้ให้บริการอะไรได้บ้าง
: บริการต่าง ๆ ที่ Redhat 7.2 มีให้ และที่ลงโปรแกรมเพิ่ม
บริการ เพื่อกรณีศึกษา โดยมือสมัครเล่น
- Linux server : telnet
- Web server : http, perl v.3, php3, java applet
- Mail server : pine, pop3, imap, webbased
- Proxy server : squid
หัวข้อนี้ยังไม่เรียบร้อย
|
|
9.98 ขั้นตอนการทำ server ตัวนี้
: เพื่อให้ท่านหรือทีมงาน สามารถ setup server แบบนี้ได้ง่ายขึ้น จึงเขียนขึ้นตอนไว้ดังนี้
บริการ เพื่อกรณีศึกษา โดยมือสมัครเล่น
ขอแนะนำว่าถ้ายังไม่รู้อะไรเลย ให้ไปหาหนังสือสำหรับลง Linux มากอดให้อุ่นใจสักเล่มหนึ่ง
เพราะเชื่อแน่ว่า ถ้าอ่านวิธีการติดตั้งที่ผมเขียน โดยไม่มีประสบการณ์ linux มาก่อน .. จะต้องบ่นว่าผมเขียนไม่รู้เรื่อง
เนื่องจากเรื่องเหล่านี้เป็นเรื่องที่เฉพาะ น้อยคนจริง ๆ ที่จะชำนาญ ผมเองก็พยายามศึกษาอยู่ ก็ได้แค่พอเป็นเท่านั้น (แต่นี่ผมก็พยายามเขียนให้ผมเข้าใจง่ายที่สุดแล้วนะครับ)
ขั้นตอนที่ 1 : เตรียมการ
- Backup ข้อมูลที่สำคัญในเครื่องที่คิดจะติดตั้ง linux ความแน่นอนคือความไม่แน่นอน
- ถ้ามีเครื่องใหม่ และลง linux อย่างเดียวก็หาแผ่น linux มาลงได้เลย .. เพราะเสียแล้วไม่เป็นไร
- ถ้ามี windows อยู่ต้องการลงทั้ง 2 ระบบให้ไปหา partition magic มาแบ่ง partition
- แบ่งว่าจะใช้ Windows กี่ GB แต่ linux จะใช้ไม่น้อยกว่า 1 GB โดยปกติ
- นั่งคิดให้ดีกว่าจะลง linux ไปทำไม เช่น ศึกษาเป็น work station หรือ เป็น server เป็นต้น
- ไปหาโปรแกรม linux ซึ่งผมแนะนำว่าเป็น Redhat เพราะมีคนใช้กันมากที่สุดในโลก
ขั้นตอนที่ 2 : ติดตั้ง
- ถ้ามี windows อยู่ให้ใช้ partition magic แบ่ง partition ให้เรียบร้อย
- ใช้แผ่น CD Boot แล้ว Enter เขาก็จะถามติดตั้งเลย ถ้า VGA card เป็นที่ยอมรับของ linux ก็จะได้เห็นจอสวย
- ถ้าไม่มีสนับสนุนก็ต้องเล่น text mode ไปครับ คนที่ผมรู้จักหลายคน หรือแม้แต่เครื่องที่ผมใช้ ยังใช้ text mode เลย
- เมื่อเข้าไปต้องแบ่งอย่างน้อย 2 partition คือ linux partiton และ linux swap
- Install ตามขั้นตอน ซึ่งใช้เวลาประมาณ 2 ชั่วโมง (เหมือน windows นั่นหละครับ)
- ถ้าโชคดี หลังติดตั้งเสร็จก็จะขึ้นคำว่า Login: มารอให้ป้อนรหัสเข้าสู่ระบบ
- มีปัญหาการติดตั้งให้ถามที่ http://linux.thai.net เพราะทีมงานไม่ได้ชำนาญในการแก้ปัญหาทุกกรณี (ประสบการณ์น้อยมาก)
ขั้นตอนที่ 3 : ใช้งาน linux เบื้องต้น (Server)
- หัดใช้คำสั่งใน linux ที่ใช้กันบ่อย ๆ ซึ่งผมแนะนำในบทที่ 1 หัดเป็นผู้ใช้
- เมื่อใช้เป็นแล้ว ลอง telnet เข้าไปใช้ server ที่อื่นดูครับ .. สั่งสมประสบการณ์
- สู่บทที่ 2 แต่ต้องทำที่เครื่องตนเองนะครับ เช่น useradd usermod หัดใช้คำสั่งระดับสูงดูครับ
- ซอกซอนเข้าไปดูระบบ และคำสั่งต่าง ๆ ยิ่งใช้เวลามาก ยิ่งซึมซับ .. ผมเองยังไม่มีเวลาเลย
- วิธีการ config ระบบ ดูทุกแฟ้มที่นามสกุล .conf จะเข้าใจการทำงานของ linux มากขึ้น
ขั้นตอนที่ 4 : ใช้ประโยชน์ Server ก่อนจะ upgrade server
- หัดใช้ mail แบบต่าง ๆ ที่ Server ให้บริการ เช่น pop, imap, pine เป็นต้น
- หัดเขียน Shell script เพราะจะทำให้โอกาสหน้า สามารถแก้ปัญหาระบบได้หลายเรื่อง
- หัดเขียนทำเว็บในเครื่องตนเองด้วย html อย่างง่าย
- หัดเขียน CGI เพื่อทำให้เว็บที่พัฒนาขึ้นมา เป็นยอดเว็บ เช่น yahoo, hypermart, pantip เป็นต้น
ขั้นตอนที่ 5 : Install application
- เนื่องจาก server ที่ติดตั้งไป มีบริการที่เป็นมาตรฐาน หากต้องการความสามารถใหม่ ต้องลงโปรแกรมเพิ่ม
- บริการ Webbased mail อย่างง่าย (หัวข้อ 9.71)
- บริการ proxy หรือ cache server (หัวข้อ 9.72)
- บริการ incoming ใน ftp (หัวข้อ 9.73)
- บริการ Apache + php + Mysql (หัวข้อ 9.74)
- บริการ SSI (หัวข้อ 9.75)
- บริการ Radius (หัวข้อ 9.76 เหมือนเปิดบริการเทียบ ISP เลยครับ)
- บริการ Modem (หัวข้อ 9.77 เหมือนเปิดบริการเทียบ ISP เลยครับ)
ขั้นตอนที่ 6 : ความปลอดภัย (Security)
- หลายคนบอกว่า ความปลอดภัยเป็นเรื่องแรก แต่ผมว่า server ยัง up ไม่ขึ้น ความปลอดภัยอย่างพึ่งสนเลยครับ
- การเป็น System Admin ที่ดี ผมว่าต้องเป็น Hacker ที่ดีด้วย ถึงจะไปด้วยกันได้ (ถ้าไม่รู้ว่า server รั่วอย่างไร จะปิดได้ไง)
- อ่านหน่อยครับว่า ถูก hack อย่างไร จะได้เป็นบทเรียน (หัวข้อ 9.51)
- อ่านหน่อยครับว่า ปกป้องตัวเองอย่างไร จะได้เป็นบทเรียน (หัวข้อ 9.52)
- ป้องกัน hacker มือสมัครเล่นด้วย Restricted shell (หัวข้อ 9.52)
- ปิดบริการด้วย TCP wrapper (หัวข้อ 9.54)
ขั้นตอนที่ 7 : เรื่องเฉพาะที่ควรทราบ
- ทำให้เครื่องเป็น DNS server (ยังไม่ได้เขียนเป็นจริงจัง)
- บริการ Dedicate server (ยังไม่ได้เขียนเป็นจริงจัง)
- ทำให้เครื่องมีหลาย IP ในกรณีที่ server ตัวหนึ่งล่ม จะได้ย้ายได้ใน 1 นาที (หัวข้อ 9.10)
- Backup ระบบ (หัวข้อ 9.96) แต่ยังไม่ update
- ใช้ php เขียนโปรแกรมบริการ mail แข่งกับ hotmail.com (ยังหาเวลาศึกษาไม่ได้)
- เปิด free hosting (กำลังพยายาม เพราะระบบยังไม่แข็งพอสู้กับ hacker มืออาชีพ ก็เปิดไม่ได้)
ขั้นตอนการติดตั้ง เมื่อ RedHat 9.0 (ปรับปรุงล่าสุด :: 13 กุมภาพันธ์ 2547)
- ติดตั้ง linux พร้อม Config ให้ใช้งานเครือข่ายได้
รับผิดชอบโดย คุณสุวิทย์ คุณประเสริฐ เพราะชำนาญการ install Redhat
บ่อยครั้งที่ต้องติดตั้งโปรแกรมเพิ่ม จึงต้องหามาจาก CD และใช้คำสั่ง rpm -i
ชื่อแฟ้มใน CD ทั้ง 3 แผ่นมีดังนี้
แผนที่ 1,
แผนที่ 2,
แผนที่ 3
- #/usr/bin/setup
- แล้วกำหนด IP ด้วยนตัวเลือก network
- แล้วเปิดบริการด้วยตัวเลือก system services :
httpd, imap, imaps, ipop2, ipop3, kudzu, named, network, pop3s, sendmail, sshd, syslog, vsftpd, xinetd, servers, services
- หัวข้อ 9.95 :: copy passwd, shadow, group จาก server ตัวหลัก มาแทนที่ในเครื่องที่ติดตั้งใหม่
- หัวข้อ 9.10 :: เพิ่ม IP ใน Server ตัวเดียวด้วย IFCONFIG
- หัวข้อ 9.65 :: เปิดบริการ SAMBA server
- หัวข้อ 9.66 :: เปิดบริการ DNS server ให้คอมพิวเตอร์ทั้งหมดในเครือข่าย สามารถใช้ชื่อเว็บไซต์ได้ถูกต้อง มิเช่นนั้นต้องใช้ตัวเลข
- หัวข้อ 9.78 :: เปิดบริการ sendmail หรือ smtp ให้ผู้ใช้สามารถส่ง e-mail ด้วย outlook ผ่าน server ของเรา
- หัวข้อ 9.62 :: แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf เพื่อเปิดบริการต่าง ๆ ของ apache webserver
- หัวข้อ 9.63 :: เปิดบริการ FTP server
- หัวข้อ 9.68 :: เปิดบริการ Web-based mail ด้วย uebimiau-2.7.2-any.zip
- หัวข้อ 9.67 :: เปิดบริการ Web hosting file manager ด้วย easyhost_free.zip
- หัวข้อ 9.11 :: เปิดบริการ Virtual hosts
- หัวข้อ 9.76 :: เปิดบริการ RADIUS server
- หัวข้อ 5.1 :: เปิดบริการ MYSQL server
- หัวข้อ 9.69 :: เปิดบริการ DHCP server แจก Dynamic IP
|
|
9.99 การบำรุงรักษา และตรวจสอบ
: บริการให้ดีต้องหมั่นบำรุงรักษา ไม่งั้นอาจอยู่ได้ไม่นานเท่าที่ควร
9.99.1 สรุปปัญหา วิธีตรวจสอบ และการแก้ไขเบื้องต้น (เมื่อมีปัญหาเกิดขึ้น)
- เมื่อเครื่องของผู้ใช้ต่อ internet ไม่ได้ (ตรวจสอบโดยผู้ใช้)
+ ตรวจสอบว่าอะไรใช้ไม่ได้ เช่น http, workgroup, ping หรือ smtp เป็นต้น แล้วหาสาเหตุ
- http : ถ้าเปิดเว็บใดไม่ได้ ลองเปิดหลาย ๆ เว็บ เพราะบางเว็บอาจ down ชั่วคราว
- workgroup : Folder sharing ภายในสถาบัน ประกอบด้วยหลายวง หลายระบบปฏิบัติการ บางเครื่องอาจถูกยกเลิกการ share
- ping : ตรวจด้วยการพิมพ์ ping 202.29.78.254 หรือ 202.29.78.11 เพื่อดูว่าเครื่องท่านเห็นไม่หากไปจากระบบ
- smtp : ถ้าใช้ smtp.yonok.ac.th ไม่ได้เพราะ server ล่มให้แจ้ง 125 เพราะระบบอาจ hang หรือ over limited
- winipcfg : คำสั่งนี้ใช้ดูว่า ip ของท่านเบอร์อะไร บางครั้ง ip หาย ท่านสามารถกำหนดได้ด้วยตัวเอง จากเบอร์ที่ติดไว้กับเครื่อง
+ ก่อนแจ้งเจ้าหน้าที่ 125 ท่านควรปฏิบัติดังนี้
- ให้ reboot เครื่องใหม่ ก่อน reboot ให้ตรวจสอบสายต่าง ๆ ว่าอยู่ในที่ควร หรือไม่ แล้วทดสอบอีกครั้ง
- ตรวจสอบ HUB และระบบเชื่อมต่อ สำหรับปัญหาที่อาจเกิดจาก hardware ผู้ใช้บางท่านอาจถอดสายไฟของ hub ออก หรือสะดุดจนหลุด
- เว็บ หรือ e-mail ของโยนก ใช้การไม่ได้ (ตรวจสอบโดยเจ้าหน้าที่ 125)
# ping 202.29.78.12 (ตรวจว่าเครื่อง server เปิดบริการในเครือข่าย หรือไม่ โดยทดสอบจากเครื่องลูก)
# df (ตรวจว่า harddisk เต็มหรือไม่ ถ้าเต็มต้องไปลบ e-mail ของบางท่าน)
# เปิดเว็บ http://www.yonok.ac.th (ตรวจว่า named และ httpd ทำงานปกติหรือไม่ ถ้าไม่ได้ ให้สั่ง reboot)
-
ติดต่อ Internet นอกโยนกไม่ได้ (ตรวจสอบโดยเจ้าหน้าที่ 125)
- ping 202.29.78.254 หรือ ping 202.28.202.74 (ถ้าติดต่อไม่ได้ให้ reboot ถ้ายังไม่ได้ต้องใช้สาย console เข้าไป config ใหม่)
- ตรวจสอบไฟสัญญาณของ Fiber modem หรือ Converter ด้วยการมอง ถ้ามีไฟแดงที่ modem ให้แจ้งคุณภากร (0-5421-7200, 0-9759-0946)
- ตรวจสอบ Router ฝั่งเชียงใหม่ โดย ping 202.28.29.41 ถ้าติดต่อไม่ได้ให้แจ้ง คุณประเสริฐ (0-2248-7749)
- กรณีเครื่องในห้อง lab1, lab2 หรือ lab3 ใช้ internet ไม่ได้ (ตรวจสอบโดยเจ้าหน้าที่ 125)
- ตรวจสอบเครื่อง DHCP ว่าเปิดบริการ หรือไม่ ด้วยการ ping 192.168.0.1 หรือ ping 202.29.78.11
- ตรวจสอบ hub ที่เชื่อมโยงตามจุดต่าง ๆ ปัญหาอาจเกิดจาก hub มีอาการ hang ชั่วคราว
- กรณี router ของโยนกเสีย (ตรวจสอบโดยเจ้าหน้าที่ 125)
router ที่ใช้อยู่คือ CISCO router 2511 เป็นรุ่นเก่าใช้มาตั้งแต่ปี 1996 ปัจจุบันเสียเป็นบางจังหวะมาแล้ว ประมาณ 4 ครั้ง ครั้งล่าสุดส่งซ่อมที่ร้าน smart service ซึ่งเป็นตัวแทน CISCO ในจังหวัดลำปาง แต่มิได้ซ่อมอย่างแท้จริง เพียงแต่นำไปปัดฝุ่นภายใน พร้อมตรวจสอบปัญหาในเบื้องต้น มีค่าใช้จ่าย 450 บาท แล้วนำกลับมาใช้ใหม่
ปัญหาของ router คือ หยุดทำงานกระทันหัน ping เข้าไปไม่ได้ ใช้สาย console ติดต่อเข้าไปไม่ได้ ทางร้านวิเคราะห์ว่า อุปกรณ์สำคัญไม่มีปัญหา แต่มีบางชิ้นที่ไม่ทำงานในขณะเย็น ต้องอุ่มเครื่องให้ร้อน router จึงจะทำงานได้ปกติ เมื่อมีปัญหาให้ปิด และเปิดทิ้งไว้ประมาณครึ่งชั่วโมง หากไฟที่ปุ่ม ok สว่างมาก ก็แสดงว่า router ทำงานได้ปกติ แต่ขณะมีปัญหาไฟนี้จะไม่สว่างมาก แสดงว่าไฟฟ้าเข้าไม่เต็มที่
ช่างแจ้งว่าปัญหานี้ซ่อมได้ แต่ต้องนำแต่ละชิ้นมาตรวจสอบ หากพบชิ้นที่มีปัญหา ก็จะสั่งซื้อจากคลองถมที่กรุงเทพฯ หากพบก็จะนำชิ้นส่วนนั้นมาติดตั้งแทน แต่อาจหาได้ไม่ง่าย เพราะเป็นอุปกรณ์ที่มิได้ใช้กันทั่วไป และส่วนใหญ่ make in U.S.A. หลังจากส่งให้ร้าน 3 วัน จึงรอต่อไปไม่ได้ เพราะร้านก็ไม่แน่ใจว่า ถ้าถอดและซ่อมจริง จะหาอุปกรณ์ที่มีปัญหานั้นพบในเวลากี่วัน
ทางเลือกสำหรับปัญหา router เสีย (CISCO คืออุปกรณ์ที่นิยม และน่าเชื่อถือ ที่สุดในโลก)
- ไม่ซ่อม แต่แก้ปัญหาด้วยการปิด และเปิดใหม่ บางครั้งใช้เวลา 1 ชั่วโมงกว่าจะเครื่องร้อน (ปัจจุบันเลือกทางนี้)
- ซื้อ smart net ซึ่งเป็นประกัน หากต่อไปเสีย แล้วส่งเข้าบริษัท CISCO ทางบริษัทจะส่งตัวอื่นให้ใช้แทน ค่าใช้จ่าย 17800 บาทต่อปี
- ซื้อตัวใหม่ยี่ห้อเดิม ที่มีศักยภาพเทียบเท่า หรือสูงกว่าตัวเดิม มีค่าใช้จ่ายประมาณ 150,000 บาท
- ซื้อตัวใหม่ยี่ห้อใหม่ ที่มีศักยภาพ และความคงทน ต่ำกว่ายี่ห้อเดิม มีค่าใช้จ่ายประมาณ 50,000 บาท
9.99.2 สิ่งที่ควรกระทำ และเข้าใจ
- ps aux ตรวจสอบว่ามี process แปลก run อยู่บ้างไหม
- top เพื่อดู process ที่กำลังทำงานในปัจจุบัน
- เข้าห้อง /var/log ซึ่งมี log file ขนาดใหญ่ ๆ ทั้งนั้น Clear บ้าง หรือจะเข้าไปดูร่องรอยของผู้ใช้ก็ได้
- เข้าห้อง /tmp ว่ามีแฟ้มอะไรแปลกปลอมเข้ามา ให้ clear ได้
- ใช้ last | more เพื่อดูรายชื่อผู้ใช้ล่าสุด ถ้าอยู่ๆ last เหลือนิดเดียว .. แสดงว่า hacker เข้ามาลบร่องรอย
- find / -cmin -600 | more แสดงชื่อแฟ้มที่มีการเปลี่ยนแปลงใน 10 ชั่วโมงที่ผ่านมา ในทุก Directory แต่จะออกมามากไปหน่อย ต้องค่อย ๆ ดู หรือตัด / แล้วทำเฉพาะในห้องที่สงสัยก็ได้
- cat /var/log/messages |grep login|more ดูว่ามีคนแปลกหน้า Login หรือพยายามเข้ามาหรือไม่ แต่อาจไม่ได้ผล ถ้า hacker มืออาชีพเขาจะลบแฟ้มนี้ทิ้ง ก่อนออกไป
- backup harddisk ด้วย #dd if=/dev/hda1 of=dev/hdc1 เป็นต้น แต่ต้องใช้ fdisk -l ตรวจสอบให้ดีก่อน
9.99.3 อบรมบุคลากร
คำสั่งเบื้องต้น 1 (ดูแฟ้ม ดูห้อง ดูผู้ใช้)
- ls -al (list directory contents)
- man ls ( -t คือ อะไร)
- ls -alt | more
- chmod 755 x.htm -Rf
- chown root:mail noriko -Rf
- find / -name hello.pl
- ls > x.htm
- cat x.htm (concatenate files and print on the standard output)
- cat /etc/passwd |grep home
- rm x
- mkdir img
- cd ..
- rmdir img
- pwd (print name of current/working directory)
- echo $PATH
- PATH=$PATH:/sbin:/usr/sbin
- whereis man ( locate the binary, source, and manual page files for a command)
- w (Show who is logged on and what they are doing)
- who (show who is logged on)
- id (print real and effective UIDs and GIDs)
- finger atichart (user information lookup program)
- last (show listing of last logged in users)
- exit
- tail --lines=5 /var/log/messages
- lynx http://www.yonok.ac.th/main/intro4.htm
คำสั่งเบื้องต้น 2 (ดูระบบ)
- du (ดูขนาด estimate file space usage)
- df (ดูระบบแฟ้ม report filesystem disk space usage)
- /sbin/service --status-all
- /sbin/ifconfig (configure a network interface (LAN Card))
- netstat -a (Print network connections, routing tables, interface statistics, ..)
- top (display Linux tasks)
- env (run a program in a modified environment)
- nslookup 202.28.18.65 (
query Internet name servers interactively)
- ps -aux (report a snapshot of the current processes)
- kill -9 12345 (
terminate a process)
- traceroute www.thaiall.com
(print the route packets take to network host)
- vi (a programmers text editor)
ทบทวน เบื้องต้น
- mkdir public_html
- chmod 775 public_html
- vi index.html
- cat index.html |grep @
- pico x.htm
คำสั่งระดับกลาง
- fsck /
- shutdown -h now
- reboot
- runlevel
- cat /etc/inittab
- chkconfig --list
- mount /dev/cdrom
- mkbootdisk --device /dev/fd0 2.4.18-14
- su bcom302
- crontab -l
- date 04271340
- hwclock --systohc
- cp /hd/home/* /home -fr
- nmap -sT www.yonok.ac.th
(Network exploration tool and security scanner)
- rpm -i imap-4.7-5.i386.rpm
ตารางเปรียบเทียบแอพพลิเคชันชนิดเดียวกัน ระหว่าง Linux และ Windows server |
Software type | Linux | Windows server |
ฐานข้อมูล | MySQL, Postgres, Informix SE, Oracle | MS SQL server, Oracle, MS Access |
พร็อกซีเซิร์ฟเวอร์ | Squid | MS Proxy server |
ไฟล์เซิร็ฟเวอร์ | Samba, NFS | MS Network |
เว็บเซิร์ฟเวอร์ | Apache | IIS, Tomcat, Omni |
ออฟฟิศ | StarOffice, Office TLE | MS Office |
กราฟิก | Gimp | Adobe Photoshop |
|
--- |
|