【Linux】CentOS7.3のOSインストール後の基本設定

# はじめに
CentOS7.3にansibleを導入するために、OSインストール～基本設定を実施しました。
その際に設定したOS基本設定について、アウトプットしていきたいと思います。

# 環境

|  項目  |  説明  |
| ---- | ---- |
|  Hypervisor  |  ESXi6.7  |
|  OS  |  CentOS7.3  |

※CentOS7.3は「最小限のインストール」になります。

# 基本設定のパラメーター

|  項目  |  設定内容  |
| ---- | ---- |
|  ホスト名  |  tspdev01  |
|  IPアドレス  |  192.168.0.200  |
|  サブネットマスク  |  255.255.255.0(/24)  |
|  デフォルトゲートウェイ  |  192.168.0.1  |
|  DNS設定  |  8.8.8.8/8.8.4.4 |
|  NTP設定  |  ntp.nict.jp  |
|  SElinux設定  |  disabled |
|  NetworkManager  |  停止/自動起動停止  |
|  firewalld  |  停止/自動起動停止 |


# インストールするパッケージ

|  項目  |  設定内容  |
| ---- | ---- |
|  vim  |  viを多機能にしたエディタ |

※使いやすいこともあり、業務でよく使用しています。

# 基本設定

## ホスト名設定

ホスト名を恒久的に`tspdev01`へ設定します。

```bash

[root@localhost ~]# hostnamectl set-hostname tspdev01
[root@localhost ~]# cat /etc/hostname
tspdev01
[root@localhost ~]#
```

## IPアドレス設定

**IPアドレス/サブネットマスク/デフォルトゲートウェイを設定します。**

①事前にIPアドレス情報確認
![ipアドレス.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/42793024-cb41-02d5-6ad1-5b56af59cfdb.jpeg)

**→「ens192」がDOWNしていることを確認。**

※「lo」はループバックインタフェースで自分自身を表すものになります。こちらは設定不要です。
(外部との通信に使うインタフェースではないです。)  


②事前にネットワーク設定ファイルのバックアップ実施

- ファイルバックアップ

`ifcfg-ens192`のバックアップを作成

```bash
[root@tspdev01 ~]# cp -p /etc/sysconfig/network-scripts/ifcfg-ens192 /etc/sysconfig/network-scripts/ifcfg-ens192_20200614
```

- ファイルバックアップ確認

`ifcfg-ens192_20200614`がバックアップファイル

```bash
[root@tspdev01 ~]# ll /etc/sysconfig/network-scripts/ | grep ifcfg
-rw-r--r--. 1 root root   171  6月 14 20:59 ifcfg-ens192
-rw-r--r--  1 root root   171  6月 14 20:59 ifcfg-ens192_20200614
-rw-r--r--. 1 root root   254  9月 12  2016 ifcfg-lo
[root@tspdev01 ~]#
```

③設定ファイル編集

```bash

vi /etc/sysconfig/network-scripts/ifcfg-ens192
```

**【内容】**

```bash
[root@tspdev01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
NAME=ens192
UUID=285600e1-fb02-475a-aa5d-ef105c89a333
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.0.200
PREFIX=24
GATEWAY=192.168.0.1
[root@tspdev01 ~]#
```

設定後、`wq!`にて保存。



**【設定内容】**

|  項目  |  説明  |
| ---- | ---- |
|  TYPE  | 種類 |
|  BOOTPROTO  |  DHCPを使用する場合は"dhcp"、静的に設定する場合は"static"もしくは"none"  |
|  IPV6INIT| IPv6設定実施の有無   |
|  NAME|  NICの名前  |
|  UUID |  ifcfgとNetworkManagerのコネクションとの関連付けを行う  |
|  ONBOOT |  OS起動時にNICを起動させるか  |
|  IPADDR |  IPアドレス(静的設定)  |
|  PREFIX |  サブネットマスク  |
|  GATEWAY |  デフォルトゲートウェイ  |

※「UUID」が指定済みであれば、「MACアドレス」の指定は不要


③設定後、内容確認

```bash

[root@tspdev01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
NAME=ens192
UUID=285600e1-fb02-475a-aa5d-ef105c89a333
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.0.200
PREFIX=24
GATEWAY=192.168.0.1
[root@tspdev01 ~]#
```

④networkサービスの再起動

```bash
[root@tspdev01 ~]# systemctl restart network
[root@tspdev01 ~]#
```

⑤TeraTerm等のターミナルソフトでssh接続できることを確認。

## DNS設定

