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”
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ướ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 |