Điểm:-1

DDOS Tấn công vào máy chủ http và iptables không giúp được gì (tôi có access_log)

lá cờ in

Tôi đang bị tấn công DDOS nhắm vào máy chủ http, tôi đã thử iptables và các biện pháp khác nhưng dường như không có gì hiệu quả. Đây là một phần của access_log:

https://Pastebin.com/6JFKmUi8

Rất nhiều kết nối nhưng iptables sẽ không ngăn chặn cuộc tấn công, có các quy tắc iptables của tôi:

iptables -A INPUT -i lo -j CHẤP NHẬN
iptables -A INPUT -s 147.135.37.113 -j CHẤP NHẬN

iptables -A INPUT -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp --tcp-flags TẤT CẢ TẤT CẢ -j DROP
iptables -A INPUT -p tcp --tcp-flags TẤT CẢ KHÔNG CÓ -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

iptables -N LOG_AND_DROP

iptables -N PORT21
iptables -A PORT21 -m recent --set --name lp21
iptables -A PORT21 -m recent --update --seconds 30 --hitcount 3 --name lp21 -j DROP
iptables -A PORT21 -m recent --update --seconds 300 --hitcount 10 --name lp21 -j LOG_AND_DROP

iptables -N PORT22
iptables -A PORT22 -m recent --set --name lp22
iptables -A PORT22 -m recent --update --seconds 30 --hitcount 3 --name lp22 -j DROP
iptables -A PORT22 -m recent --update --seconds 300 --hitcount 10 --name lp22 -j LOG_AND_DROP

iptables -N PORT80
iptables -A PORT80 -m recent --set --name lp80
iptables -A PORT80 -m recent --update --seconds 30 --hitcount 20 --name lp80 -j LOG_AND_DROP

iptables -N PORT443
iptables -A PORT443 -m recent --set --name lp433
iptables -A PORT443 -m recent --update --seconds 30 --hitcount 20 --name lp443 -j LOG_AND_DROP

iptables -N PORT10000
iptables -A PORT10000 -m recent --set --name lp10000
iptables -A PORT10000 -m recent --update --seconds 30 --hitcount 20 --name lp10000 -j LOG_AND_DROP

iptables -N PORT6900
iptables -A PORT6900 -m recent --set --name lp6900
iptables -A PORT6900 -m recent --update --seconds 30 --hitcount 10 --name lp6900 -j LOG_AND_DROP
iptables -A PORT6900 -m recent --update --seconds 50 --hitcount 20 --name lp6900 -j LOG_AND_DROP

iptables -N PORT6121
iptables -A PORT6121 -m recent --set --name lp6121
iptables -A PORT6121 -m recent --update --seconds 30 --hitcount 10 --name lp6121 -j LOG_AND_DROP
iptables -A PORT6121 -m recent --update --seconds 50 --hitcount 20 --name lp6121 -j LOG_AND_DROP

iptables -N PORT5121
iptables -A PORT5121 -m recent --set --name lp5121
iptables -A PORT5121 -m recent --update --seconds 30 --hitcount 10 --name lp5121 -j LOG_AND_DROP
iptables -A PORT5121 -m recent --update --seconds 50 --hitcount 20 --name lp5121 -j LOG_AND_DROP

iptables -A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name ping --hashlimit-mode srcip --hashlimit 10/min --hashlimit-burst 10 --hashlimit-htable-expire 30000 -j CHẤP NHẬN
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/min -j LOG --log-prefix "[Pings]"
iptables -A INPUT -p icmp -j DROP

iptables -A INPUT -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN

iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j PORT21
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j PORT22
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j PORT80
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j PORT443
iptables -A INPUT -p tcp --dport 10000 -m state --state NEW -j PORT10000

iptables -A INPUT -p tcp --dport 6900 -m state --state NEW -j PORT6900
iptables -A INPUT -p tcp --dport 6121 -m state --state NEW -j PORT6121
iptables -A INPUT -p tcp --dport 5121 -m state --state NEW -j PORT5121

iptables -A INPUT -p tcp --dport 21 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 22 -j CHẤP NHẬN

iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-name p80 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 443 -m hashlimit --hashlimit-name p443 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 10000 -m hashlimit --hashlimit-name p10000 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j CHẤP NHẬN

iptables -A INPUT -p tcp --dport 6900 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 6121 -j CHẤP NHẬN
iptables -A INPUT -p tcp --dport 5121 -j CHẤP NHẬN

iptables -A LOG_AND_DROP -m giới hạn --giới hạn 10/phút -j LOG --log-prefix "[Nhật ký]"
iptables -A LOG_AND_DROP -j DROP

#iptables -A INPUT -m giới hạn --giới hạn 10/phút -j LOG --log-prefix "[Mặc định]"
iptables -A INPUT -d 147.135.37.113 -j DROP

Mọi lời khuyên sẽ được hoan nghênh. Tôi thử mọi thứ nhưng không có gì hiệu quả.

Điểm:1
lá cờ in

Nói chuyện với nhà cung cấp của bạn (có vẻ như là OVH) về các biện pháp bảo vệ chống ddos ​​của họ trên hệ thống của bạn. Không phải tất cả, nhưng hầu hết các nhà cung cấp có uy tín đều có cách họ có thể giúp bạn điều này.Ngoài ra, bạn có thể cân nhắc thực hiện một quy tắc fail2ban thú vị để xem nhật ký máy chủ web của bạn cho bất kỳ khách hàng nào nhấn vào url foro đó và chỉ cần tự động thêm quy tắc IPTables cho họ. Ngoài ra, bạn có thể đặt một cái gì đó ở đó ... có lẽ là một tệp 1 byte rất nhỏ? Hoặc đặt máy chủ web của bạn đằng sau thứ gì đó như cloudflare hoặc một số dịch vụ CDN khác. Hầu hết lưu lượng truy cập đó có thể được xử lý theo một số cách và nó sẽ không gây quá nhiều căng thẳng cho máy chủ của bạn hoặc cho bạn. Tuy nhiên, hãy coi chừng các tệp nhật ký làm đầy hệ thống tệp của bạn! Điều đó có thể tạo ra một vấn đề hoàn toàn khác mà không ai muốn.

hãy xem phần này để biết thêm thông tin về cách sử dụng fail2ban để bảo vệ apache khỏi các cuộc tấn công DoS: https://apache.tutorials24x7.com/blog/protect-apache-from-brute-force-and-ddos-attacks-using-fail2ban

Nikita Kipriyanov avatar
lá cờ za
Tôi đã cố gắng sử dụng fail2ban để giảm thiểu cuộc tấn công DDoS. Nó là không thể sử dụng cho việc này. Ví dụ: khi bạn bắt đầu/dừng hoặc tải lại nó (điều mà bạn sẽ làm thường xuyên đối với DDoS), trước tiên, nó sẽ *bỏ cấm* mọi người, rồi lại cấm sau đó. Quá trình này mất khoảng một giờ trong trường hợp bạn có hơn 20000 địa chỉ bị cấm, không hứa hẹn lắm! Trên thực tế, fail2ban là phần mềm có chất lượng khá thấp, mặc dù nó phổ biến, ngay cả đối với vấn đề mà nó được thiết kế để giải quyết.
t3ln3t avatar
lá cờ in
Nếu bạn có hơn 20.000 địa chỉ trong danh sách cấm của mình, thì fail2ban không phải là một giải pháp thích hợp! Bạn cần một giải pháp phần cứng thực hiện điều này. CiscoGuard hoặc bất cứ thứ gì họ đã thay thế sản phẩm đó bằng. Hầu hết các phần mềm UNIX/Linux bắt đầu trục trặc khi bạn có số lượng mục nhập văn bản đó trong danh sách. Postfix và sendmail đã chuyển sang DB đã biên dịch và băm cách đây 20 năm vì không thể phân tích cú pháp tệp văn bản một cách nhanh chóng.
Nikita Kipriyanov avatar
lá cờ za
Không, phần cứng chuyên dụng là không cần thiết. Hãy nhớ rằng, bất kỳ "phần cứng chuyên dụng" nào như vậy chẳng qua chỉ là silicon cổ đại được định giá quá cao chạy một số phần mềm thông minh. Nếu bạn quản lý để chạy phần mềm như vậy trên cùng một máy tính, nó sẽ hoạt động tốt. Ví dụ: nếu bạn định chặn thứ gì đó bằng bộ lọc mạng linux, hãy sử dụng ipset (sử dụng bitmap hoặc hàm băm, tức là "CAM phần mềm") và vấn đề chính là cách điền ipset. fail2ban hầu như không thể giúp được gì. Vấn đề là, nếu bạn bị DDoS "toàn diện", bạn chắc chắn *sẽ* có hơn 20000 địa chỉ để cấm, vì vậy fail2ban sẽ không giúp được gì với DDoS như vậy.
Hermenegildo Gonzalez avatar
lá cờ in
Cảm ơn. Tôi sẽ thử fail2ban và có sự trợ giúp của Cloudflare. Nhật ký http bị vô hiệu hóa trong khi cuộc tấn công tiếp tục.
Điểm:0
lá cờ in

