sudo apt-get update
sudo apt-get upgrade
ติดตั้ง mod-security และ mod-evasive ด้วยคำสั่ง:
sudo apt-get install libapache2-mod-security2 libapache2-modsecurity libapache2-mod-evasive
ตั้งค่าใช้งานโดย enable โมดูล mod_security rules, copy recommended mod_security จาก configuration file, แก้ไขไฟล์ set ‘SecRuleEngine’ option เป็น On และค่าอื่นๆ ดังนี้:
sudo cp /etc/modsecurity/modsecurity.conf{-recommended,}
sudo vi /etc/modsecurity/modsecurity.conf
SecRuleEngine On
SecRequestBodyLimit 32768000
SecRequestBodyInMemoryLimit 32768000
SecResponseBodyAccess Off
สำหรับ mod_security rules ต่างๆ จะเก็บอยู่ใน directories ดังนี้:
/usr/share/modsecurity-crs/base_rules
/usr/share/modsecurity-crs/optional_rules
/usr/share/modsecurity-crs/experimental_rules
การเปิดใช้งาน CRS base rules (ModSecurity Core Rule Set), ให้สร้าง symbolic links ด้วยคำสั่ง:
sudo ln -s /usr/share/modsecurity-crs/base_rules/*.conf /usr/share/modsecurity-crs/activated_rules/
download และ configure OWASP (Open Web Application Security Project) core rule set ดังนี้:
sudo apt-get install git
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
sudo mv /usr/share/modsecurity-crs /usr/share/modsecurity-crs.bak
sudo mv owasp-modsecurity-crs /usr/share/modsecurity-crs
sudo mv /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf.example /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf
แก้ไข files:
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_35_bad_robots.conf
comment lines 16, 21 and 28:
#SecRule REQUEST_HEADERS:User-Agent "@pmFromFile modsecurity_35_bad_robots.data" \
#SecRule REQUEST_HEADERS:User-Agent "@pmFromFile modsecurity_35_bad_robots.data" \
#SecRule REQUEST_HEADERS:User-Agent
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_40_generic_attacks.conf
comment line 169:
#SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@pmFromFile modsecurity_40_generic_attacks.data" \
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_50_outbound.conf
comment line 101:
#SecRule RESPONSE_BODY "!@pmFromFile modsecurity_50_outbound.data" \
Configure mod_evasive module:
<pre>sudo vi /etc/apache2/mods-available/mod-evasive.conf</pre>
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 3
DOSBlockingPeriod 3600
DOSLogDir /var/log/apache2/mod_evasive.log
</ifmodule>
สามารถอ่านรายละเอียดเพิ่มเติมใน README file จาก mod_evasive สำหรับ config parameters ต่างๆ.
สร้าง log file สำหรับ mod_evasive:
touch /var/log/apache2/mod_evasive.log
sudo chown www-data:www-data /var/log/apache2/mod_evasive.log
Run the คำสั่งต่อไปนี้เพื่อ enable Apache modules:
sudo a2enmod headers
sudo a2enmod evasive
sudo a2enmod security2
Restart the Apache2 web server :
sudo service apache2 restart
ตรวจสอบว่า mod_security และ mod_evasive modules นั้นได้ enabled แล้วหรือไม่บน server:
sudo apachectl -M | grep security2
security2_module (shared)
sudo apachectl -M | grep evasive
evasive20_module (shared)
หากคุณใช้ WordPress ในเว็บไซต์ก็อาจมีแนวโน้มที่คุณจะต้องปิดการใช้งานบาง rule ของ mod_security เพื่อที่จะสามารถแก้ไขโดเมนเสมือน (VirtualHost) ที่กำหนดไว้ใน config ของ Apache ตัวอย่างเช่น:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html/wordpress/
<Directory />
Options +FollowSymLinks
AllowOverride FileInfo
</Directory>
<LocationMatch "/wp-admin/post.php">
SecRuleRemoveById 300016
</LocationMatch>
<LocationMatch "/wp-admin/nav-menus.php">
SecRuleRemoveById 300016
</LocationMatch>
<LocationMatch "(/wp-admin/|/wp-login.php)">
SecRuleRemoveById 950117
SecRuleRemoveById 950005
</LocationMatch>
</VirtualHost>
restart Apache web server:
sudo service apache2 restart
ตรวจสอบผลต่างๆ ได้ที่ /var/log/apache2/modsec_audit.log
ที่มา: http://www.rosehosting.com
Hardening and secure Apache web server with installing mod_security and mod_evasive on an Ubuntu 14.04
Mod_Security เป็น open source WAF (web application firewall) แปลกันตรงๆ เลยไม่ซับซ้อนครับ ป้องกันการโจมตีเว็บไซต์ในรูปแบบต่างๆ เช่น cross-site scripting, SQL injection attacks, path traversal attacks เป็นต้น
Mod_Evasive เป็นเครื่องมือช่วยในการป้องกันการโจมตี HTTP brute force, DoS หรือ DDoS attack และสามารถรายงานข้อมูลการโจมตีแบบ log file รวมถึงการแจ้งเตือนผ่าน email
โดยเครื่องมือทั้งสองนี้เป็น Apache Module ในการติดตั้ง Apache ตามปกติจะไม่มีการติดตั้งให้จำเป็นต้องทำการติดตั้งเพิ่มเติม ดังนี้
ทำการปรับปรุง OS packages ต่างๆ ให้ทันสมัย:
ติดตั้ง mod-security และ mod-evasive ด้วยคำสั่ง:
ตั้งค่าใช้งานโดย enable โมดูล mod_security rules, copy recommended mod_security จาก configuration file, แก้ไขไฟล์ set ‘SecRuleEngine’ option เป็น On และค่าอื่นๆ ดังนี้:
สำหรับ mod_security rules ต่างๆ จะเก็บอยู่ใน directories ดังนี้:
การเปิดใช้งาน CRS base rules (ModSecurity Core Rule Set), ให้สร้าง symbolic links ด้วยคำสั่ง:
download และ configure OWASP (Open Web Application Security Project) core rule set ดังนี้:
แก้ไข files:
comment lines 16, 21 and 28:
comment line 169:
comment line 101:
Configure mod_evasive module:
<pre>sudo vi /etc/apache2/mods-available/mod-evasive.conf</pre>
สามารถอ่านรายละเอียดเพิ่มเติมใน README file จาก mod_evasive สำหรับ config parameters ต่างๆ.
สร้าง log file สำหรับ mod_evasive:
Run the คำสั่งต่อไปนี้เพื่อ enable Apache modules:
Restart the Apache2 web server :
ตรวจสอบว่า mod_security และ mod_evasive modules นั้นได้ enabled แล้วหรือไม่บน server:
หากคุณใช้ WordPress ในเว็บไซต์ก็อาจมีแนวโน้มที่คุณจะต้องปิดการใช้งานบาง rule ของ mod_security เพื่อที่จะสามารถแก้ไขโดเมนเสมือน (VirtualHost) ที่กำหนดไว้ใน config ของ Apache ตัวอย่างเช่น:
restart Apache web server:
ตรวจสอบผลต่างๆ ได้ที่ /var/log/apache2/modsec_audit.log
ที่มา: http://www.rosehosting.com
PREECHA BOONLAMP
More Posts
PREECHA BOONLAMP