いまさらながらCentOS7の初期セットアップをまとめてみた

#概要
表題にあるとおり、VPSを借りて趣味で構築しているCentOS7の俺的セットアップ内容を纏めてみました。
殆どどこかのHPにある程度のことしかしていないので、備忘録的な感じです

## 環境
さくらのVPS 1G SSDプランを利用してます。初期インストールのパッケージがminimalではないので、
他の環境で利用することが出来ないコマンドを利用しているかもです。(pythonってminimalでありましたっけ？)
参考 : https://help.sakura.ad.jp/hc/ja/articles/206376941

## パッケージ更新
```
皆大好き
# yum update -y
```

## 一般ユーザ sakura作成
```
===================================================================================================================
1. ユーザ名/パスワードを sakura/sakura で作っています。
2. usermod でパスワードを指定するためにpython で暗号化コネコネしています。
3. XXXXXXXXXXXXXXXの箇所は適当にランダムな文字でも入れてください
4. 一般ユーザをwheelグループに所属させることで sudo の権利を与えています。
5. CentOS7はユーザ作成時にデフォルトで /home/ユーザ名 のディレクトリを作成してくれますが、なんとなく 気分で指定してます。 
6. usermodは纏めて実施いただいても大丈夫。
===================================================================================================================

# USER_NAME=sakura
# USER_PASS_ORG=sakura
# USER_PASS=$(sh -c "python -c 'import crypt; print crypt.crypt(\"$USER_PASS_ORG\", \"XXXXXXXXXXXXXXX\")'")
# HOME_DIR="/home/${USER_NAME}"]


# useradd ${USER_NAME}
# usermod -p "${USER_PASS}" "${USER_NAME}"
# usermod -G wheel "${USER_NAME}"
# usermod -d "${USER_NAME}" "${HOME_DIR}"
```

## 公開鍵認証
公開鍵の作成方法については　さくらのサポート情報にいい資料がありましたのでこちらを参照ください
https://help.sakura.ad.jp/hc/ja/articles/206208161


```
========================================================================
1. XXXXXXXXXXXXXXXXXXXXXは先ほど作成して.pubの中身を記載してください。
========================================================================

# PUBLIC_KEY="XXXXXXXXXXXXXXXXXXXXX"
# su -l ${USER_NAME} -c "mkdir ${HOME_DIR}/.ssh"
# su -l ${USER_NAME} -c "chmod 700 ${HOME_DIR}/.ssh"
# su -l ${USER_NAME} -c "echo ${PUBLIC_KEY} > ${HOME_DIR}/.ssh/authorized_keys"
# su -l ${USER_NAME} -c "chmod 600 ${HOME_DIR}/.ssh/authorized_keys"
```

## SSHの初期設定
```
====================================
1. rootでのログイン禁止
2. パスワード認証の禁止
====================================
▼設定を入れる
# SSH_PORT=20222
# sed -i.orig -e "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
# sed -i -e "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config
```

### SSH のポート変更
```
▼設定を入れる
# sed -i -e "s/#Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config

▼設定反映
# systemctl restart sshd
# systemctl status sshd

```

## fail2banポートの変更
さくらのVPSではデフォルトでfail2banにSSHの監視設定が入っている。良いツールなのでこのまま利用を継続する

```
========================================================================
初期の/etc/fail2ban/jail.d/local.confにport設定を追加してあげるだけでよい。
========================================================================
▼設定を入れる
# cp -p /etc/fail2ban/jail.d/local.conf{,.orig}
# echo "port = ${SSH_PORT}" >> /etc/fail2ban/jail.d/local.conf

▼設定反映
# systemctl restart fail2ban
# systemctl status fail2ban
```

## fairewallの穴あけ変更
```
===================================
1. 新しく設定したSSHポートの許可
2. デフォルトのSSHポートの禁止
===================================

▼設定をいれる
# firewall-cmd --add-port=${SSH_PORT}/tcp --permanent
# firewall-cmd --remove-service=ssh --permanent

▼設定されているか確認する
# firewall-cmd --list-all
```

## bashのtab保管設定
```
yum install bash-completion bash-completion-extras -y
```


## reboot
```
reboot
```

# いちいち実行するのが面倒臭い
さくらのクラウドでは既にありましたがさくらのVPSでもスクリプトを作成しておけば初期セットアップを簡易に出来る仕組みが出来ていたので、スクリプトにしてみた。
https://vps-news.sakura.ad.jp/startupscripts/

このスクリプトを事前に登録して、インストール実行時に指定してあげると、ログインのセットアップまで楽々構築できる。
 ※ パスワード情報・鍵情報などを事業者が管理している箇所に入れるのが不安な人はやめておいた方が良いと思います。私は個人勉強環境なのであんまり気にしない。


```
#!/bin/baah
# 参考 https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/
set -x

USER_NAME=sakura
USER_PASS_ORG=sakura
USER_PASS=$(sh -c "python -c 'import crypt; print crypt.crypt(\"$USER_PASS_ORG\", \"YYYYYYYYYYYYYYYYYYYY\")'")
PUBLIC_KEY="XXXXXXXXXXXXXXXXXXXXXXXX"
HOME_DIR="/home/${USER_NAME}"
SSH_PORT=20222

# yum update
yum update -y

# User setting
useradd ${USER_NAME}
usermod -p "${USER_PASS}" "${USER_NAME}"
usermod -G wheel "${USER_NAME}"
usermod -d  "${HOME_DIR}" "${USER_NAME}"

# public key
#su - ${USER_NAME} -c 'ssh-keygen -q -f ${HOME}/.ssh/id_rsa -N ""'
su -l ${USER_NAME} -c "mkdir ${HOME_DIR}/.ssh"
su -l ${USER_NAME} -c "chmod 700 ${HOME_DIR}/.ssh"
su -l ${USER_NAME} -c "echo ${PUBLIC_KEY} > ${HOME_DIR}/.ssh/authorized_keys"
su -l ${USER_NAME} -c "chmod 600 ${HOME_DIR}/.ssh/authorized_keys"

# SSH setting
sed -i.orig -e "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
sed -i -e "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config
## ssh port
sed -i -e "s/#Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config


# fail2ban
## ssh port
cp -p /etc/fail2ban/jail.d/local.conf{,.orig}
echo "port = ${SSH_PORT}" >> /etc/fail2ban/jail.d/local.conf

firewall-cmd --add-port=${SSH_PORT}/tcp --permanent

#tab
yum install bash-completion bash-completion-extras -y

reboot
```

## 参考
https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/