Vấn đề đã được giải quyết với iptables đơn giản này (có thể các quy tắc khác quá lộn xộn)

iptables -A INPUT -i eno1 -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
iptables -A INPUT -i eno1 -m state --state INVALID -j DROP
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 22 -m state --state MỚI -j CHẤP NHẬN
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 21 -m state --state MỚI -j CHẤP NHẬN
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 80 -m state --state MỚI -j CHẤP NHẬN
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 443 -m state --state MỚI -j CHẤP NHẬN
iptables -A INPUT -i eno1 -p icmp -j CHẤP NHẬN
iptables -A INPUT -i eno1 -j DROP

Các cuộc tấn công tiếp tục đến nhưng không làm sập máy chủ.

exeral avatar
lá cờ lk
theo nhật ký của bạn, các yêu cầu http(s) DDOS dường như không mong muốn. Tôi không hiểu làm thế nào các quy tắc này cũng cho phép (các) http sẽ giảm thiểu cuộc tấn công. nhưng vấn đề của bạn đã được giải quyết, nó quan trọng hơn!
Điểm:0
lá cờ id

Vài điều đến với tâm trí của tôi:

  1. Bạn có thể sử dụng kết hợp chuỗi với iptables:

iptables -A INPUT -m string --algo bm --string "GET /foro" -j DROP

hoặc nếu có thể trong hệ thống của bạn, với TARPIT

iptables -A INPUT -m string --algo bm --string "GET /foro" -j TARPIT

  1. Thay vì sử dụng fail2ban, hãy tạo tập lệnh của riêng bạn để quét các bản ghi 1000 dòng cuối cùng chẳng hạn và chặn các kết quả khớp với ipsets. Thêm phần này vào tập lệnh iptables của bạn:
  • ipset phá toilet
  • ipset -N nhà vệ sinh iphash
  • nhà vệ sinh xả nước ipset

Sau đó, sử dụng tập lệnh của bạn để thêm địa chỉ IP mà bạn muốn chặn vào tệp văn bản.Cuối cùng, bạn chỉ cần lặp tất cả các địa chỉ IP vào danh sách nhà vệ sinh đó.

  • ipset -Một nhà vệ sinh "$ ipaddress"

Sử dụng ipset và đặc biệt là mặt nạ là cách hiệu quả hơn nhiều so với việc chặn địa chỉ ip. Tôi có khoảng 20 000 địa chỉ bị chặn và khoảng 200 mạng.

Bạn có thể nhận được một số ý tưởng về kịch bản rất lộn xộn của tôi. https://Pastebin.com/4v5se0kh

Tôi biết nó lộn xộn, nhưng với tôi nó hoạt động nhanh hơn và dễ dàng hơn nhiều so với fail2ban. Tôi đặt tên cho tập lệnh đó là suc2ban. Bạn chỉ cần tìm các kết quả phù hợp của riêng mình cho tệp nhật ký của mình (có thể bạn có apache access.log, thay vì ví dụ của tôi sử dụng auth.log).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.