ちょっと話題の記事

Nessus on EC2でシステムの脆弱性を検査する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

セキュリティはクラウドでもオンプレミスと変わらず重要です。AWSの共有責任モデルにおいて、物理的なファシリティやインフラ部分のセキュリティはAWSにて担保されますが、OSやミドルウェア、アプリケーションについては利用者自らセキュリティレベルを高める必要があります。

そこで今回はAmazon EC2で、脆弱性スキャナであるNessusを使ってみました。

脆弱性スキャナとは

自身が管理しているサーバに対し、侵入やサービス妨害などに用いられる攻撃手段を試行して、脆弱性の有無を確認するツールです。広義で言えば、開放されている通信ポートを調べるポートスキャナも脆弱性スキャナの一種と言えるでしょう。脆弱性スキャナは攻撃手段をパターンとして持ち、ポートスキャンで発見された開放ポートに対して攻撃手段を試行することで、攻撃を受けるリスクの高い脆弱性を発見することが出来ます。 有名なものではRetina Network Security Scannerや、QualysGuardSAINTなどがあります。

余談ですが、SAINTはかつてSATANという名前でリリースされていました。途中でSAINTという名前に改名された時は思わず笑ったものです。

そして今回使ってみるのが上記のツールと同じく、古くから有名なNessusです。

Nessusとは

NessusTenable Network Security社からリリースされているネットワーク脆弱性スキャナです。

nes01

当初はオープンソース・ソフトウェアとして開発されていましたが、開発者がTenable Network Security社を設立したことと合わせて商用ソフトウェアとなりました。国内では東陽テクニカさんが国内総販売代理店となっています。

企業において一般利用するためには当然ライセンス購入が必要ですが、個人用ライセンス(Nessus Home)では家庭内での利用に限り無償で利用出来ます。また企業での評価目的として7日間無償利用可能な評価用ライセンスの提供があります。

Amazon EC2でNessusを使う

侵入テスト許可申請を行う

AWS上で脆弱性スキャナを実行するためには侵入テスト - AWSセキュリティセンターに記載されている通りAWS 脆弱性/侵入テスト許可リスクエストを申請する必要があります。この申請を忘れると禁止行為を行っていると判断されてしまいますので、忘れずに申請しておきましょう。

評価用ライセンスを取得する

評価用ライセンスは公式WebサイトのEvaluate画面から行うことが出来ます。ここで必要事項を入力しSubmitすると、登録したメールアドレスに対して評価用ライセンスコードが送られてきます。

nes02

パッケージを入手する

今回はOSにAmazon Linux AMI 2014.03を使いました。パッケージは公式WebサイトのDownload画面から入手できます。今回は「Red Hat ES 6 (64 bits) / CentOS 6 / Oracle Linux 6 (including Unbreakable Enterprise Kernel)」用のパッケージを選びました。入手したパッケージはscp等でEC2上に転送しておきます。

nes03インストールする

インストールはrpmコマンドでパッケージをインストールするだけです。

$ sudo rpm -ivh Nessus-5.2.6-es6.x86_64.rpm
警告: Nessus-5.2.6-es6.x86_64.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID 1c0c4a5d: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:Nessus-5.2.6-es6                 ################################# [100%]
nessusd (Nessus) 5.2.6 [build N25116] for Linux
Copyright (C) 1998 - 2014 Tenable Network Security, Inc

