NGUYÊN LÝ KHAI THÁC LỖ HỎNG Hacker lợi dụng phản hồi của Memcached và gửi đến cho server bạn địa chỉ phản hồi là IP của nạn nhân thông qua giao thức UDP. Mặc định memcached hoạt động trên cổng 11211 và bind trên địa chỉ 0.0.0.0
Khi một ứng dụng được bind trên địa chỉ 0.0.0.0 thì có nghĩa là nó cho phép các địa chỉ IP ở bên ngoài (Internet) truy vấn. Do đó các hacker đã lợi dụng điều này để tạo ra các truy vấn tới Memcached trên server của bạn.
Vì sao lại chọn giao thức UDP, vì giao thức này không cần xác minh địa chỉ IP trước khi gửi gói tin. Nên địa chỉ mà hacker gửi là một fake IP của nạn nhân sẽ bị DDOS.
Memcached sẽ hoạt động như bản năng của nó lưu lại truy vấn và phản hồi truy vấn, với tốc độ truy suất nhanh của RAM tạo ra các phản hồi nhanh chóng tới địa chỉ fake IP mà hacker yêu cầu. Điều này vô tình khiến máy chủ của bạn trở thành một công cụ tấn công DDOS.
1. Giải pháp fix lỗi
Có hai giải pháp để fix lỗi này rất ngắn gọn:
- Chỉ cho phép Memcached bind trên địa chỉ local 127.0.0.1 đây là địa chỉ localhost và hacker không thể giao tiếp với Memcached từ bên ngoài.
- Sử dụng firewall (ví dụ CSF firewall) hoặc iptables không mở cổng 11211 trên giao thức UDP.
Giải pháp triệt để nhất vẫn là sửa lại cấu hình Memcached vì có thể có bạn không sử dụng firewall.
2. Hướng dẫn thực hiện
Bước 1: Thay đổi địa chỉ BIND của MEMCACHED
Vào VPS của bạn bằng tài khoản root và sửa file cấu hình của Memcached :
nano /etc/sysconfig/memcached
Nếu trên VPS của bạn chưa cài nano bạn có thể sử dụng lệnh vi để thay thế
vi /etc/sysconfig/memcached
Nội dung của file /etc/sysconfig/memcached
PORT=”11211″
USER=”memcached”
MAXCONN=”1024″
CACHESIZE=”64″
OPTIONS=””
Bạn sẽ thay thế dòng OPTIONS=”” bằng
OPTIONS=”-l 127.0.0.1 -U 0″
Chú ý: chữ “L” thường không phải số 1
Ý nghĩa cú pháp trên là chỉ cho phép Memcached được bind trên địa chri localhost và không cho phép giao thức UDP.
Bấm Ctrl + O để lưu.
Bấm Ctrl + X để thoát khỏi soạn thảo.
Bước 3: Khởi động lại Memcached
Để khởi động lại Memcached bạn gõ lệnh như sau:
service memcached restart
3: Kiểm tra kết quả
Kiểm tra xem Memcached đã bind trên địa chỉ local hay chưa bạn gõ lệnh sau:
netstat -ntpl | grep “memcached”
Memcached bind trên 127.0.0.1Nếu kết quả hiện ra như hình sau thì đã fix lỗi thành công.
Leave a Reply