Triển khai giải pháp phòng chống DoS bằng CSF

Có nhiều giải pháp khác nhau được đề xuất để đối phó với các cuộc tấn công DoS. Tuy nhiên, không có giải pháp hay ý tưởng nào có thể ngăn chặn hoàn toàn các cuộc tấn công DoS. Các dạng thức mới của tấn công DoS liên tục xuất hiện cùng với các giải pháp phòng chống, nhưng cuộc đua vẫn tuân theo quy luật cơ bản của bảo mật máy tính: “Hacker luôn đi trước giới bảo mật một bước”. Một số biện pháp phòng chống một cuộc tấn công DoS mà người quản trị có thể thực hiện chủ động như:

1. ConfigServer Security & Firewall (CSF)

CSF là 1 gói ứng dụng hoạt động trên Linux như là một tường lửa miễn phí dùng để tăng tính bảo mật cho máy chủ. CSF hoạt động dựa trên iptables và Login Failure Daemon (LFD) để quét các file log  để phát hiện dấu hiệu tấn công bất thường. Một số tính năng của CSF:

  • Chống tấn công DoS.
  • Chống Scan Port.
  • Chống SYN Flood.
  • Chống Ping Flood.
  • Cho phép khoá IP tạm thời hoặc vĩnh viễn ở hạ tầng mạng.

File cấu hình CSF trong Centos nằm ở mục /etc/csf/csf.conf, một số tham số quan trọng trong cấu hình CSF là:

  • TESTING = “0”: Mặc định khi vừa cài CSF thì TESTING =“1”, với TESTING= “1” thì LFD sẽ không hoạt động, nếu có gì sai sót thì server cũng sẽ không ngăn chặn các IP tấn công tới Server.
  • TCP_IN = “20,21,22,25,53,80,443”: Cho phép gói tin TCP đến các cổng 20,2122,25,53,80,443.
  • TCP_OUT = “25,80,443”: Cho phép gói tin TCP đi đến cổng 25,80,443 của hệ thống khác.
  • UDP_IN = “20,21,53,80,443”: Cho phép gói tin UDP đến các cổng 20,21,53,80,443
  • UDP_OUT = “20,21,53,113,123”: Cho phép gói tin UDP đi đến các cổng 20,21,53,113,123 của hệ thống khác.
  • ICMP_IN = “1”: Cho phép ping đến máy chủ.
  • ICMP_IN_RATE = “1/s”: Giới hạn số gói tin ping đến Server là 1 yêu cầu/ giây. Nếu ping nhanh hơn tốc độ này thì sẽ bị phản hồi “Request Timeout”. Trong trường hợp nhiều người ping tới Server cùng 1 lúc thì phần lớn sẽ nhận lại phản hồi “Request Timeout”.

2. Triển khai phòng chống

Bước 1: Sau khi cài đặt csf trên máy chủ web, tiến hành sử dụng csf làm firewall chính. Trên máy chủ centOS7, firewalld được sử dụng mặc định làm firewall chính. Để có thể sử dụng csf, cần tắt firewalld bằng các lệnh sau:

systemctl disable firewalld

systemctl stop firewalld

systemctl start csf

systemctl start lfd

Bước 2: Thực hiện thay đổi một số cấu hình qua câu lệnh: “vi /etc/csf/csf.conf”

Cấu hình thông số trong CSF

Một số thông số được thay đổi như:

TESTING = “0”

SYNFLOOD = “1”

SYNFLOOD_RATE = “30/s”

SYNFLOOD_BURST = “40”

CONNLIMIT = “80;20”

PORTFLOOD = “80;tcp;20;5”

CT_LIMIT = “100”

Bước 3: Lưu file cấu hình mới trong file csf.conf, tiến hành bật tường lửa qua câu lệnh “csf – e” và chạy các quy tắc tường lửa “csf – s”.

Bật CSF và chạy các quy tắc

Bước 4: Tiến hành thực hiện lại cuộc tấn công từ máy Kali

Kết quả thu được: Máy chủ web vẫn có hoạt động bình thường, CPU có tăng, nhưng không đáng kể. Các máy khác vẫn có thể truy cập đến web. Điều này chứng tỏ rằng, csf đang hoạt động đúng và giúp chặn các gói tin được gửi từ máy của kẻ tấn công.

Thông số máy chủ khi tấn công:

Không sử dụng CSF Sử dụng CSF
CPU 65 – 70% 29 – 33%
Network Receive 1800 KiB/s 2.4 KiB/s
Network Send 797 KiB/s 0 byte/s

Máy chủ vẫn hoạt động bình thường

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em