|
|
|||||||
Hypertext Transfer Protocol เป็นโพรโตคอลเบื้องต้นที่ทำงานบน TCP เพื่อใช้ในการจัดรูปแบบ การรับ-ส่งและการเชื่อมโยงเอกสาร ซึ่งประกอบด้วยสื่อหลายชนิดแตกต่างกัน ได้แก่ ข้อความ รูปภาพ เสียง ภาพเคลื่อนไหวและวีดีโอ ถือเป็นพื้นฐานของระบบการให้บริการ World Wide Web (WWW) การทำงานของ HTTP มีลักษณะคล้ายคลึงกับการทำงานของโพรโตคอลชนิดไคลเอ็นต์/เซิร์ฟเวอร์อื่นๆ ที่มีใช้งานบนอินเทอร์เน็ต เช่น SMTP และ FTP
World Wide Web เป็นระบบการแลกเปลี่ยนข้อมูลบนอินเทอร์เน็ตที่มีผู้ใช้งานอย่างแพร่หลายในปัจจุบัน
องค์ประกอบหลักของการทำงานคือ "เว็บ" ซึ่งถูกสร้างขึ้นด้วยโปรแกรมที่เรียกว่า
"เว็บเซิร์ฟเวอร์" ทำหน้าที่จัดเตรียมข้อมูลไว้บนเครือข่าย และมีอีกโปรแกรมคือ
"เว็บบราวเซอร์" ทำหน้าที่ในการเข้าถึงข้อมูลที่เก็บไว้ในเครื่องเว็บเซิร์ฟเวอร์และแสดงผลที่หน้าจอของผู้ใช้
เว็บเซิร์ฟเวอร์เป็นระบบที่ถูกกำหนดค่าให้ตอบสนองการร้องขอ HTTP วิธีการที่จะทำให้เครื่องทั่วไปเครื่องหนึ่งทำงานเป็นเว็บเซิร์ฟเวอร์ได้นั้น
ผู้ดูแลระบบจะต้องติดตั้งเดมอนขึ้นมารอรับการติดต่อที่ TCP พอร์ต 80 (มาตรฐานของ
HTTP 1.1 ตาม RFC 2616) เพื่อตอบสนองการร้องขอ และส่งเอกสารไปให้ผู้ใช้ตามที่ผู้ใช้ต้องการ
จากการสำรวจการใช้งานเครื่องเว็บเซิร์ฟเวอร์กว่า 18 ล้านเครื่องทั่วโลกโดย NetCraft.com พบว่ากว่า 62% ของเครื่องที่ถูกสำรวจใช้งานโปรแกรม Apache โดยอีก 20% และ 6% ใช้งานโปรแกรม IIS ของไมโครซอฟท์และ Netscape ตามลำดับ นอกจากนั้น จำนวนผู้ใช้งาน Apache ยังคงเพิ่มขึ้นเรื่อยๆ อย่างรวดเร็ว ดังรูปที่ 1
รูปที่ 1 แสดงสถิติการนำโปรแกรมต่างๆ มาใช้งานเป็นเว็บเซิร์ฟเวอร์
ในส่วนของระบบปฏิบัติการ Red Hat Linux นั้น ภายในแผ่นที่ใช้ในการติดตั้งระบบได้รวมเอาแพ็คเกจชนิด RPM ของโปรแกรม Apache ไว้ด้วย เช่น ภายใน Red Hat 7 จะมีแพ็คเกจ Apache 1.3.12 เพื่อให้ผู้ดูแลระบบสามารถติดตั้งโปรแกรม Apache ได้ในขณะเดียวกับที่ติดตั้งระบบปฏิบัติการ อย่างไรก็ตาม หากผู้ดูแลระบบคนใดต้องการติดตั้งโปรแกรม Apache เวอร์ชันล่าสุดก็สามารถดาวน์โหลดตัวโปรแกรมมาติดตั้งได้จาก http://httpd.apache.org ซึ่งภายในเว็บไซต์นี้จะประกอบด้วยซอฟต์แวร์ Apache เวอร์ชันใหม่ที่มีความเสถียร เวอร์ชันก่อนหน้านั้น และเวอร์ชันที่อยู่ในระหว่างการพัฒนา นอกจากนั้น หากผู้ดูแลระบบต้องการข้อมูลเพิ่มเติมเกี่ยวกับ Apache ยังสามารถค้นหาได้จาก http://httpd.apache.org/docs
การติดตั้งโปรแกรม Apacheก่อนการติดตั้งโปรแกรม Apache นั้น สิ่งหนึ่งที่ควรจะต้องพิจารณาคือ ความปลอดภัยของเครื่องที่จะใช้ติดตั้งโปรแกรม ทั้งในส่วนของระบบปฏิบัติการและเครือข่ายที่ใช้งาน ซึ่งผู้ดูแลระบบสามารถศึกษาวิธีการได้จากบทอื่นๆ ภายในเอกสารฉบับนี้ สิ่งที่ควรคำนึงถึงก็คือ ระบบปฏิบัติการที่ใช้ในเครื่องที่จะติดตั้งโปรแกรม Apache ควรได้รับการตั้งค่าให้เปิดให้บริการเฉพาะในส่วนที่จำเป็นต่อการทำงานอย่างมีประสิทธิภาพและปลอดภัยเท่านั้น โดยทั่วไปแล้ว หากผู้ดูแลระบบต้องการให้เครื่องให้บริการเครื่องหนึ่งทำงานเป็นเว็บเซิร์ฟเวอร์ ผู้ดูแลระบบไม่ควรเปิดให้บริการอื่นๆ เช่น ftp, mail หรือ DNS ทำงานบนเครื่องเดียวกัน รวมไปถึงแอพลิเคชันและโปรแกรมอื่นๆ ด้วย นอกจากนั้น ผู้ดูแลระบบควรจะอนุญาตให้เฉพาะผู้ใช้ที่มีหน้าที่เกี่ยวข้องเท่านั้นจึงจะได้รับสิทธิ์ในการเข้าใช้งานเครื่อง และจะต้องให้คำแนะนำเกี่ยวกับการตั้งรหัสผ่านที่ดีและวิธีการใช้งานเครื่องอย่างปลอดภัย ส่วนด้านเครือข่ายนั้น ผู้ดูแลระบบจะต้องพิจารณาถึงวิธีการป้องกันการโจมตีแบบ Denial of Service (DoS) และการโจมตีรูปแบบอื่นๆ ที่จะส่งผลให้เครื่องไม่สามารถให้บริการได้ตลอดเวลาหรือได้รับความเสี่ยงจากการบุกรุก
วิธีการติดตั้งโปรแกรม Apache ลงในเครื่องภายหลังจากที่ได้ติดตั้งระบบปฏิบัติการแล้วสามารถทำได้
2 วิธี (ในที่นี้จะไม่กล่าวถึงวิธีการติดตั้งโปรแกรม Apache ในขณะที่ติดตั้งระบบปฏิบัติการ)
คือการติดตั้งโดยใช้แพ็คเกจชนิด RPM และการติดตั้งโดยการคอมไพล์จากไฟล์ต้นฉบับ
ข้อดีของการติดตั้งโปรแกรม Apache โดยการคอมไพล์จากไฟล์ต้นฉบับแทนที่จะใช้แพ็คเกจที่ได้รับการคอมไพล์มาแล้วคือ
ทำให้ผู้ดูแลระบบได้ตัดสินใจด้วยตนเองว่าต้องการใช้งานโมดูลและลักษณะพิเศษใดบ้างที่เครื่องเว็บเซิร์ฟเวอร์ของตน
และในบางครั้ง แพ็คเกจชนิด RPM ที่นำมาติดตั้งในเครื่องอาจไม่สามารถใช้งานได้ เนื่องจากไลบรารี่ที่ใช้งานไม่ตรงกัน
เนื้อหาในส่วนนี้จึงขอกล่าวถึงเฉพาะการติดตั้งโปรแกรม Apache โดยการคอมไพล์จากไฟล์ต้นฉบับ
(สำหรับผู้ดูแลระบบที่ต้องการติดตั้งแพ็คเกจชนิด RPM สามารถศึกษาวิธีการและออปชันที่เกี่ยวข้องเพิ่มเติมได้จากคำสั่ง
# rpm -q apache -l | more)
หลังจากที่ผู้ดูแลระบบได้ดาวน์โหลดตัวโปรแกรม Apache มาไว้ที่ไดเรกทอรีที่ต้องการและทำการแตกไฟล์ออกมาแล้ว ผู้ดูแลระบบควรจะปรับแต่งค่าการทำงานของโปรแกรม Apache เสียก่อน ซึ่งสามารถทำได้ 2 วิธีคือ การปรับแต่งค่าด้วยตนเองโดยการแก้ไขไฟล์ชื่อ Makefile และการปรับแต่งค่าด้วยวิธี APACI (เป็นรูปแบบการแก้ไขค่าโดยให้ผู้ใช้เลือกรายการสิ่งที่ต้องการ) ในที่นี้ จะขอแนะนำวิธีของ APACI เนื่องจากเป็นวิธีที่ง่ายและรวดเร็ว และหากผู้ดูแลระบบต้องการข้อมูลเพิ่มเติมจากนอกเหนือจากเอกสารฉบับนี้สามารถศึกษาได้จากไฟล์ README และไฟล์ INSTALL
| ตัวอย่าง | หากผู้ดูแลระบบดาวน์โหลดไฟล์ต้นฉบับโปรแกรม Apache เวอร์ชัน 1.3.26 มาไว้ที่ไดเรกทอรี /usr/local/src ภายในไดเรกทอรีดังกล่าวจะปรากฏไฟล์ apache_1.3.26.tar.gz หรือ apache_1.3.26.tar.Z ตามชนิดที่ผู้ดูแลระบบเลือกดาวน์โหลด |
| หลังจากที่ผู้ดูแลระบบแตกไฟล์ดังกล่าวแล้ว จะปรากฏไดเรกทอรี apache_1.3.26 ในไดเรกทอรี /usr/local/src | |
| หากผู้ดูแลระบบต้องการรายละเอียดเพิ่มเติมสามารถหาข้อมูลได้จากไฟล์ README และไฟล์ INSTALL ในไดเรกทอรี /usr/local/src/apache_1.3.26 |
วิธีการปรับแต่งค่า แบบ APACI นั้นสามารถทำได้โดยการเรียกใช้งานสคริปต์ชื่อ configure
ภายในไดเรกทอรีของ Apache โดยการสั่ง # ./configure
หากผู้ดูแลระบบต้องการทราบออปชันต่างๆ ทั้งหมดที่ใช้งานกับสคริปต์ configure สามารถทำได้โดยสั่ง
# ./configure --help
ตารางที่ 1 แสดงออปชันที่ใช้งานกับสคริปต์ configure เพื่อปรับแต่งการทำงานของโปรแกรม
Apache ที่นิยมใช้งาน
|
I. ออปชันที่ใช้ในการกำหนดไดเรกทอรีที่จะติดตั้งโปรแกรม |
|
|
--prefix=DIR |
กำหนดไดเรกทอรีที่จะใช้ติดตั้งโปรแกรม Apache (DIR) เช่น --prefix=/usr/local/apache |
| --layout | กำหนดให้แสดงรายการไดเรกทอรีทั้งหมดที่ใช้ในการติดตั้งโปรแกรม และไดเรกทอรีต่างๆ ของโปรแกรม Apache |
| --compat | กำหนดให้ติดตั้งโปรแกรมและไดเรกทอรีต่างๆ เหมือนกับที่ได้เคยติดตั้งไว้ (ใช้สำหรับการอัพเกรดโปรแกรม) |
| II. ออปชันที่ใช้ในการเพิ่มหรือยกเลิกการใช้งาน rule และ module | |
| --enable-rule=NAME | เพิ่ม rule ที่ต้องการใช้งานกับโปรแกรม Apache เช่น SOCK4 |
| --disable-rule=NAME |
ยกเลิกการใช้ rule ที่ไม่ต้องการนำมาใช้กับโปรแกรม Apache |
| --enable-module=NAME | เพิ่ม module ที่ต้องการใช้งานกับโปรแกรม Apache เช่น usertrack |
| --enable-module=NAME | ยกเลิกการใช้ module ที่ไม่ต้องการนำมาใช้กับโปรแกรม Apache |
| --add-module=FILE |
เพิ่ม module ชนิด 3rd party ที่ยังไม่มีใช้งานในโปรแกรม Apache ให้ทำงานร่วมกับโปรแกรม Apache (เป็นการ copy & activate) |
| --activate-module=FILE | เพิ่ม module ชนิด 3rd party ที่มีใช้งานในโปรแกรม Apache ให้ทำงานร่วมกับโปรแกรม Apache เช่น PHP |
| III. ออปชัน suEXEC คำอธิบาย suEXEC เป็นออปชันที่ทำให้ผู้ใช้งานเว็บบราวเซอร์สามารถเรียกใช้งานโปรแกรมประเภท CGI และ SSI ได้โดยใช้สิทธิ์ของผู้ใช้คนอื่นนอกเหนือจากผู้เรียกใช้งานเว็บเซิร์ฟเวอร์ได้ โดยปกติแล้วการเรียกใช้งานโปรแกรม CGI และ SSI จะต้องใช้สิทธิ์ของผู้ใช้เรียกใช้งานเว็บเซิร์ฟเวอร์ ซึ่งก็คือผู้ดูแลระบบนั่นเอง |
|
|
--enable-suexec |
กำหนดให้ออปชัน suexec ทำงาน |
| --suexec-caller=NAME | กำหนดชื่อผู้ใช้ที่จะอนุญาตให้เรียกใช้งานโปรแกรม CGI และ SSI ผ่านทางโปรแกรม Apache โดยไม่ต้องได้รับสิทธิ์ของผู้เรียกใช้งานเว็บเซิร์ฟเวอร์ โดยทั่วไปแล้วจะกำหนดให้เป็นผู้ใช้คนเดียวกับที่เข้าใช้งานผ่านทางเว็บบราวเซอร์ |
| ตัวอย่าง | หากผู้ดูแลระบบต้องการติดตั้งโปรแกรม Apache ไว้ที่ไดเรกทอรี
/usr/local/apache และต้องการใช้งานออปชัน suEXEC โดยกำหนดให้ผู้เข้าใช้งานเว็บเซิร์ฟเวอร์และใช้งานโปรแกรม
CGI หรือ SSI ผ่านทางเว็บบราวเซอร์คือผู้ใช้ชื่อ nobody ผู้ดูแลระบบจะต้องสั่งให้สคริปต์ configure ทำงานโดยกำหนดออปชันดังนี้ /usr/local/src/apache_1.3.26 # ./configure --prefix=/usr/local/apache --enable-suexec --suexec-caller=nobody |
เมื่อผู้ดูแลระบบได้เลือกปรับแต่งค่าการทำงานของโปรแกรม Apache ให้เป็นไปตามที่ต้องการแล้ว ลำดับต่อไปก็คือการคอมไพล์และติดตั้งโปรแกรม Apache ซึ่งมีวิธีการเช่นเดียวกับการคอมไพล์และติดตั้งโปรแกรมอื่นๆ จึงไม่นำมาอธิบายในที่นี้
เริ่มต้นใช้งานโปรแกรม Apacheหลังจากที่ผู้ดูแลระบบติดตั้งโปรแกรม Apache แล้ว ผู้ดูแลระบบสามารถเรียกใช้งานโปรแกรม Apache ได้ทันทีซึ่งจะทำให้การทำงานของโปรแกรมเป็นค่าดีฟอลต์ วิธีการสั่งให้โปรแกรม Apache เริ่มต้นทำงานสามารถทำได้โดยการใช้โปรแกรมที่ถูกติดตั้งมาพร้อมกับการติดตั้งโปรแกรม Apache ชื่อ apachectl ที่อยู่ในไดเรกทอรี /path_to_apache/bin เช่น /usr/local/apache/bin/apachectl โปรแกรม apachectl นี้เป็นสคริปต์ที่ถูกสร้างขึ้นมาเพื่อควบคุมการทำงานของโปรแกรม Apache ผู้ดูแลระบบสามารถใช้สคริปต์ apahcectl เพื่อสั่งให้โปรแกรม Apache เริ่มทำงาน จบการทำงาน หรือเริ่มต้นทำงานใหม่อีกครั้งได้อย่างสะดวกและรวดเร็วกว่า การสั่งให้โพรเซสของ Apache เริ่มทำงานเอง หรือการสั่งปิดโพรเซสของ Apache แต่ละโพรเซสด้วยตนเอง
อย่างไรก็ตาม เพื่อให้การทำงานของโปรแกรม Apache มีความปลอดภัยสูงขึ้น ผู้ดูแลระบบควรปรับแต่งค่าการทำงานของโปรแกรม Apache และไฟล์ที่เกี่ยวข้องให้รัดกุมและเหมาะสมกับระบบของตนมากขึ้น ดังต่อไปนี้
โดยทั่วไปแล้ว ไฟล์กำหนดการทำงานของโปรแกรม Apache ประกอบด้วยไฟล์ต่างๆ ในไดเรกทอรี /path_to_apache/conf เช่น /usr/local/apache/conf ทั้งหมด 5 ไฟล์ คือ
แต่การใช้งานจริงนั้น โปรแกรม Apache อนุญาตให้ผู้ดูแลระบบปรับแต่งค่าเฉพาะสามไฟล์แรก ส่วนไฟล์ที่เหลืออีกสองไฟล์คือ magic เป็นไฟล์ที่ใช้งานกับโมดูลพิเศษชื่อ mod_mime_magic และ mime.types เป็นไฟล์ที่ใช้ควบคุมชนิดของ MIME ที่ใช้ส่งให้ผู้ขอใช้งาน ทั้งสองไฟล์นี้จะถูกปล่อยไว้ตามที่โปรแกรมสร้างไว้ตอนติดตั้ง หากผู้ดูแลระบบคนใดต้องการสร้างหรือใช้งาน MIME ชนิดอื่นๆ สามารถทำได้โดยอาศัย directive ชื่อ AddType แทนการแก้ไขไฟล์เหล่านี้
ภายในไฟล์ httpd.conf, access.conf และ srm.conf มีโครงสร้างการกำหนดค่าในลักษณะเดียวกัน คือจะมีออปชันต่างๆ ที่อนุญาตให้ผู้ดูแลระบบแก้ไข เรียกว่า directive ซึ่งแต่ละ directive จะทำหน้าที่ในการกำหนดค่าการทำงานและการแสดงผลต่างๆ ของเว็บเซิร์ฟเวอร์นั้นๆ เช่น กำหนดชื่อเซิร์ฟเวอร์ กำหนดจำนวนผู้เข้าใช้งาน เป็นต้น ผู้ดูแลระบบสามารถปรับแต่งแก้ไขค่าในไฟล์ทั้งสามไฟล์นี้เพื่อให้เว็บเซิร์ฟเวอร์ทำงานตามที่ต้องการ อย่างไรก็ตาม ขอแนะนำให้ผู้ดูแลระบบรวม directive ทั้งหมดที่ใช้ในการกำหนดการทำงานไว้ในไฟล์ httpd.conf เพียงไฟล์เดียวเพื่อความสะดวกในการจัดการแก้ไข และปล่อยให้อีกสองไฟล์ที่เหลือเป็นไฟล์ว่าง
Directive ที่ควรได้รับการพิจารณากำหนดค่าให้เหมาะสม เพื่อเพิ่มความปลอดภัยให้กับโปรแกรม Apache และเครื่องเว็บเซิร์ฟเวอร์ประกอบด้วย
การกำหนดชื่อผู้ใช้และกลุ่มของผู้ใช้เกี่ยวข้องกับการสร้างโพรเซสเพื่อรอรับการขอเข้าใช้งาน เนื่องจากโพรเซสของ Apache หรือ http จะถูกสั่งให้เริ่มทำงานโดยผู้ดูแลระบบ (root) หลังจากนั้น โพรเซสดังกล่าวจะสั่งให้สร้างโพรเซสเพิ่มขึ้นอีกตามจำนวนที่กำหนด โพรเซสที่ถูกสร้างขึ้นในภายหลังนี้เองจะมีเจ้าของโพรเซสตามที่กำหนดใน directive ด้านบนและอนุญาตให้ผู้ใช้จากภายนอกเข้ามาใช้งาน ดังนั้น ผู้ที่เข้ามาใช้งานจึงได้สิทธิ์ตามนั้น แสดงได้ตามรูปที่ 2

รูปที่ 2 แสดงการทำงานของโพรเซส Apache (http)
ข้อแนะนำสำหรับการกำหนดชื่อและกลุ่มผู้ใช้สำหรับ directive ทั้งสองข้อด้านบนคือ ผู้ดูแลระบบสามารถกำหนดค่าเป็นผู้ใช้คนใด หรือกลุ่มผู้ใช้กลุ่มใดก็ได้ แต่จะต้องเป็นผู้ใช้และกลุ่มผู้ใช้ที่มีสิทธิ์การใช้งานเครื่องต่ำ และไม่ควรเป็นผู้ใช้หรือกลุ่มผู้ใช้ที่ได้รับสิทธิ์ในการใช้งานไฟล์อื่นๆ นอกเหนือจากไฟล์ที่ต้องการแสดงผลผ่านเว็บ รวมไปถึงจะต้องไม่ได้รับอนุญาตให้แก้ไขเปลี่ยนแปลงไฟล์ใดๆ ในระบบ เนื่องจากผู้ดูแลระบบไม่สามารถตรวจสอบหรือพิสูจน์ตัวตนได้ว่าจะมีการขอเข้าใช้งานเครื่องเว็บเซิร์ฟเวอร์จากที่ใดบ้าง จึงควรให้สิทธิ์การใช้งานแก่ผู้ที่เข้าใช้งานดังกล่าวให้น้อยที่สุดเท่าที่จะเป็นไปได้ และไม่ควรเป็นผู้ใช้และกลุ่มผู้ใช้ที่ถูกสร้างขึ้นเพื่อใช้งานอื่นๆ อีก
สิ่งสำคัญที่จะต้องพิจารณาในการเก็บบันทึกล็อกไม่ว่าผู้ดูแลระบบจะเลือกเก็บไฟล์ล็อกทั้งสองไฟล์ข้างต้นไว้ในไดเรกทอรีใดก็ตาม คือ ไฟล์และไดเรกทอรีที่เก็บบันทึกล็อกเหล่านั้นจะต้องถูกเขียนได้โดยโพรเซสเริ่มต้นของโปรแกรม Apache ซึ่งเป็นผู้สร้างการให้บริการเว็บเซิร์ฟเวอร์เท่านั้น ทั้งนี้ เพื่อให้ไฟล์ล็อกที่เก็บได้รับความปลอดภัยจากการเขียนทับโดยผู้ใช้ที่ไม่ได้รับอนุญาต ที่อาจบุกรุกเข้ามาในเครื่องได้สำเร็จ นอกจากนั้น การเก็บรักษาล็อกเหล่านี้ควรเป็นตามนโยบายขององค์กร และมีวิธีการดำเนินการอื่นๆ คล้ายคลึงกับการจัดการกับบันทึกล็อกของระบบ

รูปที่ 3 แสดงผลลัพธ์จากการกำหนดค่า ServerSignature On

รูปที่ 4 แสดงผลลัพธ์จากการกำหนดค่า ServerSignature Off

รูปที่ 5 แสดงผลลัพธ์จากการกำหนดค่า ServerTokens Full

รูปที่ 6 แสดงผลลัพธ์จากการกำหนดค่า ServerTokens ProductOnly

รูปที่ 7 แสดงผลลัพธ์จากการกำหนดค่า FancyIndexing On
Options None [All | ExecCGI | FollowSymLinks | Includes | IncludesNOEXEC | Indexes | MultiViews | SymLinksIfOwnerMatch]
AllowOverride None [All | None | AuthConfig | FileInfo | Indexes | Limit | Options]
</Directory>
การกำหนดค่าการเข้าใช้งานแต่ละไดเรกทอรี ทำได้โดยอาศัย directive ดังตัวอย่างด้านบนซึ่งเป็นการกำหนดค่าให้กับไดเรกทอรี
/ (ไดเรกทอรี root ของระบบ) ซึ่งภายในจะประกอบด้วย directive ย่อยๆ ที่กำหนดการใช้งานที่สำคัญได้แก่
Options MultiViews [All | ExecCGI | FollowSymLinks | Includes | IncludesNOEXEC | Indexes | MultiViews | SymLinksIfOwnerMatch]
AllowOverride Limit [All | None | AuthConfig | FileInfo | Indexes | Limit | Options]
Order allow, deny
Allow from All
</Directory>
สำหรับการกำหนดค่าการเข้าใช้งานให้กับไดเรกทอรีที่ถูกกำหนดให้เป็น DocumentRoot
ของเว็บเซิร์ฟเวอร์ ซึ่งในที่นี้คือ /usr/local/apache/htdocs ผู้ดูแลระบบควรกำหนดค่า
directive ย่อยๆ ที่กำหนดการทำงานภายในดังนี้
โปรแกรม Apache ได้เพิ่มส่วนของการตรวจสอบตัวตนผู้ที่ขอเข้าใช้งานเว็บเซิร์ฟเวอร์ หรือไดเรกทอรีใดๆ ในเครื่องเว็บเซิร์ฟเวอร์ให้ผู้ดูแลระบบเลือกใช้งานได้ 2 วิธี เพื่อให้ผู้ดูแลระบบสามารถกำหนดได้ว่า จะให้ผู้ใช้คนใดหรือผู้ใช้งานจากที่ใดเข้าใช้งานไดเรกทอรีใดในเครื่องได้บ้าง มีรายละเอียดดังต่อไปนี้
<Directory "/usr/local/apache/htdocs/staff">
Order deny, allow
Deny from All
Allow from .nectec.or.th</Directive>
การกำหนดค่าด้วยวิธี Host-based Authentication ทำได้โดยการใช้ directive สามอันคือ Order, Deny และ Allow กำหนดไว้ภายในไดเรกทอรีที่ต้องการให้มีการตรวจสอบตัวตนผู้ใช้เพื่อจำกัดการเข้าใช้งาน เช่น ถ้ามีไดเรกทอรีชื่อ staff อยู่ภายในไดเรกทอรี /usr/local/apache/htdocs ซึ่งต้องการให้เฉพาะเครื่องที่อยู่ในโดเมน nectec.or.th เข้าใช้งานได้เท่านั้น ผู้ดูแลระบบจะต้องกำหนดค่าไว้ใน directive ของไดเรกทอรี /usr/local/apache/htdocs/staff ดังตัวอย่างด้านบน

รูปที่ 8 แสดงหน้าต่างที่กำหนดให้ผู้ขอใช้งานใส่ค่า username และรหัสผ่าน เป็นผลมาจากใช้งาน HTTP-specified basic Authentication
เจ้าของและสิทธิ์การเข้าใช้งานไฟล์ที่เกี่ยวข้องกับโปรแกรม Apacheตัวอย่างการใช้งาน
หากผู้ดูแลระบบต้องการจำกัดการใช้งานไดเรกทอรี /usr/local/apache/htdocs/staff โดยกำหนดให้ผู้ต้องการใช้งานทุกคนต้องใส่ค่า userrname และรหัสผ่าน เพื่อตรวจสอบว่าผู้ใช้คนดังกล่าวได้รับสิทธิ์ในการเข้าใช้งาน ดังรูปที่ 7 ด้านบน ผู้ดูแลระบบจะต้องดำเนินการดังนี้
- สร้างไฟล์เก็บ username และรหัสผ่าน เพื่อใช้เปรียบเทียบในการตรวจสอบตัวตนผู้ใช้โดยเรียกใช้งานคำสั่ง htpasswd คือ
# htpasswd -c /usr/local/apache/secrets/.htpasswd staff
โปรแกรมจะกำหนดให้ใส่รหัสผ่านสำหรับ username ชื่อ staff และให้ยืนยันรหัสผ่าน
- คำสั่ง htpasswd นั้น เป็นคำสั่งที่ได้รับการติดตั้งพร้อมกันกับการติดตั้งโปรแกรม Apache อยู่ในไดเรกทอรี /path_to_apache/bin
- ออปชัน -c เป็นการสั่งให้สร้างไฟล์ .htpasswd หากต้องการเพิ่ม username อื่นในไฟล์นี้ก็ไม่จำเป็นต้องใช้ออปชันนี้อีก
- /usr/local/apache/secrets/.htpasswd เป็นชื่อไฟล์ที่จะเก็บชื่อผู้ใช้และรหัสผ่าน โดยรหัสผ่านที่กำหนดจะถูกเข้ารหัสไว้อย่างง่าย ดังนั้นไฟล์ที่เก็บค่าจึงควรเก็บในไดเรกทอรีที่ไม่สามารถเข้าถึงได้จากภายนอก และการตั้งชื่อไฟล์เป็น .htpasswd ก็เพื่อซ่อนไฟล์ด้วยเหตุผลของความปลอดภัยเช่นเดียวกัน
- staff คือชื่อ username ที่ต้องการใช้งาน
- สร้างไฟล์ชื่อ .htaccess ในไดเรกทอรีที่ต้องการจำกัดการเข้าถึง ภายในไฟล์ประกอบด้วย directive ดังต่อไปนี้
- AuthName "Staffs Only"
AuthType Basic
AuthUserFile /usr/local/apache/secrets/.htpasswd
Require user staff- รายละเอียดของ directive ที่ใช้งานอธิบายได้ดังนี้
- AuthName เป็นชื่อที่ของการตรวจสอบตัวตนผู้ใช้ที่ปรากฏบนหน้าต่างที่กำหนดให้ผู้ใช้ใส่ username และรหัสผ่าน ในที่นี้คือ "Staffs Only" ดังรูปที่ 8 ด้านบน
- AuthType คือวิธีการในการตรวจสอบ สำหรับโปรแกรม Apache ที่ใช้งานในปัจจุบันมีวิธีเพียงวิธีเดียวคือ Basic เท่านั้น
- AuthUserFile ใช้กำหนดไฟล์ที่เก็บ username และรหัสผ่านที่ใช้ในการตรวจสอบตัวตนผู้ใช้ ในที่นี้คือไฟล์ /usr/local/apache/secrets/.htpasswd ตามที่ได้สร้างไว้ในขั้นตอนที่ผ่านมา
- Require เป็นการชี้เฉพาะว่าจะให้ username หรือกลุ่มใดบ้างที่จะได้รับสิทธิ์ในการเข้าใช้งานไดเรกทอรีนั้น ในที่นี้คือให้เฉพาะ username ที่ชื่อ staff เท่านั้น ซึ่งเป็นวิธีการอย่างง่าย"
- ซึ่งการที่จะกำหนดให้โปรแกรม Apache อ่านไฟล์ .htaccess ที่สร้างขึ้นนี้จำเป็นจะต้องแก้ไขค่า directive ชื่อ AllowOverride ที่อยู่ภายในไดเรกทอรีที่ต้องการให้เป็น All ด้วย
- แก้ไขสิทธิ์การใช้งานไฟล์ให้เฉพาะผู้ดูแลระบบและโปรแกรม Apache เท่านั้นที่อ่านไฟล์ได้
- ทดสอบ
การสร้างความปลอดภัยให้กับโปรแกรม Apache นั้น นอกจากการทำให้เครื่องไม่ถูกบุกรุกหรือโจมตีจากภายนอกแล้ว อีกสิ่งหนึ่งที่จำเป็นมากก็คือ ผู้ดูแลระบบต้องจัดการให้ผู้เข้าใช้งานเข้าถึง อ่าน แก้ไขและใช้งานข้อมูลได้เฉพาะส่วนที่ผู้ดูแลต้องการเท่านั้น ผู้ใช้จะต้องไม่สามารถเข้าถึงไฟล์อื่นๆ ที่สำคัญต่อการทำงานของเครื่อง ได้แก่ ไฟล์ configuration ต่างๆ ไฟล์รหัสผ่าน เป็นต้น วิธีการหนึ่งที่จะจำกัดการเข้าถึงเหล่านี้ได้นอกเหนือจากการใช้การตรวจสอบตัวตนผู้ใช้ตามที่ได้อธิบายไว้ในหัวข้อที่ผ่านมาก็คือ การกำหนดเจ้าของและสิทธิ์การเข้าใช้งานไฟล์ที่เกี่ยวข้องกับโปรแกรม Apache ทั้งหมด รายละเอียดในส่วนนี้จะเป็นการให้คำแนะนำเกี่ยวกับการกำหนดค่าที่เหมาะสม เพื่อให้ผู้ดูแลระบบนำไปประยุกต์ใช้งานกับระบบของตนเอง
ภายในไดเรกทอรี Apache ประกอบด้วยไดเรกทอรีย่อยที่สำคัญทั้งหมด ไดเรกทอรี คือ
ผู้ดูแลระบบควรปรับแก้ชื่อเจ้าของไฟล์และไดเรกทอรีที่เกี่ยวข้อง รวมถึงสิทธิ์การเข้าใช้งานโปรแกรม Apache ดังนี้
| drwxr-xr-x | 13 | root | root | 4096 | Jul | 10 | 15:35 | apache/ |
| drwx------ | 2 | root | root | 4096 | Jul | 9 | 10:50 | bin/ | |
| drwx--x--x | 2 | root | root | 4096 | Jul | 9 | 10:50 | cgi-bin/ | |
| drwx------ | 2 | root | root | 4096 | Jul | 9 | 10:50 | conf/ | |
| drwxr-xr-x | 4 | webmaster | webmaster | 4096 | Jul | 10 | 15:38 | htdocs/ | |
| drwx------ | 2 | root | root | 4096 | Jul | 10 | 16:47 | logs/ |
ข้อควรระวังอื่นๆ ในการใช้งานโปรแกรม Apache
นอกเหนือจากคำแนะนำข้างต้นแล้ว ยังมีรายละเอียดปลีกย่อยที่ผู้ดูแลระบบควรจะพิจารณาในการติดตั้งและใช้งานโปรแกรม Apache ดังต่อไปนี้
| Home
|| เอกสารเผยแพร่ || Unix & Linux
ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved. |