Wordpress / PHP

初心者向け!ConoHaでKUSANAGIの始め方(完)セキュリティ設定

目次

0. セキュリティ設定を行う時の心構え


さて、ConoHaでKUSANAGIを始めるにあたって一番難しいのはここのページの手順です。
なんか大事そうな設定を間違えて変えてしまったかも…という時は、サーバーを再構築して、初期設定からやり直したほうがいいかもしれません。
あきらめてサーバーを削除する時も上記リンク先を参照してください。


1. 新規ユーザーを作る


「root」はどんな設定でも変更できる最強権限を持ちますが、ユーザー名が「root」固定なので、ちょっと仕組みを知っていればあとはパスワードを手に入れるだけでサーバーを丸ごと改ざんできてしまいます。
これを防ぐためにオリジナルのユーザーを作り、rootでのログインを禁止します。

Tera Term等のクライアントソフトでKUSANAGIに接続し、次のコマンドを入力します。
Command Line
adduser 新規ユーザー
ユーザーの追加を行います。
「新規ユーザー」部分は好きな名前を設定。
以降、「新規ユーザー」部分はここで付けた名前に読み替えて進めてください。

Command Line
passwd 新規ユーザー
新規ユーザーのパスワードを変更します。
パスワードを聞かれるので設定します。

Changing password for user 新規ユーザー.
New password:                 
Retype new password:                 
passwd: all authentication tokens updated successfully.

2回聞かれるので同じ内容を入力します。

ここからちょっと難しいです。
次のコマンドを入力します。
Command Line
vim /etc/pam.d/su
これを実行するとこんなカラフルな画面になります。



そのまま続けます。

「vim」はテキストエディタの操作を行うコマンド。
なので今、サーバーにあるテキストを開いている状態です。
この時の操作にはちょっとクセがあります。

画面左下の部分に注目して下さい。

上図のように画面左下に -- INSERT -- の表示があるときが入力モードです。
中身の書き換えはこのモードで行います。

モードの変更、ファイルの保存・閉じるなどは全てキー操作で行います。

vimでテキストファイル操作時に最低限使うキー
入力モードへi
入力モード終了Esc
以下、Escキーで入力モードを終了してからの操作
ファイルを保存せずに閉じる:q!
閉じる:q
ファイルを保存する:w
ファイルを保存して閉じる:wq
何をどう変えたかわからなくなったら、Escを押した後に:q!
これでファイルを保存せずに閉じる。
普通のコマンド画面に戻ります。

さて、今開いているファイルでは、6行目付近の
#auth       required    pam_wheel.so use_uid
これを
auth        required    pam_wheel.so use_uid
こう変更して保存して下さい。 先頭の#を取るだけ。

最初なので、ここだけ細かく流れを書いておきますね。
(1) vimコマンドでファイルを開く
(2) iキーで入力モードへ
(3) 左下に -- INSERT -- が表示されているのを確認
(4) 上下左右キーでカーソル移動
(5) 該当行の先頭の「#」をBackspaceキーで消す
  ※Deleteキーは挙動が違います(変えられますが)
(6) Escキーで入力モード終了
(7) 左下の -- INSERT -- が消えたことを確認
(8) 「:wq」と入力して保存&閉じる

ファイルを閉じると、元のコマンド画面に戻ります。
次はこのコマンドを入力します。
Command Line
gpasswd -a 新規ユーザー wheel
新規ユーザーをroot権限を持てるグループに所属させます。

Adding user 新規ユーザー to group wheel
と表示されたらユーザー作成作業完了です。


2. 新規ユーザーの動作確認


今現在rootでログインしていますが、新規ユーザーに切り替えできるか確認します。
Command Line
su 新規ユーザー
[root@xxx-xxx-xxx-xxx ~]#
(xxx部分は人によって異なる数字)こう表示されていた部分が
[新規ユーザー@xxx-xxx-xxx-xxx root]$
こう変わっていると思います。
これでroot 新規ユーザーへの切り替えはOKです。

