#2 さくらインターネットVPS で CentOS7 + nginx + PHP7 + MySQL 「CentOS7 初期設定編」

この記事は以下の記事の続きです。
#1 さくらインターネットVPS で CentOS7 + nginx + PHP7 + MySQL 「CentOS7 インストール編」

次の記事はこちら
#3 さくらインターネットVPS で CentOS7 + nginx + PHP7 + MySQL 「nginxインストール&設定編」

目次

  1. SSH接続
  2. ユーザーの作成
  3. RSA公開鍵認証の設定
  4. SSHの設定
  5. OS基本設定

1. SSH接続

1-1このままさくらのVNCコンソール(HTML版)で続けてもいいのですが、今後はSSHで接続するわけですし、ここからはSSH接続でやっていきます。
さくらのコントロールパネルは一回閉じてしまっても構いません。
Macユーザーの場合はTerminal.appを開きます。
Windowsの場合はTeratermなどを利用します。
Teratermの使い方はここでは説明しませんので、ここなどを参考にしてください。

「ssh root@153.126.140.105」と入力してSSH接続を試みます。
(IPの部分は自分のサーバーのIPに書き換えてください。さくらVPSのコントロールパネルや「仮登録完了」のメールに記載されています。)
するとパスワードを聞かれるのでrootのパスワードを入力しEnterを入力します。

ssh root@153.126.140.105
mbp:~ macuser$ ssh root@153.126.140.105
root@153.126.140.105's password:
  
1-2正常にログインができました。

[root@ik1-301-10926 ~]# 
  

2. ユーザーの作成

2-1CentOSインストール中の待ち時間に作業用ユーザーを作成しなかった場合には以下のように入力しユーザーを作成します。ここでは「chinpui」というユーザーを作成しますが、お好きなユーザー名を作成してください。

useradd chinpui
[root@ik1-301-10926 ~]# useradd chinpui
[root@ik1-301-10926 ~]# 
  
2-2ユーザーのパスワードを設定します。

passwd chinpui

と入力するとパスワードを聞かれるのでお好きなパスワードを入力してください。パスワードを入力すると再度、聞かれるので同じものを入力します。

[root@ik1-301-10926 ~]# passwd chinpui
ユーザー chinpui のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
  
2-3本項はさくらVPSならやる必要はありません。「2-5」まで飛んでください。もし「2-5」が出来なかった場合に本項から行ってください。追加したユーザーをWheelグループに追加します。Wheelというグループは、Linuxを含むUnix系のOSのシステムでスーパーユーザー(root)特権を得ることのできるユーザーの属するグループの名称です。

usermod -G wheel chinpui
[root@ik1-301-10926 ~]# usermod -G wheel chinpui
[root@ik1-301-10926 ~]# 

何も反応がありませんがこれで追加されています。

2-4一般ユーザでsudoコマンドをパスワードなしで有効にするためにしていきます。

visudo

と入力すると、文字列が出てきます。ここではviについての説明はしないのでVimの使い方 基本操作まとめなどを参考にしてください。

/wheel

と入力してEnterキーを押し、以下の行を探しだします。「%wheel ALL=(ALL)」の前のコメントの#をはず(削除)してください。以下のように最初からはずれていればそのままで結構です。

# Allows people in group wheel to run all commands
%wheel  ALL=(ALL)
2-5先ほど追加したユーザーでSSHで接続ができるかためします。「exit」と入力してEnterキーを押し現在のSSHを切断したあと以下を入力します。(最初にrootで接続した時とは少し異なります)

ssh -l chinpui 153.126.140.105

正常にログインできました。
今後SSHを行う際はrootではなくこちらのユーザーでSSHします。

[root@ik1-301-10926 ~]# exit
ログアウト
Connection to 153.126.140.105 closed.
mbp:~ macuser$ ssh -l chinpui 153.126.140.105
chinpui@153.126.140.105's password: 
[chinpui@ik1-301-10926 ~]$ 

3. RSA公開鍵認証の設定

