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

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

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

6
задан brian d foy 15 April 2010 в 09:44
поделиться

6 ответов

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

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

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

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

6
ответ дан 9 December 2019 в 22:31
поделиться

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

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

2
ответ дан 9 December 2019 в 22:31
поделиться

Стандартные розетки не защищены. Данные передаются в необработанном виде из точки A в точку B.

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

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

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

1
ответ дан 9 December 2019 в 22:31
поделиться

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

1
ответ дан 9 December 2019 в 22:31
поделиться

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

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

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

1
ответ дан 9 December 2019 в 22:31
поделиться

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

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

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

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

0
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: