ConohaVPSでのCentOSサーバーの設定手順(ssh編)
はじめに
以前にConohaVPSを契約してましたが、完全に放置していて毎月財布から英世が消えていくのはもったいない… ということで、CentOS上にWEBサーバーを立ててみることにしました。 ひとまず、LAMP環境を構築することを当面の目標にしたいと思います。
今回の記事はssh編ということで、sshでリモートホストにログインするところから始めて、最終的にはセキュリティ的にあまり心配のないssh設定をするところまで行いたいと思います。 (とはいえ、どこまでやればセキュリティ的に心配ないかは各人次第です。よりセキュアな設定をしたい方はググれば、他の対策も出てきますので、そちらも参考にしてください。)
Conohaの管理画面
いきなりですが、ConohaのVPS契約から管理画面上の操作は割愛させてください…
サーバーを追加すると、様々な設定項目がありますが、この記事では2017/7/4現在で最も新しいCentOSを使い、またsshでは公開鍵認証でのログインをデフォルトにしました。 途中で、公開鍵認証で使う秘密鍵をダウンロードできますので、しておきます。 また、設定したrootパスワードも使用しますので、記録しておきましょう。 さらに、サーバーを追加すると、IPアドレスやMACアドレスなどのサーバー情報を見ることができますので、IPアドレスをメモしておくとよいかと思います。
ログイン
まずは、ローカルPC上のホームフォルダに.sshディレクトリを作成し、ダウンロードした秘密鍵をそこに移動させます。
mkdir .ssh mv /path_to_pem/123456789.pem .ssh
次に、以下のコマンドで、リモートサーバーにsshでrootログインします。 xxx.xxx.xxx.xxxのところには、リモートサーバーのIPアドレスを入力します。
ssh root@xxx.xxx.xxx.xxx -i ~/.ssh/123456789.pem
一般ユーザーの追加とそのユーザーのwheelグループへの追加
次に、リモートサーバ上でrootとは別の一般ユーザー を追加します。 さらに、そのユーザのパスワードを設定し、さらにユーザをwheelグループに追加します。
useradd <username> passwd <username> gpasswd -a <username> wheel
wheelグループにsudoを許可
wheelグループに属する一般ユーザーがsudoコマンドを使えるようにします。 先ほど一般ユーザをwheelグループに追加したのは、そのためです。
visudo
//この行の#を消す
#%wheel ALL=(ALL) ALL
suコマンドの実行はwheelグループのみに
suを利用すると、ユーザーを切り替えることができます。 もちろん、rootユーザに切り替えることも可能です。 しかし、rootユーザに切り替える必要のない一般ユーザーがsuを使えるようにしておくと、何かのときにroot権限に移行し、変なことをしでかすかもしれません。 そこでwheelグループ以外からはsuコマンドを実行できないようにします。
vi /etc/pam.d/su
//この行の#を消す
#auth required pam_wheel.so use_uid
.sshディレクトリとauthorized_keysファイルの所有者とパーミッションの変更
ここからはsshの設定をしていきます。 まずは、sshを使って先ほど作成した一般ユーザでログインできるように設定します。
一般ユーザのホームディレクトリに.sshディレクトリを作成し、/root/.ssh内にあるauthorized_keysをそこにコピーします。 (authorized_keysファイルは、個別の公開鍵を登録しておくファイルです) 次に、今作成した.sshディレクトリとコピーしたauthorized_keysファイルのパーミッションを変更します。 どのパーミッションが本当に適切なのかが自分の中でまだはっきりとしていませんが、WEB上では
という情報が多かったので、とりあえずはそれに従います。 これらのパーミッションが適切でないと、あとでリモートログインするときにdenyされます。
mkdir /home/<username>/.ssh cp .ssh/authorized_keys /home/<username>/.ssh/authorized_keys chown <username>:<username> /home/<username>/.ssh chown <username>:<username> /home/<username>/.ssh/authorized_keys chmod 700 /home/<username>/.ssh chmod 600 /home/<username>/.ssh/authorized_keys
sshに関するセキュリティ設定
sshは悪い人達(bot達?)に標的にされやすいです。 (自分も設定が一区切りついたところで、/var/log/secureを見てみました。サーバー作成してからまだ数時間だというのに、mysqlやらadminやらの名前でログインしようとする鬼畜が….) ですので、sshで不正ログインされないようにきっちりと設定しなければなりません。 そこで、/etc/ssh/sshd_configを編集して、以下のような設定を行っていきます。
sudo vi /etc/ssh/sshd_config
- ポート番号を22から変更する
- sshを使ってrootユーザーでログインできないようにする
- sshのパスワード認証を切る
- ssh可能ユーザーを限定
- sshdのプロトコルを2に
- 認証の試行回数、認証までの猶予時間の制限
自白すると、これらの設定は下のページを参考にさせてもらいました。 あーざっす! ですので、そちらを参考に設定してください。
参考:そこそこセキュアなサーバ
参考:ConohaとCentOS
一つだけ追加しておくと、ポート番号はsshdの設定ファイルで変えても、CentOSのファイアーウォールデーモンであるfirewalldではまだ22番のままなので、こちらも変更しておかなければなりません。
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml sed -e s/22/<変更するポート番号>/g /etc/firewalld/services/ssh.xml > /etc/firewalld/services/ssh.xml1 cat /etc/firewalld/services/ssh.xml1 mv /etc/firewalld/services/ssh.xml1 /etc/firewalld/services/ssh.xml
おわりに
とりあえず、ssh周りはこれで終わりたいと思います。 この次は、不要なサービスを止めたり、不要なポート閉じたり、firewalldでネットワークの流れを制御したりしていきます。