2013-04-23 39 views
5

Giả sử máy chủ 1 được đặt tại 5: 5: 5: 5: 11211 và máy chủ 2 được đặt tại 25.25.25.25:11211. Bạn thêm chúng vào nhóm máy chủ và mọi thứ đều tuyệt vời. Cho đến khi ai đó kết nối với cổng đó và bắt đầu rối tung với dữ liệu của bạn.memcached xác thực các kết nối từ xa

Vì vậy, chúng tôi thay đổi cổng thành 38295. Khó tìm hơn, nhưng không phải là không thể, do đó, vẫn không đủ.

Câu hỏi của tôi là:

1) Bạn có thể thiết lập xác thực (username/password) cho các máy chủ memcached để xác minh một kết nối? Bạn có thể đưa các máy chủ/IP cụ thể vào danh sách trắng (có thể là một ý tưởng tồi) không?

2) Bạn có thể và bạn có nên bảo mật dữ liệu được truyền qua internet không? Dữ liệu ở định dạng thô và ISP của bạn và bất kỳ ai đánh hơi dòng có thể xem tất cả dữ liệu được gửi. Nhưng mã hóa dữ liệu có thể ảnh hưởng đến hiệu suất?

Có các giải pháp nào để thiết lập một cụm máy chủ ghi nhớ và cách bạn bảo mật và xác thực chúng?

Trả lời

1

Bộ nhớ hiện hỗ trợ SASL. Điều này sẽ cho phép bạn thực hiện xác thực mạnh mẽ cho dịch vụ được ghi nhớ của bạn. Đây là một bài viết hay về cách thiết lập SASL với memcached.

http://blog.couchbase.com/sasl-memcached-now-available

+0

ứng dụng khách 'php5-memcache' có xác thực không? tôi đã nhìn vào SASL nhưng tôi vẫn còn bối rối như thế nào một khách hàng sẽ xác thực nó, vì tôi không thấy bất kỳ chức năng để làm như vậy – user2103849

2

Tôi không nghĩ rằng chúng ta cần phải đi cho giải pháp phức tạp ở đây là đề cập đến bởi Mike.

Giả sử máy chủ web của bạn (web1, web2, web3) cần nhận dữ liệu từ máy chủ memcache (mem1 & mem2) qua cổng 11211 nằm trong cùng một mạng nội bộ và địa chỉ IP nội bộ của mỗi máy chủ web bắt đầu bằng 172.221. ..

Trong trường hợp này, bạn có thể đặt một hạn chế trong bảng ip của mem1 & máy chủ mem2 để CHỈ chấp nhận các yêu cầu từ 172.221. . cho cổng 11211.

Hy vọng điều này sẽ hữu ích.

8

Giải pháp đáp ứng nhu cầu của tôi là thiết lập mục nhập iptables theo đề xuất của sumoanand. Đây là những gì tôi đã làm việc.

Bắt đầu memcached sử dụng một cái gì đó như thế này:

/usr/bin/memcached -p 11211 -l 0.0.0.0 -d -u www-data -m 12288

Hãy ghi nhớ rằng các tham số -l được thiết lập để 0.0.0.0, trong đó chủ yếu cho phép kết nối từ bất cứ nguồn nào. Nếu bạn giữ tiêu chuẩn 127.0.0.1, điều này sẽ không hoạt động.

Tiếp theo, chúng tôi tạo mục nhập cho iptables. Nếu máy chủ memcached của bạn nằm trong mạng LAN của bạn, lệnh sau sẽ chỉ cho phép các kết nối từ các máy chủ cục bộ cụ thể.

Ví dụ, để thêm 192.168.1.100 vào danh sách cho phép, chúng tôi phát hành lệnh:

iptables -A INPUT -p tcp -s 192.168.1.100 --dport 11211 -j ACCEPT 

Nếu bạn muốn đưa vào danh sách một máy chủ từ xa, ví dụ, 25.62.25.62 sau đó bạn thực hiện lệnh khác:

iptables -A INPUT -p tcp -s 25.62.25.62 --dport 11211 -j ACCEPT 

Bạn có thể đưa vào danh sách trắng bao nhiêu IP tùy thích, nhưng hãy chắc chắn phát lệnh cuối cùng chặn tất cả các kết nối khác trên cổng đó.

iptables -A INPUT -p tcp --dport 11211 -j REJECT 

iptables được đọc theo thứ tự chúng được nhập vào, vì vậy nếu bạn đưa ra một tuyên bố từ chối tất cả trước khi phát hành bất kỳ CHẤP NHẬN quy tắc, tất cả các kết nối sẽ bị từ chối (kể cả những người trong danh sách trắng). Tuy nhiên,

Dữ liệu được gửi theo cách này vẫn chưa được mã hóa theo bất kỳ cách nào. Bất cứ điều gì ngăn chặn máy chủ memcached của bạn và máy chủ từ xa (gói sniffers, ISP) sẽ có thể xem dữ liệu hoàn toàn thô.

Các vấn đề liên quan