2010-04-15 10 views
5

Tôi vẫn đang học lập trình socket (sử dụng Perl) nhưng tôi có cả hai tùy chọn (lập trình socket và SSH/SCP/FTP) để truyền dữ liệu từ máy từ xa đến máy chủ cục bộ của tôi.an toàn hơn - Truyền dữ liệu bằng lập trình socket HOẶC SSH/SCP/FTP

Nhưng tôi phải chọn một thiết bị an toàn hơn (dữ liệu được mã hóa trên mạng) về truyền dữ liệu. Bất kỳ đề xuất.

Trả lời

5

Chỉ cần sử dụng ổ cắm không cung cấp cho bạn bất kỳ an ninh tại tất cả. Lựa chọn đúng tùy thuộc vào ứng dụng, các hệ thống bạn đang sử dụng và số người dùng hiểu được những gì họ cần làm để sử dụng nó. Ví dụ: nếu bạn đang tương tác với máy chủ web một cách an toàn, có thể bạn sẽ sử dụng TLS/SSL cho nó. Nếu bạn chỉ chuyển dữ liệu giữa hai hệ thống, sử dụng ssh cũng có thể là cách thuận tiện nhất.

Khi bạn nói "bảo mật", bạn có đang tìm kiếm dữ liệu được mã hóa trên mạng không? Xác thực của các bên giao tiếp? Cả hai? Một lựa chọn khác là sử dụng TLS/SSL, có lẽ với bộ công cụ OpenSSL (và có các mô-đun Perl với các ràng buộc cho nó.) Lập trình phức tạp hơn so với ssh, và bạn sẽ phải làm nhiều hơn về xác thực cho nó, do đó, nó trở lại bất cứ điều gì nó là bạn đang cố gắng để làm.

Ngoài ra, FTP cũng không an toàn.

+0

Tôi có nghĩa là dữ liệu được mã hóa trên mạng. – Space

+2

@Octopus Không có mã hóa dữ liệu bằng cách sử dụng ổ cắm tcp/udp trực tiếp (trừ khi máy chủ của bạn cũng đang sử dụng, ví dụ: IPSec hoặc dữ liệu được điều chỉnh trên một số kênh được mã hóa). – nos

2

Tất cả lập trình mạng đều sử dụng Ổ cắm dưới mui xe. Vì vậy, đó là vấn đề của giao thức bạn sử dụng.

Thông thường, nếu bạn muốn được an toàn, bạn nên đường hầm giao tiếp của bạn sử dụng SSL (https, sftp, FTPS)

1

SSH/SFTP/SCP tất cả đều sử dụng ổ cắm theo lập trình socket. Trừ khi bạn có một thuật toán tốt hơn (để bảo mật) so với những gì SSH cung cấp, hãy sử dụng một mô-đun SSH cho Perl.

1

Hết ổ cắm hộp không an toàn. Dữ liệu được truyền dưới dạng thô từ điểm A đến điểm B.

Thêm SSL thêm bảo mật. Nhiều giao thức hỗ trợ SSL. Đặc biệt một số hương vị của SSL và hỗ trợ HTTP SSL.

FTPS được hỗ trợ rộng rãi trên nhiều nền tảng và bởi nhiều khách hàng. Ngay cả khi bạn viết một ứng dụng khách tùy chỉnh, việc có các ứng dụng khách khác như FileZilla trong tầm kiểm tra là tốt đẹp.

Nếu tôi bắt đầu từ đầu trên hệ thống như vậy, tôi sẽ sử dụng FTPS.

1

SSH là giao thức trình bao từ xa và chính nó không được sử dụng để chuyển tệp (như FTP). Giao thức truyền tệp SCP là một phần của SSH1 nhưng vì SSH1 đã lỗi thời và thiếu sót, SCP không được khuyến khích sử dụng. Trong SSH2 (được sử dụng trong tất cả các hệ thống hiện đại) SFTP (Giao thức Truyền tệp SSH) được sử dụng.

Bản thân FTP (RFC 959) không cung cấp bất kỳ sự bảo mật nào. Có các phần mở rộng cho phép bạn chạy FTP qua SSL/TLS (hoặc ngầm định, qua kênh được mã hóa trước, hoặc rõ ràng, thông qua TLS như là một phần của giao thức FTP). FTP qua SSL được gọi là FTPS (không kết hợp nó với SFTP).

Bạn có thể đọc detailed descriptions of pros and cons of FTPS and SFTP here.

+1

Tôi không biết về triển khai của bạn, nhưng scp của tôi hỗ trợ giao thức phiên bản 2 và tôn vinh phiên bản giao thức mặc định như được chọn bởi máy chủ và/hoặc .ssh_config. Sftp của tôi cũng hỗ trợ phiên bản giao thức 1. Không được gắn với một phiên bản giao thức ssh cụ thể. –

+0

Điều này có nghĩa là các ứng dụng của bạn không sử dụng SCP hoặc SFTP như là một phần của giao thức SSH, nhưng sử dụng hệ thống con tùy chỉnh SSH làm phương tiện vận chuyển trong suốt cho dữ liệu của chúng. Mặc dù điều này có thể hoạt động trong một số trường hợp cụ thể (ví dụ: trên một số hệ thống Unix) nhưng điều này KHÔNG gây biến chứng cho các tiêu chuẩn và sẽ không hoạt động trong các môi trường khác. Nói cách khác, đây là một trường hợp cụ thể mà bạn quan sát, không phải là một quy tắc. –

0

tôi sẽ xem xét ba tùy chọn chính:

  • FTPS (FTP qua SSL/TLS) - đó là tương đương với HTTPS mà trong thuật ngữ đơn giản có nghĩa là nó phiên bản của giao thức FTP thường được mã hóa. Tôi nghĩ rằng thật tuyệt vời khi tải xuống qua Internet từ các máy từ xa và có thể là máy công cộng. Nó cung cấp cơ chế xác thực cao cấp dưới dạng chứng chỉ X.509. Có một số rắc rối với tường lửa vì nó sử dụng, như FTP, hai kết nối. Nếu mục tiêu của bạn là để ngăn chặn bất cứ ai nhìn thấy những gì bạn đang tải về đây là giải pháp hoàn hảo IMHO. Tôi có xu hướng sử dụng giao thức này để truy cập các máy mà tôi không kiểm soát.

  • SFTP (SSH FTP) - đó là giao thức tốt, có thể tốt hơn một chút so với FTPS, nhưng theo ý kiến ​​của tôi, nó phù hợp hơn với môi trường được kiểm soát. Tôi sẽ sử dụng giao thức này khi tôi muốn tải xuống tệp từ tài khoản của mình trên máy này sang máy khác. Hoặc khi tôi muốn tải lên tập lệnh mới lên máy chủ. Nó cho tôi từ xa tương đương với tôi đi đến máy với ổ đĩa flash và đăng nhập vào máy.

  • VPN - nếu những máy đó được khắc phục để nói - bạn luôn kết nối với cùng một máy - tôi sẽ xem xét sử dụng VPN để cung cấp bảo mật. Các truyền được bảo vệ từ bên ngoài, máy chủ hoạt động giống như nó trong cùng một mạng và tôi có thể sử dụng bất kỳ giao thức nào tôi muốn.