banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Xin tư vấn cách chống ddos hiệu quả hơn  XML
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 25/04/2014 20:19:08 (+0700) | #1 | 280448
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]
Chào các anh chị
Em xin nói trước là e là tay ngang nên trình độ của e còn hạn chế. Secure server thì toàn học lóm là chính.
E xin trình bày tình trạng hiện tại:

1. Server

Processor Name Intel(R) Xeon(TM) CPU 2.80GHz (x4)
Vendor ID GenuineIntel
Processor Speed (MHz) 2787.471

Total Memory 4025548 kB

Service đang chạy:
Apache 2.4.7
DirectAdmin
Exim
MySQL
dovecot
pure-ftpd
Php
 


Server e chủ yếu là share hosting tầm khoảng 25 websites
Hiện tại 1 có 1 trang nhận hàng loạt request như sau:

175.139.162.92 - - [25/Apr/2014:20:06:24 +0700] "GET / HTTP/1.1" 200 17789 "x513o3eq9cbe58.com" "Mozilla/3.0 (Slurp/si; slurp@inktomi.com; http://www.kst3ps699631.com/slurp.html)"
186.208.74.24 - - [25/Apr/2014:20:06:26 +0700] "GET / HTTP/1.1" 200 17788 "sf2c0ksxe5c.info" "Mozilla/4.0 (compatible; MSIE 5.5; AOL 4.0; Windows 98; GoBeez www.293252za9p1chx.com))"
175.139.162.92 - - [25/Apr/2014:20:06:28 +0700] "GET / HTTP/1.1" 200 17789 "29u05lmb4.biz" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 SnapPreviewBot"
92.226.121.140 - - [25/Apr/2014:20:06:31 +0700] "GET / HTTP/1.1" 200 17789 "528t9ehy2.net" "Mozilla/5.0 (compatible; Konqueror/2.0.1; X11); Supports MD5-Digest; Supports gzip encoding"
175.139.162.92 - - [25/Apr/2014:20:06:33 +0700] "GET /gui-thong-tin-tu-van-phap-luat/view/form.html HTTP/1.1" 200 16734 "z885369a7.biz" "Mozilla/4.76 [en] (X11; U; FreeBSD 4.4-STABLE i386)"
 


E cố search 1 số thông tin về công cụ ddos này thì không ra, e chỉ đoán là 1 dạng botnet nào đó.
Hiện tại thì tầm khoảng > 300 ip đánh vào hằng ngày.
Trước đây thì e build Apache ở dạng prefork PHP chạy ở mod_suphp nên bị đánh vào là server chết đứ đừ.

E có học theo cách a conmale dựng mod_security và dử dụng file 1 file block.sh để lọc IP và chặn bằng iptables như sau:

SecAction "phase:1,t:none,pass,nolog,initcol:global=global,initcol:ip=%{remote_addr}"
SecRule REQUEST_URI "^/$" "nolog,phase:1,setvar:ip.ddos=+1,deprecatevar:ip.ddos=30/60,expirevar:ip.ddos=120"
SecRule IPsmilieDOS "@gt 5" "phase:1,log,msg:'DDoS_from_%{REMOTE_ADDR}',exec:/path/to/blocker.sh"
 

Ngoài ra e còn chuyển apache về chế độ event, php về fastcgi

Cách này thì tạm thời hiệu quả

Số pkg vào ở port 80: 2046K
Số pkg chặn lại ở ipt_recent: 27M
 

Server load time ở mức 1~5%
Nhưng lỡ e mà restart lại cái iptables thì số record lưu trong ipt_recent mất sạch. Một lượng package lại tràn vào, lúc này apache & php sẽ return error 500.
Điều đó có nghĩa là mod_security không thể thực thi tiếp được. smilie

Vậy e xin các anh chỉ bảo cách để chặn hiệu quả hơn.
Cảm ơn mọi người.
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 26/04/2014 09:27:16 (+0700) | #2 | 280456
[Avatar]
somenuchi
Member

[Minus]    0    [Plus]
Joined: 08/10/2011 09:19:02
Messages: 55
Offline
[Profile] [PM]
Nếu bạn không ngại thay đổi cấu trúc website thì cách đơn giản và khá phổ biến sau đây có thể xử lý được:
B1: Chuyển toàn bộ source code vào thư mục mới (new_folder) nằm dưới thư mục cũ.
B2: Tại thư mục cũ tạo một file index.html có nhiệm vụ khi người dùng click vào đường link thì sẽ wwwect vào thư mục mới.
Cách này hơi bất tiện cho người truy cập web nhưng khá đơn giản. Apache sẽ chỉ trả ra 1 file html do đó tải sever sẽ không tăng đáng kể. Trong trường hợp của bạn thì sẽ có hiệu quả.

