Updated: Nov 9, 2020
อาปาเช่ (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
- 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
- Cross Site Scripting (XXS) การติดตั้งและการตั้งค่าเว็บเซิร์ฟเวอร์ Apache แบบดีฟอลต์นั้น ทำให้ผู้บุกรุกสามารถแทรกคำสั่งอันตรายเข้าสู่ระบบเว็บแอพพลิเคชั่นได้ เช่น คำสั่งของ Javascript หรือ HTML ทำให้ผู้บุกรุกสามารถแก้ไขข้อมูลบนเว็บไซต์ได้ รวมถึงสามารถฝังโปรแกรมอันตรายลงบนเว็บไซต์ และหลอกล่อให้เหยื่อเปิดเว็บไซต์ดังกล่าวเพื่อใช้โจมตีเหยื่อได้
o ดำเนินการตั้งค่าป้องกัน Cross Site Scripting (XXS) บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์ httpd.conf ด้วยคำสั่ง vi /etc/httpd/conf/httpd.conf
บรรทัดที่ 332 เพิ่มข้อมูล
Header set X-XSS-Protection “1; mode=block”
ดำเนินการสั่งรีสตาร์ Apache ด้วยคำสั่ง service httpd restart
- 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 เพิ่มข้อมูล
deny from all
ดำเนินการสั่งรีสตาร์ Apache ด้วยคำสั่ง service httpd restart
ดำเนินการตั้งค่าป้องกัน cookies with HTTPOnly flag บนเว็บเซิร์ฟเวอร์ Apache
วิธีการแก้ไข
ดำเนินการเปลี่ยนแปลงการตั้งค่าที่ไฟล์ httpd.conf ด้วยคำสั่ง vi /etc/httpd/conf/httpd.conf
บรรทัดที่ 335 เพิ่มข้อมูล
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
ดำเนินการสั่งรีสตาร์ Apache ด้วยคำสั่ง service httpd restart
- 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://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/