サイトやサーバーの脆弱性をつかれての改ざん被害などセキュリティに関わる事件・事故が後を立ちません。
セキュリティ対策は、サーバー会社でも行っていますが、一部作業者側で行う必要があります。
今回はVPSやレンタルサーバーでできる、しなければならないセキュリティの設定についてのお話です。
個人事業主としてフリーエンジニアをしている木下です。
その昔、いまのようにクラウドという言葉も一般的ではない時代、VPSというサービスは存在していませんでした。クラウドという言葉が流行する直前にVPSというサービスが誕生します。
その時、私はWebサーバーとメールサーバーの機能をマルチドメインで実現可能なサービスを探していました。
様々な企業が公開しているサービスの紹介ページを閲覧し、2・3のサービスを選定しその中から決定したサービスがVPSでした。選定した中にはレンタルサーバーのサービスもありましたが、VPSが誕生した当初ではサービスの紹介ページで公開されている情報から「自由度が高いこのサービスなら実現可能だ。」と判断し、そのサービスを契約しました。
レンタルサーバーはいくつか立ち上げ経験があったので、作業はレンタルサーバー開通後の作業を想定していたのですが、実際に契約してから送られてきたのはコントロールパネルとシェルのアクセス情報、rootアクセスに必要となる情報、といった「Linuxサーバーにアクセスする情報」だったので多少面食らった思い出があります。
「VPSって、仮想サーバーにLinuxをインストールしてコンソールを提供しているサービスなんだ。」
従来のレンタルサーバーしか知らなかった当時では、とても新鮮に感じた一方で「自分でセキュリティ対策をやらなきゃいけない。」ということに多少面倒に思った記憶があります。
目次
VPSならではの初期設定
VPSを借りる動機は人それぞれだと思いますが、VPSを契約しサーバーが開通した後に最低限やっておくことはいくつかあります。
これらはレンタルサーバーならやらないような作業であり、OS設定やアプリケーションの動作を変更することが可能な自由度があるからこそ発生するセキュリティ面での対策・作業といえます。
SSH設定
デフォルトログインでrootしか提供されていないような場合には、rootログインが有効化されています。この場合、rootのリモートログイン排除設定を実施しておくことが望ましいとされています。
サービスによってはログイン専用のクライアントIDとパスワードを契約時に提供されることもあります。その場合にはrootログインはデフォルトでSSH経由ではログインできないようにされていることもあります。いずれにしてもログイン情報は確認しておくことが望ましいです。
パスワードログインを廃止して公開鍵認証にする、というのも良く採られる設定の一つです。
ポート変更
例えば前出のSSHでは待ち受けポートに通常22番が利用されます。もし自社内でしかSSHポートを利用しないのであればこのポート番号を変更してしまうのは有効な設定の一つです。インターネット上でサーバーを稼働させると分かりますがポート22番へのアクセス・スキャンは一日でかなりの数になります。それだけ狙われているということです。
このように標準的に用意されるポート番号はそのポートを利用しているソフトウェアの脆弱性が狙われる傾向にあります。そのため、利用上の(ユーザー側に)問題がないようであればポートを変更してしまい、インターネット上から無差別に送り付けられてくるパケットを受け付けないようにしてしまう、という設定が採られることも多くあります。
管理者権限(sudoなど)の設定
近年ではroot権限を行使するときにsudoを利用することが多くなって居ます。「su -」とコマンドを打ってrootパスワードを入力しrootに昇格するのではなく、「sudo -s」でログインユーザーのパスワードを入力することでrootに昇格し権限が使えるようにする、ということです。sudoでroot権限を行使できるユーザーはsudoの設定によって定められているので、この設定を実施します。
sudoを使わないとしても、rootパスワードは初期設定から変更しておくことが推奨されます。このためrootパスワードは変更しroot権限でアクセスが許可された人だけが知り得るようにパスワードを保管しておく必要があります。
log監視用の設定
ログ管理のアプリケーションlogwatchを利用し、サーバーが毎日ログをメールで送付してくれるようにします。
iptablesの設定
不要なポートへのアクセスはiptablesを利用して停めておくと、予想外のポートや脆弱性を狙われる、ということが少なくなります。自分が使うサービスで利用するポートだけを開放して、後のポートは塞いでおく、PCのWindowsファイアウォールと同じことをVPSで実施するようなイメージです。
アプリケーション設定など
自身が利用するアプリケーション、WebサーバーならApacheやNginxのconfファイルを編集、メールサーバーならPostfixの.cfファイルを編集、といった具合に自身が利用するサーバーサービスの設定を実施します。
最低限、ここまで実施してようやく利用できるようになるのがVPSです。
レンタルサーバーではここまでのOS基本設定がすべてスキップできて、なおかついきなり自分の使い始めるための設定作業から開始できる、という点において「レンタルサーバーが初心者向けと言える一つの理由といえます。
定常業務として確認すべき事
1)ログチェック
上述のlogwatchで設定したログの監視によって、設定した間隔(例えば毎日)のログがメールで送信されてきます。そのログを確認して、不正アクセスや攻撃を受けていないか、怪しいアクセスが大量に寄せられていないかといったサーバーの健康状態を日々確認することになります。
2)アップデートチェック
サーバーにインストールされているアプリケーションは定期的にアップデートを実施する必要があります。セキュリティ情報に目を配り、アップデートが供給されたらyumやaptでアップデートを実施することになります。Windows Updateを定期的に実施するようなものです。
これだけの業務が必要になってきます。
サーバーを契約した後で実際にホームページを公開するためのWebサーバー機能や電子メールを送受信するためのメールサーバー機能の設定作業を実施する前段階として、上記のような最低限のセキュリティ対策や運用管理上の備えを自分自身で作業し用意する必要がある、ということです。
レンタルサーバーでやること
レンタルサーバーではこれらの設定作業はほとんど必要とされません。
用意された仕様を使うことに専念することになります。
例えば、レンタルサーバーではシェルが提供されませんし、提供されたとしてもその権限は限定的なものになります。つまり、契約したユーザー側でSSHの設定をする必要は全くありません。提供されている分を使うだけの話です。当然限定的なのでroot権限のログイン情報を厳格に管理する必要もありません。
契約したら通知されるログイン情報でサーバーの領域にアクセスしてホームページコンテンツを配置し、メールサービスであれば電子メールを使い始めるためにメールアドレスを設定する、VPSと違って「実際に使うサービス以外の設定作業は必要ない」という点がアドバンテージとなります。
作業内容 | VPS | レンタルサーバー | |
---|---|---|---|
初期設定 | SSH設定 | 設定作業が必要 | 設定作業不要 (設定できない) |
ポート変更 | 設定作業が必要 | 設定作業不要 (設定できない) |
|
管理者権限の設定 | 設定作業が必要 | 設定作業不要 (root権限は使えない) |
|
log監視用の設定 | 設定作業が必要 | 設定作業不要 | |
iptablesの設定 | 設定作業が必要 | 設定作業が必要な場合もある。 | |
アプリケーション設定など | 設定作業が必要 | 設定作業が必要な場合もある。 | |
メールアドレス作成 | 設定作業が必要 | 設定作業が必要 | |
定常業務 | ログチェック | 定期的にシステムとアプリのログ確認が必要 | システムログは確認不要(※) |
アップデートチェック | 定期的に新バージョンへのアップデートが必要 | アップデート作業は原則としてやらなくて良い |
※レンタルサーバーではシステムログの確認はできません。ただし、Webアクセスログが提供されているサービスがあり、そのWebアクセスログを監視・管理するケースはあります。
そしてレンタルサーバーでは自由度が制限される反面、VPSのような付随業務はサービスの提供者が実施してくれるため、使う側である我々がサーバー管理業務をしなくてもよい、(使うコンテンツの管理だけでよい)ということが分かります。
このようにVPSは使う側である我々の自由度が高い反面、その自由度から使う側の人間が適切に設定したり、セキュリティ対策を漏れなく実施したり、といった「インターネット上に機能をホストするために必要とされるサーバー管理業務」がついてまわることがわかります。
まとめ
VPSは自分で標準状態のOSをセットアップしなければならない
- SSH設定は(ほぼ)必須、狙われがちなSSH環境は入念に保護
- パスワードログインを廃し、鍵認証にするのも効果的
- ポート設定は確認しておき、ポート変更するのも手
- 管理者(root)権限を行使するための設定をしっかりと実施、使える人を限定する
- ログ監視に必要な設定や必要であればログ監視ツールをインストールしておく
- iptablesでアクセス制限を実施しておく
- 実際に利用するサーバープリケーションを自社向けに設定変更する
VPSは、初期構築以外にも継続して以下の業務が科せられる
- 定期的なログチェックとして、システムの状態確認のためのシステムログ、不正アクセスや攻撃の形跡などが記録されるセキュリティログ、あたりは入念に確認したい。
- アップデートチェックとして、日々公開される脆弱性の情報を収集し、必要に応じてパッケージのアップデート(セキュリティパッチ適用)を実施する。
レンタルサーバーは、上記に挙げたVPSで実施しなければならない、「OSレベル/アプリケーションレベルでの監視・管理を業務としてやらなくてよい」という点が特徴的です。つまりシステム管理としてやらなければならないのはシステム上で動作しているWebコンテンツ管理やメールアドレスを作ったり変更したり、といった「内容変更だけでよい」ということです。
スキルや業務負荷の都合でそれほどサーバーに関わっていられない、というユーザーは、より使うことに力を掛ければよいレンタルサーバーが推奨される、というのはこの点から言えます。