vô thường
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 26/04/2014 13:23:37 (+0700) | #3 | 280461
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]

somenuchi wrote:
Nếu bạn không ngại thay đổi cấu trúc website thì cách đơn giản và khá phổ biến sau đây có thể xử lý được:
B1: Chuyển toàn bộ source code vào thư mục mới (new_folder) nằm dưới thư mục cũ.
B2: Tại thư mục cũ tạo một file index.html có nhiệm vụ khi người dùng click vào đường link thì sẽ wwwect vào thư mục mới.
Cách này hơi bất tiện cho người truy cập web nhưng khá đơn giản. Apache sẽ chỉ trả ra 1 file html do đó tải sever sẽ không tăng đáng kể. Trong trường hợp của bạn thì sẽ có hiệu quả.

 


Cảm ơn cách của bạn nhưng cách này không ổn.
Chuyển folder đồng nghĩa với việc SEO của site bị mất hết.
Với lại e muốn tìm cách chặn ngày từ tầng ngoài trước khi vào đến apache... smilie
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 27/04/2014 22:48:21 (+0700) | #4 | 280485
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]
Hic, dạo này diễn đàn sao ít người tư vấn dùm quá... smilie

Hôm nay tiếp tục cài wireshark vào capture http header của mấy cái request đó thì thấy như sau:


Request Method: GET
Request URI: /tin-tuc/luat-nha-dat/2296-lam-sao-hoan-cong-nha-xay-dung-sai-phep.html
Request Version: HTTP/1.0
Host: www.xxxxxxxxxxx.com\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://www.changedetection.com/bot.html ) \r\n
Referer: 4ytxb96c.net\r\n
 


Dựng ngay varnish và thêm 1 cái rule

if (req.http.Keep-Alive) {
return (error);
}
 


Vậy cho e hỏi hầu hết các browser đều không gửi kèm đoạn header này phải không ạ, lỡ giết nhầm thì khổ... smilie
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 28/04/2014 12:05:40 (+0700) | #5 | 280496
hoang_philong
Member

[Minus]    0    [Plus]
Joined: 09/07/2009 10:47:05
Messages: 7
Offline
[Profile] [PM]
hiện mình cũng đang làm 1 trang count tính lượt click chuột từ 1 ip khi nào xong úp cái demo anh em xem giúp

bị kiểm tra lỗi sql injection nhiều quá
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 29/04/2014 10:44:15 (+0700) | #6 | 280501
[Avatar]
somenuchi
Member

[Minus]    0    [Plus]
Joined: 08/10/2011 09:19:02
Messages: 55
Offline
[Profile] [PM]
Nếu cứ có keep-alive mà chặn thì bạn sẽ chặn nhầm rất nhiều trường hợp.
Chỉ keep-alive không thôi thì không đủ để coi đó là dấu hiệu DDoS.
vô thường
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 29/04/2014 10:55:59 (+0700) | #7 | 280502
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]

somenuchi wrote:
Nếu cứ có keep-alive mà chặn thì bạn sẽ chặn nhầm rất nhiều trường hợp.
Chỉ keep-alive không thôi thì không đủ để coi đó là dấu hiệu DDoS. 


Đó là cách tạm thời để chặn mấy cái packets cố tình phá hoại... smilie
Cho nó chạy đến tầng apache là server không chịu nổi.
Nhưng với cách này thì packet tạm thời nó chạy ào ào vào và bị chặn bởi proxy mà không cách nào chặn được ngoài iptables.
Tìm cách thực thi script trên varnish thì không thấy có tài liệu nào đề cập.
Vẫn đang tìm kiếm...
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 07/05/2014 15:34:34 (+0700) | #8 | 280567
[Avatar]
somenuchi
Member

[Minus]    0    [Plus]
Joined: 08/10/2011 09:19:02
Messages: 55
Offline
[Profile] [PM]
Mấy cái request dạng này đều có điểm chung nhât định. Theo như log bạn gửi lên thì nó đều chứa referer từ một site không có thực nào đó. Bạn có thể dựa vào điểm này để loại bỏ các request bất hợp lệ. VD như chỉ cho những request nào có referer được phép thì mới được truy cập, tất cả các dạng khác thì deny.
Ngoài ra bạn có thể tìm thêm một số đặc điểm nhận dạng khác để kết hợp, giảm thiểu tình trạng chặn nhầm.
vô thường
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 12/05/2014 22:46:46 (+0700) | #9 | 280616
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]

