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

あまみつ

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

Related Articles

Back to top button