что более безопасно - передача данных с использованием программирования сокетов ИЛИ SSH / SCP / FTP - PullRequest
6 голосов
/ 15 апреля 2010

Я все еще изучаю программирование сокетов (используя Perl), но у меня есть оба варианта (программирование сокетов и SSH / SCP / FTP) для передачи данных с удаленных машин на мои локальные серверы.

Но я должен выбрать более безопасный (зашифрованные данные в сети) с точки зрения передачи данных. Любые предложения.

Ответы [ 6 ]

6 голосов
/ 15 апреля 2010

Простое использование сокетов не дает вам никакой безопасности.Правильный выбор зависит от приложения, систем, которые вы используете, и от того, насколько пользователи понимают, что им нужно сделать, чтобы использовать его.Например, если вы взаимодействуете с веб-сервером безопасным способом, вы, вероятно, в конечном итоге будете использовать для него TLS / SSL.Если вы просто передаете данные между двумя системами, использование ssh может оказаться наиболее удобным способом.

Когда вы говорите «безопасность», вы ищете зашифрованные данные в сети?Аутентификация взаимодействующих сторон?Оба?

Другой альтернативой является использование TLS / SSL, возможно, с инструментарием OpenSSL (и есть модули Perl с привязками для него.) Программирование сложнее, чем с ssh, и вам придется делать большеработайте над аутентификацией, чтобы он возвращался к тому, что вы пытаетесь сделать.

Кроме того, FTP тоже не безопасен сам по себе.

2 голосов
/ 15 апреля 2010

Все сетевое программирование использует сокеты под капотом. Так что это скорее вопрос протоколов, которые вы используете.

Как правило, если вы хотите быть в безопасности, вам следует туннелировать ваше общение с использованием SSL (https, sftp, ftps)

1 голос
/ 15 апреля 2010

SSH - это протокол удаленной оболочки, который сам по себе не используется для передачи файлов (например, FTP). Протокол передачи файлов SCP был частью SSH1, но поскольку SSH1 устарел и имеет недостатки, SCP не рекомендуется для использования. В SSH2 (используется во всех современных системах) используется SFTP (SSH File Transfer Protocol).

FTP (RFC 959) сам по себе не обеспечивает никакой безопасности. Существуют расширения, которые позволяют запускать FTP через SSL / TLS (либо неявно, по предварительно зашифрованному каналу, либо явно, через TLS как часть протокола FTP). FTP через SSL называется FTPS (не смешивайте его с SFTP).

Подробное описание плюсов и минусов FTPS и SFTP можно прочитать здесь .

1 голос
/ 15 апреля 2010

Гнездо из коробки небезопасно. Данные передаются в необработанном виде из пункта А в пункт Б.

Добавление SSL повышает безопасность. Многие протоколы поддерживают SSL. В частности, несколько разновидностей FTP и HTTP поддерживают SSL.

FTPS широко поддерживается на многих платформах и многими клиентами. Даже если вы пишете собственный клиент, хорошо иметь под рукой других клиентов, таких как FileZilla, для тестирования.

Если бы я начинал с нуля в такой системе, я бы использовал FTPS.

1 голос
/ 15 апреля 2010

SSH / SFTP / SCP все использует сокеты при программировании сокетов. Если у вас нет лучшего алгоритма (для безопасности), чем тот, который обеспечивает SSH, используйте модуль SSH для Perl.

0 голосов
/ 16 апреля 2010

Я бы рассмотрел три основных варианта:

  • FTPS (FTP через SSL / TLS) - это эквивалент HTTPS, что означает, что это зашифрованная версия обычного протокола FTP. Я думаю, что это отлично подходит для загрузки через Интернет с удаленных и, возможно, общественных машин. Он предлагает превосходный механизм аутентификации в форме сертификатов X.509. Есть некоторые проблемы с брандмауэрами, потому что он использует, как FTP, два соединения. Если ваша цель состоит в том, чтобы никто не видел, что вы скачиваете, это ИМХО идеальное решение. Я склонен использовать этот протокол для доступа к машинам, которые я не контролирую.

  • SFTP (SSH FTP) - это хороший протокол, возможно, немного превосходящий FTPS, но, на мой взгляд, он лучше подходит для контролируемой среды. Я буду использовать этот протокол, когда захочу загрузить файл из моей учетной записи на одном компьютере на другой. Или когда я хочу загрузить новый скрипт на сервер. Это для меня отдаленный эквивалент того, что я иду на машину с флешкой и захожу на машину.

  • VPN - если эти машины установлены, так сказать, - вы всегда подключаетесь к одним и тем же машинам - я бы подумал об использовании VPN для обеспечения безопасности. Передачи защищены от посторонних, сервер ведет себя так, как будто он находится в одной сети, и я могу использовать любой протокол, какой захочу.

...