Thứ năm, 01/03/2018 | 00:00 GMT+7

Cách Bảo mật Memcached bằng cách Giảm Exposure

Vào ngày 27 tháng 2 năm 2018, Cloudflare đã đăng một câu chuyện về sự gia tăng nghiêm trọng của các cuộc tấn công khuếch đại bản ghi nhớ . Memcached, một hệ thống bộ nhớ đệm đối tượng phổ biến, thường được sử dụng để giảm thời gian phản hồi và tải các thành phần trong suốt quá trình triển khai. Cuộc tấn công khuếch đại nhắm đến vào các triển khai Memcached trên mạng công cộng sử dụng UDP.

Để giảm thiểu cuộc tấn công, tùy chọn tốt nhất là liên kết Memcached với giao diện local , tắt UDP và bảo vệ server bằng các phương pháp hay nhất về bảo mật mạng thông thường. Trong hướng dẫn này, ta sẽ trình bày cách thực hiện việc này, cũng như cách giới thiệu dịch vụ cho các khách hàng bên ngoài có chọn lọc.

Lưu ý : Do tác động tiềm tàng của cuộc tấn công khuếch đại này đối với sự ổn định của mạng, DigitalOcean đã vô hiệu hóa cả lưu lượng UDP và TCP trên giao diện công cộng tới cổng 11211 kể từ ngày 1 tháng 3 năm 2018. Điều này ảnh hưởng đến quyền truy cập vào Server từ bên ngoài trung tâm dữ liệu, nhưng kết nối từ bên trong trung tâm dữ liệu vẫn được phép.

Để bảo mật thêm, nếu bạn cần quyền truy cập Memcached giữa các Server trong cùng một trung tâm dữ liệu, việc ràng buộc với network interface riêng tư của Server và sử dụng các-luật firewall để giới hạn địa chỉ nguồn được phép sẽ giúp ngăn chặn các yêu cầu trái phép.

Bảo mật Memcached trên Ubuntu và Server Debian

Đối với các dịch vụ Memcached chạy trên server Ubuntu hoặc Debian, bạn có thể điều chỉnh các thông số dịch vụ bằng cách chỉnh sửa file /etc/memcached.conf bằng nano , chẳng hạn như:

  • sudo nano /etc/memcached.conf

Theo mặc định, Ubuntu và Debian liên kết Memcached với giao diện local 127.0.0.1 . Các bản cài đặt liên kết với 127.0.0.1 không dễ bị tấn công khuếch đại từ mạng. Kiểm tra xem tùy chọn -l có được đặt thành địa chỉ này để xác nhận hành vi:

/etc/memcached.conf
. . . -l 127.0.0.1 . . . 

Trong trường hợp địa chỉ lắng nghe được sửa đổi trong tương lai để mở hơn, bạn cũng nên tắt UDP, vốn có nhiều khả năng bị lợi dụng bởi cuộc tấn công cụ thể này. Để tắt UDP (TCP sẽ vẫn hoạt động như mong đợi), hãy thêm tùy chọn sau vào cuối file hoặc file :

/etc/memcached.conf
. . . -U 0 

Khi bạn hoàn tất, hãy lưu file .

Khởi động lại dịch vụ Memcached của bạn để áp dụng các thay đổi :

  • sudo service memcached restart

Xác minh Memcached hiện được liên kết với giao diện local và chỉ lắng nghe TCP bằng lệnh :

  • sudo netstat -plunt
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name . . . tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      2383/memcached . . . 

Bạn sẽ thấy memcached liên kết với địa chỉ 127.0.0.1 chỉ sử dụng TCP.

Bảo mật Memcached trên Server CentOS và Fedora

Đối với các dịch vụ Memcached chạy trên server CentOS và Fedora, bạn có thể điều chỉnh các thông số dịch vụ bằng cách chỉnh sửa file /etc/sysconfig/memcached với vi , ví dụ:

  • sudo vi /etc/sysconfig/memcached

Bên trong, ta sẽ muốn liên kết với network interface local để hạn chế lưu lượng truy cập đến các client trên cùng một máy bằng cách sử dụng tùy chọn -l 127.0.0.1 . Điều này có thể quá hạn chế đối với một số môi trường, nhưng là một nơi khởi đầu tốt.

Ta cũng sẽ đặt -U 0 để tắt trình nghe UDP. UDP là giao thức hiệu quả hơn nhiều đối với các cuộc tấn công khuếch đại, vì vậy việc vô hiệu hóa nó sẽ hạn chế sức mạnh của một số cuộc tấn công nếu ta quyết định thay đổi cổng ràng buộc vào một ngày sau đó.

Thêm cả hai tham số này vào bên trong biến OPTIONS :

/ etc / sysconfig / memcached
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -U 0" 

