เพิ่มความปลอดภัยให้กับเวบไซต์โอเพนซอร์ส ขั้นสุดตามกำลัง

เกริ่นนำ วันนี้ผู้เขียนจะมาแนะนำวิธีการเพิ่่มมาตรการสร้างความปลอดภัยให้กับเวบไซต์ที่ใช้ซอฟต์แวร์โอเพนซอร์ส (opensource) ด้วยเครื่องมือยอดนิยม modsecurity และ fail2ban สำหรับเครื่องเซิร์ฟเวอร์ของผู้เขียนเป็นระบบ Ubuntu 12.04.3 LTS ก่อนอื่นจะขอแนะนำ modsecurity ก่อน

ทฤษฎี modsecurity เป็นไฟร์วอลในระดับ application layer ใช้ติดตั้งประกอบเข้ากับเวบเซิร์ฟเวอร์ Apache2 เพื่อป้องกันในระดับเนื้อหา (contents) ซึ่งไฟร์วอล layer 3 ทั่วๆ ไปไม่สามารถทำได้ หรือเป็นที่รู้จักดีคือ Opensource Web Security Firewall หลายครั้งที่ผู้เขียนต้องเสียเวลาติดตั้งและลงโปรแกรมใหม่ เพราะเวบไซต์ของผู้เขียนถูกวางโค๊ดซ่อนไว้ (malicious code) เพื่อโหลดไฟล์รูปภาพขนาดหลายๆ TB ทีเดียว ผลกระทบของเวบไซต์ที่โดนเล่นงาน จะทำงานช้าลงโดยเฉพาะเวบของผู้เขียนเสียเงินค่าโอนย้ายข้อมูล( Data Transfer ) ไปหลายร้อยเหรียญทีเดียว คิดแล้วมันน่าเจ็บใจ



  • ขั้นตอนที่ 1 เริ่มการติดตั้ง libapache2-modsecurity กันก่อนจะมี 2 แพ็คเกจคือ libapache2-modsecurity และ mod-security-crs เป็นกฎสำหรับการป้องกันการบุกรุก


# apt-get install libapache2-modsecurity modsecurity-crs

ไฟล์คอนฟิกต่างๆ ของ modsecurity จะตั้งค่าอยู่ที่ /etc/modsecurity ผู้เขียนได้ใช้ค่ามาตรฐาน โดยล็อกไฟล์จะกำหนดค่าอยู่ที่ /var/log/apache2/modsec_audit.log  จากนั้นลองสั่งเซอร์วิส apache2 รีสตาร์ทดู

# /etc/init.d/apache2 restart


ให้แก้คอนฟิกไฟล์ จากเดิม


SecAuditLogRelevantStatus "^(?:5|4(?!04))"


ให้แก้เป็น เพื่อป้องกันการบล็อกข้อมูลผิดพลาด

#SecAuditLogRelevantStatus "^(?:5|4(?!04))"


หลังจากได้ติดตั้ง libapache2-modsecurity ในขั้นตอนที่ 1 ผ่านไปด้วยดีแล้ว คราวนี้มาถึงขั้นตอนการติดตั้งโปรแกรม fail2ban เพื่อสกัดกั้นการโจมตีเวบไซต์ของเราอย่างทันท่วงที หากมีข้อสงสัยว่าจะเป็นการแอบวางสคริปเราก็สั่งแบนไอพีแอดเดรสนั้นแบบทันด่วน


  • ขั้นตอนที่ 2 เริ่มการติดตั้ง fail2ban แพ็คเกจ ไฟล์คอนฟิกของระบบจะติดตั้้งอยู่ที่โฟลเดอร์ /etc/fail2ban
# apt-get install fail2ban


ให้ปรับแต่งไฟล์ jail.conf เพิ่มเติมสำหรับ modsec ดังนี้
[modsec]
enabled  = true
filter   = modsec
action   = iptables-multiport[name=ModSec, port="http,https"]
#           sendmail-buffered[name=ModSec, lines=5, dest=you@mail.com]
logpath  = /var/log/apache2/modsec_audit.log
bantime  = 172800
maxretry = 1
ต่อไปให้ไปสร้างไฟล์ modsec.conf ที่โฟลเดอร์ /etc/fail2ban/filter.d ชื่อว่า modsec.conf
# Fail2Ban configuration file
#
# Author: Florian Roth

[Definition]
failregex = \[.*?\]\s[\w-]*\s\s
ignoreregex =
จากนั้นสั่งสตาร์ทเซอร์วิสดู
/etc/init.d/fail2ban start
จะเห็นได้ว่าการติดตั้ง web security firewall ทำงานร่วมกับ fail2ban ทำได้ไม่ยาก และได้ประโยชน์กว่าที่เราคาดคิดไม่ถึงกัน เพราะอย่างน้อยก็เป็นการป้องกันไม่ให้แฮกเกอร์ยอมเปลี่ยนเป้าหมายการโจมตีจากเวบไซต์เราไปยังเป้าหมายอื่น ที่ทำได้ง่ายและสะดวกกว่า