作業用ユーザーでのSSH接続はできるようになりましたが、パスワード認証ではセキュリティに不安が残りますので、パスワードでのSSH接続の拒否とRSA公開鍵認証でSSHを行えるように設定を行っていきます。RSA公開鍵認証はRSA暗号というものを利用しており、通常のパスワードよりも遥かにセキュリティが高いものとなります。
具体的には

  • クライアントに設置する「秘密鍵」
  • VPS側に設置する「公開鍵」

この2つのペアとなる鍵を生成します。
(ちなみに私はRSAの存在と簡単な原理を科学技術系のノンフィクションで有名なサイモン・シンの「暗号解読」という本で知りました。暗号制作側と解読側の攻防の歴史が紀元前からこの最新のRSA暗号までを一般人にわかるように描かれており本当に面白いです。)

3-1まずVPS側で公開鍵の保管場所を作りたいのですが一応現在のディレクトリを確認してみます。pwdは現在地を表示するコマンドです。

pwd
/home/chinpui
[chinpui@ik1-301-10926 ~]$ 
3-2ホームグループにいることが確認できたので、VPS側で公開鍵の保管フォルダを作ります。

mkdir ~/.ssh
3-3フォルダは作成できたので、フォルダのパーミッションを変更します。パーミッションとはユーザーのアクセス権です。

chmod 700 ~/.ssh
3-4[Mac側] パーミッションも変更できたので次はクライアント側での秘密鍵を生成していきます。Macでの説明となりますのでWindowsの操作とは若干異なります。
VPSに接続しているTerminalはそのままにし、Terminalの別ウィンドウを作成しMac側で秘密鍵を作成します。
Macの場合は以下のコマンドで秘密鍵が生成されます。鍵の名前を聞かれるのでそのままEnterを押します。パスフレーズも聞かれますがデフォルトままでかまわないのEnterを押します。

ssh-keygen -t rsa -v
chmod 700 ~/.ssh
[chinpui@ik1-301-10926 ~]$ ssh-keygen -t rsa -v
Generating public/private rsa key pair.
Enter file in which to save the key (/home/chinpui/.ssh/id_rsa): 
Created directory '/home/chinpui/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
3-5[Mac側] 念のため鍵ができているかどうか確認すると鍵ができていることが確認できます。「id_rsa」はmacに保管する秘密鍵で「id_rsa.pub」はVPSに転送する公開鍵になります。

ls -lat .ssh
mbp:~ macuser$ ls -lat .ssh
total 32
drwxr-xr-x+ 26 chinpui  staff   884 12 14 05:52 ..
drwx------   6 chinpui  staff   204 10 13 06:20 .
-rw-------   1 chinpui  staff  1675 12 29 04:01 id_rsa
-rw-------   1 chinpui  staff   397 12 29 04:01 id_rsa.pub
mbp:~ macuser$ 
3-6[Mac側] 公開鍵をVPSに転送する前にパーミッションを変更します。

chmod 600 ~/.ssh/id_rsa.pub
3-7[Mac側] 公開鍵をVPSに転送します。「:」のあとは転送するフォルダやファイル名を指定しています。ファイル名は「authorized_keys」である必要があります。

scp ~/.ssh/id_rsa.pub chinpui@153.126.140.105:~/.ssh/authorized_keys
mbp:~ macuser$ scp ~/.ssh/id_rsa.pub chinpui@153.126.140.105:~/.ssh/authorized_keys
chinpui@153.126.140.105's password: 
id_rsa.pub                                    100%  397    14.0KB/s   00:00
3-8Mac側ではなく別ウィンドウで接続していたVPS側に戻って、転送が行われているかどうかVPS側を確認します。

ls -lat .ssh
[chinpui@ik1-301-10926 .ssh]$ ls -lat .ssh
合計 4
drwx------. 2 chinpui chinpui  28 12月 16 03:39 .
-rw-------. 1 chinpui chinpui 397 12月 16 03:12 authorized_keys
drwx------. 3 chinpui chinpui  90 12月 14 08:44 ..

「authorized_keys」が転送されていることが確認できました。
次は再度Mac側のTerminalに戻って接続できるか確認を行います。

3-9[Mac側] 接続を行います。以下のコマンドで鍵を利用してSSHを行うことができます。

