概要
VMware仮想環境にインストールされたopenEuler 22.03 LTSシステム上で、インターネットアクセスが可能な状態でFTPサーバーを構築します。
FTPサーバーの認証モード
- 匿名モード: パスワードなしで誰でもアクセス可能。セキュリティが低い。
- ローカルユーザーモード: Linuxシステムのユーザー名とパスワードを使用する。
- 仮想ユーザーモード: FTP専用のアカウントを使用し、より安全。
基本設定
1. ソフトウェアパッケージのインストール
[root@ftp-host ~]# dnf -y install vsftpd
2. 設定ファイルの説明
[root@ftp-host ~]# cd /etc/vsftpd [root@ftp-host vsftpd]# ls -l
- /etc/vsftpd/ftpusers: アクセス禁止リストファイル。
- /etc/vsftpd/user_list: アクセス許可リストファイル。
- /etc/vsftpd/vsftpd.conf: FTPサービスの主要な設定ファイル。
3. vsftpdサービスの操作
- 自動起動設定:
[root@ftp-host ~]# systemctl enable vsftpd
- サービス再起動:
[root@ftp-host ~]# systemctl restart vsftpd
- サービス状態確認:
[root@ftp-host ~]# systemctl status vsftpd
- 接続ポート確認:
[root@ftp-host ~]# netstat -tuln | grep ftp
- ログ確認:
[root@ftp-host ~]# journalctl -u vsftpd
匿名モードFTPサーバーの設定
1. 設定ファイル編集
| パラメータ | 機能 |
|---|---|
| anonymous_enable=YES | 匿名アクセスを許可 |
| anon_root=/opt/data | 匿名ユーザーのルートディレクトリ |
| anon_upload_enable=YES | 匿名ユーザーによるアップロードを許可 |
[root@ftp-host ~]# vim /etc/vsftpd/vsftpd.conf # anonymous_enable=YES # local_enable=NO # anon_root=/opt/data
2. 匿名ユーザーのルートディレクトリ作成
[root@ftp-host ~]# mkdir -p /opt/data
3. SELinux設定
[root@ftp-host ~]# setsebool -P ftpd_full_access on
4. ファイアウォール設定
[root@ftp-host ~]# firewall-cmd --permanent --zone=public --add-service=ftp [root@ftp-host ~]# firewall-cmd --reload
ローカルユーザーモードFTPサーバーの設定
1. 設定ファイルの編集
| パラメータ | 機能 |
|---|---|
| local_enable=YES | ローカルユーザーのアクセスを許可 |
| write_enable=YES | 書き込みを許可 |
| chroot_local_user=YES | ユーザーをホームディレクトリに制限 |
[root@ftp-host ~]# vim /etc/vsftpd/vsftpd.conf # anonymous_enable=NO # local_enable=YES # write_enable=YES # chroot_local_user=YES
2. 白名单ファイルの編集
[root@ftp-host ~]# vim /etc/vsftpd/user_list # wangwuを追加 wangwu
3. ユーザーアカウントの追加
[root@ftp-host ~]# useradd wangwu [root@ftp-host ~]# echo "Huawei12#$" | passwd --stdin wangwu
仮想ユーザーモードFTPサーバーの設定
1. 仮想ユーザー情報の作成
[root@ftp-host ~]# gdbmtool -n /etc/vsftpd/vuserdb.db open [root@ftp-host ~]# gdbmtool /etc/vsftpd/vuserdb.db store vuser1 Huawei12#$ [root@ftp-host ~]# chmod 600 /etc/vsftpd/vuserdb.db
2. 仮想ユーザーのマッピングアカウント作成
[root@ftp-host ~]# useradd -d /var/vdir -s /sbin/nologin ftpmap [root@ftp-host ~]# chmod -R 755 /var/vdir
3. PAM認証ファイルの設定
[root@ftp-host pam.d]# cp vsftpd vsftpd_bak [root@ftp-host pam.d]# vim vsftpd auth required pam_userdb.so db=/etc/vsftpd/vuserdb account required pam_userdb.so db=/etc/vsftpd/vuserdb
4. vsftpd設定ファイルの編集
[root@ftp-host ~]# vim /etc/vsftpd/vsftpd.conf # guest_enable=YES # guest_username=ftpmap # allow_writeable_chroot=YES # pam_service_name=vsftpd
5. SELinux設定
[root@ftp-host ~]# setsebool -P ftpd_full_access on
6. ファイアウォール設定
[root@ftp-host ~]# firewall-cmd --permanent --zone=public --add-port=21688-21888/tcp [root@ftp-host ~]# firewall-cmd --reload
補足知識
1. FTP接続の基礎知識
- Portモード: サーバー側からクライアント側へのデータ転送。
- Pasvモード: クライアント側からサーバー側へのデータ転送。
2. vsftpdの接続モード設定
Portモード
connect_from_port_20=YES port_enable=yes
Pasvモード
pasv_enable=yes pasv_max_port=21888 pasv_min_port=21688 pasv_address= port_enable=no
3. 常用FTPコマンド
| コマンド | 機能 |
|---|---|
| ls | ファイル一覧表示 |
| mkdir | ディレクトリ作成 |
| cd | ディレクトリ移動 |
| get | ファイルダウンロード |
| put | ファイルアップロード |
| quit | FTPセッション終了 |