これまでのおさらいとして、仮想マシンにCentOSをインストールしてLAMP環境を構築し、ホストOSからブラウザで表示確認するところまで進みました。
自宅サーバ作業第7回では作成した自宅サーバを公開するに当たって、公開鍵認証によるログイン設定を施してセキュリティ対策を行なっていきます。
目次
そもそもセキュリティ対策を怠ってしまうと、不正アクセスによるホームページの改ざんやサーバに蓄積されている個人情報の流出などの被害により、正常なホームページ運営やサービス提供ができなくなってしまう恐れがあります。
運営者とサービス利用者との信頼に関わる重要な事柄ですので、しっかりとセキュリティ対策を行なっていきたいところです。
今回、実装するセキュリティ対策は上記のような不正アクセスによるサーバログインを防止するための対策です。
自宅サーバ作業過去回では、これまでサーバログインする際にはパスワード認証によるログインを行なってきました。
ssh root@"サーバのIPアドレス"
しかし、このようなログイン方法ではサーバのIPアドレスとパスワードを知ってさえすれば誰でも簡単にログインできてしまいます。その対策として用いられているのが公開鍵認証によるログイン方法です。
公開鍵と秘密鍵の両方を用意し、サーバに公開鍵を、ログインユーザの手元にそのユーザだけが持つ秘密鍵を設置します。ログインする際にはこの秘密鍵を用いてサーバの公開鍵との認証を行います。
秘密鍵の所持およびパスワードを知っていなければログインできなくなりますので、これによりパスワードのみのログイン方法よりも高度なセキュリティ対策が可能になります。
ログイン時のユーザ種類によってファイルのアクセスや削除、実行に関する制限が異なり、ROOT権限はそれら全てを行える権限を持っています。データ改ざんや意図しないソフトウェアインストールなどを防ぐため、通常ではROOT権限でのログインは避けておくべきでしょう。
ROOT権限でのログイン制限を行う前に、ROOT権限でのログインの代わりとして、新規にユーザを追加し、他ユーザ権限でのログインを実装していきます。
まず、ユーザを作成していきます。
ここでは、ユーザ名を「edward」とし、グループはサーバ開発途中ということもありROOT権限相当の「wheel」に設定しました。
useradd -mG wheel edward
次に、ユーザのパスワードを設定します。
passwd edward
ユーザが作成されたかどうか確認するには次のコマンドを入力します。
cat /etc/passwd
作成されたユーザ名が一覧に表示されていたら無事にユーザ作成完了です。
つづきまして、公開鍵認証によるログイン設定を行なっていきます。
はじめに、公開鍵を設置するための場所をサーバ内に作成します。先に作成しておいたユーザでmacターミナルよりSSHログインします。
ssh edward@"サーバのIPアドレス"
ユーザ権限でログインすると、ROOT権限でのログイン時と異なり左側が以下のようになっていることがわかります。
[edward@localhost ~]$
公開鍵を入れておくためのディレクトリをサーバのユーザホームディレクトリに作成します。
mkdir .ssh
ディレクトリのアクセス権を設定していきます。これにより外部からディレクトリ内のファイルアクセスを制限することができます。アクセス権はユーザのみ読み書き実行可とします。
chmod 700 .ssh
これで、ユーザ「edward」のみがアクセス可能な公開鍵を入れておくためのディレクトリが完成しました。
次に、公開鍵認証に使用する鍵を作成します。こちらは、自宅PCのmacターミナルより鍵の作成を行なっていきます。
ssh-keygen -t rsa
コマンドを入力してEnterキーを押すと、公開鍵名と公開鍵認証時に用いるパスワードの設定を求められますのでそれぞれ入力します。ここでは、公開鍵名を「MyKey」としました。
Generating public/private rsa key pair. (公開鍵を生成しています) Enter file in which to save the key (/Users/"macユーザのホームディレクトリ"/.ssh/id_rsa): MyKey (公開鍵のファイル名を入力してください) Enter passphrase (empty for no passphrase): (公開鍵に使用するパスワードを入力してください) Enter same passphrase again: (もう一度同じパスワードを入力してください) Your identification has been saved in MyKey. (秘密鍵「MyKey」の生成を完了しました) Your public key has been saved in MyKey.pub. (公開鍵「MyKey.pub」の生成を完了しました)
公開鍵の生成を終えるとmacユーザのホームディレクトリ内に「MyKey」および「MyKey.pub」の2つのファイルが作成されていますので、「MyKey.pub」をサーバに転送します。
scp ./MyKey.pub edward@"サーバのIPアドレス":~/.ssh
転送を終えると、先ほど作成しておいたサーバの.sshディレクトリに「MyKey.pub」が作成されているので、これを「authorized_keys」にリネームします。
mv .ssh/MyKey.pub .ssh/authorized_keys
リネーム後、アクセス権の変更を行います。
chmod 600 .ssh/authorized_keys
これで公開鍵の設定が完了しました。
今度は、秘密鍵の設定を行なっていきます。
自宅PCのmacターミナルより作成した「MyKey」をmacホームディレクトリの.sshディレクトリに移動します。
.sshディレクトリが無い場合は新たに作成し、.sshディレクトリのアクセス権を「700」に設定しておきます。
mv MyKey .ssh/MyKey
「MyKey」のアクセス権の変更を行います。
chmod 600 .ssh/MyKey
これで秘密鍵の設定が完了しました。
なお、macホームディレクトリに残っている「MyKey.pub」は削除しても問題ありません。
サーバに公開鍵を設置し、自宅PCに秘密鍵を設置し終えたところで試しに公開鍵認証によるログインができるか確認してみます。
ssh -i .ssh/MyKey edward@"サーバのIPアドレス"
その際パスワード入力を求められますので、公開鍵作成時に設定したパスワードを入力します。
無事ログインできたら成功です。
ホームページを公開するに当たって気をつけていきたいセキュリティ対策の一つとして公開鍵認証によるログイン設定について取り上げました。
次回、自宅サーバ作業第8回ではログイン制限の設定やSSHのポート番号を変更してセキュアなログイン対策をサーバに実装していきたいと思います。