ウェブサイト検索

RHEL 8 で FTP サーバーをインストール、構成、保護する方法


FTP (「ファイル転送プロトコル 」の略) は、コンピュータ ネットワーク上のクライアントとサーバー間のファイル転送に使用される標準的な古いネットワーク プロトコルです。これは、クライアント/サーバー モデル アーキテクチャに基づいて構築されており、FTP クライアント経由でファイルやディレクトリにアクセスし、サーバーにファイルをアップロードしたり、サーバーからファイルをダウンロードしたりすることができます。

前回の記事では、コンピューター ネットワーク上のクライアントとサーバー間でコンピューター ファイルを転送するために、CentOS/RHEL 7 に FTP サーバーをインストール、構成、保護する方法を説明しました。

この記事では、コンピュータ間で基本的なファイル共有を行うために、RHEL 8 に FTP サーバーをインストール、構成、保護する方法について説明します。

RHEL 8 に FTP サーバーをインストールする

1. 安全な FTP パッケージをインストールするには、次の dnf コマンドを使用します。

dnf install vsftpd

2. インストールが完了したら、一時的に vsftpd サービスを開始し、システム起動時に自動的に開始されるように有効にし、次の systemctl コマンドを使用してステータスを確認する必要があります。

systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

3. 次に、システム ファイアウォールで FTP ポート 21 を開き、外部システムから FTP サービスへのアクセスを許可する必要があります。

firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-port=45073/tcp
firewall-cmd --reload

RHEL 8 での FTP サーバーの構成

4. FTP サーバーを設定するには、次の copy コマンドを使用して、メイン FTP 設定ファイル /etc/vsftpd/vsftpd.conf のバックアップを作成する必要があります。

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

5. 次に、お気に入りのコマンド ライン エディタを使用して構成ファイルを開きます。

vi /etc/vsftpd/vsftpd.conf

次のパラメータに対応する値を設定します (設定パラメータの意味については、man vsftpd.conf を参照してください)。

anonymous_enable=NO             
local_enable=YES		
write_enable=YES		
local_umask=022		        
dirmessage_enable=YES	        
xferlog_enable=YES		
connect_from_port_20=YES        
xferlog_std_format=YES          
listen=NO   			
listen_ipv6=YES		        
pam_service_name=vsftpd        

6. 次に、ユーザー リスト ファイル /etc/vsftpd.userlist に基づいてユーザーの FTP サービスへのアクセスを許可または拒否するように FTP を設定する必要があります。

デフォルトでは、/etc/vsftpd.userlist ファイルにリストされているユーザーは、userlist_enable の場合、userlist_deny オプションが YES に設定されているとアクセスを拒否されます。 =YES の場合、アクセスが有効になります。

ただし、パラメータ userlist_deny=NO を設定すると設定が変更され、userlist_file=/etc/vsftpd.userlist に明示的にリストされているユーザーのみがログインを許可されます。

したがって、vsftpd.conf 構成ファイルに次の行を追加します (または、既に存在する場合は、それらのコメントを解除して、示されているように値を設定します)。

userlist_enable=YES                   # allow access to list of usernames from the userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

7. 次に、vsftpd.conf 構成ファイルに次の行を追加して、FTP ユーザーをホーム ディレクトリに制限します。

chroot_local_user=YES		#means local users will be placed in a chroot jail, their home directory after login by default settings.
user_sub_token=$USER         	
local_root=/home/$USER/ftp   	

ファイルの変更を保存して閉じます。

8. 次の SELinux ブール ルールを設定して、FTP によるユーザーのホーム ディレクトリのファイルの読み取り/書き込みを有効にします。

semanage boolean -m ftpd_full_access --on

9. 最後に、vsftpd サービスを再起動して、これまでに行ったすべての変更を反映させます。

systemctl restart vsftpd

RHEL 8 での FTP サーバーのテスト

10. 上記の FTP セットアップが正常に実行されているかどうかをテストするには、まず useradd コマンドを使用して FTP ユーザーを作成し、そのユーザーのパスワードを作成します。

useradd -m -c "Tecmint HowTos" -s /bin/bash tecmint
passwd tecmint

11. 次に、次のように echo コマンドを使用して、ユーザー tecmint をファイル /etc/vsftpd.userlist に追加します。

echo "tecmint" | tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

12. 次に、ユーザーの代替ローカル ルート ディレクトリ (tecmint、実際のディレクトリは異なる可能性があります) を作成し、このディレクトリに適切なアクセス許可を設定します。

mkdir -p /home/tecmint/ftp
chown nobody:nobody /home/tecmint/ftp
chmod a-w /home/tecmint/ftp

13. 次に、ローカル ルートの場所内に、ユーザーが自分のファイルを保存するディレクトリを作成します。

mkdir /home/tecmint/ftp/files
chown tecmint:tecmint /home/tecmint/ftp/files
chmod 0700 /home/tecmint/ftp/files/

14. 次に、次のように任意の FTP クライアントを使用して FTP サーバーに接続します。

ftp [email 
サンプル出力
Connected to 192.168.56.100
220 Welcome to TecMint.com FTP service.
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

それでおしまい!この記事では、RHEL 8 で FTP サーバーをインストール、構成し、セキュリティで保護する方法について説明しました。次回の記事では、SSL/TLS 接続を使用して FTP サーバーを保護する方法を説明します。それまで、私たちと一緒にいてください。