では次は逆。
新規ユーザーからrootへの切り替えです。
Command Line
su
Password:                 
rootのパスワードを入力します。
[root@xxx-xxx-xxx-xxx ~]#
またこういう表示に戻ったらOK。


3. ポート番号変更、rootログイン禁止


Tera Termでのログイン時も、WinSCPでのログイン時も、ポート番号を聞かれましたよね。
つまりこれもログインに必要な情報のひとつ。
デフォルトのままだと攻撃されやすいので、変えてしまいます。

次のコマンドを入力します。
Command Line
vim /etc/ssh/sshd_config
また色付きの画面が開きます。
以下の設定を変更します。

#Port 22
Port 好きなポート番号
先頭の#を取り、「22」を別の数字にします。後で使います
ポート番号は好きな数字で構いませんが、自由に割り振っていい番号は49152~65535の範囲とされています。

#Protocol 2
Protocol 2
先頭の#を取るだけ。
SSHのプロトコルを指定します。1は脆弱性が発見されているので、SSH2に限定します。

PermitRootLogin yes
PermitRootLogin no
rootログインを禁止します。

#PubkeyAuthentication yes
PubkeyAuthentication yes
先頭の#を取ります。
鍵認証を許可します。

PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes
PasswordAuthentication no
#PermitEmptyPasswords no
PasswordAuthentication no
PasswordAuthenticationがなぜか2つあります。
両方noにしてパスワードでのログインを禁止します(片方コメントアウトでもいいかも)。

終わったら保存・終了して、コマンド画面に戻ります。

Command Line
systemctl restart sshd.service
sshdの再起動をかけておきます。


4. 新規ユーザー用の鍵を作成


新規ユーザーに切り替えます。
Command Line
su 新規ユーザー
ここから下もちょっとややこしいです。

次のコマンドを順番に入力して下さい。
Command Line
cd ~/
Command Line
mkdir .ssh
Command Line
chmod 700 .ssh
Command Line
cd ~/.ssh
Command Line
ssh-keygen -t rsa
ここでこういう表示が出ます。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/新規ユーザー/.ssh/id_rsa): ファイル名
Enter passphrase (empty for no passphrase):                 
Enter same passphrase again:                 
ファイル名は好きなものを。
ダウンロードする鍵のファイル名になります。
その下のパスフレーズは省略可能。
省略したとして進めます。
未入力のままEnter(2回)。

Command Line
mv ファイル名.pub authorized_keys
Command Line
chmod 600 authorized_keys
そして新規ユーザー用の鍵をダウンロードします。
kusanagiの鍵をダウンロードした時と同様、Tera Termのファイル→SSH SCPを選択し、以下のように設定します。



From: /home/新規ユーザー/.ssh/ファイル名
To: 鍵をダウンロードする保存先フォルダ

これでReceiveボタンを押すと、指定したフォルダに鍵ファイルが保存されます。


5. ログインできるユーザー、ポート番号の確認


ここで、Tera Termを一旦終了し、再度立ち上げます。
設定した内容がちゃんと反映されているか確認していきましょう。



まず、最初の画面。
ポート番号22ではアクセスできなくなっているはずです。
このままOKを押すと…



接続が拒否されます。

では、ポート番号をで設定したものに変更してOKを押すと…



次の画面に進みました。
試しにrootでログインしてみましょう。
ユーザー名にroot、秘密鍵に一番最初にダウンロードした.pemファイルを選択してOKを押すと…



認証に失敗しましたと表示されました。
rootでのログインもちゃんと禁止になっています。

では次。
ユーザー名のところを新規ユーザー(下の図では「user01」)、秘密鍵を先程Tera TermからダウンロードしたファイルにしてOKを押すと…



接続できました!