ผลลัพธ์ ตารางข้างล่างเป็นตัวอย่างการแบนไอพีแอดเดรสที่เข้ามาโจมตีเวบไซต์ของเราในช่วงเวลาหนึ่ง จะเห็นได้ว่าแฮกเกอร์พยายามหาช่องโหว่เพื่อทำการโจมตี โดยส่งแพ็คเกจเข้าโจมตีถึง 870Kpkts มีขนาดถึง 65Mbytes ทีเดียว

Chain fail2ban-ModSec (1 references)
pkts     bytes    target     prot  opt in     out     source                    destination
   29     2988    DROP      all   --  *      *       131.253.24.59         0.0.0.0/0
   46     2760    DROP      all   --  *      *       194.152.247.138      0.0.0.0/0
   11       440    DROP      all   --  *      *       157.55.33.44           0.0.0.0/0
     0          0    DROP      all   --  *      *       94.23.164.146         0.0.0.0/0
     8     6240    DROP      all   --  *      *       69.64.37.64             0.0.0.0/0
   20       872    DROP      all   --  *      *       157.55.35.113         0.0.0.0/0
 137     7780    DROP      all   --  *      *       109.70.140.195        0.0.0.0/0
     0          0    DROP      all   --  *      *       213.148.19.190        0.0.0.0/0
     0          0    DROP      all   --  *      *       180.76.6.132           0.0.0.0/0
   77     4572    DROP      all   --  *      *       94.23.233.204         0.0.0.0/0
     0          0    DROP      all   --  *      *       202.210.151.73       0.0.0.0/0
   34     1600    DROP      all   --  *      *       31.133.13.244         0.0.0.0/0
 571    26356   DROP      all   --  *      *       171.99.178.43          0.0.0.0/0
 870K     65M   RETURN  all   --  *      *        0.0.0.0/0                 0.0.0.0/0



ผู้เขียนจะได้อัพเดทข้อมูลต่างๆอันเป็นประโยชน์ โดยแนวทางพระราชดำริ "พอเพียง" ตราบใดที่คนไทยยังไม่สามารถสร้างซอฟต์แวร์ไฟร์วอลหรือ appliance ที่แพงมหาศาลได้ เราก็พึงพาตัวเอง หมั่นขนขวายหาความรู้เพิ่มเติมอยู่เสมอ ผู้เขียนเชื่อว่าไม่มีเครื่องมือใดๆที่ดีที่สุดในโลก แต่เราต้องรู้ว่าเราจะใช้สิ่งที่มีอยู่ให้มีประโยชน์มากที่สุดได้อย่างไรต่างหาก


ผลของการเปิดการใช้งาน modsecurity + fail2ban มาดูวิธีการเข้ามาของแฮกเกอร์กันสนุก ๆดีกว่า




ร่องรอยผู้ร้ายเริ่มปรากฏตัวให้เห็น มีการเขียนไฟล์ 20131205-xxxxxx-xxxxxx-file-xxxxx ที่โฟลเดอร์ /tmp ของระบบ แฮกเกอร์อาศัยช่องโหว่ของการให้บริการเวบไซต์หาช่องทางอัพโหลดไฟล์เข้าเครื่องเราได้ ผู้เขียนเริ่มมีความกังวลใจ ผู้ร้ายจะทำอะไรต่อ fail2ban จะทำหน้าที่ได้เต็มกำลังแค่ไหน ไม่รอช้าผู้เขียนรีบไปเปิดล็อกไฟล์ของ fail2ban.log ดูทันที พบว่าเวลา 18.22 วันที่ 05-12-2013 มีการแบนไอพีแอดเดรสที่ส่งไฟล์เข้ามาคือ 96.9.163.49



ไม่น่าเชื่อ L7 Web application firewall จะทำงานได้ดีขนาดนี้ ตามไปดูซ้ำอีกทีว่า ไอพีนี้ถูกบล็อกสมบูรณ์แบบแล้วหรือไม่




จะเห็นได้ชัดเจนว่า ไอพีของแฮกเกอร์ถูกเครื่องเราตอบโต้โดยการแบนไม่ให้เข้าถึงเครื่องเราได้อีก อย่างน้อยก็ช่วงระยะเวลาหนึ่งของการกำหนดค่าที่เราตั้งไว้ สิ่งที่เราต้องทำต่อไปก็ต้องหาวิธีอุดช่องโหว่ป้องกันไม่ให้แฮกเกอร์สามารถเข้าโจมตีเวบไซต์ของเราได้ 

สรุป ผู้เขียนหวังเป็นอย่างยิ่งว่า แนวทางการหามาตรการป้องกันที่ถูกต้อง ครบถ้วนและแม่นยำจะได้นำไปประยุกต์ใช้ เพื่อเพิ่มความปลอดภัยให้กับเวบไซต์โอเพนซอร์ส ขั้นสุดตามกำลัง กันต่อไป พร้อมกันนี้แนวทางการป้องกันยังได้นำมาปรับปรุงใช้ในกลุ่มเวบไซต์ thailandgpstracker ของผู้เขียนเพิ่มเติมอีกด้วย

บริษัท ไทย พรอสเพอรัส ไอที จำกัด 119/908 หมู่ 1  เพอร์เฟคเพลสรัตนาธิเบศร์ ถ.รัตนาธิเบศร์ ต.ไทรม้า อ.เมือง จ.นนทบุรี 11000

Previous
Next Post »