что более безопасно-передача данных с помощью программирования сокетов или SSH/SCP / FTP

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

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

6 ответов


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

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

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

кроме того, FTP не является безопасным сам по себе.


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

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


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


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

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

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


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

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

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

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


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

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

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

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