今後は、新規ユーザーでKUSANAGIにログインし、root権限が必要な操作をする時は「su」コマンドでrootに切り替えて行います。
ちなみにConoHaのコンソールからはこれまで通りroot+パスワードでログインができます。

以降はWinSCPにログインする時(下記リンク先の手順)も、ポート番号をで設定した番号にします。





6. ファイアウォールも設定しておく


APIでセキュリティ対策をする方法もあるんですが、ここではよりお手軽に設定ができるファイアウォールの設定方法を書いておきます。
rootログイン禁止、ポート番号変更、ファイアウォールの設定までできたらセキュリティ対策としては及第点かと…。

超重要!
ここの設定のみ、Tera TermではなくConoHaのコンソールから行ってください。




ここからコンソール画面を開きます。
root+rootパスワードでログイン。

Command Line
systemctl start firewalld.service
ファイアウォールを起動させます。
ここで一旦Tera Term、WinSCPなどのSSH接続ができなくなります。

Command Line
systemctl enable firewalld.service
ファイアウォールが自動起動するように設定。

Command Line
systemctl is-enabled firewalld.service
ファイアウォールの自動起動状態を確認します。
enabled
このように表示されたらOK。

Command Line
firewall-cmd --add-port=ポート番号/tcp
指定ポートを開放します。
ポート番号はで設定したものを指定。
Command Line
firewall-cmd --permanent --add-port=ポート番号/tcp
再起動時にも自動で開放されるようにします。

Command Line
firewall-cmd --remove-service=ssh
SSH接続が制限されているので、外します。
Command Line
firewall-cmd --permanent --zone=public --remove-service=ssh
再起動時にも自動で外れるようにします。

Command Line
firewall-cmd --add-service=http
httpをサービスに入れます。
Command Line
firewall-cmd --permanent --zone=public --add-service=http
同じ設定が再起動時も適用されるようにします。

Command Line
firewall-cmd --add-service=https
httpsも追加する。
Command Line
firewall-cmd --permanent --zone=public --add-service=https
同じ設定が再起動時も適用されるようにします。

Command Line
systemctl restart firewalld.service
一旦再起動をかけます。

Command Line
firewall-cmd --list-all
設定内容の確認。
重要なのはこの2つ。
ports: ポート番号/tcp
services: dhcpv6-client http https
このようになっているか確認しておいて下さい。

ファイアウォールの設定は以上になります。
これでTera Term、WinSCPでもKUSANAGIに接続できる状態に戻っているはずなので、接続できるか確認しておいてください。
接続できない場合はファイアウォールの設定をミスっています。

一応ファイアウォールを止めるコマンドも書いておきます。
起動中のファイアウォールを停止させる
Command Line
systemctl stop firewalld.service
自動起動を解除する
Command Line
systemctl disable firewalld.service


7. その他の設定


公式ドキュメントで推奨されている設定があります。
上記リンク先を参照し、必要に応じて設定してください。

以上!
これで一通り設定は終わりです~。
お疲れ様でした。

Series Index

Tags

ぱんこ

おなごだよ
SE・プログラマーやってたよ
今は事務員のはずだけど開発もさせられるよ

Related Articles

3 Comments

  1. わかりやすく書いていただき感謝します!
    出来たら推奨セキュリティ設定も書いていただきたかったです^^;
    公式のはわかりづらい。。。

    1. コメントありがとうございます。
      あ、最後にさらっと流しちゃった部分ですね…。
      機会があればがんばります~

      1. ご返信ありがとうございます。
        こちらのページを見ながら一生懸命数日コードと格闘したにもかかわらず、今はKUSANAGI管理から簡単にWordPress導入できてしまうようで、結局数クリックでWordPressのインストールできてしまいました。
        しかしこちらを参考にして格闘したことはとてもいい経験になりました!
        ありがとうございましたm(_ _)m

コメントを残す

メールアドレスが公開されることはありません。

Close
Close