ssh chinpui@153.126.140.105
mbp:~ macuser$ ssh chinpui@153.126.140.105
Last login: Fri Dec 16 02:52:50 2016 from ngn1-ppp883.tokyo.ocn.ne.jp
[chinpui@ik1-301-10926 ~]$ 

パスワードを聞かれることなくSSHで接続することができました。
しかし、このままではパスワードのログインもできてしまいますし、rootでのログインもできてしまいますのでセキュリティは弱い状態です。

4. SSHの設定

SSHのポート番号を変更する

4-1Rootを持つユーザーになります。Linuxではroot権限を持つユーザーでないと実行できないコマンドがありますが、それらの処理がこのあと続くので最初に実行しておきます。

sudo -s
[chinpui@ik1-301-10926 ~]$ sudo -s
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
[sudo] password for chinpui: 
[root@ik1-301-10926 chinpui]#

パスワードを聞かれますのでタイプするとroot権限を持つユーザーになれました。root権限をもっている場合、先頭が「$」ではなく「#」になります。

4-2これから設定する設定ファイルですが、念のためバックアップをとります。オリジナルという意味で「.org」を最後につけたファイルを複製します。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
4-3設定ファイルを開きたいのですがその前にエディタである「vim」をダウンロードします。

yum install vim

長いメッセージが出たあとに「上記の処理を行います。よろしいでしょうか? [y/N]」と表示されるので「y」をタイプしEnterを押すとインストールが完了します。

4-4設定ファイルをvimで開きます。

vim /etc/ssh/sshd_config
4-5ポート番号を変更するので該当箇所を検索します。

/Port
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any

上記のような箇所があるはずです。「#Port 22」という行の先頭のコメントアウトである「#」を削除し、「22」を別の番号に変更し、以下のようにします。変更する番号は「1024〜65535」までのいずれかですが、どちらかというと数値の高い番号のほうが安全なようです。不安な方は危険なポートと安全なポートを参考にしてください。ここでは63975にしました。また、vimの操作がわからない方は「i」で編集モードに入り、Backspaceで削除し「esc」でノーマルモードに戻り、保存する場合に「:wq」で保存して終了するという操作だけ覚えればなんとかなります。操作が危うい場合には「vi コマンド」などの検索条件でウェブで調べてください。

# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 63975
#AddressFamily any
4-6続けてRootでのログインを拒否するため、「/PasswordAuthentication」で検索します。

/PasswordAuthentication
PasswordAuthentication yes

上記がみつかりますので以下に書き換えます。

PasswordAuthentication no
4-7続けてパスワードでのSSH接続を拒否するため、「/PermitRoot」で検索します。

/PermitRoot
#PermitRootLogin yes

上記を以下に書き換えます。

PermitRootLogin no

これでrootでのログインができなくなります。

4-8更に許可されたユーザーのみSSHできるようにします。最後の行にでも以下を追記します。ユーザー名の箇所は許可したいユーザー名に変更してください。

DenyUsers ALL
AllowUsers chinpui
4-9変更箇所は以上なので保存してファイルを閉じます。

:wq
4-10SELinuxというセキュリティ機能が働いているため、SELinuxにもSSHで利用するポートを教えて上げる必要があります。SELinuxを操作するためにSELinux操作用ツールをインストールします。

yum install setroubleshoot{-server,-plugins,-doc}

インストール中に「Is this ok [y/d/N]」と聞かれるので「y」でEnterを押すとインストールがはじまるので待ちます。

4-11sshdのポートとして 63975を追加します。(少し待ちます)

semanage port -a -t ssh_port_t -p tcp 63975
4-12正しく追加追加できたか確認します。

sudo semanage port -l | grep ssh
ssh_port_t                  tcp      63975, 22

追加されていることが確認できました。

4-13パケットフィルタリングのポート番号も変更します。(CentOS7からはiptablesではなくfirewalldが標準になりました)直接変更するのはNGで、変更するにはサービス定義ファイルをシステムのデフォルトを上書きできる修正用のディレクトリにコピーする必要があります。

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
4-14修正用のサービス定義ファイルを編集します。

vi /etc/firewalld/services/ssh.xml
<port protocol="tcp" port="22"/>

