เทคนิดเด็ดปรับแต่ง Linux รู้ไว้ใช่ว่า


Linux

การปรับแต่ง WEB SERVER (APACHE+PHP+MYSQL)

 

1. การตั้งค่าเริ่มต้นให้แสดงภาษาไทย

 

APACHE1

#vi /vc/etc/httpd.conf

เพิ่ม

DefaultLanguage th

AddDefaultCharset TIS-620

AddCharset TIS-620 .tis-620 .th

แก้

LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw

เป็น

LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw

 

APACHE2

#vi /vc/etc/httpd.conf

เพิ่ม

DefaultLanguage th #ใน APACHE1 จะไม่มีบรรทัดนี้

AddLanguage th .th

LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

AddDefaultCharset TIS-620

AddCharset TIS-620 .tis-620 .th

แก้

LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw

เป็น

LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw

 

2. ระบบรักษาความปลอดภัยอย่างง่ายๆ

 

แก้ user และ group ในการรันโปรแกรม APACHE เป็น apache

ปกติ การติดตั้ง APACHE แบบคอมไพล์โปรแกรม จะตั้งค่าเป็น nobody ให้ทำการแก้ไขเป็น apache โดยต้องทำการสร้าง group และ user ก่อน

#greoupadd apache

#useradd -g apache apache

#vi /etc/passwd

แก้ shell เป็น /sbin/nologin

การแก้ไข HEADER ของ APACHE

สำหรับ APACHE 1.3 และ APACHE 2 .0 การแก้ไขคล้ายคลึงแต่ เพียงแยกกันคนละแฟ้มเท่านั้น

APACHE 1.3

แก้ไข้แฟ้ม include/httpd.h

ค้นหาบรรทัดต่อไปนี้ แล้วแก้

#define SERVER_BASEVENDOR "Apache Group"

#define SERVER_BASEPRODUCT "Apache"

#define SERVER_BASEREVISION "1.3.34"

#define SERVER_BASEVERSION SERVER_BASEPRODUCT "/" SERVER_BASEREVISION

#define SERVER_PRODUCT SERVER_BASEPRODUCT

#define SERVER_REVISION SERVER_BASEREVISION

#define SERVER_VERSION SERVER_PRODUCT "/" SERVER_REVISION

enum server_token_type {

SrvTk_MIN, /* eg: Apache/1.3.0 */

SrvTk_OS, /* eg: Apache/1.3.0 (UNIX) */

SrvTk_FULL, /* eg: Apache/1.3.0 (UNIX) PHP/3.0 FooBar/1.2b */

SrvTk_PRODUCT_ONLY /* eg: Apache */

};

APACHE 2

แก้ไข้แฟ้ม include/ ap_release.h

ค้นหาบรรทัดต่อไปนี้ แล้วแก้

#define AP_SERVER_BASEVENDOR "Apache Software Foundation"

#define AP_SERVER_BASEPRODUCT "Apache"

#define AP_SERVER_MAJORVERSION "2"

#define AP_SERVER_MINORVERSION "0"

#define AP_SERVER_PATCHLEVEL "55"

#define AP_SERVER_MINORREVISION AP_SERVER_MAJORVERSION "." AP_SERVER_MINORVERSION

#define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL

#define AP_SERVER_BASEVERSION AP_SERVER_BASEPRODUCT "/" AP_SERVER_BASEREVISION

#define AP_SERVER_VERSION AP_SERVER_BASEVERSION

การแก้ไข HEADER ในครั้งนี้จะส่งผลไปยัง Signature ด้วย เพราะ ข้อความใน Signature จะเอามาจาก HEADER

ข้อแนะนำ จะแก้ไขเป็นอย่างไรก็ได้ อาจจะชื่อองค์กรก็ได้หรือชื่อ WEBSERVER อื่นก็ได้ แต่ แนะนำห้ามแก้เป็นอะไรก็ตามที่เกี่ยวกับหรือโอนเอียงไปทาง Microsoft เช่น IIS เพราะ SERVER ของท่านจะกลายเป็นเป้าโจมตีของบรรดา HACKER & CRACKER

