Chào mừng ngày giải phóng miền nam
  • Trang chủ
  • Memcached là gì và fix bug Memcached để ngăn chặn DDoS

Memcached là gì và fix bug Memcached để ngăn chặn DDoS

Memcached là gì?

Memcached là một hệ thống lưu trữ bộ nhớ phân tán mã nguồn mở, được sử dụng để tăng tốc cho các ứng dụng web động bằng cách giảm tải cơ sở dữ liệu. Hiểu đơn giản hơn, mỗi khi có yêu cầu cơ sở dữ liệu được thực hiện nó sẽ thêm tải cho máy chủ.

Memcached được tạo thành từ bốn thành phần chính. Các thành phần này cho phép máy khách và máy chủ hoạt động cùng nhau để phân phối dữ liệu được lưu trong bộ nhớ cache hiệu quả nhất có thể:

  1. Phần mềm máy khách: cung cấp danh sách các máy chủ Memcached khả dụng
  2. Thuật toán trên máy khách: Chọn một máy chủ dựa trên khóa chính
  3. Phần mềm máy chủ: Lưu trữ các giá trị và key của chúng vào bảng chọn bên trong
  4. LRU – Xác định thời điểm loại bỏ dữ liệu cũ hoặc sử dụng lại bộ nhớ

Cách fix bug Memcached, ngăn chặn DDoS

Có lỗ hổng trên Memcached được lợi dụng để thực hiện DDoS khuếch đại – Memcrashed và đã có rất nhiều máy chủ hay máy chủ ảo VPS bị tấn công và chiếm dụng băng thông…

1. Memcrashed bị tấn công như thế nào?

Sẽ một gói tin fake địa chỉ IP được gửi đến máy chủ memcached trên cổng 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 lại lên đến hàng chục nghìn lần, từ đó tạo ra một cuộc tấn công.

Trên thực tế một gói tin 15 bytes gửi đi có thể tạo ra 134KB phản hồi (khuếch đại lên 10.000 lần). Thậm chí có những trường hợp khuếch đại gấp 51200 lần, tạo ra cuộc tấn công mạnh

Ngoài ra các truy vấn giả mạo cũng truy cập vào TCP cổng 11211, nhưng vì các truy vấn TCP không thể giả mạo nên tỷ lệ tấn công này ít hơn.

2. Giải pháp fix lỗi Memcached

Một lời khuyên từ các chuyên gia công nghệ là chúng ta chỉ nên cho phép duy nhất kết nối từ localhost tới Memcached và tắt giao thức UDP.

Để chỉnh sửa cấu hình Memcached chúng ta thực hiện như sau:

# nano /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.

Lưu ý:

  • Không cần thiết cập nhật tường lửa. Toàn bộ các kết nối bên ngoài tới Memcached qua 11211 đã bị chặn.
  • Đối với Ubuntu/Debian, chỉnh sửa /etc/memcached.conf

Khởi động lại Memcached

# service memcached restart

Kiểm tra lại hệ thống các kết nối

# netstat -tulpn

Khi đó, Memcached chỉ kết nối duy nhất 127.0.0.1 qua giao thức TCP

tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      27106/memcached

Là một người quản trị hệ thống VPS/Server, các bạn hãy luôn cập nhật hệ thống cũng như theo dõi tin tức an ninh mạng thường xuyên, đặc biệt từ HocVPS.

Tìm hiểu thêm cách hoạt động của Memcached

Memcached giảm tải cho máy chủ bằng cách lưu trữ các đối tượng dữ liệu trong bộ nhớ động (chúng ta hiểu nó giống như bộ nhớ ngắn hạn cho các ứng dụng). Memcached lưu trữ dữ liệu cho các chuỗi hoặc đối tượng tùy ý bao gồm:

  • Kết quả trả về khi gọi cơ sở dữ liệu
  • Các lệnh gọi API
  • Kết xuất trang

Ở cấp độ cao Memcached hoạt động như sau:

– Máy khách yêu cầu một phần dữ liệu mà Memcached kiểm tra xem nó có được lưu trong bộ đệm không. Lúc này xảy ra hai trường hợp:

  • Nếu dữ liệu được lưu trữ trong bộ đệm: trả lại dữ liệu từ Memcached (không cần kiểm tra cơ sở dữ liệu)
  • Nếu dữ liệu không được lưu trong bộ đệm: truy vấn cơ sở dữ liệu, truy xuất dữ liệu và sau đó lưu trữ nó trong Memcached

Bất cứ khi nào thông tin được thay đổi hoặc giá trị hết hạn của một mặt hàng đã hết hạn, Memcached sẽ cập nhật bộ đệm của nó để đảm bảo nội dung mới được gửi đến máy khách

Một thiết lập điển hình có nhiều máy chủ Memcached và nhiều máy khách. Khách hàng sử dụng thuật toán băm để xác định máy chủ lưu trữ Memcached nào sẽ sử dụng, việc này giúp phân phối tải. Sau đó, máy chủ sẽ tính toán hàm chọn thứ hai của khóa để xác định vị trí cần lưu trữ giá trị tương ứng trong bảng nội bộ. Đối với Memcached có một số điểm lưu ý như sau:

  • Dữ liệu chỉ được gửi đến một máy chủ
  • Máy chủ không chia sẻ dữ liệu
  • Máy chủ giữ các giá trị trong RAM – nếu RAM hết thì giá trị cũ nhất sẽ bị loại bỏ

Chắc hẳn đến đây các bạn đã hiểu rõ hơn về Memcached, biết cách fix bug Memcached, ngăn chặn DDoS. Trên thực tế còn có rất nhiều vấn đề gặp phải với một hệ thống CNTT mà những người quản trị cần phải nắm rõ để đối phó thực tế, luôn giữ cho hệ thống hoạt động hoạt động ổn định, đạt hiệu suất lý tưởng và mức an toàn cao nhất. Xin cảm ơn đã theo dõi bài viết!

Tìm hiểu thêm:

0/5 (0 Reviews)
Hotline tư vấn miễn phí