PDA

View Full Version : Có cách nào đưa tự động IP vào ban list của IIS ko?



badpaybad
12-06-2008, 10:57
Hiện tại nếu bị tấn công từ chối dịch vụ thì khó đỡ quá.
Mình muốn hỏi là nếu mình có danh sách các black IP
Có cách nào viết code để đưa vào deny list của IIS ko?
chứ cứ add = tay thì thua luôn T_T

bkis
12-06-2008, 12:46
Dùng Firewall đi, nó làm giúp bạn tất

BoTayConGaQuay
12-06-2008, 12:58
Mì ăn liền:
http://webscripts.softpedia.com/script/Server-Management/Automatically-block-banned-IP-addresses-on-IIS-39177.html

Hoặc viết bằng C# với ADSI:
http://www.codeproject.com/KB/security/iiswmi.aspx

Add vào IIS thì ok, nhưng làm sao bác biết rằng IP đó là từ visitor bình thường hoặc đang DDoS?

badpaybad
12-06-2008, 13:49
Thực sự cách của mình cũng khó chống DDoS nhưng nó làm giảm thiểu vì đoạn xử lý IP ban đầu tốn ít tài nguyên và ko query vào DB.
khi IP nào đó trong vòng 1 phút mà request trên 20 lần thì nó sẽ bị đưa vào black list.
Mình đang cần cái add tự động vào deny IP của IIS để viết 1 service đợi xem IP nào có 20 lần request là cho die lun :D
Giết nhầm còn hơn bỏ xót hic hic khổ vì DDoS

BoTayConGaQuay
12-06-2008, 14:10
Mình đang cần cái add tự động vào deny IP của IIS để viết 1 service đợi xem IP nào có 20 lần request là cho die lunĐó là nó đang flood site bác, hoặc đang mass download chứ ko phải DDoS (ví dụ teleport, webcopier...) Bác tự chế 1 cái script đi, đếm request trong 1 phút từ 1 IP (không đếm theo session), nếu vượt ngưỡng nào đó thì send 403 header ra và terminate tất cả request từ IP đó trong khoảng 1 session timeout (20 phút) là ok.

badpaybad
12-06-2008, 14:49
Đó là nó đang flood site bác, hoặc đang mass download chứ ko phải DDoS (ví dụ teleport, webcopier...) Bác tự chế 1 cái script đi, đếm request trong 1 phút từ 1 IP (không đếm theo session), nếu vượt ngưỡng nào đó thì send 403 header ra và terminate tất cả request từ IP đó trong khoảng 1 session timeout (20 phút) là ok.

Hay quá vậy mà mình tưởng site mình bị DDoS may thế hic.
Bác có thể nói cụ thể hơn 1 chút đc ko.
Làm thể nào để teminate request bắt nguồn từ IP nào đó.

BoTayConGaQuay
12-06-2008, 15:03
Hay quá vậy mà mình tưởng site mình bị DDoS may thế hic.
Bác có thể nói cụ thể hơn 1 chút đc ko.
Làm thể nào để teminate request bắt nguồn từ IP nào đó.

Tức là khi phát hiện nó đã nằm trong black list thì bác không xử lý trang nữa, mà send 1 cái header 403 (hoặc 404, 405 gì đó tùy bác), sau đó end => giảm tải cho web, ngược lại thì bác xử lý trang bình thường (open connection, query database, close connection...)

Vấn đề là:
1. Bác phải test thử các ngưỡng, ví dụ người đọc bình thường thì sẽ mất bao nhiêu giây để đọc 1 trang, nếu trong 1 phút mà nó đọc hơn 20 (hoặc 30, hoặc 40, tùy bác qui định) => tốc độ đọc của nó nhanh như ánh sáng => cho cái IP của nó vào black list lol

2. Sau khi cho vào black list, bác cần set 1 timeout (tại vì nó đọc nhanh quá thì sẽ mỏi mắt, thôi mình cho nó nghỉ 20 phút đi), sau khi timeout expired thì bác phải remove cái IP đó ra khỏi black list, vì phần lớn là xài dynamic IP, có thể cùng 1 cái IP đó nhưng ở thời điểm khác nhau thì sẽ có người sử dụng khác nhau, và ko phải tất cả đều có tốc độ đọc nhanh như ánh sáng :D

Sở dĩ check theo IP, vì các phần mềm download nó có thể tạo ra 100 session cùng lúc, nếu check bằng session thì ta cũng chỉ thấy có 1 request từ 1 session => ko có tác dụng, trong khi check bằng IP thì sẽ thấy đúng 100 request từ 1 IP (của 100 sesion đó)

badpaybad
12-06-2008, 15:27
Ths bác đã chỉ giáo
với cách này có thể giảm thiểu server xử lý khi bị DDoS ko.
Nếu mua phần cứng xịn thì hơi tốn nhiều $
Hiện tại mình đang để là nếu xem với tốc độ ánh sáng thì cho sang 1 trang để thông báo người dùng là quay lại sau vài phút với cái link để sẵn.

Khi bị request nhiều thì phần xử lý nặng sẽ là phần đưa IP vào black list
Hiện tại mình chưa tìm đc cach tối ưu để xử lý đoạn này.
Bác chỉ em thêm 1 chút nữa đc ko :)

BoTayConGaQuay
12-06-2008, 15:52
Hiện tại mình đang để là nếu xem với tốc độ ánh sáng thì cho sang 1 trang để thông báo người dùng là quay lại sau vài phút với cái link để sẵnYes, hoặc send header ra, hoặc redirect qua 1 trang nào đó cho nó friendly 1 tí.


Khi bị request nhiều thì phần xử lý nặng sẽ là phần đưa IP vào black listKo nặng lắm đâu bác, chỉ là 1 array chứa các IP & số lần request thôi, so với open connection, query db, close connection thì nó nhanh gấp vạn lần. Nếu bác viết bằng asp hoặc asp.net thì chứa nó trên Application đó, cache trên RAM luôn, chỉ toàn là IP + số nên lượng bộ nhớ xài cho nó là ko đáng kể.

Cái này chỉ chống mass download + flood database thôi, còn chống DDoS thì nếu mà tui viết được cái tool đó là tui giàu cỡ bác Bill rồi :D

badpaybad
12-06-2008, 16:25
Ths bác nhiều.
DDoS chắc phải mua phần cứng cực mạnh thôi, mà cái đó nghe thấy tốn tiền quá.

056113
22-06-2008, 00:41
Bạn nên tham khảo qua topic này !

http://www.ddth.com/showthread.php?t=196969

Suyakukd
22-06-2008, 00:50
Bạn nên tham khảo qua topic này !
http://www.ddth.com/showthread.php?t=196969

Cái này dành cho apache, với lại theo mình bạn nên sử dụng apache thay cho IIS vì 2 lí do:
1. Apache mã mở.
2. Các modules dễ tìm và dễ sử dụng, cấu hình, tài liệu nhiều.

Và một điều nữa là nó giải quyết tốt vấn hạn chế lưu lượng băng thông, số kết nối ...