การเสริมสร้างความแข็งแกร่งบนเว็บเซิร์ฟเวอร์อาปาเช่ (Hardening Apache)

การเสริมสร้างความแข็งแกร่งบนเว็บเซิร์ฟเวอร์อาปาเช่ (Hardening Apache)

อาปาเช่ (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

  1. 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

  1. 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

  1. 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

อ้างอิง

http://tomcisco-security.blogspot.com/2016/10/hardening-apache.html

https://news.netcraft.com

Apache Web Server Hardening & Security Guide

13 Apache Web Server Security and Hardening Tips

https://devops.profitbricks.com/tutorials/how-to-harden-the-apache-web-server-on-centos-7/