Lưu file khi bạn hoàn tất.

Để áp dụng các thay đổi, hãy khởi động lại dịch vụ Memcached:

  • sudo service memcached restart

Xác minh Memcached hiện được liên kết với giao diện local và chỉ lắng nghe TCP bằng lệnh :

  • sudo netstat -plunt
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name . . . tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      2383/memcached . . . 

Bạn sẽ thấy memcached liên kết với địa chỉ 127.0.0.1 chỉ sử dụng TCP.

Cho phép truy cập qua mạng riêng

Các hướng dẫn trên cho biết Memcached chỉ nghe trên giao diện local . Điều này ngăn chặn cuộc tấn công khuếch đại bằng cách không để lộ giao diện Memcached cho các bên bên ngoài. Nếu bạn cần cho phép truy cập từ các server khác, bạn sẽ phải điều chỉnh cấu hình.

Tùy chọn an toàn nhất để mở rộng quyền truy cập là liên kết Memcached với network interface riêng.

Giới hạn quyền truy cập IP với firewall

Trước khi làm như vậy, bạn nên cài đặt các-luật firewall để hạn chế các máy có thể kết nối với server Memcached của bạn. Bạn cần biết địa chỉ IP riêng của server khách hàng để cấu hình các-luật firewall của bạn .

Nếu bạn đang sử dụng firewall UFW , bạn có thể giới hạn quyền truy cập vào version Memcached của bạn bằng lệnh như sau:

  • sudo ufw allow OpenSSH
  • sudo ufw allow from client_servers_private_IP/32 to any port 11211
  • sudo ufw enable

Bạn có thể tìm hiểu thêm về firewall UFW bằng cách đọc hướng dẫn cơ bản .

Nếu bạn đang sử dụng Iptables, bạn có thể cài đặt firewall cơ bản bằng lệnh :

  • sudo iptables -A INPUT -i lo -j ACCEPT
  • sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • sudo iptables -A INPUT -p tcp -s client_servers_private_IP/32 --dport 11211 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  • sudo iptables -P INPUT DROP

Đảm bảo lưu các-luật firewall Iptables của bạn bằng cơ chế do bản phân phối của bạn cung cấp. Bạn có thể tìm hiểu thêm về Iptables bằng cách xem hướng dẫn cơ bản .

Sau đó, bạn có thể điều chỉnh dịch vụ Memcached để liên kết với network interface riêng tư của server .

Bind Memcached với network interface riêng

Bây giờ firewall của bạn đã sẵn sàng, bạn có thể điều chỉnh cấu hình Memcached để liên kết với network interface riêng của server thay vì 127.0.0.1 .

Đối với server Ubuntu hoặc Debian , hãy mở lại file /etc/memcached.conf :

  • sudo nano /etc/memcached.conf

Bên trong, tìm dòng -l 127.0.0.1 và thay đổi địa chỉ để phù hợp với network interface riêng của server :

/etc/memcached.conf
. . . -l memcached_servers_private_IP . . . 

Lưu file khi bạn hoàn tất.

Đối với server CentOSFedora , hãy mở lại file /etc/sysconfig/memcached :

  • sudo vi /etc/sysconfig/memcached

Bên trong, thay đổi tham số -l 127.0.0.1 trong biến OPTIONS để tham chiếu IP riêng của server Memcached của bạn:

/ etc / sysconfig / memcached
. . . OPTIONS="-l memcached_servers_private_IP -U 0" 

Lưu file khi bạn hoàn tất.

Tiếp theo, khởi động lại dịch vụ Memcached :

  • sudo service memcached restart

Kiểm tra cài đặt mới của bạn với netstat để xác nhận thay đổi:

  • sudo netstat -plunt
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name . . . tcp        0      0 memcached_servers_private_IP:11211         0.0.0.0:*               LISTEN      2383/memcached . . . 

Kiểm tra kết nối từ ứng dụng bên ngoài của bạn đảm bảo bạn vẫn có thể truy cập dịch vụ. Bạn cũng nên kiểm tra quyền truy cập từ client không được ủy quyền đảm bảo các-luật firewall của bạn có hiệu lực.

Kết luận

Cuộc tấn công khuếch đại Memcached có thể có tác động nghiêm trọng đến tình trạng mạng và sự ổn định của các dịch vụ của bạn. Tuy nhiên, cuộc tấn công có thể được giảm thiểu một cách hiệu quả theo các phương pháp hay nhất để chạy các dịch vụ nối mạng. Sau khi áp dụng các thay đổi trong hướng dẫn này, bạn nên tiếp tục theo dõi các dịch vụ của bạn đảm bảo duy trì chức năng và kết nối phù hợp.


Tags:

Các tin liên quan