5 มี.ค. 2553

Hardening your Apache and PHP on Ubuntu

ผมเขียนบันทึกนี้ หลังจาก server ผมมีคนพยายามเข้ามา hack จนเครื่องผมค้างไปเลย เป็นสิ่งที่ดีคับ ทำให้ผมมีความรู้ และเข้าใจมากขึ้น ผมหาอ่านบทความ และก็ได้แปลมา ขอนอกเรื่องครับ ผมเขียน blog ที่อุณหภูมิ 31 องศาเซลเซียส อ้าวได้ใจมากคับ

หลังจากติดตั้ง LAMP แล้ว สิ่งที่อย่างแรกคือ การป้องกันการโจมตี
Step 1: ป้องกันการแสดงผลแบบ list view

sudo nano /etc/apache2/sites-available/default


เพิ่มเครื่องหมายลบ - หน้า Index ตามแบบข้างล่าง

<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

Step 2 :

สำหรับ Apache ตั้งแต่ version 1.3.34 และ 2.0.55 ขึ้นไปนะครับ ทำได้โดยเพิ่ม

TraceEnable Off

ใน config ของ apache ซึ่งจะทำให้ปิดการใช้งาน Trace ได้

ถ้าเป็นรุ่นเก่ากว่านี้หน่อยต้องเปิดใช้ rewrite module ของ Apache.

sudo a2enmod rewrite


เพื่อหลีกเลี่ยงการโจมตีแบบ Cross-Site-Tracing ให้เพิ่ม 3 บรรทัดนี้ ใน " <VirtualHost *:80>" :

    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} ^(TRACETRACK)
    RewriteRule .* - [F]

Step 3 :

เพื่อป้องการทำ HTTP DoS, DDoS หรือ Brute Force attack, ต้องติดตั้ง Moduleนี้

sudo apt-get install libapache2-mod-evasive


Step 4 :

To screen out bad URL requests, such as /etc/shadow or MySQL injection and etc. You should install mod_security module. If you installed a amd64 (64-bit) version of Ubuntu Server, please replaced i386 with amd64 for the following commands.


wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/libapache-mod-security_2.5.9-1_i386.deb

wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/mod-security-common_2.5.9-1_all.deb

sudo dpkg -i libapache-mod-security_2.5.9-1_i386.deb mod-security-common_2.5.9-1_all.deb


Step 5 :

ไม่อนุญาตให้ print the error pages

sudo nano /etc/apache2/conf.d/security


แก้ไขตามนี้

ServerToken Prod
ServerSignature Off

Step 6 :

มาถึงคิวของ PHP

sudo nano /etc/php5/apache2/php.ini


แก้ไขให้เป็นแบบข้างล่างนี้

display_errors = Off
log_errors = On
allow_url_fopen = Off
expose_php = Off
enable_dl = Off
disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd

Step 7 :

ขั้นตอนสุดท้าย

sudo /etc/init.d/apache2 restart


Step 8 :

sudo nano /etc/sysctl.conf


เอา # ออก

#Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

สั่งให้ทำงานเลย

sudo /sbin/sysctl -p


ที่มา :
http://secure-ubuntu-server.blogspot.com/2009/07/howto-hardening-your-apache-and-php-on_07.html
http://www.mr-san.com/cross-site-tracing-attack-via-http-track-trace-method/

3 ความคิดเห็น:

  1. ขอบคุณครับ สำหรับการแบ่งปันความรู้ อันมีประโยชน์ ที่ใช้งานได้ผลจริงและอย่างยอดเยี่ยม

    ตอบลบ
  2. มืดจัง เปิดไฟหน่อยครับ อิอิ

    ปล.ขอบคุณครับ มีประโยชน์ดี

    ตอบลบ
  3. Step 3 :

    เพื่อป้องการทำ HTTP DoS, DDoS หรือ Brute Force attack, ต้องติดตั้ง Moduleนี้

    sudo apt-get install libapache2-mod-evasive

    ตัวนี้ติดตั้งต้องคอนฟิกด้วยครับ มิฉะนั้น cms บางจะ error 403

    ตอบลบ