DNSサーバを**`8.8.8.8`**と**`8.8.4.4`**に設定する。

[Google Public DNS](https://developers.google.com/speed/public-dns)

  

①事前にファイルバックアップ実施

- ファイルバックアップ

```bash
[root@tspdev01 ~]# cp -p /etc/resolv.conf /etc/resolv.conf_20200614
```

- バックアップ確認

```bash
[root@tspdev01 ~]# ll /etc | grep resolv
-rw-r--r--.  1 root root       38  6月 14 21:00 resolv.conf
-rw-r--r--   1 root root       38  6月 14 21:00 resolv.conf_20200614
[root@tspdev01 ~]#
```


②「/etc/resolv.conf」設定

```bash
vi /etc/resolv.conf
```

**【設定内容】**

```bash
nameserver 8.8.8.8
nameserver 8.8.4.4
```

③設定確認

```bash
[root@tspdev01 ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
[root@tspdev01 ~]#
```

## NTP設定

NTPの同期先を`ntp.nict.jp`に設定

[公開ＮＴＰ](https://jjy.nict.go.jp/tsp/PubNtp/index.html)


①設定ファイルのバックアップ

- ファイルバックアップ

```bash
[root@tspdev01 ~]# cp -p /etc/chrony.conf /etc/chrony.conf_20200614
[root@tspdev01 ~]#
```

- バックアップ確認

「chrony.conf_20200614」が存在すること。

```bash
[root@tspdev01 ~]# ll /etc | grep chron
-rw-r--r--.  1 root root     1199  6月 14 21:11 chrony.conf
-rw-r--r--   1 root root     1199  6月 14 21:11 chrony.conf_20200614
-rw-r-----.  1 root chrony     62  6月 14 20:57 chrony.keys
[root@tspdev01 ~]#
```

②設定ファイル更新


```bash
vi /etc/chrony.conf
```

【設定内容】

```bash
      1 # Use public servers from the pool.ntp.org project.
      2 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
      3 # server 0.centos.pool.ntp.org iburst ←　コメントアウト
      4 # server 1.centos.pool.ntp.org iburst ←　コメントアウト
      5 # server 2.centos.pool.ntp.org iburst ←　コメントアウト
      6 # server 3.centos.pool.ntp.org iburst ←　コメントアウト
      7 server ntp.nict.jp iburst ←　追加
      8
      9 # Ignore stratum in source selection.
     10 stratumweight 0
     11
     12 # Record the rate at which the system clock gains/losses time.
     13 driftfile /var/lib/chrony/drift
     14
```

設定後、`wq!`にて保存


③ファイル内容確認

修正箇所が反映されているか確認

```bash
[root@tspdev01 ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server ntp.nict.jp iburst

# Ignore stratum in source selection.
stratumweight 0

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
rtcsync

~~
```

④`chronyd`サービス再起動

- サービス再起動

```bash
[root@tspdev01 ~]# systemctl restart chronyd
```

- 起動確認

`active (running)`になっていればOK

```bash

[root@tspdev01 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2020-06-14 23:19:27 JST; 54s ago
  Process: 9995 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 9991 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 9993 (chronyd)
   CGroup: /system.slice/chronyd.service
           mq9993 /usr/sbin/chronyd

 6月 14 23:19:27 tspdev01 systemd[1]: Starting NTP client/server...
 6月 14 23:19:27 tspdev01 chronyd[9993]: chronyd version 2.1.1 starting (+C...)
 6月 14 23:19:27 tspdev01 chronyd[9993]: Frequency 12.670 +/- 0.485 ppm rea...t
 6月 14 23:19:27 tspdev01 systemd[1]: Started NTP client/server.
 6月 14 23:19:32 tspdev01 chronyd[9993]: Selected source 2001:ce8:78::2
Hint: Some lines were ellipsized, use -l to show in full.
[root@tspdev01 ~]#
```

- 自動起動確認

`enabled`になっていることを確認
※`enabled`になっている場合、OS起動時にサービスが自動で立ち上がります。

```bash
[root@tspdev01 ~]# systemctl is-enabled chronyd
enabled
[root@tspdev01 ~]#
```

⑤時刻同期確認

- timedatectl status

```bash
[root@tspdev01 ~]# timedatectl status
      Local time: 日 2020-06-14 23:22:59 JST
  Universal time: 日 2020-06-14 14:22:59 UTC
        RTC time: 日 2020-06-14 14:22:59
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@tspdev01 ~]#
```
→`NTP enabled`と`NTP synchronized`が「yes」になっていることを確認。

- chronyc sources

```bash
[root@tspdev01 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 2001:ce8:78::2                1   6   377    28   -301us[ -763us] +/- 8424us
[root@tspdev01 ~]#
```
→`^*`であれば問題なし。(時刻同期されている状態)


## SElinux無効化設定

### そもそもSElinuxとは？？

「SElinux」とは、アクセス制御に使用するセキュリティ関連の機能になります。
実際の構築業務では、無効化にすることが多いです。

「SELinux」の詳細を知りたい方は、下記リンクを参照下さい。
[【ざっくりと理解する】SELinuxとは？](https://eng-entrance.com/linux-selinux)


### 無効化手順
　　
①現在の状態を確認

```bash
[root@tspdev01 ~]# getenforce
enforcing
[root@tspdev01 ~]#
```
→`enforcing`になっていることを確認。

※`enforcing`はSELinuxが有効という意味。
セキュリティポリシーに違反するアクセスを拒否する。
　　

②設定ファイルバックアップ

- ファイルバックアップ

```bash
[root@tspdev01 ~]# cp -p /etc/selinux/config /etc/selinux/config_20200614
```

- バックアップ確認

`config_20200614`が存在することを確認

```bash
[root@tspdev01 ~]# ll /etc/selinux | grep config
-rw-r--r--. 1 root root  546  6月 14 21:01 config
-rw-r--r--  1 root root  546  6月 14 21:01 config_20200614
[root@tspdev01 ~]#
```
　　
③設定ファイル修正

```bash
[root@tspdev01 ~]# vi /etc/selinux/config
```

【設定内容】

```bash
      1
      2 # This file controls the state of SELinux on the system.
      3 # SELINUX= can take one of these three values:
      4 #     enforcing - SELinux security policy is enforced.
      5 #     permissive - SELinux prints warnings instead of enforcing.
      6 #     disabled - No SELinux policy is loaded.
      7 SELINUX=disabled ←「enforcing」から「disabled」に変更
      8 # SELINUXTYPE= can take one of three two values:
      9 #     targeted - Targeted processes are protected,
     10 #     minimum - Modification of targeted policy. Only selected processes         are protected.
     11 #     mls - Multi Level Security protection.
     12 SELINUXTYPE=targeted
     13
     14
```

設定後、「wq!」にて保存する。

　　
④設定後ファイル確認

```bash
[root@tspdev01 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

[root@tspdev01 ~]#
```
　　
⑤OS再起動

SElinux設定反映のために、OS再起動が必要。

```bash
[root@tspdev01 ~]# reboot
```
　　

⑤再度、SElinuxの状態を確認。

「Disabled」になっていることを確認。

```bash
[root@tspdev01 ~]# getenforce
Disabled
[root@tspdev01 ~]#
```

## サービス停止/自動起動停止


|  項目  |  設定内容  |  備考  |
| ---- | ---- | ---- |
|  NetworkManager  |  停止/自動起動停止  | ネットワークを動的に設定できるサービス |
|  firewalld |  停止/自動起動停止 | その名の通りファイアウォールサービス |

両サービスとも、使用しないため停止します。

### NetworkManager停止/自動起動停止

①NetworkManagerサービス停止/自動起動停止

- NetworkManagerサービス停止

```bash
systemctl stop NetworkManager
```

- NetworkManagerサービス自動起動停止

```bash
systemctl disable NetworkManager
```
　　
②NetworkManagerサービス確認

- NetworkManagerサービス停止確認

`Active: inactive (dead)`であることを確認。

```bash
[root@tspdev01 ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:NetworkManager(8)
[root@tspdev01 ~]#
```
  
- NetworkManagerサービス自動起動停止確認

`disabled`であることを確認。

```bash
[root@tspdev01 ~]# systemctl is-enabled NetworkManager
disabled
[root@tspdev01 ~]#
```


### firewalld停止/自動起動停止

①firewalldサービス停止/自動起動停止

- firewalldサービス停止

```bash
systemctl stop firewalld
```

- firewalldサービス自動起動停止

```bash
systemctl disable firewalld
```
　　
②firewalldサービス確認

- firewalldサービス停止確認

`Active: inactive (dead)`であることを確認。

```bash
[root@tspdev01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@tspdev01 ~]#
```


- firewalldサービス自動起動停止確認

`disabled`であることを確認。

```bash
[root@tspdev01 ~]# systemctl is-enabled firewalld
disabled
[root@tspdev01 ~]#
```

# パッケージインストール

今回は`vim`のみインストールする。

## 前提条件

- インターネットへ接続できていること
- DNS設定が完了していること

## インストール手順

①repository読み込み

- キャッシュクリア

```bash
[root@tspdev01 ~]# yum clean all
読み込んだプラグイン:fastestmirror
リポジトリーを清掃しています: base extras updates
Cleaning up everything
[root@tspdev01 ~]#
```

- repository読み込み

`/etc/yum.repos.d/`直下のrepositoryファイルの読み込みを実施。
※今回、デフォルトのファイルで変更は不要

```bash
[root@tspdev01 ~]# yum repolist all
読み込んだプラグイン:fastestmirror
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): base/7/x86_64/group_gz                              | 153 kB   00:00
(2/4): extras/7/x86_64/primary_db                          | 194 kB   00:00
(3/4): updates/7/x86_64/primary_db                         | 2.1 MB   00:01
(4/4): base/7/x86_64/primary_db                            | 6.1 MB   00:02
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
リポジトリー ID                  リポジトリー名                     状態
C7.0.1406-base/x86_64            CentOS-7.0.1406 - Base             無効
C7.0.1406-centosplus/x86_64      CentOS-7.0.1406 - CentOSPlus       無効
C7.0.1406-extras/x86_64          CentOS-7.0.1406 - Extras           無効
C7.0.1406-fasttrack/x86_64       CentOS-7.0.1406 - CentOSPlus       無効
C7.0.1406-updates/x86_64         CentOS-7.0.1406 - Updates          無効
C7.1.1503-base/x86_64            CentOS-7.1.1503 - Base             無効
C7.1.1503-centosplus/x86_64      CentOS-7.1.1503 - CentOSPlus       無効
C7.1.1503-extras/x86_64          CentOS-7.1.1503 - Extras           無効
C7.1.1503-fasttrack/x86_64       CentOS-7.1.1503 - CentOSPlus       無効
C7.1.1503-updates/x86_64         CentOS-7.1.1503 - Updates          無効
C7.2.1511-base/x86_64            CentOS-7.2.1511 - Base             無効
C7.2.1511-centosplus/x86_64      CentOS-7.2.1511 - CentOSPlus       無効
C7.2.1511-extras/x86_64          CentOS-7.2.1511 - Extras           無効
C7.2.1511-fasttrack/x86_64       CentOS-7.2.1511 - CentOSPlus       無効
C7.2.1511-updates/x86_64         CentOS-7.2.1511 - Updates          無効
base/7/x86_64                    CentOS-7 - Base                    有効: 10,070
base-debuginfo/x86_64            CentOS-7 - Debuginfo               無効
base-source/7                    CentOS-7 - Base Sources            無効
c7-media                         CentOS-7 - Media                   無効
centosplus/7/x86_64              CentOS-7 - Plus                    無効
centosplus-source/7              CentOS-7 - Plus Sources            無効
cr/7/x86_64                      CentOS-7 - cr                      無効
extras/7/x86_64                  CentOS-7 - Extras                  有効:    397
extras-source/7                  CentOS-7 - Extras Sources          無効
fasttrack/7/x86_64               CentOS-7 - fasttrack               無効
updates/7/x86_64                 CentOS-7 - Updates                 有効:    754
updates-source/7                 CentOS-7 - Updates Sources         無効
repolist: 11,221
[root@tspdev01 ~]#
```


②「vim」インストール

```bash
[root@tspdev01 ~]# yum install vim -y
```

最終行に「完了しました！」と表示されれば、問題なし。

```bash
  perl-Pod-Escapes.noarch 1:1.04-295.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7
  perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-5.el7
  perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7
  perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7
  perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-295.el7
  perl-macros.x86_64 4:5.16.3-295.el7
  perl-parent.noarch 1:0.225-244.el7
  perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7
  perl-threads-shared.x86_64 0:1.43-6.el7
  vim-common.x86_64 2:7.4.629-6.el7
  vim-filesystem.x86_64 2:7.4.629-6.el7

完了しました!
[root@tspdev01 ~]#
```

# 参考記事
[CentOS6・7のifcfg他設定ファイルについて](https://qiita.com/liqsuq/items/50173a587029e5d6ca23)
[【 getenforce 】コマンド／【 setenforce 】コマンド――SELinuxのモードを表示／一時的に変更する](https://www.atmarkit.co.jp/ait/articles/1808/16/news016.html)
[CentOS 7 で NTP クライアントを設定する](http://balunsoftware.jp/info/2015/03/centos7ntp/)