เกริ่นนำ วันนี้ผู้เขียนจะมาแนะนำวิธีการเพิ่่มมาตรการสร้างความปลอดภัยให้กับเวบไซต์ที่ใช้ซอฟต์แวร์โอเพนซอร์ส (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))"
- ขั้นตอนที่ 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
Sign up here with your email
ConversionConversion EmoticonEmoticon