Hardening and secure Apache web server with installing mod_security and mod_evasive on an Ubuntu 14.04

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

ประโยชน์ของมัลติมีเดีย
เกร็ดเล็กเกร็ดน้อย "ความรู้เกี่ยวกับศาสนพิธี"

Leave a Comment