VPSのセキュリティを強化する設定を行おう(後編)

前回の記事で、作業用ユーザーを作成して、そのユーザーでSSHやSFTPにログインできるところまでを行いました。今回は、その続きのSSH関連の設定と、その他のセキュリティ関係の設定を行います。

 

■rootユーザーでログインを禁止

■SSHのポート番号の変更

■Apacheのセキュリティ関係の設定

■PHPのエラー表示

 

 

■rootユーザーでログインを禁止

作業用ユーザーでログインできるようになったら、それ以後はrootユーザーでは作業しないようにします。また、rootユーザーで不正にログインされることを防ぐために、rootユーザーでのログインを禁止します。手順は次の通りです。

 

①SSHを使って作業用ユーザーでログインします。

②「sudo nano /etc/ssh/sshd_config」のコマンドを実行します。

③パスワードの入力を求められたら、作業用ユーザーのパスワードを入力します。

④nanoが起動したら、Ctrl+wキーを押して検索の状態にし、「PermitRootLogin」のキーワードで検索します。

⑤見つかった行の最後にある「yes」を「no」に書き換えます。

⑥ファイルを保存してnanoを終了します。

⑦「sudo service sshd restart」のコマンドを実行して、SSHサーバーを再起動します。

⑧sshやsftpのソフトを起動し、rootユーザーでのログインを試します。接続できなくなっていればOKです。

 

 

■SSHのポート番号の変更

SSHは、一般的には22番ポートで接続するようになっています。そのため、外部からの侵入をもくろむ人は、22番ポートへアタックを仕掛けてきます。この問題を防ぐために、SSHのポート番号も変更しておくと良いでしょう。

ただし、今の時点ではファイアーウォールの設定を行っていないので、変えた後のポート番号で、sshやsftpから接続することができません。ファイアーウォールの設定については、後の回で解説しますので、実際のポート番号の変更はその後に行うようにしてください。

SSHのポート番号の設定は、他のSSH関連の設定と同様に、sshd_configファイルに記述します。設定を行う手順は以下の通りです。

 

①SSHを使って作業用ユーザーでログインします。

②「sudo nano /etc/ssh/sshd_config」のコマンドを実行します。

③パスワードの入力を求められたら、作業用ユーザーのパスワードを入力します。

④nanoが起動したら、Ctrl+wキーを押して検索の状態にし、「#Port 22」のキーワードで検索します。

⑤見つかった行の先頭の「#」を削除し、「22」を自分の好きな番号に置き換えます(ただし、49152~65535の間で指定)。例えば、54321番に変える場合だと、次のように書き換えます。

 

リスト Portの行の書き換え

Port 54321

 

⑥ファイルを保存してnanoを終了します。

⑦「sudo service sshd restart」のコマンドを実行して、SSHサーバーを再起動します。

 

 

■Apacheのセキュリティ関係の設定

Apacheのセキュリティを高めるために、存在しないページにアクセスしたときのエラーメッセージの設定と、TRACEメソッドの無効化の設定を行います。

 

・存在しないページにアクセスしたときのエラーメッセージの設定

Apacheで運用しているサイトで、存在しないページにアクセスしたときには、「Not Found」や「Forbidden」のエラーメッセージが表示されます。

CentOS 6のApacheの標準設定では、エラーメッセージにOS名やApacheのバージョンの情報などが表示されます。ただ、これだとOSやWebサーバーに何を使っているかを他の人に教えることになってしまい、セキュリティ的に好ましくありません。そこで、これらの情報を表示しないように設定を変えます。手順は次の通りです。

 

①「sudo nano /etc/httpd/conf/httpd.conf」のコマンドを実行して、httpd.confファイルを編集する状態にします。

②Ctrl+wキーを押して検索する状態にし、「ServerTokens」のキーワードで検索します。

③見つかった行の最後にある「OS」を「Prod」に書き換えます。

④Ctrl+wキーを押して検索する状態にし、「ServerSignature」のキーワードで検索します。

⑤見つかった行の最後にある「On」を「Off」に書き換えます。

 

なお、この後でTRACEメソッドの無効化も設定しますので、nanoは起動したままの状態にしておきます。

 

・TRACEメソッドの無効化

HTTPのメソッドの一つに、「TRACE」というものがあります。TRACEメソッドが有効になっていると、「クロスサイトトレーシング」(XST)という攻撃を行われる可能性があります。

現在のWebブラウザではXST対策がされていますので、よほど古いWebブラウザでアクセスされない限り、XSTが発生することはありません。しかし、念のためにApache側でTRACEメソッドを無効化しておきます。手順は以下の通りです。

 

①httpd.confの最後の行までスクロールします。

②次の行を追加します。

リスト TRACEメソッドの無効化

TraceEnable off

 

・Apacheの再起動

上記2つの設定が終わったら、httpd.confファイルを保存して、nanoを終了します。そして、「sudo service httpd restart」のコマンドを実行して、Apacheを再起動します。

 

 

■PHPのエラー表示の設定

PHPで作られたWebアプリケーションを実行する際に、エラーが発生することがあります。例えば、必要なモジュールがインストールされていないと、「モジュールがない」というようなエラーが発生します。

以前の回でPHPのインストール手順を解説しましたが、その回の方法をとると、PHPのエラーメッセージは表示されない設定になっています。セキュリティ的に、エラー発生時にメッセージがいろいろと表示されるのは好ましくないので、そのような設定になっているわけです。

ただ、これではどこでどういったエラーが発生しているのかが分かりませんので、問題解決の糸口がつかめません。

PHPのエラーを表示するには、php.iniファイルの中の「display_errors」の設定を書き換える方法があります。ただ、この方法だPHPのどのページでもエラー表示がオンになってしまい、セキュリティ的に好ましくありません。

そこで、.htaccessファイルを利用して、エラーが発生するWebアプリケーションのディレクトリだけ、一時的にエラーを表示するように設定すると良いでしょう。それには、対象のディレクトリに、次のような.htaccessファイルを設置します。

 

リスト PHPのエラーを表示する

php_flag display_errors On

 

また、対象のディレクトリにすでに.htaccessファイルがある場合は、その先頭に前の記述を追加します。

なお、エラーが解決したら、.htaccessファイルから前述の行を削除して、エラーメッセージを表示しない状態に戻します。

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド