FTPポートとは何ですか？どのポート番号を使用しますか？

FTPセットアップは、独自の特定の機能を備えた単純なプロセスです。 最初からそれを理解しようとすると、[FTP server](https://ftp-mac.com/mac-ftp-server.html) しばらくすると、あなたにとって一つの喜びになります。 このようなサーバーを介して、音楽、映画、写真、その他のファイルをダウンロードしたり、データ転送プロトコルを介して動作するホストでサイトを処理したりできます。 ただし、このためには、それを適切に分類する必要があります。特に、FTPポートとは何か、その目的、およびFTPポート番号の構成方法を理解する必要があります。 これは、記事で説明する内容です。 FTPの標準ポートはどれか、ポートのデフォルト設定を変更してファイアウォールとルーターでロックを解除する方法を学習します。
![gggggg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/289970ff-8af8-3f92-91aa-b38fa9fcf001.png)
FTPポートとは何ですか？なぜそれが必要なのですか
-
すべてを整理すると、すべてが非常に簡単になります。コンピュータのオペレーティングシステムには、特定の限られた数のポートがあります。それらは、プログラムがネットワークを介してそれらに接続できるようにするために必要です。これは、ネットワークへの接続の試行中にアプリケーションが互いに競合しないようにするために行われます。ポートは、トランスポートプロトコルの単なる数字です。トラックと比較することができます。すべてのプログラムが同じ「トラック」で実行されている場合、交通渋滞がすぐに発生します。したがって、アプリケーションごとに、一意のポート、つまり、他のプログラムによってまだ占有されていない番号を割り当てる必要があります。

オペレーティングシステムの開発者は、番号付きのプロトコルに従ってプログラムを配布するこの方法を長い間使用しており、それ自体が十分に証明されています。結局のところ、6000以上のポートがあり、これはどのコンピューターにも十分です。 FTPは、顧客とサーバーがさまざまなファイルをすばやく交換するために必要なデータ転送プロトコルです。このようなプロトコルは、ストアのWebインターフェイスを気にしないが、ダウンロード速度とサーバーに保存できるファイルの数を高く評価している人にとって便利です。

FTPプロトコルを使用する以外に、大量のデータを交換するためのより良い方法はありません。そして、このプロトコルはTCPチャネルを介して機能します。また、このチャネルに接続するには、特定のポートが必要です。つまり、サーバーを開くには、クライアントはFTPサーバーポートに移動し、それを介してホストに移動する必要があります。これがFTPのポートの要点です。
アクティブモードとパッシブモードとは何ですか？ それらはどのようにポートに関連付けられていますか
-
実際のところ、クライアント/サーバー相互作用シナリオの開発には2つのオプションがあります。 データ転送用の接続を確立する方法に応じて、アクティブFTPとパッシブFTPの動作モードが区別されます。 アクティブモードでは、サーバー自体がクライアントへのデータ転送接続を確立します。パッシブモードでは、その逆です。 これらのモードについて詳しく見ていきましょう。
![aaaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/6208cc58-0acc-ffb7-13ae-19bc8a411605.png)
実際のところ、FTPプロトコルには2つのタイプの接続があります。

- 接続を制御します。

- データ転送用の接続。

クライアントのアクティビティと受動性は、2番目のタイプの接続でのみ表示されます。一方、サーバーとクライアントが相互に通信できるようにするために、最初のものが必要です。これは、この接続がコントロールと呼ばれるため、サーバーがクライアントからコマンドを受信するためです。このような接続は、デフォルトでインストールされている標準のFTPポート、つまりデフォルトのFTPポートを介して機能します。

FTPプロトコルのアクティブモードとパッシブモードの主な違いは、クライアントサーバーバンドルのどちらがデータ転送のために接続するか、つまり、だれが誰に接続するかです。データの送信先のポートも異なります。アクティブ動作モードでは、クライアントはサーバーへの制御接続を確立しますが、サーバー自体はデータ転送のための接続を確立します。パッシブモードの操作では、データ接続とサーバーへの制御接続は、クライアントによってのみ開始されます。つまり、アクティブモードでは、サーバーはデータ転送のためにクライアントに接続し、パッシブモードでは、クライアントはサーバーに接続します。
FTPアクティブモードを確立する方法
-
アクティブモードとパッシブモードの両方で、接続はクライアントからサーバーへの要求の送信から始まります。 まず、制御接続が確立されます。 これを行うために、制御接続を確立するための1024〜65535の範囲の番号と、データ転送用のポートを使用して、クライアント上に一時ポートが作成されます。 アクティブモードでは、すべてが次の順序で発生します。
1.クライアントは、1024〜65535の範囲の一時ポートからサーバーポート番号21（FTPのデフォルトポート）に要求を送信します。
2.サーバーは一時的なクライアントポートに応答します。
3.クライアントは接続を確認します
4.クライアントは、アクティブなFTPモードの使用、そのIPアドレス、およびサーバーが接続するデータ接続を確立するためのポート番号について説明するFTPPORTコマンドを送信します。
5.コマンドはサーバーによって確認されます。
6.クライアントは、FTPを使用するようにサーバーに指示します。
7.サーバーはデータ接続を作成します。 これを行うために、ポート20から4番目の段落でクライアントによって指定されたポートに要求を送信します。
8.クライアントは要求に応答します。
9.サーバーは接続を確認し、クライアントがデータを転送できるようにします。
FTPパッシブモードを確立する方法
-
パッシブモードでは、データ接続を確立する手順が少し異なります。 アクションは次のように発生します。

クライアントは、1024〜65535の範囲の一時ポートからサーバーポート番号21（FTPデフォルトポート）に要求を送信します。
1.クライアントは、1024〜65535の範囲の一時ポートからサーバーポート番号21（FTPデフォルトポート）に要求を送信します。
2.サーバーは一時的なクライアントポートに応答します。
3.クライアントが接続を確認します。
4.クライアントは、パッシブFTPモードの使用について説明するPASVコマンドを送信します。
5.サーバーはパッシブモードでの作業を確認し、IPアドレスと、クライアントが接続するデータ接続を確立するためのポート番号を送信します。
6.クライアントは、データ転送用のポートから、サーバーによって発行されたポートへの接続を確立するための要求を送信します。
7.サーバーが接続を確認します。
8.クライアントが接続を確立します。
9.クライアントはサーバーに（制御ポートからFTPポート21に）指示します。その後、データを送信できます。
ファイアウォールの問題の解決
-
アクティブモードでは、主な問題はクライアントで発生します。 内部で開始されていない着信接続をドロップするようにファイアウォールが構成されている場合、サーバーはデータ接続を確立できません。 また、FTPデータポートは動的であるため、ファイアウォールの構成にはいくつかの問題があります。 クライアントで使用されるポートの範囲を指定し、それらに許可されるファイアウォールルールを作成するのが最も正しいでしょう。

パッシブモードでは、サーバーでこのような問題が発生する可能性があります。 解決策も同様です。サーバー設定で使用されるパッシブFTPポート範囲を指定し、その許可ルールを作成します。
FTPに2つのポート番号があるのはなぜですか？ 21ポートを使用する必要がありますか？
-
サーバーを絶えず扱い、作成する人々は、21という数字について聞いたことがあるでしょう。FTPだけでなく多くのサーバーとプロトコルが21ポートを使用するので、彼らにとって重要です。ただし、デフォルトでは、FTPは指定された2つのポート、つまり20と21を使用します。ポート21は主に管理に使用され、ポート20はデータ転送に使用されます。これは、ポート21が最も重要であるという事実につながります。これは、サーバーを開いてサーバーにコマンドを送信するために必要であり、ポート20は主にアクティブモードで必要です。

21-ポートはデータ転送を制御するために使用されます。クライアントは、サーバーポート21への制御接続を（アクティブに）確立し（接続をパッシブに開きます）、サーバーにFTPコマンドを送信し、サーバーからFTP応答を受信します。クライアントがサーバーと通信している間、制御接続は常に存在します。 21ポートはサーバーポートです。

実際、20番目のポート（サーバー）では、データはポート21（サーバー）の制御接続の「監視」の下で転送されます。この20ポートは、データ転送時にのみ存在する接続に必要です。これにより、指定された接続が、顧客がサーバーを操作しているときに常に存在するポート21の接続と区別されます。 20ポートはサーバーポートです。

ポート21とその使用の遍在性に戻りましょう。あなたが状況を分析し始めるならば、それは光沢がありません。結局のところ、データ転送プロトコルは傍受からまったく保護されていません。経験豊富なハッカーはいつでもサーバーを攻撃し、クライアントのパスワードとログインを傍受する可能性があります。次に、サーバーに侵入してそこから重要なデータを盗むか、悪意のあるプログラムやウイルスをディレクトリに隠します。

FTPプロトコルを使用するセキュリティレベルを何らかの方法で高めるために、設定で標準のFTPポートを変更することをお勧めします。これは接続に必要です。これを行うのは難しいことではありませんが、各サーバーには独自の方法でこのオプションが構成されています。唯一のニュアンスは、接続時に、クライアントが番号21ではなく新しいFTPデータポート番号を指定する必要があることです。これが保護の本質です。ハッカーはデータを傍受するポートを知らないため、それを盗むことができます。
一般的なFTPの脆弱性は何ですか
-
プロトコルの最も重大な欠点は、すべての情報、およびユーザー名とパスワードがオープンフォームで転送されることです。これにより、サードパーティのソフトウェアとハ​​ードウェアを使用せずに、このプロトコルを使用して機密情報を転送することは不可能になります。攻撃者がこのデータが渡される通信チャネルにアクセスできる場合は、暗号化を使用するか、FTPポート番号を保護する必要があります。これは、攻撃の受動的な影響の典型的なケースです。サーバーの状態は変化せず、セキュリティポリシーに違反していませんが、必要な情報にアクセスできます。

プロトコルは、パスワードの選択を妨げるアクションを定義していません。パスワードが間違っていると、クライアントはパスワードを再入力する機会が与えられますが、接続は切断されません。繰り返し回数にも制限はありません。その結果、パスワードを推測することを目的とした攻撃は好きなだけ続く可能性があり、サーバーの応答に遅延がないため、効率が向上します。

次の脆弱性は、プロトコルのパッシブモードと、3番目のノードの接続への参加の可能性に関連しています。サーバーがクライアントに転送を開始するために接続するFTPサーバーポートを指示するパッシブデータ転送モードを使用する場合、別のコンピューターから接続を確立することができます。

実際のクライアントがダウンロードに必要なファイルをすでに選択していて、必要なアクセス権を持っている場合、クライアントに代わって盗難が発生する可能性があります。攻撃者は、パッシブモードを編成するためのFTPサーバーによるFTPポート番号の選択の特性を知っているため、攻撃が成功する可能性が高くなります。これを行うには、ポートとの接続を確立する必要があります。すべてが成功すると、ファイルが盗まれます。同様に、ファイルの開始を待機しているFTPサーバーポートとの接続を確立することにより、登録ユーザーに代わってサーバーにファイルを書き込むことができます。
FTPの脆弱性への対応
-
プロトコルの脆弱性は、主にその機能と送信された情報を保護する方法の欠如が原因で発生します。 セキュリティを強化するには、サードパーティのツールを使用する必要があります。また、FTPプロトコルを介したネットワークノードの相互作用を慎重に検討する必要があります。 オープンフォームですべての情報を転送する問題は、可能な場合は暗号化ツールを使用するか、通信チャネルを不正アクセスから保護することで解決されます。たとえば、Commander Oneアプリは、FTP / SFTP接続とクラウドストレージをサポートする[CyberduckFTP client](https://ftp-mac.com/cyberduck-for-mac.html)トの一般的な代替手段です。
このアプリを使用すると、FTPポートセキュアであるかどうかを気にする必要がなくなり、256ビットのキー長のAESを使用するため、アプリの暗号化機能を中継するだけです。 それに加えて、アプリはファイルを処理するときに必要な幅広い高度な機能をサポートしています。このアプリを試して、その機能を活用してください。 その他の問題は、フィルタリングによって解決できます。
![rrrrr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740997/7119bdc6-d9da-d57f-35c8-1baaa460aea3.png)
パスワードが無効になるのを防ぐには、パスワードを何度か試行した後に接続が閉じられるようにFTPサーバーを構成する必要があります。 また、間違ったパスワードに応答する前に一時停止する必要があります。これにより、パスワードの列挙が大幅に遅くなります。

パッシブモードでのファイルの盗難を防ぐには、IPアドレスによるフィルタリングが必要です。 このフィルタリングを使用している間、アクティブモードに切り替えられたサーバーはクライアントのアドレスとは異なるアドレスを持ち、そこからのパケットがフィルタリングされるため、クライアントによって開始された2つのサーバー間で交換することはできなくなります。 最新のセキュリティの観点から、正しい解決策は、暗号化されたFTP実装（FTPS、SFTP）のいずれかを使用するか、VPNを介したFTPを使用することです。
SFTPポート。 FTPポートとの違い
-
[SFTP](https://cloudmounter.net/sftp-client.html)は、インターネット上で情報を転送するための標準であり、信頼性とセキュリティが向上したSSH（Secure Shell）接続を使用してファイルを移動およびコピーするように設計されています。このタイプの接続は、ログインとパスワードの両方、および送信の内容で暗号化されたアクセスと安全な送信を提供し、それによってパスワードと機密情報をネットワーク上のオープン送信から保護します。 FTPとは異なり、SFTPプロトコルは、その機能は似ていますが、異なるデータ転送プロトコルを使用するため、標準のクライアントはSFTPサーバーと通信できません。

TCPポート22は一般的な正解であり、デフォルトのSFTPポート番号と見なされますが、代替ポートではなくSFTP標準ポートを使用するようにSSHがどのように構成されているかによって異なります。

SFTPはSSHサブシステムとして機能するため、SSHデーモンをリッスンし、管理者によって構成されたすべてのポートで実行されます。 SFTPは通常SFTPポート番号22を使用しますが、ほとんどすべてのポートで機能するように構成できます。 SFTPは、SSH経由で起動できるプロトコルの1つにすぎません（その他には仮想端末が含まれます）。実際、SFTPは独立しており、SSHを使用しなくても機能します。



FTPとSFTPの主な違い
-

- FTPは、ホスト間でファイルを転送するための安全なチャネルを提供しませんが、SFTPは、ネットワーク上のホスト間でファイルを転送するための安全なチャネルを提供します。

- FTPはFileTransfer Protocolの略で、SFTPはSecure File TransferProtocolの略です。

- FTPはTCP / IPによって提供されるサービスです。 ただし、SFTPはSSHプロトコルの一部であり、リモートログインの情報を表します。
- FTPは、TCPの制御接続を使用して接続を確立します
ポート21。一方、SFTPは、SSHを介して確立されたクライアントとサーバー間の安全な接続を介してファイルを転送します。

- FTPはパスワードとデータをテキスト形式で転送し、SFTPはデータを暗号化してから別のホストに送信します。