ในขณะเดียวกันการแก้ไข HEADER ในครั้งนี้ จะทำให้ HACKER & CRACKER มือใหม่ หรือ อ่อนประสบกาณ์ ทำการโจมตีระบบของท่านยากขึ้น เพราะ จะไม่ทราบถึง SERVER ที่แท้จริง ซึ่ง ผมเองก็เคยเปลี่ยนเป็น IIS แล้วเบื่อๆเลยมานั่งดู Log File เล่นๆ พบ ว่ามีคนกำลังโจมตีมายัง Server ผม พอดี และคงเป็นมือใหม่ เพราะ สังเกตได้จาก การโจมตีทั้งหมด เป็นการโจมตี WEB SERVER ที่เป็น IIS แต่เครื่องผมเป็น APACHE ดังนั้นการโจมตีจึงไร้ผล แต่เป็นที่น่าเศร้าใจ เมื่อพบว่า IP ที่โจมตีเข้ามาเป็น Private IP จากภายในมหาวิทยาลัยนี้แหละ แต่คนละวิทยาเขตกัน

หลังแก้ไขแล้วให้ทำการคอมไพล์ APACHE ใหม่

 

การแก้ไข Signature ของ APACHE

เวลา Document Error เกิด ทาง Server จะแสดง Signature ด้วย ซึ่งรายระเอียดภายใน Signarute มี รายละเอียดของ Server Kernel Version ของ apache,php

ค้นหา ServerSignature On

แก้เป็น ServerSignature Off

 

การแก้ไขการแสดงผลเมื่อไม่มีแฟ้ม index ปกติเมื่อ เมื่อไม่มีหน้า index พอเข้าไปมันจะแสดง รายชื่อแฟ้มทั้งหมดออกมา

ค้นหาตัวแปร IndexOptions

แก้เป็น IndexOptions FancyIndexing

 

แก้ไขการแสดงผลเมื่อเจอ Error Document ต่างๆ

เหมาะสำหรับป้องการพยามเข้าสูงไดเรกเทอรี่ที่ไม่ได้รับอนุญาติ

เพิ่ม

ErrorDocument 404 /404.php สำหรับการเข้าถึงแฟ้มหรือไดเรกเทอรีที่ไม่มีอยู่จริง

ซึ่งมีประโยชน์มาก เมื่อมีการคลิกลิงค์ ไปยังหน้าที่ไม่อยู่จริง โดย เราจะสร้างแฟ้ม 404.php (หรือชื่ออะไรก็ได้) ซึ่งเป็นหน้าสำหรับแจ้งผู้ใช้ว่าหน้านี้ไม่มีอยู่ใน WEB และ

ErrorDocument 403 /403.php สำหรับการเข้าถึงแฟ้มหรือไดเรกเทอรีที่ไม่อนุญาติ

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

สามารถ ดู RESPONSE CODES ได้จากแฟ้ม include/httpd.h

ตัวอย่าง RESPONSE CODES ในแฟ้ม include/httpd.h

#define RESPONSE_CODES 55

#define HTTP_CONTINUE 100

#define HTTP_SWITCHING_PROTOCOLS 101

#define HTTP_PROCESSING 102

#define HTTP_OK 200

#define HTTP_CREATED 201

 

3. การแก้ไข จำนวน Process ที่รองรับ

 

ทั้ง APACHE 1.3 และ 2 ต่างก็แก้ไขเหมือนกัน เพียง ของ APACHE 2 จะรวมมาอยู่ที่เดียวกัน

ทำการแก้ไขแฟ้ม httpd.conf ดังนี้

MinSpareServers 5 หมายจำนวน Procecc ต่ำสุดที่รัน

MaxSpareServers 10 หมายจำนวน Procecc สูงสุดที่รัน

StartServers 5 หมายจำนวน Procecc เริ่มต้นที่รัน

ทั้งหมด สามาถใช้คำสั่ง ps ตรวจสอบได้

โดยใช้ #ps aux

apache 18647 0.2 1.3 51256 41160 ? S Oct27 6:32 /vc/bin/httpd

apache 18648 0.2 1.0 42968 31880 ? S Oct27 9:36 /vc/bin/httpd

apache 18649 0.2 1.3 53848 43112 ? S Oct27 9:22 /vc/bin/httpd

apache 18650 0.2 1.5 57376 48068 ? S Oct27 7:22 /vc/bin/httpd

apache 18651 0.2 1.0 43384 32784 ? S Oct27 9:24 /vc/bin/httpd

 

MaxClients จำนวนเครื่อง Client สูงสุดที่สามารถเชื่อมต่อได้พร้อมๆกัน

ของ APACHE 1.3 ปกติเป็น 150 ของ APACHE 2 ปกติเป็น 256