上記の箇所のportをさきほどの番号に変えます。

<port protocol="tcp" port="63975"/>
4-15変更を適用させるためにfirewalldの設定を再読み込みします。

firewall-cmd --reload
4-16sshd_configの書き換えとSELinuxの設定を適用させるためにSSHDを再起動させます。

systemctl restart sshd
[root@ik1-301-10926 ssh]# firewall-cmd --reload
success
4-17これでやっと「rootでのSSHのの禁止」、「SSHのport番号の変更」、「パスワードによるSSHの禁止」を適用させることができます。sshd を再起動します。

systemctl restart sshd
4-18[Mac側] Mac側からSSH接続を行います。もしも今までの設定にミスがあった場合、SSHができなくなってしまうおそれがあるためVPS側のTerminalをそのまま保持しておきましょう。(そうなってしまった場合でもさくらインターネットのVPSコントロールパネルのVNCコンソール(HTML5版)からログインはできます)

ssh -p 63975 chinpui@153.126.140.105
mbp:~ macuser$ ssh -p 63975 chinpui@153.126.140.105
Last login: Fri Dec 16 17:48:04 2016 from ngn1-ppp769.tokyo.ocn.ne.jp
[chinpui@ik1-301-10926 ~]$ 

接続ができました。もうパスワードでのSSH接続はできないので今後はこのRSA認証公開鍵を使った方法でSSHを行いましょう。

5. OS基本設定

ここからは言語、キーマップ、タイムゾーンの設定をします。もしも当サイトの記述通りさくらVPS上でインストールを行った方は言語以外は初期設定されていますが自宅サーバーなどでご自身でCentOS7の設定を行っているからは行う必要があるかもしれません。

5-1ロケールの確認を行います。

localectl status
[chinpui@ik1-301-10926 ~]$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: jp

上記の場合、言語が英語になっています。日本語に変えます。

5-2以下で日本語に設定できます。

localectl set-locale LANG=ja_JP.utf8
[chinpui@ik1-301-10926 ~]$ localectl set-locale LANG=ja_JP.utf8
==== AUTHENTICATING FOR org.freedesktop.locale1.set-locale ===
Authentication is required to set the system locale.
Authenticating as: chinpui
Password: 
==== AUTHENTICATION COMPLETE ===

再度、ロケールを確認すると変更されています。

localectl status
[chinpui@ik1-301-10926 ~]$ localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp
5-3先程のロケール確認時に「VC Keymap」の項目が「jp106」になっていなかった場合はキーマップの変更も行います。

localectl set-keymap jp106
5-4次にタイムゾーンの確認をしてみます。

timedatectl status
[chinpui@ik1-301-10926 ~]$ timedatectl status
      Local time: 土 2016-12-17 16:43:41 JST
  Universal time: 土 2016-12-17 07:43:41 UTC
        RTC time: 土 2016-12-17 07:43:39
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

タイムゾーンは「Asia/Tokyo」になっているのでこの場合は問題ないです。もしそうではなかった場合には以下のコマンドで変更します。

timedatectl set-timezone Asia/Tokyo

これで再度確認すれば変更されているはずです。

5-5次に定期的に日本標準時刻にサーバーの時刻を自動的に設定するような設定を行っていきます。

vi /etc/chrony.conf
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

3行目からはじまる上記4行を以下に変更します。

# 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 ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
5-6設定を反映させるためにchronydを再起動します。

systemctl restart chronyd.service
5-7chronydをサーバー起動時に自動的に起動させるように設定します。

systemctl enable chronyd.service

ちなみにchronydの状態を確認するコマンドは以下です。

chronyc sources
[root@ik1-301-10926 chinpui]# chronyc sources
210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.jst.mfeed.ad.jp          2   6    17    59   -848us[ -908us] +/-   75ms
^+ ntp2.jst.mfeed.ad.jp          2   6    17    59   +451us[ +391us] +/-   84ms
^+ ntp3.jst.mfeed.ad.jp          2   6    17    58    -87us[  -87us] +/-  110ms

続き↓
#3 さくらインターネットVPS で CentOS7 + nginx + PHP7 + MySQL 「nginxインストール&設定編」

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です