"ยาแก้ไอ" เครื่อง Share Hosting ที่เว็บลูกค้าโดนแฮ็คบ่อยๆ By Nginx

ใครยังไม่ใช้ nginx ก็รีบๆ ใช้นะครับ ขอฝาก script config nginx บล็อก POST Request method from inter ไว้ด้วยนะครับ(บล็อกส่วนตัวก็มี แต่ไม่มีคนเข้า)
คือผมสังเกต script ที่พวก Hacker มันฝังเข้ามาแล้ว Request จาก apache status จะเป็น POST ซะส่วนมากก็เลยบล็อกซะเลย อนุญาตให้แค่คนไทยเรา POST ก็พอ
เบื่องต้น ลองนำไปใช้แล้ว 7 ชั่วโมง ได้ผลครับ ไม่มี Request ดังกล่าวเข้ามา และที่สำคัญ “ไม่มี Ticket ไม่มีเมล์ ไม่มีโทร” จากลูกค้าครับ :d16c4689:

############## Block POST Request method from inter ##################
if ($geoip_country_code != “TH”) { set $nonth M; }
if ($request_method = “POST”) { set $nonth “${nonth}N”; }
if ($nonth = MN) { return 403; }
###########################################################

มาแล้วครับ รับเฉพาะเครื่องตัวเอง
limit_except POST {
allow xxx.xxx.xxx.xxx/32;
deny all;
}

ผมว่าแก้เป็น รับ post เฉพาะเครื่องตัวเองก็พอครับ
ถ้า มี post 0ากเครื่องอื่นก็ไม่ต้องรับ

ผมว่าไม่ work นะครับเพราะไปทั้ง server ลูกค้าที่เปิดเว็บแล้วยังให้สมาชิกในเว็บเขาจากต่างประเทศเข้ามาใช้ (พบเยอะครับพวกเว็บบอร์ด)

ผมว่าดูเป็น case by case ดีกว่า

มาเก็บความรู้ ขอบคุณครับ :059:

เหมาะกับคนที่เฉพาะเมืองไทยจริงๆ ขอบคุณครับ

ของ host ผมตั้ง Firewall บล๊อก จีน กับ รัสเซียเลย เบาไปเยอะ :026:

เป็นการแก้ที่ปลายเหตุ แต่ก็น่าจะได้ผลดี โดยเฉพาะถ้ากำหนดไว้เฉพาะ vhost ของเว็บที่มีปัญหาเท่านั้น เพิ่ม if ($host ~* domain.com) { set … เข้าไปอีกบรรทัดก็ได้แล้ว

แต่จริงๆแล้วควรจะแก้ไข code ให้มี captcha ที่ป้องกัน bot ได้จริง เพราะส่วนมากเป็น bot มาโพสต์ทั้งนั้น ไม่มีคนจริงๆมานั่งโพสต์ทั้งวันหรอก
เท่าที่พบมาส่วนมากก็มี captcha ป้องกันไว้แล้ว แต่ไม่สามารถกัน bot ได้จริง มี post เข้ามาตลอดเวลา จนในที่สุดก็มีข้อความเป็นหมื่นๆ แล้ว mysql ก็ทำงานหนักโดยไม่จำเป็น
เข้าไปในบอร์ดก็มีแต่ข้อความ spam เต็มไปหมด เลยไม่รู้ว่าจะมีบอร์ดไว้ทำไม สู้ลบบอร์ดทิ้งไปเลยไม่ดีกว่าหรือ

การจะ block ip ต่างประเทศใน firewall เลย มันก็จะมีผลกับทั้งเครื่อง ถ้าเป็นเว็บเดียวทั้งเครื่อง หรือเว็บเราเองทั้งเครื่อง ก็คงไม่มีปัญหา แต่ถ้าเป็น share host คงทำไม่ได้

ไม่ค่อยเห็นด้วยเหมือนกันครับ บางทีเดินทางไปต่างประเทศแล้วอยากเข้าเว็บตัวเองบ้างอะไรบ้าง เข้าไม่ได้เดี๋ยวจะคิดว่าเว็บล่มเอา
แต่ถ้าแก้โดยไปใส่ใน vhost แบบที่พี่แมนบอกผมว่าโอเคครับ

nginx security rule พื้นฐานครับ

#some bot does not send user-agent, just block themif ($http_user_agent = "") {
    set $proxyflag "forbidden";
    return 403;
}
#security for timthumb remote code execution exploit
if ($request_uri ~* "\.php.*src=.*(flickr\.com|picasa\.com|blogger\.com|wordpress\.com|img\.youtube\.com|upload\.wikimedia\.org|photobucket\.com|imgur\.com|imageshack\.us|tinypic\.com)") {
    set $proxyflag "forbidden";
    return 403;
}


#cached folder should not have any php file
if ($request_uri ~* "/cache/.*\.php") {
    set $proxyflag "forbidden";
    return 403;
}


#bad behavior url (known botnet/trojan)
if ($request_uri ~* "\?.*eval\(") {
    set $proxyflag "forbidden";
    return 403;
}
if ($request_uri ~* "act=phptools") {
    set $proxyflag "forbidden";
    return 403;
}


#sql injection tools
if ($http_user_agent ~* "Havij") {
    set $proxyflag "forbidden";
    return 403;
}
if ($http_user_agent ~* "^sqlmap/") {
    set $proxyflag "forbidden";
    return 403;
}



จริง ๆ ถ้าอยากจะ block พวก รัสเซีย นี่ไม่ยากครับ. ไม่ต้อง block ทั้งประเทศหรอกครับ rule จะยาวครับ. block yandex ip range พอครับ. พวกนี้จะหายไปเยอะมาก (ผมให้ 80%+)

ขอบคุณมากครับ ตอนนี้ทำการบล๊อกแบบที่พี่บอกแล้วครับ เร็วขึ้นเยอะเลย :015:

มาแล้วที่ผมรอ รอพี่ไอซ์เอาของดีมากแบ่งปัน

ขอแก้ไขนิดนึง เผื่อใครไม่รู้แล้วเอาไปใช้ สงสัยว่าทำไมใช้ไม่ได้แบบผม

ถ้าผมทำตามกระทู้ http://www.thaihosttalk.com/showthread.php/67435-วิธีติดตั้ง-config-NGINX-แบบไม่ต้องยุ่งอะไรกับ-DA-เลย-ไม่ต้อง-Run-Cron-ไม่แก้-unlimit-รูปขึ้นทุกเว็บ

ไม่ทราบว่า rule ของคุณ icez ต้องใส่ในส่วนไหนของไฟล์ nginx.conf ครับผม

ใส่ใต้

proxy_temp_file_write_size 64k;

  }

ขอบคุณมากครับผม