somenuchi wrote:
Mấy cái request dạng này đều có điểm chung nhât định. Theo như log bạn gửi lên thì nó đều chứa referer từ một site không có thực nào đó. Bạn có thể dựa vào điểm này để loại bỏ các request bất hợp lệ. VD như chỉ cho những request nào có referer được phép thì mới được truy cập, tất cả các dạng khác thì deny.
Ngoài ra bạn có thể tìm thêm một số đặc điểm nhận dạng khác để kết hợp, giảm thiểu tình trạng chặn nhầm.
 


Theo cách này thì có phải là e lọc các referer không có http:// phải không ạ? smilie
A có thể cho e 1 rule ví dụ để lọc các referer như vậy không ạ?
Chân thành cảm ơn anh!!!

Update: Hiện tại thêm 1 rule lọc referer vào varnish như sau:

if (req.http.referer && req.http.referer !~ "http(s)?:\\") {
return (error);
}
 


Kết quả khả thi là chặn hết các request theo dạng trên ở varnish... smilie
Nhưng e vẫn sợ là mình chặn nhầm người sử dụng thực sự. Có cú pháp nào hay hơn không nhỉ???
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 16/05/2014 09:08:20 (+0700) | #10 | 280667
Vnalink
Member

[Minus]    0    [Plus]
Joined: 11/03/2011 04:57:46
Messages: 2
Offline
[Profile] [PM]
Mình nghĩ thế này:
- Khi ta phát hiện ra lưu lượng truy cập bất thường từ 1 ip nào đó, thì tiến hành buộc nhập Captcha.
- Sau đó, lưu cookie đó, để lượt truy cập sau không phải nhập
- Hỗ trợ cho nhiều link tài nguyên khác nhau trong cùng 1 site.
(giống kiểu Google đang làm thì phải)

Mình nghĩ ra có đến vậy, nhưng chưa biết làm thế nào. Ai làm rồi chỉ giúp cùng với.
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 31/05/2014 23:06:31 (+0700) | #11 | 280737
meomeo1133
Member

[Minus]    0    [Plus]
Joined: 17/04/2014 12:17:14
Messages: 6
Offline
[Profile] [PM]
Chặn hơn cả tháng mà tụi nó vẫn gửi request liên tục smilie
Load average lúc nào cũng từ 1~2 (tài nguyên server không đủ, nên giờ load web lúc nào cũng mất 5~10s)

Mở varnishstat ra xem thì thấy:


0+00:20:15
Hitrate ratio: 9 9 9
Hitrate avg: 0.3596 0.3596 0.3596

88452 63.97 72.80 client_conn - Client connections accepted
90445 64.97 74.44 client_req - Client requests received
88450 64.97 72.80 s_sess - Total Sessions
90445 64.97 74.44 s_req - Total Requests
87518 64.97 72.03 sess_closed - Session Closed
 


20 phút mà tận 90k req, closed hết 87k theo bộ lọc....

Capture header thì thấy vào ào ạt

GET /gui-thong-tin-tu-van-phap-luat/view/form.html HTTP/1.0\r\n
Request Method: GET
Request URI: /gui-thong-tin-tu-van-phap-luat/view/form.html
Request Version: HTTP/1.0
Host: xxxxxxxxxx.com\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
User-Agent: Mozilla/4.0 (compatible; DepSpid/5.0x; +http://about.h21c1ie8.net) \r\n
Referer: 993r4fd.biz\r\n
\r\n
 


Haizzzz, giờ phải làm sao đây.... smilie
[Up] [Print Copy]
  [Discussion]   Xin tư vấn cách chống ddos hiệu quả hơn 02/06/2014 01:42:02 (+0700) | #12 | 280750
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
Vẫn còn capture được HTTP header thì làm sao mà chả tốn tài nguyên. Tại sao phải tốn công xử lý các kết nối mà cuối cùng sẽ bị chặn? Còn việc lo chặn nhầm người sử dụng ư, vậy sự khác nhau giữa người dùng thực sự và kẻ tấn công là gì?
Mind your thought.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
6 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|