GCPでFTPサーバーの環境構築をしてみたので備忘録

# 構築環境(GCPの無料枠で構成)
- VMインスタンス構成<BR>汎用<BR>N1シリーズ<BR>マシンタイプ: f1-micro<BR>ブートディスク: OS CentOS7<BR>HDD 30GB<BR>

# 作業内容
- GoogleCloudPlatform(以下GCP)のアカウントを作成
- GCPでプロジェクト作成
- ComputeEngine でVMインスタンスを作成
- VMインスタンス上にFTPサーバ(vsftpd)のインストール
- VMインスタンス上のFTPサーバ(vsftpd)の設定ファイル編集
- vsftpdのサービスを起動
- GCPのVPCネットワークでファイアウォールの設定
- ファイアウォールの設定をVMインスタンスに割り当てる
- PCからFFFTPで接続テスト

# GoogleCloudPlatform(以下GCP)のアカウントを作成
- gmailアカウントを作成して、chromeブラウザ等でアカウントにログインする

# GCPでプロジェクト作成
- 適当な名前でプロジェクトを作成する

# ComputeEngine でVMインスタンスを作成
- 左上の [三] のメニューから ComputeEngine を選択
- VMインスタンスを選択
- 画面上の作成ボタンを押下して、インスタンスの構成を選択して作成する

マシン構成
汎用: N1シリーズ, f1-micro
ブートディスク: OS: CentOS 7, 永続30GB

上記構成で作成

# VMインスタンス上にFTPサーバ(vsftpd)のインストール
- GCPのVMインスタンス　ページの作成済みインスタンスの項目にある接続から、ブラウザウィンドウで開く　を選択しVMインスタンスに接続する
- Linuxとか、Unixとかの黒画面が出てくるのでコマンドで操作する
- gmailアカウントのユーザー名部( xxxxx @gmail.comの@の左部)で、ユーザーが自動で登録されてるぽい<br>``ftpuser @gmail.com ``でアカウントを作成したと``仮定``しておく

## 黒画面でコマンドを入力
### とりあえず、スーパーユーザーにする

```
sudo -s
```

### ユーザーにパスワードを設定する
```
passwd ftpuser
# と打ち込むと、ftpuser に対して、
# 設定するパスワードの入力を求められるので入力してEnter
```
```
Changing password for user ftpuser.
New password:
# と入力を求められるので、パスワードを入力
# 打ち込んだ文字列は表示されない
```
```
Retype new password:
# 入力確認されるので、設定したパスワードを入力してEnter
# 設定と確認で入力したパスワードが一致してれば、

passwd: all authentication tokens updated successfully.
# と出れば、設定完了
# ここで設定したパスワードは、最後のFFFTP で使用する
```

### vsftpd をインストールする

```
yum install vsftpd
```
/etc/vsftpd にインストールされる

### vsftpd.conf の設定ファイルをviエディタで調整する

```
vi /etc/vsftpd/vsftpd.conf
```
これで、VIエディタで vsftpd.conf のファイルをオープンした状態

```
anonymous_enable=YES
↓
anonymous_enable=NO
```
```
dirmessage_enable=YES
↓
dirmessage_enable=NO
```
```
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
ascii_upload_enable=YES
ascii_download_enable=YES
```
```
listen=NO
listen_ipv6=YES
↓
listen=YES
listen_ipv6=NO
```
最下部に加筆する

```
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# userlist_deny=NO にすることで、user_list に指定されてるユーザーのみアクセスを許可するようになるらしい

use_localtime=YES

pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=61000
pasv_max_port=61010
pasv_address=xxx.xxx.xxx.xxx 
# pasv_enable でFTPのパッシブモードを有効にする
# pasv_min_port, pasv_max_port は、データ転送で使うポートの範囲を指定する
# pasv_address は GCPのVMインスタンスのグローバルIPを指定する

listen_port=61234

```
- 編集が終わったら保存して閉じる

#### /etc/vsftpd/user_list を編集
ファイルの存在を確認するためにコマンド　ﾍﾟｼｯ!

```
ls /etc/vsftpd
```
user_list がリストアップされたら、存在してるけど
ない場合は以下コマンドを使ってファイルを作る

```
#作る
touch /etc/vsftpd/user_list
```
```
#編集する
vi /etc/vsftpd/user_list
```
```
# ftpuser だけ記載して、あとは削除して保存
ftpuser
```

### vsftpdのサービスを起動
```
# 自動起動の設定をしておく
systemctl enable vsftpd

# 手動で起動する
systemctl start vsftpd

# 起動確認する
systemctl status vsftpd
```

### GCPのVPCネットワークでファイアウォールの設定
- GCPのほうに戻って上部メニューの[三]から、VPCネットワークへ移動
- ファイアウォールに移動
- 上部の``ファイアウォールルールを作成``で、ルールを追加(上り/下りで2件追加する)

#### 上りの設定
- 名前は任意、とりあえず ``use-ftp-up`` とかで作る
- トラフィックの方向を``上り``を選択
- ターゲットの項目で、タグをつける：例 ``use-ftp-up``
- プロトコルとポートで、指定したプロトコルポートで20-21と<BR>``vsftpd.conf``で指定した<BR>``pasv_min_port,pasv_max_port``の範囲を指定する( 61000-60010 )<BR>``vsftpd.confでlisten_portで設定したポート番号``も設定する( 例: 61234 )

#### 下りの設定
- 名前は任意、とりあえず ``use-ftp-dl`` とかで作る
- トラフィックの方向を``下り``を選択
- ターゲットの項目で、タグをつける：例 ``use-ftp-dl``
- プロトコルとポートで、指定したプロトコルポートで<BR>``vsftpd.conf``で指定した<BR>``pasv_min_port,pasv_max_port``の範囲を指定する( 61000-60010 )

### ファイアウォールの設定をVMインスタンスに割り当てる
- GCPのComputeEngine でVMインスタンスを選択
- 上部メニューから、編集を行う
- 設定の中間あたりの位置にある、``ネットワークタグ``に先ほど作った``ファイアウォールルールのタグ``を設定する<BR>use-ftp-upとuse-ftp-dl

### PCからFFFTPで接続テスト
- FFFTPのホスト名に、VMインスタンスのグローバルIPを設定
- ユーザー名に、作ったユーザー名を設定( 例:ftpuser )
- VMインスタンス側で設定した、ftpuserのパスワードを指定する
- 拡張タブのポート番号を、``vsftpd.confで設定したポート番号``にする(例:61234)

### 上り下りとも転送できることを確認したら
- VMインスタンスは削除