IBM Cloud IaaS上のRHEL7の新規構築 from MAC

# はじめに

[IBM Cloud IaaS](https://www.ibm.com/cloud-computing/jp/ja/ibm-cloud_iaas/) 上でRHEL7環境を構築する方法を記載します。
ほとんど自分のためのメモ書きです・・・。

CentOSとか他のクラウドとかでも利用できるかと思いますのでご活用ください。

ちなみにこちらのサイトに IBM Cloud IaaSのドキュメント類が充実しております。
ご参照ください。

[SoftLayer_JPN](https://ibm.co/2HqCjez)

# 構築方法について

構築方法を記載いたします。

## 手順
ここでは初期構築手順として以下を記載いたします。
1. Portal上で申し込み
2. SSLでログイン
3. ftpサーバの構築
4. rootユーザのログイン禁止
5. firewallの設定
6. 言語設定
7. タイムゾーン設定

## 1.Portal上で申し込み

IBM Cloud IaaS上にログインして、オーダーしてください
[1.2 仮想サーバーを起動するには？](https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/W2e55790226f1_47d0_a63b_84202b05783a/page/1.2%20%E4%BB%AE%E6%83%B3%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F)を参照に、オーダーしてください。OSは「RHEL」を選んでください。

## 2.SSLでログイン

サーバ構築が環境したら、SSLでログインいたします。
[1.4 サーバーへログインするには？](https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/W2e55790226f1_47d0_a63b_84202b05783a/page/1.4%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%B8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F)を参照にしてください。

RHELへSSLログインする場合は、MACのターミナルを起動して、以下のコマンドを入力します。
パブリックアドレスへのログインできます。

```:ログイン
$ ssh -l root xx.xx.xx.xx
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
ECDSA key fingerprint is 
SHA256:hlE3bLB2sRKB1FrVazfaGITxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xx.xx.xx.xx' (ECDSA) to the list of known hosts.
root@xx.xx.xx.xx's password: 
```
## 3. ftpdの導入
yumを使って、必要なコンポーネントを導入するのですが、
ここではftpdを導入する方法を記載いたします。

###  3-1. vstfpdのモジュール導入

```:vstfpdのモジュール導入
[root@xxx01 ~]# yum install -y vsftpd
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
rhel-7-server-optional-rpms                              | 2.0 kB     00:00     
rhel-7-server-rpms                                       | 2.0 kB     00:00     
rhel-7-server-supplementary-rpms                         | 2.0 kB     00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ vsftpd.x86_64 0:3.0.2-22.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package      アーキテクチャー
                           バージョン            リポジトリー              容量
================================================================================
インストール中:
 vsftpd       x86_64       3.0.2-22.el7          rhel-7-server-rpms       169 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 169 k
インストール容量: 348 k
Downloading packages:
vsftpd-3.0.2-22.el7.x86_64.rpm                             | 169 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : vsftpd-3.0.2-22.el7.x86_64                      1/1 
  検証中                  : vsftpd-3.0.2-22.el7.x86_64                      1/1 

インストール:
  vsftpd.x86_64 0:3.0.2-22.el7                                                  

完了しました!
```

###  3-2. vstfpdのサービス起動

```:vstfpdのサービス起動＆各種設定
[root@xxx01 ~]# systemctl start vsftpd.service
[root@xxx01 ~]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2018-03-11 19:54:51 CDT; 4s ago
  Process: 2309 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2310 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─2310 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

 3月 11 19:54:51 XXXX.com systemd[1]: Starting Vsftpd ftp daemo...
 3月 11 19:54:51 XXXX.com systemd[1]: Started Vsftpd ftp daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@XXXX01 ~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@XXXX01 ~]# sed -i 's/root/#root/g' /etc/vsftpd/user_list /etc/vsftpd/ftpusers
```

###3-3. ftpコマンド導入

```:ftpコマンド導入
[root@XXX01 ~]# yum install -y ftp
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
rhel-7-server-optional-rpms                              | 2.0 kB     00:00     
rhel-7-server-rpms                                       | 2.0 kB     00:00     
rhel-7-server-supplementary-rpms                         | 2.0 kB     00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ftp.x86_64 0:0.17-67.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package    アーキテクチャー
                          バージョン            リポジトリー               容量
================================================================================
インストール中:
 ftp        x86_64        0.17-67.el7           rhel-7-server-rpms         61 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 61 k
インストール容量: 96 k
Downloading packages:
ftp-0.17-67.el7.x86_64.rpm                                 |  61 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : ftp-0.17-67.el7.x86_64                          1/1 
  検証中                  : ftp-0.17-67.el7.x86_64                          1/1 

インストール:
  ftp.x86_64 0:0.17-67.el7                                                      

完了しました!
```

## 4. rootユーザのログイン禁止

新しいユーザを作成し、パスワードを設定して、
その後にrootユーザのログインを禁止します

### 4-1. ユーザ作成
```:ユーザ作成
[root@xxx01 ~]# useradd <ユーザ名>
[root@xxx01 ~]# id -a <ユーザ名>
uid=1001(<ユーザ名>) gid=1001(<ユーザ名>) groups=1001(<ユーザ名>)
[root@xxx01 ~]# passwd <ユーザ名>
ユーザー <ユーザ名> のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@xxx01 ~]# su - <ユーザ名>
```

### 4-2. rootユーザログイン禁止

rootユーザのログイン禁止は、sshd_configファイルで、"PermitRootLogin no"を設定します。その後にsshのサービスを再起動すれば、反映されます。

*以下では 初期ファイルからのdiffコマンドしか記載しておりません。。。

```:rootユーザログイン禁止
[root@xxx01 ~]# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
[root@xxx01 ~]# vi /etc/ssh/sshd_config
[root@xxx01 ~]# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
38c38
< PermitRootLogin no 
---
> #PermitRootLogin yes
[root@xxx01 ~]# service sshd restart 
Redirecting to /bin/systemctl restart sshd.service
```

これで、rootユーザでsshで入れなくなります。
ssh ＜host-ipアドレス＞
で、ユーザ名を入力してログインしてください。

## 5. firewallの設定
RHEL7のfirewallは、firewalld になります。ここでは、http/ftpを登録する設定を記載します。

###5-1 ftpポート設定

以下のような感じで設定します。
firewalldを起動後、publicにftpポート(21/tcp)を設定し、リロードします。
--permanentをオプションで指定することで再起動後も反映されます。

```:rootユーザログイン禁止
[root@wxxx01 sysconfig]# systemctl start firewalld
[root@wxxx01 sysconfig]# firewall-cmd --permanent --add-port=21/tcp
success
[root@xxx01 sysconfig]# systemctl reload firewalld
```
これで完了です。

### 5-2. httpポート設定

httpはサービスとして登録したいと思います。
/usr/lib/firewalld/services/http.xml ファイルを /etc/firewalld/services/http.xml にコピーします。
/etc/firewalld/services/配下のxmlファイルがサービスごとの設定となります。
*ZABBIXとかはこちらのhttp.xmlをzabbix.xmlとかに変更して記載することになります。

以下のように記載することで、port 8080 もhttpポートととして解放されます。

```xml:http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
<port protocol="tcp" port="80"/>
<port protocol="tcp" port="8080"/>
```

その後、設定いたします。

```bash:rootユーザログイン禁止
[root@xxx01 sysconfig]# systemctl start firewalld
[root@xxx01 sysconfig]# firewall-cmd --permanent --add-service=http
success
[root@xxx01 sysconfig]# systemctl reload firewalld
```

# 6.言語設定
```bash:言語設定・キーボード設定
[root@xxx01 sysconfig]# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: n/a
[root@xxx01 sysconfig]# localectl set-locale LANG=ja_JP.utf8
[root@xxx01 sysconfig]# echo $LANG
ja_JP.UTF-8
[root@xxx01 sysconfig]# localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: n/a
[root@xxx01 sysconfig]# localectl set-keymap jp
[root@xxx01 sysconfig]# localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp
      X11 Layout: n/a
[root@xxx01 sysconfig]# localectl --no-convert set-keymap jp
[root@xxx01 sysconfig]# localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp
      X11 Layout: n/a
[root@xxx01 sysconfig]# 
```

# 7. タイムゾーン設定
```タイムゾーン設定
[root@xxx01 sysconfig]# timedatectl set-timezone Asia/Tokyo
[root@xxx01 sysconfig]# timedatectl
      Local time: 水 2020-06-24 16:19:31 JST
  Universal time: 水 2020-06-24 07:19:31 UTC
        RTC time: 水 2020-06-24 07:19:31
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@xxx01 sysconfig]# 
```

# おわりに

とりあえずの備忘録となります。
RHELでの初期設定で他にもあれば追加するつもりです。