Ngăn chặn tấn công DDOS vào lỗ hổng Memcached

Memcached là một hệ thống cache mã nguồn mở, hoạt động bằng cách lưu tạm dữ liệu hay sử dụng vào bộ nhớ RAM để tăng tốc độ truy xuất. Kết nối với Memcached được thực hiện qua giao thức TCP hoặc UDP trên cổng 11211.

Gần đây, một cuộc tấn công quy mô lớn khai thác lỗ hổng trên Memcached để thực hiện DDoS khuếch đại – Memcrashed. Rất nhiều VPS/Server đã bị tấn công gây tràn bộ đệm và nghẽn băng thông.

1. Cách thức hoạt động của Memcrashed

Cụ thể, kẻ tấn công (Attacker) sẽ gửi một gói tin giả mạo địa chỉ IP của máy tính nạn nhân (Victim) đến server memcached trên port 11211. Các truy vấn được gửi đến máy chủ chỉ một vài byte, nhưng số lượng phản hồi được khuyếch đại lên đến hàng chục nghìn lần, tạo ra một cuộc tấn công DDoS đáng kể. Bên cạnh đó, Memcached cho phép kết nối qua giao thức UDP – một trong những giao thức tốt nhất dùng trong việc khuếch đại.

Theo CloudFlare, một gói tin 15 bytes gửi đi có thể tạo ra 134 KB phản hồi (khuếch đại 10.000 lần). Thực tế ghi nhận, hệ thống đã nhận được tới 750 KB phản hồi – khuếch đại gấp 51200 lần.

Theo Arbor Networks, các truy vấn giả mạo cũng hướng đến TCP port 11211, nhưng vì các truy vấn TCP không thể giả mạo nên cách tấn công này ít bị lạm dụng hơn.

Theo báo cáo mới nhất từ Shodan, có gần 90.000 server sử dụng memcached với port 11211 đang mở. Và rất nhiều trong số đó đến từ các khu vực thông dụng: Mỹ, Nhật, Hồng Kông… Cụ thể, các cuộc tấn công xảy ra khắp nơi trên toàn thế giới, nhưng chủ yếu là Bắc Mỹ và Châu Âu. Phần lớn các máy chủ của OVH, DigitalOcean và Sakura.

2. Giải pháp khắc phục lỗ hổng Memcached

Nhằm tránh bị khai thác lỗ hổng trên, mình khuyến cáo các server sử dụng Memcached hãy cập nhật ngay bảo mật cho hệ thống của mình: chỉ cho phép duy nhất kết nối từ localhost tới Memcached và tắt giao thức UDP.

Cụ thể, chỉnh sửa cấu hình Memcached:

# vi /etc/sysconfig/memcached

Chỉnh sửa OPTIONS thành OPTIONS="-l 127.0.0.1 -U 0", trong đó:

  • -l 127.0.0.1 : Chỉ chấp nhận truy vấn từ localhost.
  • -U 0 : tắt hoàn toàn giao thức UDP.

Sau khi lưu lại các thay đổi, bạn sử dụng lệnh sau để khởi động lại Memcached:

# service memcached restart

Cuối cùng, kiểm tra lại kết nối của Memcached chỉ với localhost (127.0.0.1) qua giao thức TCP.

# netstat -ltnp | grep 11211 

Như vậy là mình đã hoàn tất bài viết về lỗ hổng của Memcached và hướng dẫn chi tiết cách phòng chống tấn công DDoS vào server thông qua lỗi này. Bây giờ, các bạn có thể hoàn toàn yên tâm sử dụng  Memcached để tăng tốc độ phản hồi của Web Server.

Chúc bạn thành công!

Chia sẻ

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*