私はまだソケットプログラミング(Perlを使用)を学んでいますが、リモートマシンからローカルサーバーにデータを転送するために利用できる両方のオプション(ソケットプログラミングとSSH / SCP / FTP)があります。
ただし、データ転送の観点から、より安全なもの(ネットワーク上の暗号化されたデータ)を選択する必要があります。助言がありますか。
私はまだソケットプログラミング(Perlを使用)を学んでいますが、リモートマシンからローカルサーバーにデータを転送するために利用できる両方のオプション(ソケットプログラミングとSSH / SCP / FTP)があります。
ただし、データ転送の観点から、より安全なもの(ネットワーク上の暗号化されたデータ)を選択する必要があります。助言がありますか。
ソケットを使用するだけでは、セキュリティはまったく得られません。正しい選択は、アプリケーション、使用しているシステム、およびそれを使用するために何をする必要があるかについてユーザーがどれだけ理解しているかによって異なります。たとえば、安全な方法で Web サーバーと対話している場合、おそらく TLS/SSL を使用することになります。2 つのシステム間でデータを転送するだけの場合は、ssh を使用するのが最も便利な方法です。
「セキュリティ」と言うとき、ネットワーク上の暗号化されたデータを探していますか? 通信当事者の認証?両方?
もう 1 つの代替手段は、おそらく OpenSSL ツールキットで TLS/SSL を使用することです (そして、そのためのバインディングを備えた Perl モジュールがあります)。プログラミングは ssh よりも複雑であり、認証に関してより多くの作業を行う必要があります。あなたがしようとしていることは何でも戻ってきます。
また、FTP 自体も安全ではありません。
すべてのネットワークプログラミングは、内部でソケットを使用します。したがって、それはむしろあなたが使用するプロトコルの問題です。
一般に、安全を確保したい場合は、SSL(https、sftp、ftps)を使用して通信をトンネリングする必要があります
箱から出してすぐに使えるソケットは安全ではありません。データは、ポイントAからポイントBに生の形式で送信されます。
SSLを追加すると、セキュリティが強化されます。多くのプロトコルはSSLをサポートしています。特に、FTPとHTTPのいくつかのフレーバーはSSLをサポートしています。
FTPSは、多くのプラットフォームおよび多くのクライアントで広くサポートされています。カスタムクライアントを作成する場合でも、FileZillaのような他のクライアントをテスト用に用意しておくと便利です。
そのようなシステムで最初から始める場合は、FTPSを使用します。
SSH はリモート シェル プロトコルであり、それ自体はファイル転送 (FTP など) には使用されません。SCP ファイル転送プロトコルは SSH1 の一部でしたが、SSH1 は時代遅れで欠陥があるため、SCP の使用は推奨されません。SSH2 (最新のすべてのシステムで使用) では、SFTP (SSH ファイル転送プロトコル) が使用されます。
FTP (RFC 959) 自体はセキュリティを提供しません。SSL/TLS を介して FTP を実行できるようにする拡張機能が存在します (暗黙的に、事前に暗号化されたチャネルを介して、または FTP プロトコルの一部として TLS を介して明示的に)。FTP over SSL は FTPS と呼ばれます (SFTP と混同しないでください)。
FTPS と SFTP の長所と短所の詳細な説明は、こちらで読むことができます。
SSH/SFTP/SCP はすべて、ソケット プログラミングでソケットを利用します。SSH が提供するものよりも優れた (セキュリティのための) アルゴリズムがない限り、Perl 用の SSH モジュールを使用してください。
私は3つの主なオプションを検討します:
FTPS (FTP over SSL/TLS) - 簡単に言えば、通常の FTP プロトコルの暗号化バージョンを意味する HTTPS と同等です。リモートのマシンや公共のマシンからインターネット経由でダウンロードするのに最適だと思います。X.509 証明書の形式で優れた認証メカニズムを提供します。ファイアウォールは、FTP と同様に 2 つの接続を使用するため、いくつかの問題があります。あなたの目標があなたがダウンロードしているものを誰にも見られないようにすることであるなら、これは私見の完璧な解決策です. 私はこのプロトコルを使用して、自分が制御していないマシンにアクセスする傾向があります。
SFTP (SSH FTP) - 優れたプロトコルで、FTPS よりも少し優れているかもしれませんが、私の意見では、制御された環境により適しています。あるマシンのアカウントから別のマシンにファイルをダウンロードするときに、このプロトコルを使用します。または、新しいスクリプトをサーバーにアップロードしたいとき。私にとっては、フラッシュドライブを備えたマシンに行ってマシンにログオンするのと同じリモートです。
VPN - いわばそれらのマシンが固定されている場合 - あなたは常に同じマシンに接続しています - 私は VPN を使用してセキュリティを提供することを検討します. 送信は部外者から保護されており、サーバーは同じネットワーク内にあるかのように動作し、任意のプロトコルを使用できます。