Processing the Nessus plugins...
[##################################################]

All plugins loaded
 - You can start nessusd by typing /sbin/service nessusd start
 - Then go to https://ip-172-31-11-82:8834/ to configure your scanner

サービスとして登録されますので、nessusdを起動します。ついでに自動起動の設定もしておきます。

$ sudo chkconfig nessusd on
$ sudo chkconfig --list | grep nessusd
nessusd        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
$ sudo service nessusd start
Starting Nessus services:                                  [  OK  ]

管理画面へのアクセス&初期セットアップ

管理画面へのアクセスはHTTPSで行います。またポートは8843/tcpです。「https://<IPアドレス>:8843/」に接続すると、自己証明書であるためセキュリティ証明書の警告が出ますが、そのまま進みましょう。Welcome画面が表示されるので、[Get started]ボタンをクリックして先に進みます。

Welcome_to_Nessus次に、管理画面にアクセスするためのユーザを登録する画面になります。"Login"にユーザ名、"Password"と"Confirm Password"にパスワードを入力し、[Next]ボタンをクリックします。

Welcome_to_Nessus 2

続いて、アクティベーションコードを入力する画面になります。取得した評価用ライセンスを入力して[Next]ボタンをクリックします。

Welcome_to_Nessus 3無事アクティベーションが完了すると以下の画面になりますので、[Next]ボタンで先に進みます。

Welcome_to_Nessus 4するとNessusの初期設定が始まります。結構長くかかりますので気長に待ちましょう。

Nessus_is_initializing___初期設定が終わるとログイン画面が表示されます!ここで先ほど設定したユーザ名とパスワードでログインします。

Nessus___Login

脆弱性スキャンを実行する

脆弱性スキャンを実行するには、まずスキャン内容をポリシーとして定義する必要があります。メニュー[Policies]を開き、[New Policy]ボタンをクリックします。

Nessus___Policies

[Policy Wizards]画面が表示されます。先日話題になったHeartbleed用のポリシー等も用意されていますね。今回は"Basic Network Scan"を使ってみます。

Nessus___Policies 2ポリシーを定義するには3つのステップがあります。まず"Policy Name"に分かりやすい名前を設定します(今回は"Basic Test"としました)。"Visibility"では作成したポリシーを他のNessusユーザと共有するかを設定します。共有する場合は"shared"を選択しますが、今回は"private"としました。最後に[Next]ボタンをクリックします。

Nessus___Policies___Wizard

次にScan Typeを選びます。今回は同じネットワークサブネット内で実行するので[Internal]を設定します。外部に対してスキャンする場合は[External]を選びます。

Nessus___Policies___Wizard 2

最後に、該当サーバへのログイン情報(WindowsならRDP、Linux等であればSSH)を設定し内部からの診断を行う為の設定画面が表示されます。今回は外部アクセスのみを確認するため特に設定しませんでした。最後に[Save]ボタンをクリックすることでポリシーの作成は完了です。

Nessus___Policies___Wizard 3

それではスキャンを実行してみましょう。メニュー[Scan]画面を開き、[New Scan]ボタンをクリックします。

Nessus___Scans 2

ScanのSetting画面が表示されます。Nameは適当に定義します。Policyは先ほど作成したスキャンポリシーを指定します。"Targets"欄に、スキャンしたい対象のIPアドレスを記述します。最後に[Launch]ボタンをクリックします。

Nessus___Scans___New_Scan

Launchすると、作成したスキャンのステータスがRunnningになります。

Nessus___Scans 3Scanが完了すると、ステータスがCompletedとなります。

Nessus___Scans 4

スキャン結果を確認する

完了したスキャンをクリックすると、スキャン結果が表示されます。この画面にスキャン対象のホストの一覧が表示されます。今回は1台に対して実行しているので1台しか表示されていません。

お、リスクがMeddium(黄色)となっているものがありますね!

Nessus___Scans___Hosts

[Vlulnerablities]画面ではリスクの一覧が表示されます。どんな脆弱性があってどの程度のリスクなのかが一覧で表示されるので分かりやすいですね。

Nessus___Scans___Vulnerabilities

それぞれのリスクをクリックすることで詳細な情報が確認出来ます。ここで内容を確認して対処することになるでしょう。

Nessus___Scans___Vulnerabilities___Details

以上、大変簡単に使うことが出来ます!

まとめ

システムの脆弱性検査はサービスとして行っている企業もたくさんありますので、そういったサービスでセキュリティ専門家の監査をきっちりと受けることが出来ますが、まずはこういった脆弱性スキャナを使ってセルフチェックを行っておいたほうが良いでしょう。多数のシステムを抱えているのであれば商用ライセンスを購入することを検討しても良いのではないでしょうか。

それにしても、久しぶりにNessusを触りましたが、モダンな管理画面になったものですねぇ。HTML5でグリグリ動きます。ずいぶん使いやすくなったものだなぁと思いました。