CentOS7 の初期設定をしてみよう

#はじめに
先日、ServersMan@VPSを新規で契約しました！
契約手順を記載してみたので、ServersMan@VPSに興味のある方は是非読んでみてください。
[さくらのクラウドからServersMan@VPSに乗り換えてみる](https://qiita.com/ryuji_i3/items/98618ccf72b4de2a351d)

今回は、CentOS7の初期設定をしていきたいと思います。

#環境
ServersMan@VPS
CentOS7

#パッケージのアップデート
パッケージを全て最新にします。

```
# yum update -y
```

#日本語対応
初期設定値はデフォルトの言語（英語）になっています。

```
# echo $LANG
C
# date
Mon May 14 20:47:28 JST 2018
```

設定ファイルを変更します。　
`vim`で設定ファイルを編集し、`source`で反映させます。

```
# vim ~/.bash_profile
# source ~/.bash_profile
```

編集内容は、最終行に2行追加するだけです。

```vim:.bash_profile
LANG=ja_JP.UTF-8
export LANG
```
再度確認すると、日本語になっていることが分かります。

```
# echo $LANG
ja_JP.UTF-8
# date
2018年  5月 14日 月曜日 20:56:07 JST
```
#ユーザ作成
ユーザ名をryujiとして作成し、sudo権限を追加します。

```
# useradd ryuji
# passwd ryuji
# usermod -G wheel ryuji
```
作成したユーザに切り替えて、sudoコマンドを実行してみます。

```
# su - ryuji
$ sudo visudo
```
sudoで失敗した場合は、rootユーザで`visudo`を実行し、
以下の設定がコメントアウトされていたら、外してみてください。

```vim:visudo
#%wheel  ALL=(ALL)       ALL
%wheel  ALL=(ALL)       ALL
```


#公開鍵認証
パスワード認証ではセキュリティが弱いため、公開鍵認証でログイン出来るようにしていきます。

**サーバ側**

```
# su - ryuji
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
```

**接続元PC側**(Macを使用しています)
`ssh-keygen`コマンドを実行すると、名前などを設定できますが
デフォルトとで問題ない為、全てEnterキーを押します。
`scp`コマンドでサーバに公開鍵を、authorized_keysという名前に変更して登録します。

```
$ ssh-keygen -t rsa -v
$ chmod 600 .ssh/id_rsa.pub
$ scp -P 【ポート番号】~/.ssh/id_rsa.pub ryuji@【IPアドレス】:~/.ssh/authorized_keys
```

公開鍵認証でログイン出来るように設定します。
念のため、ファイルをコピーしてから編集し、`service`で反映させます。
root権限で行います。

```
# mkdir -m 777 /home/ryuji/backup
# cp -ip /etc/ssh/sshd_config /home/ryuji/backup
# vim /etc/ssh/sshd_config
# service sshd restart
```

```vim:/etc/ssh/sshd_config
#PubkeyAuthentication yes
PubkeyAuthentication yes
```

ログイン出来れば完了です。

```
ssh ryuji@IPアドレス
```

#SSH設定
ここまでの設定によって、一般ユーザで公開鍵認証が可能になっているため
不要なログイン方法を禁止し、セキュリティを強化していきます。
**※設定反映後、新規のターミナルでログインができる事を確認出来るまでは、開いているターミナルを閉じないでください。**
**ログインができなくなる可能性があります。**


```
# vim /etc/ssh/sshd_config
# service sshd restart
```
root権限でログイン禁止　

```vim:/etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no
```
パスワードでログイン禁止

```vim:/etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
```

#SSHのポート番号を変更
ServersMan@VPSでは、SSHのポート番号がデフォルト(22番)ではなかったので、変更は不要でした。
変更したい場合は、次のように任意のポート番号に書き換えましょう。

```
# vim /etc/ssh/sshd_config
# service sshd restart
```

```vim:/etc/ssh/sshd_config
#Port 22
Port 【任意のポート番号】
```


#ファイアーウォールの設定
CentOS7では、**iptables** の代わりに **firewalld**を使用するのが一般的です。
なのですが・・・

ServersMan@VPSでは、iptablesがインストールされており、
自動起動の設定までされていたので、iptablesで設定します。
設定内容は、ドットインストールで紹介されていたのもを使用しています。

```
# cp -ip /etc/sysconfig/iptables /home/ryuji/backup/
# vim /etc/sysconfig/iptables
# service iptables restart
```

```vim:/etc/sysconfig/iptables
*filter 
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:SERVICES - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 【変更したSSHポート番号】 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
-A SERVICES -p tcp --dport 9200 -j ACCEPT
-A SERVICES -p tcp --dport 5601 -j ACCEPT
COMMIT
```
ざっくり説明すると
サーバ内から外への通信は全て許可
外からサーバ内への通信は全て拒否し、httpやSSHなどの通信は個別に許可しています。
`iptables -L`で設定内容を確認できます。

#ヒストリサイズの変更(任意、個人的におすすめ)
hisoryコマンドをよく使うので、履歴を記憶できる上限を増やしておきます。

```
# cp -ip /etc/profile /home/ryuji/backup
# vim /etc/profile
# source /etc/profile
```

```vim:/etc/profile
#HISTSIZE=1000
HISTSIZE=10000
```

#SELinux無効化(任意)
SELinuxを利用すると細かいアクセス制御が可能になるそうです。
ただし、SELinuxが原因でうまく動作しないことが多いため、無効化していることが多いです。

設定を確認したところ、ServersMan@VPSでは、
初期設定で無効(Disabled)になっていたので、変更は不要でした。

```
# getenforce
Disabled
```

#次回
LAMP環境を、Ansibleを使用してインストールしてみたいと思います！
[Ansible を初めて使ってLAMP環境を作成してみる](https://qiita.com/ryuji_i3/items/fbcc72561e8749ab50b7)