ซึ่งสอง VERSION กำหนดได้สูงสุด เพียง 256 เครื่องเท่านั้น ถ้ากำหนดมากกว่า 256 SERVER จะไม่รัน และแจ้ง ERROR ออกมาว่าให้ กำหนด เพียงแค่ 256 เท่านั้น

วิธีแก้

APACHE 1.3 แก้ไขแฟ้ม include/httpd.h

#ifndef HARD_SERVER_LIMIT

#ifdef WIN32

#define HARD_SERVER_LIMIT 1024 สำหรับ WINDOWS

#elif defined(NETWARE)

#define HARD_SERVER_LIMIT 2048 สำหรับ NETWARE

#else

#define HARD_SERVER_LIMIT 256 สำหรับ SERVER อื่น เช่น LINUX

#endif

#endif

APACHE 2 แก้ไขแฟ้ม server/mpm/prefork/prefork.c

#ifndef DEFAULT_SERVER_LIMIT

#define DEFAULT_SERVER_LIMIT 256

#endif

ซึ่งเราจะแก้เป็นเท่าไหร่ก็ได้ แต่ต้องพิจารณาถึงศักยภาพของ SERVER และความจำเป็นด้วย และความสนใจของบุคคลทั่วไปในการเข้าเยี่ยมชม WEB SERVER ด้วย แต่หลังจากแก้ไขแล้ว อย่าลืมคอมไฟล์ APACHE ใหม่ด้วยครับ

 

4. PHP

 

ส่วนของ PHP ซึ่งก็ไม่จำเป็นต้องแก้ไขอะไรมากนัก เพราะค่าเริ่มต้นที่ให้มาก็ถือว่าเหมาะสมแล้วครับ ถ้าจะแก้ก็ ตามมาเลยครับ ซึ่งแฟ้มที่แก้ก็คือ php.ini

4.1 register_globals ปกติเป็น Off จะแก้เป็น On ก็ได้ครับ แต่ถ้าใช้ Off จะมีความปลอดภัยสูงกว่า On

4.2 upload_max_filesize ปกติเป็น 2M ถ้าต้องการอัพโหลดแฟ้มที่มีขนาดมากกว่า 2 M ก็แก้ไขตรงนี้ได้ครับ

4.3 max_execution_time เวลาในการทำงาน งานชิ้นใดชิ้นหนึ่ง ปกติเป็น 30 หน่วยเป็น วินาที ซึ่ง ไม่สมควรเปลี่ยน แต่งานบางอย่าง ก็ใช้เวลานานกว่า 30 วินาที ก็ควรเปลี่ยนเป็นครั้งคราว หลังจากครบกำหนดก็จะกลายเป็น Timeout expired

4.4 memory_limit RAM ที่ใช้ ปกติ เป็น 8M ไม่ควรเปลี่ยน แต่งบางอย่างอาจจะต้องใช้มากกว่า 8M เช่น โปรแกรม moodle หรือการอัพโหลดแฟ้มที่มีขนาดมากกว่า 8M

4.5 mysql.default_socket ปกติ ไม่ต้องกำหนด แต่บางครั้งหลังติดตั้ง โปรแกรมจะหาแฟ้ม mysql.sock ไม่เจอ ก็ใส่ตรงนี้ได้ครับ เช่น /vc/data/mysq.sock

4.6 extension_dir ปกติเป็น ./ หมายถึง ไดเรกเทอรี่เดียวกับ code php ที่ใช้ แต่สำหรับ Linux ไม่จำเป็นต้องใช้ตัวนี้ แต่ถ้ามีก็ไม่เสียหาย เผื่อครั้งต่อไปเอาโมดูลมาจาก Server อื่น โดยที่เราไม่อยากคอมไฟล์ PHP ใหม่ ก็ให้ใส่

 

ขอแค่นี้ก่อนนะครับ เพราะเขียนขึ้นมาจากความทรงจำ จึงอาจจะมีตกๆหล่นๆ ไปบ้าง ก็อภัยด้วยครับ

เครดิต:http://gotoknow.org/blog/linux/6049

หมายเลขบันทึก: 401858เขียนเมื่อ 10 ตุลาคม 2010 12:00 น. ()แก้ไขเมื่อ 22 มิถุนายน 2012 13:45 น. ()สัญญาอนุญาต: สงวนสิทธิ์ทุกประการจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (0)

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท