前書き
Linuxインスタンスにvsftpdをインストールして構成する方法について説明します。
背景知識
このシナリオには、主に次のクラウド製品とサービスが含まれます。
クラウドサーバーECS
(Elastic Compute Service、略してECS)は、Alibaba Cloudが提供するIaaS(Infrastructure as a Service)レベルのクラウドコンピューティングサービスであり、卓越したパフォーマンス、安定性、信頼性、および弾力性のある拡張を備えています。クラウドサーバーECSは、ITハードウェアを購入するための事前準備を排除し、水、電気、天然ガスなどの公共リソースを使用するのと同じくらい便利で効率的にサーバーを使用できるようにし、コンピューティングリソースのすぐに使用できる柔軟なスケーリングを実現します。アリババクラウドECSは、さまざまなビジネスニーズを解決し、ビジネスの発展を支援する革新的なサーバーを提供し続けています。
FTP
FTP(ファイル転送プロトコル)は、TCP / IPプロトコルスイートのプロトコルの1つです。FTPプロトコルには2つのコンポーネントが含まれています。1つはFTPサーバーで、もう1つはFTPクライアントです。FTPサーバーはファイルの保存に使用され、ユーザーはFTPクライアントを使用してFTPプロトコルを介してFTPサーバーにあるリソースにアクセスできます。Webサイトを開発する場合、通常、FTPプロトコルを使用してWebページまたはプログラムをWebサーバーに転送します。さらに、FTP送信の効率が非常に高いため、このプロトコルは通常、ネットワーク上で大きなファイルを転送するときに使用されます。
デフォルトでは、FTPプロトコルはTCPポートの2つのポート20と21を使用します。ここで、20はデータの送信に使用され、21は制御情報の送信に使用されます。ただし、データ送信用のポートとして20を使用するかどうかは、FTPで使用する送信モードに関係します。アクティブモードを採用する場合、データ送信ポートは20です。パッシブモードを採用する場合、最終的に使用するポートは、サーバーとクライアントがネゴシエーションによって決定します。
vsftpd
vsftpd(非常に安全なFTPデーモン)は、Linuxディストリビューションで最も尊敬されているFTPサーバーです。Linux、BSD、Solaris、HP-UNIXなどのシステムで実行できます。他のFTPサーバーではサポートされていない多くの機能をサポートする、完全に無料のオープンソースftpサーバーソフトウェアです。例:非常に高いセキュリティ要件、帯域幅の制限、優れたスケーラビリティ、仮想ユーザーの作成、IPv6サポート、高速など。
シーン体験
次のアドレスは、Alibaba Cloud ExperienceLabが提供するCentOS7.7で構成され、エラスティックパブリックIPで構成されたECSインスタンス(クラウドサーバー)です。このチュートリアルの操作を参照して、FTPサービスをすばやく構築できます。
アリババクラウドシーンリソース:
https://developer.aliyun.com/adc/scenario/74b64efe414c47fbaf305957a7fb458b
ステップ1:vsftpdをインストールする
1.次のコマンドを実行して、vsftpdをインストールします。
yum install -y vsftpd
次の図に示すようにインターフェイスに戻ると、インストールは成功しています。
2.次のコマンドを実行して、FTPサービスが自動的に開始するように設定します。
systemctl enable vsftpd.service
3.FTPサービスを開始します。
systemctl start vsftpd.service
4.次のコマンドを実行して、FTPサービスによって監視されているポートを表示します。
netstat -antup | grep ftp
次の図に示すようなインターフェイスが表示され、FTPサービスが開始され、リスニングポート番号が21であることを示します。この時点で、vsftpdはデフォルトで匿名アクセスを有効にしています。ユーザー名とパスワードを入力せずにFTPサーバーにログインできますが、ファイルを変更またはアップロードする権限はありません。
手順2:vsftpdを構成する
vsftpd(非常に安全なFTPデーモン)は、Linuxディストリビューションで最も尊敬されているFTPサーバーです。vsftpdは、匿名アクセスとローカルユーザーモードの2つのアクセス方法をサポートしています。匿名アクセスモードすべてのユーザーがビルドされたFTPサービスにアクセスできます。ローカルユーザーモードは、ビルドされたFTPサービスにアクセスするために追加されたローカルユーザーのみをサポートします。
注:同時に構成できるのは、匿名ユーザーモードとローカルユーザーモードのいずれか1つだけです。
- 匿名ユーザーモード
a。構成ファイルvsftpd.confを変更します。
vim /etc/vsftpd/vsftpd.conf
iキーを押して編集モードに入り、匿名アップロード許可
anon_upload_enable = YESのコメントを解除します。
b。ESCキーを押して編集モードを終了し、次のように入力します。wqを入力して、vimを保存して終了します。
c。/var/ ftp / pubディレクトリのアクセス許可を変更し、FTPユーザーの書き込みアクセス許可を追加します。
chmod o+w /var/ftp/pub/
d。FTPサービスを再起動します。
systemctl restart vsftpd.service
- ローカルユーザーモード
a。FTPサービス用のLinuxユーザーを作成します。
adduser ftptest
ユーザーのパスワードを設定します。
passwd ftptest
b。FTPサービス用のファイルディレクトリを作成します。
mkdir /var/ftp/test
c。/var/ ftp / testディレクトリの所有者をftptestに変更します。
chown -R ftptest:ftptest /var/ftp/test
d。vsftpd.conf構成ファイルを変更します。
- FTPをアクティブモードに設定するには、次のコマンドを実行します。
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
FTPをパッシブモードに設定するには、次のコマンドを実行します。
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为Linux实例公网IP
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_max_port=1000" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
e。/etc/ vsftpdディレクトリにchroot_listファイルを作成し、そのファイルに例外ユーザーのリストを書き込みます。
#使用vim命令编辑chroot_list文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
vim /etc/vsftpd/chroot_list
注:例外ユーザーがいない場合は、chroot_listファイルを作成する必要があり、コンテンツを空にすることができます。
f。FTPサービスを再起動します。
systemctl restart vsftpd.service
手順3:セキュリティグループを構成する
FTPサービスを設定した後、ECSインスタンスセキュリティグループのインバウンド方向にルールを追加し、次のFTPポートを許可します。
注:ほとんどのクライアントはローカルエリアネットワークにあり、IPアドレスが変換されるため、ipconfigまたはifconfigコマンドによって返されるIPは、クライアントの実際のパブリックIPアドレスではない場合があります。後続のクライアントがFTPサーバーにログインできない場合は、そのパブリックIPアドレスを再確認してください。
1.エクスペリエンスプラットフォームのエクスペリエンスページで、ワンクリックをクリックしてログインURLをコピーし、作成したサブアカウントのユーザー名とパスワードを入力してECSコンソールにログインします。
2.左側のナビゲーションバーで、[ネットワークとセキュリティ]> [セキュリティグループ]をクリックします。
3.構成する必要のあるセキュリティグループを選択し、[操作]列で[ルールの構成]をクリックします。
4.セキュリティグループルールのルールの方向を選択し、[受信方向]> [セキュリティグループルールの追加]をクリックします。具体的な構成は次のとおりです。セキュリティグループを追加します。
ステップ4:クライアントテスト
FTPクライアント、Windowsコマンドラインツール、またはブラウザを使用して、FTPサーバーをテストできます。
注:ブラウザーを使用してFTPサーバーにアクセスするときにエラーが発生した場合は、ブラウザーのキャッシュをクリアして再試行することをお勧めします。
1. Chromブラウザーを開き、アドレスバーにftp:// <FTPサーバーのパブリックネットワークIPアドレス>:FTPポートを入力します。このチュートリアルでは、これはLinuxインスタンスのパブリックネットワークIPアドレスです。例:ftp://139.0.0.1:21。
2.ポップアップダイアログボックスで、ユーザー名とパスワードを入力します。対応する権限でFTPファイルを操作できます。
注:匿名モードでは、エントリのログイン操作は必要ありません。
ログインインターフェイスは次のようになります。
ログインインターフェイスは次のようになります。
アリババクラウドエクスペリエンスラボの
元のテキストからの抜粋:https:
//developer.aliyun.com/adc/scenario/74b64efe414c47fbaf305957a7fb458b