CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

これは初心者向けの FTP サーバーのインストールです。

1. 基本を理解する

FTP: ファイル転送プロトコル (FTP)。

FTP は歴史上最も古いファイル転送プロトコルの 1 つであり、多くのソフトウェア システムで使用されています。たとえば、WordPress バックエンドの更新には FTP サービスが必要です。

FTP は UDP の代わりに TCP プロトコル伝送を使用します。

FTP は、制御ポート 21 と送信ポートの 2 種類のポートを使用します。

FTP 送信には、パッシブ モード (PASV) とアクティブ モード (PORT) の 2 つのモードがあります。

送信プロセス中、パッシブモードかアクティブモードかにかかわらず、[クライアント] と [サーバーのポート 21] はユーザー名やパスワードなどの関連情報を交換し、送信に使用するモードを確認します。アクティブ モードの場合、クライアントとサーバーは [サーバーのポート 20] でデータを交換します。パッシブ モードの場合、サーバーは独自の 1 つ以上のランダム ポートを確認し、クライアントはサーバー上のこのポートとデータを交換する必要があります。

VSFTPD は広く使用されている FTP サーバー ソフトウェアです。 FTP コマンドはクライアント操作コマンドです。

SFTPもあります。 SFTP と FTP は名前だけが似ているため、単純にセキュア FTP として理解されるべきではありません。 SSH プロトコルが提供するファイル転送方式です。多くのクラウド サーバーではリモート操作を容易にするために SSH 接続が備わっているため、FTP の設定がうまくできていない場合でも SFTP を使用して転送できる場合があります。 SFTP はポート 22 のみを使用します。

2. システム環境を確認する

使用する個人用 FTP サーバーは Alibaba Cloud の ECS サーバーです。仮想ホストは一部の構成をサポートしていない可能性がありますが、多くの仮想ホストには FTP サービスが組み込まれています。

システムは Alibaba Cloud Linux 3.2104 64 ビットで、Centos8 命令と互換性があります。別のバージョンのシステムを使用している場合は、一部の命令が使用できるかどうかを確認する必要があります。

使用されるパッケージ マネージャーは DNF です。これは YUM の代替バージョンであり、ほとんどの YUM コマンドと互換性があります。パッケージマネージャーを使用すると、デフォルトのパスを使用してシステムソフトウェアを簡単にインストールおよび更新できるため、インストールパスの設定によって発生する問題が軽減されます。初心者におすすめです。

さらに操作を進める前に、次の手順でシステムに関連するコンポーネントがインストールされているかどうかを確認できます。

vsftpdはどこにありますか

vsftpdがシステムにインストールされていない場合は、

VSFTPD:

それ以外の場合は、次のようなディレクトリが返されます。

vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

ここにはスペースで区切られた 3 つのディレクトリがあります。 CENTOS8 のデフォルトの DNF インストールでは、/etc/vsftpd がデフォルトのインストール場所です。

3. ftpコマンドをインストールする[オプション]

ftp コマンドを使用すると、サーバー側で独自の FTP サーバーに接続できるため、ファイアウォールの干渉を回避し、問題のトラブルシューティングが容易になります。必須ではありませんが、推奨されます。

dnf インストール ftp

インストール後すぐにご利用いただけます。

リンク サーバー:

ftp XXX.XXX.XXX.XXX

XXX.XXX.XXX.XXX は IP アドレスを表します。 ftp localhost を使用してローカル サーバーに接続することもできます。

サーバーを終了する

やめる

初心者にはこれ以上の内容は必要ありません。詳しく知りたい方はご自身で検索してください。

4. VSFTPDをインストールする

dnf インストール vsftpd

5. ローカルユーザーを設定する

ユーザー追加 xxx
パスワード xxx

XXX はユーザー名を表します。 useradd でユーザーを追加し、passwd でパスワードを変更します。

この方法で追加されたユーザーは、vsftpd ソフトウェアのユーザーではなく、CENTOS システムのユーザーであることに注意してください。変更される設定の一部はシステム ユーザー向けでもあります。

仮想ユーザーを使用してシステムユーザーにマッピングすることもできますが、関連する設定は初心者にとっては少し面倒です。詳細については検索してください。

6. vsftpdのconfファイルを設定する

前述したように、CENTOS8 での dnf インストールのデフォルトのインストール パスは /etc/vsftpd です。 vsftpd の設定ファイルはここにあります。

この記事ではパッシブ モード リンクを使用します。変更が必要な主なパラメータは以下のとおりです([ ]および[ ]内の内容は関連設定の注釈ですので、設定ファイルには書き込まないでください)

PORTモードを無効にする

connect_from_port_20=NO [PORTモードで使用される送信ポートを無効にします]

PASVモードを有効にする

聞く=はい
listen_ipv6=NO [PASV モードでは、ランダムに割り当てられた接続アドレスとポートがクライアントに返されます。戻り値は 6 ビットの数値です: XXX、XXX、XXX、XXX、a、b。最初の 4 桁は IP アドレス、最後の 2 桁は a*256+b 方式で計算されたポート値です。これを有効にすると、値が IPV6 アドレスとして認識され、問題が生じます。
pasv_enable=YES [PASVモードを有効にする]
pasv_min_port=xxxx パスビ
pasv_max_port=xxxx [サーバーによって割り当てられる最小および最大のポート番号を指定します。指定しないと、サーバーが他のソフトウェアのポートと重複するポート番号で構成され、エラーが発生する可能性があります。競合を避けるために、より大きなポートを割り当てることをお勧めしますが、ポートが大きすぎるとサーバーの範囲を超える可能性があります。
pasv_addr_resolve=YES [非常に重要です。 IP アドレスの変更を許可します。 】
pasv_address=XXX.XXX.XXX.XXX【非常に重要です。このアドレスはサーバーのパブリック アドレスです。 PASV モードでは、サーバーは 6 ビットのアドレスとポートを返します。上記 2 つの項目を設定しないと、プライベート ネットワーク IP アドレスが返され、リモート接続でアドレスを見つけることができません。 】
pasv_promiscuous=YES [YES はセキュリティ チェックをオフにします。ある程度のリスクはあります。通常の状況では、サーバーは 2 つのクライアント接続の IP アドレスが一致しているかどうかを確認します。一致しない場合は、接続が拒否されます。 】

変更すべき推奨セキュリティ設定

anonymous_enable=NO [匿名ユーザーは禁止]
chroot_local_user=YES [指定されたルートディレクトリ外のファイルへのユーザーアクセスを禁止する]
allow_writeable_chroot=いいえ

7. 構成システム関連ソフトウェアの調整

nologinの設定

通常は/etcパスにあるpasswdファイルを変更し、/bin/bashを/sbin/nologinに変更して、ftpユーザー名とパスワードがシステムに直接ログインすることを禁止します。

ルートディレクトリを変更する

passwd ファイルを変更し、ディレクトリ アドレスを ftp ユーザーがアクセスできるようにするアドレスに置き換えます。

ディレクトリ権限を変更する

この部分については、権限について具体的に紹介している本を見つけることをお勧めします。権限を755に設定しました。

ルート ディレクトリのアクセス許可は、構成ファイルに応じてさまざまなエラーを引き起こす可能性があります。

pam ファイル

ユーザーの nologin を変更した後、システムの pam.d フォルダー (通常は etc パス内) を検索する必要があります。 pam_shells.so には認証が必要です。これを nologin に変更すると、これに一致しなくなり、エラーが発生します。コメントアウトしてください。

他の設定がある場合は、このファイルをさらに変更する必要がある場合があります。

外部ネットワークへのポートを開く

この手順には 2 つのことが含まれます。1 つはサーバーのファイアウォールを開くこと、もう 1 つはサーバー プロバイダーに外部セキュリティ グループがある可能性があることです。

サーバーのファイアウォールを開く

CENTOS はデフォルトでfirewalldがインストールされます。iptables の場合はご自身で探してください。Selunix も関連設定が必要ですが、間違いやすいためデフォルトでオフにしている人が多いです。

systemctl status firewalld [firewalldが有効になっているか確認する]

firewall-cmd --add-port=xxx-xxx/tcp --permanent [xxx-xxx は設定ファイルで設定されたポート範囲を表し、左側が小さく右側が大きい]
firewall-cmd --add-port=21/tcp --permanent [制御リンク用にポート21を開きます。 PORTモードを無効にしない場合でも、ポート20を開く必要があります。
ファイアウォール-cmd --reload [設定を再読み込み]

サービスプロバイダーの外部セキュリティグループを開く

Alibaba Cloudを例にとると、console-server-securityグループでは、受信方向に同様の設定を行い、設定ファイルでPASVポート範囲を設定し、制御リンクの21番目のポートを設定します(PORTモードが閉じていない場合は、ポート20も開く必要があります)。

8. 起こりうるエラーをテストする

FTP コマンドと IP アドレスを使用してサーバーおよびリモート クライアントにログインします。 Windows には、リソース マネージャー ftp://XXX,XXX,XXX,XXX (パブリック IP アドレス) を介してログインでき、cmd コマンドまたは ftp ソフトウェアを使用してテストできます。

1. サーバーはログインできるがリモート サーバーはログインできない場合は、ファイアウォールの設定を確認してください。

2. 「227 パッシブモードに入ります」というエラーが表示された場合は、pasv_addr_resolve=YES および pasv_address=XXX.XXX.XXX.XXX が正しく設定されていないことを意味します。サーバーから返されたアドレスはプライベート ネットワーク アドレスまたは不正な IP アドレスであるため、クライアントは接続できません。

今のところ問題は発生しておらず、上記のように設定した後、FTP を使用して WordPress を更新しました。間違いや漏れがありましたら、ご訂正ください。読んでくれてありがとう。

Centos8 システムでの FTP サーバーのインストールとパッシブ モード構成に関する初心者向けの記事はこれで終わりです。Centos8 システムでの FTP サーバーに関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • CentOS8.0 で FTP サーバーをインストールして設定する方法
  • CentOS7 サーバー環境で vsftpd をインストールして設定する方法
  • CentOS 7 で FTP サーバーを構築するための proftpd のインストールと設定に関する詳細なチュートリアル
  • Centos6.9 で vsftpd をインストールして複数のユーザーを設定する方法
  • CentOS7のインストールとFTPを構築するためのvsftpの設定の詳細な説明
  • CentOS での vsftp の詳細なインストールと設定
  • CentOs6.5 での vsftp のインストールと設定に関する簡単なチュートリアル

<<:  よくある CSS エラーと解決策

>>:  Web コンポーネントの内部イベント コールバックと問題点の分析

推薦する

Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

Debian の紹介Debian は、広い意味では、フリーなオペレーティング システムの作成に専念...

バージョン管理ツール Rational ClearCase の紹介

Rational ClearCase は、コードやその他のソフトウェア開発資産のバージョン管理を実...

Linux で複数のファイルの名前を一度に変更する方法

序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...

Vue3.0 エラーの解決策: モジュール 'worker_threads' が見つかりません

vue3.0 への最初の試みを記録します。プロジェクトを開始したときに、「モジュール 'wo...

MySQL 8.0.20 のインストールと設定の詳細なチュートリアル

この記事では、MySQL 8.0.20のインストールと設定方法についての詳細なチュートリアルを参考ま...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...

nginx + php の「入力ファイルが指定されていません」の解決策

本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する

序文React 16から、子コンポーネントで発生したエラーを捕捉し、エラーログを記録し、ダウングレー...

WindowsシステムでPhPStudy MySQLの起動に失敗する問題を解決する

エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...

Dockerfile における ENTRYPOINT と CMD の違い

Docker システムの学習チュートリアルでは、Dockerfile を使用して Docker イメ...

JavaScriptは双方向リンクリストプロセス分析を実装します

目次1. 二重連結リストとは何か2. 双方向リンクリストのカプセル化3. 双方向リンクリストの一般的...

Linux で time(NULL) 関数と localtime() を使用して現在の時刻を取得する方法

time(); 関数関数プロトタイプ: time_t time(time_t *timer)関数の目...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...