Nội dung bài viết
Phần 1: Giới thiệu
DDOS là gì?
DDoS được viết tắt từ Distributed Denial of Service, có nghĩa là từ chối dịch vụ phân tán. Đây là một là khái niệm để ám chỉ một loại hình tấn công máy chủ mới xuất hiện trong thời gian gần đây. Các hacker thông qua một máy tính xâm nhập, điều khiển hàng triệu máy tính khác để truy cập vào một máy chủ, làm tăng lưu lượng truy cập, dẫn đến cạn kiệt băng thông và tài nguyên của máy chủ.
Các đối tượng tấn công DDos không chỉ sử dụng máy tính của mình để thực hiện tấn công mà còn khiến cho máy tính của nạn nhân cũng thực hiện hành vi tấn công này. Những đối tượng hacker này sẽ khống chế quyền sử dụng máy tính để gửi dữ liệu, yêu cầu số lượng lớn đến một trang web hay địa chỉ email nào đó.
Một số kiểu DDos phổ biến
Hiện nay, các hacker thường sử dụng các loại tấn công DDos phổ biến như sau:
- SYN Flood: Là loại hình tấn công với mục đích khai thác yếu điểm của giao thức kết nối TCP. Khi hacker tấn công theo loại hình này, thông điệp giả sẽ gửi đến máy chủ một cách liên tục khiến cho kết nối không thể đóng lại, dẫn đến dịch vụ có thể bị đánh sập
- HTTP Flood: Là hình thức tấn công DDos bằng cách gửi lượng lớn yêu cầu Post hoặc Get đến cho máy chủ, buộc server sử dụng tối đa tài nguyên đến xử lý.
- UDP Flood: Kết quả của loại hình tấn công này là UDP bị ngập lụt. Hacker sử dụng kiểu tấn công này sẽ gửi lượng lớn UDP đến các cổng ngẫu nhiên của máy chủ khiến server quá tải, sau cùng từ chối dịch vụ.
- Fraggle Attack: Hình thức tấn công bằng cách gửi số lượng lớn UDP đến server, làm quá tải, dẫn đến tắc nghẽn hệ thống.
- Application Level Attack: Là kiểu tấn công vào những lỗ hổng bảo mật của hệ điều hành và các thiết bị mạng.
- Advanced Persistent Dos (APDos): Là kiểu tấn công kết hợp cùng lúc nhiều hình thức tấn công như SYN Flood, HTTP Flood,…
- Ping of Death: Với hình thức tấn công này, hacker làm quá tải server bằng cách gửi ICMP trên 65.536 byte đến máy chủ. Kích thước gói tin này khá lớn nên sẽ được chia nhỏ để gửi đi. Khi đến máy chủ, những phần bị chia sẽ hợp lại, dẫn đến quá tải bộ nhớ đệm, làm server bị treo. Hình thức tấn công này thường gắn liền với Smurf Attack.
- Slowloris: Là hình thức tấn công bằng cách gửi lượng lớn yêu cầu về HTTP không hoàn chỉnh và duy trì kết nối trong thời gian dài để máy chủ quá tải, từ chối các yêu cầu kết nối dịch vụ khác.
- NTP Amplification: Là hình thức tấn công lỗ hổng tính năng của hệ thống máy tính kết nối đến NTP, khiến máy chủ của website bị quá tải
- Zero-day DDos Attack: Là hình thức làm quá tải server bằng cách tấn công những lỗ hổng bảo mật của máy chủ
Cách nhận biết bị tấn công DDoS
Một trong những dấu hiệu dưới đây cho thấy website/máy chủ của bạn có thể đang bị tấn công DDoS
- Server có dấu hiệu dựt lag và CPU (Load average) load cao bất thường.
- Một hoặc nhiều website truy cập chậm hoặc không thể truy cập.
- Kết nối Internet chậm hơn bình thường, tốn nhiều thời gian truy cập
Các bạn có thể xem qua hình ảnh bên dưới, đây là một ví dụ về website bị tấn công DDoS và Load average đang cao bất thường.
Phần 2: Sử dụng CloudFlare để hạn chế tấn công DDoS
Cách xử lý khi bị tấn công DDoS
Bước 1: Kiểm tra log và xác định hình thức tấn công
Để xác định website/server của bạn có đang bị tấn công DDoS hay không, thì chắc chắn bạn cần phải kiểm tra log từ server để xác định và có hướng xử lý chính xác.
Và bên dưới là log mà mình kiểm tra được từ phía Server, như bạn có thể thấy hiện log thể hiện có rất nhiều lượt truy cập từ nhiều nguồn IP khác nhau, mà phần lớn các IP này đều đến từ China. Và hình thức tấn công DDoS này sử dụng là HTTP Flood ( gửi lượng lớn request Post hoặc Get đến cho máy chủ).
222.187.74.212 -[25/Apr/2022:21:12:01 +0700] "POST /?150288623887fmvujymq58607009924n64610761613foqdjaalp246389713767p117159001979lawxwzohz3060087145q72394190817=g116652528537j248517363287 HTTP/1.0" 302 581 "https://xxxx.net/" "Mozzila 5.0 (Linux; Android 5.0; SAMSUNG SM-G900F Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.4932.47 Safari/537.36"
124.222.45.147 -[25/Apr/2022:21:12:01 +0700] "GET /?264071997727ytuhwnkh22809370002l83389854653bxrapkork73899884685d18742915638bvsiiwqxi75944175718e148229866830=d142112181082a138522131506 HTTP/1.0" 302 581 "https://xxxx.net/" "Mozzila 5.0 (iPod touch; iPhone OS 4.3.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4031.40 Safari/537.36"
180.124.152.107 -[25/Apr/2022:21:12:01 +0700] "HEAD /?186438297571umipitqt24133747303h245347765834ctwzlvtpf144399798184l225557017409uxxudfped82053913654j260424377140=x189688015618c37894054043 HTTP/1.0" 302 562 "https://xxxx.net/" "Mozzila 5.0 (Linux; Android 4.2.1; Nexus 5 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.4857.50 Safari/537.36"
180.124.158.55 -[25/Apr/2022:21:12:01 +0700] "GET /?234465640857rmxjuoih263781470752z199637401324zbxscgqxd79173585438k96488125395sonubpsrb123130311913c260877257556=t94836647206j106990307316 HTTP/1.0" 302 581 "https://xxxx.net/" "Mozzila 5.0 (Windows NT 6.3; WOW64; rv:13.37) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.4153.58 Safari/537.36"
Để có thể xem nguồn gốc các IP trên, các bạn có kiểm tra qua trang Check Host tại đây: https://check-host.net/
Sau khi đã xác định được nguyên nhân và hình thức tấn công, bây giờ các bạn có thể xem tiếp Bước 2 để có thể xử lý vấn đề trên.
Bước 2: Sử dụng CloudFlare để chặn DDoS
Chắc hẳn các bạn sẽ thắc mắc, tại sao không sử dụng tính năng Firewall có sẵn trên server để chặn DDoS, mà phải thông qua CloudFlare. Thì như các bạn thấy, log ghi nhận website bị tấn công từ nhiều IP khác nhau và nguồn gốc các IP này đều đến từ China, mà người dùng hay khách hàng của bạn lại không đến từ thị trường này, do đó việc sử dụng Firewall để chặn từng IP là điều không khả thi và không hiệu quả. Vì vậy giải pháp tốt hơn, là mình cần chặn truy cập theo quốc gia, mà hiện tính năng này trên các Firewall có trên máy chủ chưa làm hiểu quả bằng CloudFlare.
Do đó, mình sẽ hướng dẫn các bạn sử dụng Firewall của CloudFlare như một công cụ hỗ trợ chặn DDoS . Tuy chỉ là miễn phí nhưng chắc chắn bạn sẽ ngạc nhiên với kết quả mà Cloudflare mang lại. Nếu chưa biết cách sử dụng CloudFlare, thì các bạn có thể xem lại các bài viết về CloudFlare bên dưới:
Dưới đây là một số cách chặn DDoS mà bạn có thể tham khảo:
- Bật chống DDoS trên CloudFlare
Trên CloudFlare có sẵn tính năng chông DDoS có tên là Under Attack Mode , khi sử dụng tính năng này thì trình duyệt sẽ hiển thì bước check trong 2-3s rồi mới cho phép bạn truy cập website như hình bên dưới.
Và cách bật tính năng này các bạn có thể xem hướng dẫn như hình.
- Chặn truy cập theo Quốc gia cụ thể.
Các bạn nên sử dụng cách chặn này khi website của bạn bị tấn công bởi nhiều IP và IP đó có nguồn gốc từ một hoặc một số quốc gia cụ thể. Do số lượng IP nhiều và thay đổi liên tục nên ta sẽ không thể chặn từng IP được, mà thay vào đó bạn nên chặn truy cập luôn quốc gia đó sẽ khả thi hơn.
Cụ thể cấu hình các bạn truy cập: Security >> Firewall Rules >> Create firewall rule.
Tại phần tạo Rule các bạn thiết lập như sau:
Thiết lập xong, kết quả sẽ như hình
- Chặn truy cập tất cả, và chỉ cho phép một số quốc gia nhất định
Cách chặn này cũng tương tự là chặn theo quốc gia, nhưng chỉ khác ở chỗ là nếu có nhiều IP tấn công và đến từ nhiều quốc gia khác nhau thì bạn không thể ngồi chặn từng quốc gia được. Mà thay vào đó, bạn sẽ cho phép một số quốc gia bạn muốn, còn lại sẽ chặn tất cả sẽ đỡ cục hơn.
Cụ thể cấu hình các bạn truy cập: Security >> Firewall Rules >> Create firewall rule.
Thiết lập xong, kết quả sẽ như hình
- Chặn theo IP
Các bạn nên sử dụng cách chặn này, khi bị tấn công với số lượng IP ít và đã xác định được chính xác IP tấn công. Chúng ta không nên chặn quốc gia trong trường hợp này vì sẽ ảnh hưởng đến traffic của website.
Cụ thể cấu hình các bạn truy cập: Security >> Firewall Rules >> Create firewall rule.
Thiết lập xong, kết quả sẽ như hình
Khi bạn chặn xong, thì IP bị chặn truy cập website sẽ báo lỗi như hình.
- Bật xác nhận Capcha
Với cách này, bạn sẽ cần sử dụng khi bị tấn công từ chính IP trong nước, nghĩa là ví dụ bạn ở Việt nam, khách hàng và người dùng truy cập vào website đều đến từ Việt Nam thì việc bạn chặn truy cập là điều không nên vì sẽ ảnh hưởng trực tiếp đến việc kinh doanh.
Do đó, ở trường hợp này bạn cần bật xác nhận Capcha cho website của mình, nghĩa là khi người dùng truy cập website, thì lúc này Cloudflare sẽ hiển thị mẫu xác thực Capcha để người dùng xác nhận trước khi truy cập được vào website, điều này giúp Cloudflare xác định được người dùng này là thật hay là robot.
Cụ thể cấu hình các bạn truy cập: Security >> Firewall Rules >> Create firewall rule.
Thiết lập xong, kết quả sẽ như hình
Ở phần thiết lập Capcha này, có một tính năng hay là cho phép IP client đã xác thực trước đó vượt qua bước xác thực Rebot ở các lần truy cập tiếp theo. Và các bạn có thể set thời gian bỏ qua xác thực theo nhu cầu của mình, ở đây mình sẽ chọn thời gian là 1 tuần, và sau 1 tuần IP client đó sẽ cần phải xác thực lại Capcha.
Cụ thể cấu hình các bạn truy cập: Security >> Setting >> Challenge Passage và chọn thời gian bạn cần.
Và sau khi áp dụng một số cách bên trên, thì hiện tại mình đã xử lý xong vấn đề trên VPS của mình. Hiện tại Load average của máy chủ đã ổn định trở lại.
Như vậy, ở bài viết này mình đã hướng dẫn các bạn cách xác định hình thức DDoS và cách sử dụng Firewall của Cloudflare để ngăn chặn tấn công DDos một cách hiệu quả. Qua bài viết này, chắc hẳn các bạn đã hiểu rõ hơn về sự lợi hại mà Cloudflare mạng lại, dù chỉ là bản miễn phí nhưng nó hỗ trợ người dùng vô cùng tốt. Tuy nhiên, nếu bạn là doanh nghiệp lớn và cần nhiều hơn các tính năng từ Cloudflare, thì có thể tham khảo sử dụng bản trả phí của Cloudflare nhé.
Chúc bạn thực hiện thành công.