この記事は
Conoha VPSでのkusanagi初期設定|ノンプログラマーでも超高速サーバーを!①
の続編です。
前回までで、
世界最高速クラスのwordpressパッケージであるkusanagiをconoha VPSを利用してインストール。
さらに、wordpressをインストールし、取得したドメインでwordpressサイトを表示させるところまで行いました。
しかし、前回までの状態では全くセキュリティ対策が施されていません。
ブルートアタック等のスパム攻撃で、他人にログインされてしまう危険性があります。
そこで今回は、前回設定したkusanagiについてセキュリティ対応を行います。
他人にサーバーへログインなどされないよう、対応させていきましょう。
目次
kusanagiセットアップ全体の流れ
- Conoha VPSの契約
- Conoha VPSにkusanagiをインストール
- kusanagiプロビジョニング
- ドメインとサーバーを紐付ける
- wordpress初期設定
- 常時SSL化→古いURLをリダイレクト設定
Conoha VPSでのkusanagi初期設定|ノンプログラマーでも超高速サーバーを!① | 魔法使いのマーケティングブログ
— (今回はここから!) —-
- SSH接続設定&サーバセキュリティ設定(ここが大変)
— (今回はここまで!) —-
- サーバー側キャッシュ設定
- wordpress管理セキュリティ対応
kusanagi-キャッシュ-wordpress設定|非エンジニアでも超高速サーバーを!③ | 魔法使いのマーケティングブログ
ということで今回の記事では
SSH接続設定とサーバーセキュリティ設定を行い、安全性を高めていきましょう!
前回部分でサーバーを終了(停止)させた方は、Conohaのコントロールパネルから再起動を行ってください。
OSインストール〜kusanagiプロビジョニング〜ドメイン設定
がまだの方は、前回の記事「Conoha VPSでのkusanagi初期設定」をご参照下さい。
何はともあれ、rootユーザーでVPSへSSH接続してみよう
ターミナルからSSHする理由は、Conoha VPSコンソールが使いづらいため
現段階で、Conoha VPS管理画面コンソールから
直接rootログインすることはもちろん可能です。
しかしConohaコンソール画面は
スクロールが非常にやりにくいなど、あまり親切な作りであるとは言えません。
コンソール画面、上下左右のスクロールバーを掴んで
スクロールさせることはできます。
しかし、画面上でのスクロールや、方向キーでのスクロールは受け付けないのです。
私はOS側ディスプレイの解像度を下げ
画面を大きく表示させているため、スクロールバーがうまく表示されず困ってしまいます。
そこで、ひとまず手元のターミナル等からSSHを試みてみましょう。
rootユーザーでVPSへSSH接続するコマンド
ターミナルから、VPSへSSH接続するコマンドは以下の通り。
< sshコマンド(秘密鍵使用なし) >
# ssh [email protected] (pw)
パスワードログインを設定している場合は、接続先指定の後にパスワード(pw)を指定してください。
@000.00.00.00
の箇所には、VPSのサーバーのIPアドレスの数値を入力してください。
<sshコマンド(秘密鍵使用)>
ssh -i ~/.ssh/秘密鍵ファイル.pem [email protected]
またはポート番号を指定してSSH接続付加してもよい
ssh -p 22 -i ~/.ssh/秘密鍵ファイル.pem [email protected]
秘密鍵を使用していないとき(コンパネからのサーバー追加時にSSHキーを新規作成しなかった場合)
には、-i と、その次の秘密鍵ファイルパスの指定は必要ありません。
SSH接続用の新規ユーザーを作成、動作確認
現在は最高権限をもつrootユーザーのみですが
このrootユーザーのみだと
ログインIDが「root」と一般に知れ渡ってしまっている状態です。
そこで、rootユーザーにはリモートでのSSH接続をできないように禁止させ
別途、SSHができる新規ユーザーを作成します。
今回も↓ガリガリコード様の記事に従って、
1. 新規ユーザーの作成
2. 新規ユーザーの動作確認
までを行います。
ssh接続用新規ユーザーを追加
ターミナルより、rootユーザーでsshログインした後
adduser “新しいsshユーザー名”
↑コマンドを打っても何も表示されませんが、ちゃんとユーザーが新規作成されています。
ssh接続用新規ユーザーのパスワードを設定
passwd “新しいsshユーザー名”
で、いま作った新規ユーザーにパスワードを設定します。
→任意のパスワードを設定する
このときもクリアテキストです。
打ってもカーソルも動かず何も表示されませんが
ちゃんと入力されています。
2回入力して、パスワードを確定させてください。
wheelグループに所属するユーザーが、rootになれるようにする
# vim /etc/pam.d/su
で、カラフルなファイルを開きます。
さて、今開いているファイルでは、6行目付近の
#auth required pam_wheel.so use_uid
これを
auth required pam_wheel.so use_uid
こう変更して保存して下さい。 先頭の#を取るだけです。
新規ユーザーをwheelグループに所属させる
新規ユーザをwheelグループへ所属させroot権限を与えるコマンド
# gpasswd -a 新規ユーザー wheel
で上手くいきました!
ちなみに、スーパーユーザー(su)になれるユーザーグループ名が
一般にwheelグループとされています。
wheelの由来としては、どうやら「big wheel」= 大物(になる)
との語源に由来があるようです…
諸説あるようですが個人的に納得したのが big wheel から由来している説です。big wheel というのは「大物」とか「実力者」とかそういった意味のある言葉のようですので、sudo できる権限をもった者という意味では納得がいきます。
[Linux] なぜ sudo する権限のあるグループが「 wheel 」という名前なのか « Codaholic
ポート番号変更、リモートでのrootログイン禁止(SSHデーモン設定)
新規作成したユーザーの動作を確認できたら
次に、rootユーザーによるリモートログインを禁止します。
ガリガリコード様の記事を参照しながら
3.ポート番号変更、rootログイン禁止
初心者向け!ConoHaでKUSANAGIの始め方(完)セキュリティ設定 | ガリガリコード
を行います。
私の場合は
開放ポート番号は55555を設定、初期設定の22は閉鎖(変更)としました。
参考: KUSANAGIにSSHでつなぐためにセキュリティを強化する | 有限工房
これでrootユーザからのリモートログインはできなくなります。
しかし、SSHユーザでリモートログインし
suコマンドでスーパーユーザーになることで
擬似的にroot権限を得ることがリモート接続でも可能です。
このとき、suコマンドを使ってスーパーユーザーになるときに入力するパスワードは
rootユーザーのパスワードと同一。
また、SSH接続でのログインは禁止されるものの
Conoha VPSコントロールパネルから
rootログインすることは引き続き可能です。
具体的な手順やコマンドは以下のとおり。
SSHデーモンファイルの設定
# vim /etc/ssh/sshd_config
で、SSHデーモン(設定)ファイルを開き
以下の通りに設定を変更します。
17行目
Port 22
の文頭コメントアウトを外し、ポート番号を変更。
Port 55555
にします。
23行目
# Protocol 2
の文頭コメントアウトを外して有効化。
49行目
PermitRootLogin yes
を
PermitRootLogin no
に変更し、SSHでのルートログインを禁止する。
(conoha VPSコンソールからのrootログインは可能です。)
55行目
#55 PubkeyAuthentication yes
の文頭コメントアウトを外し、鍵認証ログインを許可。
(これは確認)
79行目
PasswordAuthentication no
パスワード認証によるログインがnoであり、パスワードログインが不許可となっていることを確認しておく。
(鍵認証のみでの接続としたいため)
以上が完了したら、Escキーで編集モードから抜けて
「:wq」で保存して終了。
sshdの再起動
SSH設定を反映させるため
sshdの再起動をかけます。
# systemctl restart sshd.service
これで、以降はrootからリモートログインすることが不可となり
接続ポート番号が55555に変更されたはずです。
rootユーザーでのSSHが不可となるので
ログアウトする前に、下の新規ユーザー用SSH接続キー作成を済ませておきましょう。
新規ユーザーでSSH接続できるように設定
この段階は、かなり詰まってしまいましたので要注意です…!
まずは、ガリガリコード様の記事をみて
4. 新規ユーザー用の鍵を作成
5.ログインできるユーザー、ポート番号の確認
初心者向け!ConoHaでKUSANAGIの始め方(完)セキュリティ設定 | ガリガリコード
の流れを掴んでください。
SSH秘密鍵ファイルを作成
# su 新規ユーザー
で新規ユーザーに切り替えたあと、以下の操作を行います。
[新規ユーザー名@000-00-00-00 root]$
という表示になっていたら、新規ユーザーとして切り替わっています。
SSHフォルダを作成、秘密鍵を生成
まず、SSHフォルダを作成します。
# cd ~/
# mkdir .ssh
次に、.sshフォルダのパーミッションを700に設定し、新規ユーザー自身でしか触れないようにします。
(または755でもOK)
# chmod 700 .ssh
.sshフォルダに、SSHキーを作成します。
# cd ~/.ssh
# ssh-keygen -t rsa
私の場合、wgetコマンドが上手く動作せず
秘密鍵ファイルをダウンロードできませんでした。
仕方なく秘密鍵ファイルの中身をコピペで保存。
# cat
コマンドで中身を開き、コピーして
手元のテキストエディタで新規Fileへペースト。
ファイル名.pem
で保存して、秘密鍵ファイルを作成します。
作成した.pemファイルは
ローカルの
ユーザー/.ssh
フォルダ内に格納させます。
秘密鍵ファイルのパーミッションを変更
デフォルトで作成した秘密鍵.pemファイルの
パーミッションは644です。
以下のコマンドで、権限を600に厳格化します。
# cd ~/.ssh
で秘密鍵のあるフォルダまで移動し
# chmod 600 ファイル名.pem
でパーミッションを変更。
新規ユーザーでSSHログイン
以上で新規ユーザーの接続設定は完了です!
以下のコマンド通り
- ポート番号を55555に指定
- 秘密鍵を使用
のオプションをつけると、新規ユーザーでSSHできるはずです。
# ssh -p 55555 -i ~/.ssh/秘密鍵ファイル名.pem 新規ユーザー名@VPSのIPアドレス
ワンライナーで書きます。少しコマンド解説しておきます。
・頭の「ssh」でopenSSHのコマンド使います宣言。
・続く「-i」がオプションです。いくつかありますが、-iで秘密鍵を使いますってことになります。
半角スペースを置いて続きに使用する秘密鍵へのパスを書き、これ使いますと命令します。
・続く「-p」でポートを指定します。
【Mac】SSH接続でXserverに接続してみよう(SSHクライアントソフト FileZilla設定も解説) | 名古屋・東京のホームページ制作会社ならGrowGroup株式会社
リモート接続の都度、毎回ログインのための上記コマンドを打つのは長くて面倒なので
任意のエイリアスを登録しておくと楽チン。
(エイリアス = ショートカットキーのようなものを設定する)
新規ユーザーでpermission deniedなど、SSHログインエラーとなる場合には
記事末にトラブルシューティング例をまとめています。
ご確認くださいませ。
サーバー側ファイアウォール設定
サーバー側でのファイアウォール設定を行い
今回のサーバー側セキュリティ対応については完成となります。
最後の段階ですので、もうひと頑張りです!
ファイアウォールを立ち上げます。
# systemctl start firewalld.servie
すると、SSH接続が不可となります。
(ファイアウォールによって遮断される)
実際にSSH接続しようとしてみると
ssh: connect to host 000.00.00.00 port 55555: Connection refused
となり、リモート接続が(一時的に)不可に。
後ほど設定を変更することで、SSH接続が可能になりますのでご安心を。
具体的な設定手順は、ガリガリコード様の
6. ファイアウォールも設定しておく
初心者向け!ConoHaでKUSANAGIの始め方(完)セキュリティ設定 | ガリガリコード
に従って、ファイアウォール設定を完成させましょう。
ただし、ターミナルではなく
「Conohaサーバーのコンソール」から作業を行うこと!!!
ご注意下さい。
以上でサーバーセキュリティ設定は一旦完了です!
最大の山場は越えました。おつかれさまでした!!!
次回、サーバーキャッシュの設定や
wordpressディレクトリ内の権限設定を
行って、kusanagi導入を完成させましょう。
↓続きの記事はこちら
トラブルシューティング: 新規ユーザーでの秘密鍵ログインができないときはパーミッションを疑え(permission denied)
新規ユーザーでの秘密鍵ログインができない場合は、パーミッション設定を疑いましょう。
僕は、以下の3つのエラー例に遭遇しました。
①: authorized_keyのパーミッションは755に
ユーザー名@000.00.00.00: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ターミナル上にこのような表示が出てきた場合は
authorized_keyのパーミッションを疑ってください。
authorized_keyのパーミッションは755等で上手く動きます。
新規ユーザーのauthorized_keyファイルの場所は
/home/新規ユーザー/.ssh
にあります。
新規ユーザーに# suしてchmod でパーミッション設定を変えてください。
参考: SSHが鍵認証されないとき、パーミッションを疑え。 – それマグで!
②: 秘密鍵ファイルが正しい位置にないため、読み込めていない
こちらでも、permission deniedと表示されるエラーが表示されました。
原因は秘密鍵を読み込めていなかったようです。
DLした秘密鍵は、ユーザディレクトリ直下の.sshフォルダ内に置きます。
.sshフォルダがない場合は新しく作ってください。
~/.ssh/秘密鍵ファイル名.pem
に置きます。
「.」が頭につくファイル/フォルダは隠しファイル(不可視属性)です。
表示されない場合は、表示させる設定を行ってください。
Mac – Finderで隠しファイル・フォルダを表示する方法 – PC設定のカルマ
③: 秘密鍵のパーミッション権限エラー
秘密鍵を適切な場合へ設置し
上記コマンドでSSH接続しようとしても
以下のパーミッションエラーがコンソールに表示されることがあります。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for ‘/Users/〇〇/.ssh/〇〇.pem’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.Load key “/Users/〇〇/.ssh/〇〇.pem”:
bad permissions Permission denied (〇〇).
これは、DLした秘密鍵は
パーミッション(読出/書込/実行許可)番号
が644のままであり
この「644」番号という設定では
秘密鍵として
読出/書出/実行の権限設定が緩すぎるため
SSH接続を認める訳にはいきませんよ!
…ということです。
パーミッション番号とは
所有者/グループ/その他
の3つのユーザー種類ごとの権限を表す
3ケタの番号になります。
それぞれのケタの番号は、8進数でその権限が示されています。
パーミッション番号の詳細については、以下のリンクをご覧ください。
今回の場合
秘密鍵ファイルのパーミッション権限番号を
600に変更して
所有者のみに読出/書込権限を付与、
他種類のユーザーには全てを禁止する設定にします。
パーミッションを変更する場合は
権限変更したい階層まで移動し
$ chmod (設定したいパーミッション番号3ケタ) (対象ファイル/フォルダ)
というコマンドでファイルの権限変更を行います。
(change mode)
ターミナルで、秘密鍵の置いてある.sshのフォルダまで移動し
$ chmod 600 秘密鍵ファイル名.pem
でパーミッション権限を変更。
(同様に、サーバー側の.sshフォルダのパーミッション権限は700番にしておくこと!
もしまだ設定していなければ。)
これで、SSH用に作成した
新規ユーザーからリモート接続できるはずです。
それでもSSH接続できない場合は、コントロールパネル「接続許可ポート」の設定を見直して
上記で、新規ユーザーからSSH接続が可能になるはずですが
それでも「できない!」という場合は
conoha VPSコントロールパネル「接続許可ポート」の
設定を見直してみてください。
原因は接続許可ポートの「全て許可」にチェックしてなかったからでした :raised_hands:
「全て許可」にチェックしないと、選択していないポートへのアクセスは OS に到達する前に弾かれてしまうようです。もしSSHのポートを変更する場合や、開放するポートを自分で管理する場合は、「全て許可」 にチェックを入れておきましょう。
Leave a Reply