ใครยังไม่ใช้ 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ากเครื่องอื่นก็ไม่ต้องรับ
360
February 23, 2013, 10:27am
3
ผมว่าไม่ work นะครับเพราะไปทั้ง server ลูกค้าที่เปิดเว็บแล้วยังให้สมาชิกในเว็บเขาจากต่างประเทศเข้ามาใช้ (พบเยอะครับพวกเว็บบอร์ด)
ผมว่าดูเป็น case by case ดีกว่า
ihotVPS
February 23, 2013, 11:30am
4
มาเก็บความรู้ ขอบคุณครับ :059:
เหมาะกับคนที่เฉพาะเมืองไทยจริงๆ ขอบคุณครับ
ihotVPS
February 23, 2013, 1:08pm
6
ของ host ผมตั้ง Firewall บล๊อก จีน กับ รัสเซียเลย เบาไปเยอะ :026:
kke
February 23, 2013, 6:33pm
7
เป็นการแก้ที่ปลายเหตุ แต่ก็น่าจะได้ผลดี โดยเฉพาะถ้ากำหนดไว้เฉพาะ vhost ของเว็บที่มีปัญหาเท่านั้น เพิ่ม if ($host ~* domain.com ) { set … เข้าไปอีกบรรทัดก็ได้แล้ว
แต่จริงๆแล้วควรจะแก้ไข code ให้มี captcha ที่ป้องกัน bot ได้จริง เพราะส่วนมากเป็น bot มาโพสต์ทั้งนั้น ไม่มีคนจริงๆมานั่งโพสต์ทั้งวันหรอก
เท่าที่พบมาส่วนมากก็มี captcha ป้องกันไว้แล้ว แต่ไม่สามารถกัน bot ได้จริง มี post เข้ามาตลอดเวลา จนในที่สุดก็มีข้อความเป็นหมื่นๆ แล้ว mysql ก็ทำงานหนักโดยไม่จำเป็น
เข้าไปในบอร์ดก็มีแต่ข้อความ spam เต็มไปหมด เลยไม่รู้ว่าจะมีบอร์ดไว้ทำไม สู้ลบบอร์ดทิ้งไปเลยไม่ดีกว่าหรือ
การจะ block ip ต่างประเทศใน firewall เลย มันก็จะมีผลกับทั้งเครื่อง ถ้าเป็นเว็บเดียวทั้งเครื่อง หรือเว็บเราเองทั้งเครื่อง ก็คงไม่มีปัญหา แต่ถ้าเป็น share host คงทำไม่ได้
Latte
February 23, 2013, 6:42pm
8
ไม่ค่อยเห็นด้วยเหมือนกันครับ บางทีเดินทางไปต่างประเทศแล้วอยากเข้าเว็บตัวเองบ้างอะไรบ้าง เข้าไม่ได้เดี๋ยวจะคิดว่าเว็บล่มเอา
แต่ถ้าแก้โดยไปใส่ใน vhost แบบที่พี่แมนบอกผมว่าโอเคครับ
kke:
เป็นการแก้ที่ปลายเหตุ แต่ก็น่าจะได้ผลดี โดยเฉพาะถ้ากำหนดไว้เฉพาะ vhost ของเว็บที่มีปัญหาเท่านั้น เพิ่ม if ($host ~* domain.com) { set … เข้าไปอีกบรรทัดก็ได้แล้ว
แต่จริงๆแล้วควรจะแก้ไข code ให้มี captcha ที่ป้องกัน bot ได้จริง เพราะส่วนมากเป็น bot มาโพสต์ทั้งนั้น ไม่มีคนจริงๆมานั่งโพสต์ทั้งวันหรอก
เท่าที่พบมาส่วนมากก็มี captcha ป้องกันไว้แล้ว แต่ไม่สามารถกัน bot ได้จริง มี post เข้ามาตลอดเวลา จนในที่สุดก็มีข้อความเป็นหมื่นๆ แล้ว mysql ก็ทำงานหนักโดยไม่จำเป็น
เข้าไปในบอร์ดก็มีแต่ข้อความ spam เต็มไปหมด เลยไม่รู้ว่าจะมีบอร์ดไว้ทำไม สู้ลบบอร์ดทิ้งไปเลยไม่ดีกว่าหรือ
การจะ block ip ต่างประเทศใน firewall เลย มันก็จะมีผลกับทั้งเครื่อง ถ้าเป็นเว็บเดียวทั้งเครื่อง หรือเว็บเราเองทั้งเครื่อง ก็คงไม่มีปัญหา แต่ถ้าเป็น share host คงทำไม่ได้
icez
February 23, 2013, 7:10pm
9
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;
}
360
February 23, 2013, 9:29pm
10
จริง ๆ ถ้าอยากจะ block พวก รัสเซีย นี่ไม่ยากครับ. ไม่ต้อง block ทั้งประเทศหรอกครับ rule จะยาวครับ. block yandex ip range พอครับ. พวกนี้จะหายไปเยอะมาก (ผมให้ 80%+)
ihotVPS
February 23, 2013, 10:12pm
11
ขอบคุณมากครับ ตอนนี้ทำการบล๊อกแบบที่พี่บอกแล้วครับ เร็วขึ้นเยอะเลย :015:
icez:
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;
}
มาแล้วที่ผมรอ รอพี่ไอซ์เอาของดีมากแบ่งปัน
ihotVPS
February 24, 2013, 12:00am
13
ขอแก้ไขนิดนึง เผื่อใครไม่รู้แล้วเอาไปใช้ สงสัยว่าทำไมใช้ไม่ได้แบบผม
icez:
nginx security rule พื้นฐานครับ
[COLOR=#ff0000]
#some bot does not send user-agent, just block them
if ($http_user_agent = "") {
set $proxyflag "forbidden";
return 403;
}[/COLOR]
#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;
}
sansak
February 25, 2013, 4:28am
14