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

参考:ConohaとCentOS

suコマンドの実行はwheelグループのみに

suを利用すると、ユーザーを切り替えることができます。 もちろん、rootユーザに切り替えることも可能です。 しかし、rootユーザに切り替える必要のない一般ユーザーがsuを使えるようにしておくと、何かのときにroot権限に移行し、変なことをしでかすかもしれません。 そこでwheelグループ以外からはsuコマンドを実行できないようにします。

vi /etc/pam.d/su

//この行の#を消す
#auth required pam_wheel.so use_uid

参考:ConohaとCentOS

.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でネットワークの流れを制御したりしていきます。