อาปาเช่
(Apache)
ถือเป็นเว็บเซิร์ฟเวอร์ที่ได้รับความนิยมและถูกนำไปใช้เป็น Server
เป็นจำนวนมาก ดังรูปที่ 1 ซึ่งการติดตั้งเพื่อใช้งานเพียงอย่างเดียวนั้นไม่เพียงพอ
ยังต้องสร้างความมั่นคงปลอดภัยและความแข็งแกร่งให้กับอาปาเช่ด้วยเช่นกัน เพื่อป้องกันผู้บุกรุก
(Hacker) เข้ายึดครองเครื่องเว็บเซิร์ฟเวอร์
รูปที่ 1 สถิติผู้ใช้งาน Apache
สถิติช่องโหว่ที่เกิดขึ้นบนเว็บเซิร์ฟเวอร์ Apache ดังรูปที่ 2
รูปที่ 2 แสดงสถิตช่องโหว่ที่เกิดขึ้นบนเว็บเซิร์ฟเวอร์
Apache
จากสถิติช่องโหว่ที่เกิดขึ้นบนเว็บเซิร์ฟเวอร์ Apache ดังรูปที่
2 แสดงให้ทราบถึงภัยคุกคามต่างๆ ที่เกิดขึ้น หากผู้ดูแลระบบ (System
Administrator) ไม่มีความตระหนักในเรื่องความปลอดภัย อาจทำให้เครื่องเว็บเซิร์ฟเวอร์ถูกยึดครองและใช้เป็นฐาน (ฺBOTNET) ในการโจมตีเครื่องเซิร์ฟเวอร์อื่นๆ ทั่วโลก
ขั้นตอนการการเสริมสร้างความแข็งแกร่งของเว็บเซิร์ฟเวอร์อาปาเช่
(Hardening
Apache) บนระบบปฎิบัติการ CentOS ดังนี้
โดยพื้นฐานหลังจากการติดตั้งเว็ปเซิร์ฟเวอร์ Apache บนระบบปฎิบัติการ CentOS ค่าพื้นฐานหรือพาธไฟล์ต่างๆ
ทีมีดังนี้
o
Document
root Directory: /var/www/html
o
Main
Configuration file: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
o
Default
HTTP Port: 80 TCP
o
Default
HTTPS Port: 443 TCP
o
Test
your Configuration file settings and syntax: httpd -t
o
Access
Log files of Web Server: /var/log/httpd/access_log
o
Error
Log files of Web Server: /var/log/httpd/error_log
1.
Information
Leakage (ข้อมูลรั่วไหล)
การติดตั้งและการตั้งค่าเว็บเซิร์ฟเวอร์
Apache
แบบดีฟอลต์นั้น จะทำให้ข้อมูลรายละเอียดต่างๆ ที่สำคัญของเว็บเซิร์ฟเวอร์นั้นรั่วไหล
เช่น ชื่อระบบปฎิบัติการ, เวอร์ชั่นของเว็บเซิร์ฟเวอร์,
ไดเรกทรอรี่ไฟล์ เป็นต้น ทำให้ผู้บุกรุกสามารถอาศัยช่องโหว่ดังกล่าวเหล่านี้ในการเข้าถึงข้อมูลที่มีความสำคัญหรือยึดครองเครื่องเซิร์ฟเวอร์ได้สำเร็จ
o
แสดงหน้ายินดีต้อนรับเข้าสู่เว็บเซิร์ฟเวอร์
Apache
ในไฟล์ welcome.conf ดังรูปที่ 3
รูปที่ 3 แสดงหน้ายินดีต้อนรับเข้าสู่เว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการลบไฟล์
welcome.conf
ด้วยคำสั่ง
rm
-f /etc/httpd/conf.d/welcome.conf
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
ผลลัพธ์
รูปที่ 4
แสดงการลบหน้ายินดีต้อนรับเข้าสู่เว็บเซิร์ฟเวอร์ Apache
o
แสดงหน้าเวอร์ชันเว็บเซิร์ฟเวอร์ Apache ดังรูปที่ 5
รูปที่ 5 แสดงหน้าเวอร์ชันเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
44
เปลี่ยนจาก
ServerTokens
OS
ไปเป็น
ServerTokens
Prod
บรรทัดที่
536
เปลี่ยนจาก
ServerSignature
On
ไปเป็น
ServerSignature
Off
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service httpd restart
ผลลัพธ์
รูปที่ 6 แสดงการลบหน้าเวอร์ชันเว็บเซิร์ฟเวอร์ Apache
o
แสดงหน้า Index of บนแสดงข้อมุลไดเรกทรอรีบนเว็บเซิร์ฟเวอร์ Apache ดังรูปที่
7
รูปที่ 7 แสดงหน้า Index of บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
331
เปลี่ยนจาก
Options
Indexes FollowSymLinks
ไปเป็น
Options
- Indexes FollowSymLinks
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service httpd restart
ผลลัทธ์
รูปที่ 8 แสดงการลบหน้า Index of บนเว็บเซิร์ฟเวอร์ Apache
o
ดำเนินการปิด Option ต่างๆ บนเว็บเซิร์ฟเวอร์หากไม่มีการใช้งานฟังก์ชัน ดังนี้
ExecCGI
: Execution of CGI scripts using mod_cgi is permitted.
FollowSymLinks
: The server will follow symbolic links in this directory. This is the default
setting.
Includes
: Server-side includes provided by mod_include are permitted.
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
331
เปลี่ยนจาก
Options
-Indexes FollowSymLinks
ไปเป็น
Options
-Indexes -FollowSymLinks -ExecCGI –Includes
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service httpd restart
o
แสดงเวอร์ชัน PHP บนเว็บเซิร์ฟเวอร์ Apache ดังรูปที่ 9
รูปที่ 9 แสดงเวอร์ชัน PHP บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
php.ini
ด้วยคำสั่ง
vi
/etc/php.ini
บรรทัดที่
432
เปลี่ยนจาก
expose_php
= On
ไปเป็น
expose_php
= Off
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
ผลลัพธ์
รูปที่ 10 แสดงการปิดเวอร์ชัน PHP บนเว็บเซิร์ฟเวอร์ Apache
o
ดำเนินการตั้งค่าไฟล์ php.ini ให้มีความปลอดภัย
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
php.ini
ด้วยคำสั่ง
vi
/etc/php.ini
บรรทัดที่
530 เปลี่ยนจาก
เปลี่ยนจาก
display_errors
= On
ไปเป็น
display_errors
= Off
บรรทัดที่
886 เปลี่ยนจาก
เปลี่ยนจาก
allow_url_fopen
= On
ไปเป็น
allow_url_fopen
= Off
2. Cross
Site Scripting (XXS) การติดตั้งและการตั้งค่าเว็บเซิร์ฟเวอร์ Apache
แบบดีฟอลต์นั้น ทำให้ผู้บุกรุกสามารถแทรกคำสั่งอันตรายเข้าสู่ระบบเว็บแอพพลิเคชั่นได้
เช่น คำสั่งของ Javascript หรือ HTML ทำให้ผู้บุกรุกสามารถแก้ไขข้อมูลบนเว็บไซต์ได้
รวมถึงสามารถฝังโปรแกรมอันตรายลงบนเว็บไซต์
และหลอกล่อให้เหยื่อเปิดเว็บไซต์ดังกล่าวเพื่อใช้โจมตีเหยื่อได้
o
ดำเนินการตั้งค่าป้องกัน
Cross
Site Scripting (XXS) บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่ 332 เพิ่มข้อมูล
<IfModule
mod_headers.c>
Header
set X-XSS-Protection "1; mode=block"
</IfModule>
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
3. Authencaction
(พิสูจน์ตัวตน) and Authorization (สิทธิในการเข้าถึง) การติดตั้งและการตั้งค่าเว็บเซิร์ฟเวอร์
Apache
แบบดีฟอลต์นั้น จะทำผู้บุกรุกสมารถข้ามผ่านการควบคุมสิทธิ์ในการเข้าถึงหรือการพิสูจน์ตัวตน
เพื่ออาศัยช่องโหว่ดังกล่าวเหล่านี้ในยึดครองเครื่องเซิร์ฟเวอร์ได้สำเร็จ
o
แสดง Trace method
บนเว็บเซิร์ฟเวอร์ Apache ดังรูปที่ 11
รูปที่ 11 แสดงการเปิดTrace method บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
o ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
เพิ่มข้อมูลลงไป
TraceEnable
off
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
ผลลัพธ์
รูปที่ 12 แสดงการปิด Trace method บนเว็บเซิร์ฟเวอร์ Apache
o ดำเนินการตั้งค่าป้องกัน clickjacking
บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
333 เพิ่มข้อมูล
Header
append X-FRAME-OPTIONS "SAMEORIGIN"
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
o ดำเนินการตั้งค่าป้องกัน HTTP request
methods บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
334 เพิ่มข้อมูล
<LimitExcept
GET POST HEAD>
deny from
all
</LimitExcept>
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
ดำเนินการตั้งค่าป้องกัน cookies with
HTTPOnly flag บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
335 เพิ่มข้อมูล
<IfModule
mod_headers.c>
Header edit
Set-Cookie ^(.*)$ $1;HttpOnly;Secure
</IfModule>
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
4. Denial
of Service (DoS) การติดตั้งและการตั้งค่าเว็บเซิร์ฟเวอร์ Apache
แบบดีฟอลต์นั้น จะทำผู้บุกรุกสมารถร้องขอข้อมูลผ่านโปรโตคอล HTTP
เป็นจำนวนมาก จนทำให้เครื่องเว็บเซิร์ฟเวอร์ Apache ไม่สามารถห้บริการได้
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์
httpd.conf
ด้วยคำสั่ง
vi
/etc/httpd/conf/httpd.conf
บรรทัดที่
72 เปลี่ยนจาก
Timeout
60
ไปเป็น
Timeout
300
บรรทัดที่
78 เปลี่ยนจาก
KeepAlive
Off
ไปเป็น
KeepAlive
On
บรรทัดที่
85 เปลี่ยนจาก
MaxKeepAliveRequests
100
บรรทัดที่
91 เปลี่ยนจาก
KeepAliveTimeout
15
บรรทัดที่
1020 เพิ่มข้อมูล
#Limit
upload file
LimitRequestBody
512000
#
Limits
the number of HTTP request header fields that will be accepted from the client
LimitRequestFields
100
#
Limits
the size of the HTTP request header allowed from the client
LimitRequestFieldSize
8190
ดำเนินการสั่งรีสตาร์
Apache
ด้วยคำสั่ง
service
httpd restart
อ้างอิง
https://news.netcraft.com
https://geekflare.com/apache-web-server-hardening-security/#1-Introduction
http://www.tecmint.com/apache-security-tips/
https://devops.profitbricks.com/tutorials/how-to-harden-the-apache-web-server-on-centos-7/











