1.セキュリティ対策のチェック
(1)概要
システムを構築したら、セキュリティのチェックをする必要があります。方法としては、以下があります。
❶机上でのチェック
FWのルールが適切になっているかなど、設計書を確認します。
❷実地での確認
たとえばFWのルールであれば、設計書通りに設定がなされているかを確認します。
❸セキュリティ診断の実施
このあとに記載するペネトレーションテストを含む脆弱性診断があります。
(2)過去問を解いてみよう
この過去問では、設計プロセス、実装プロセス、検証プロセスに分けて、セキュリティのチェックを行う方針と立てています。
過去問 |
---|
設計プロセスでは,セキュリティ対策の漏れを防ぐために,③参考になりそうなセキュリティ対策の標準を利用することにした。 実装プロセスでは,セキュアコーディング基準として広く知られているCERTコーディングスタンダードを利用することにした。 CERTコーディングスタンダードの順守によって,脆弱性の作り込み防止だけでなく,コードの移植性及び保守性の向上も期待できる。 検証プロセスでは, Webアプリの脆弱性診断をリリースの都度,外部に委託するとリリースが遅れるので,自社内で行うことを検討した。 設問3 (1)本文中の下線③について,該当する用語を解答群の中から全て選び,記号で答えよ。 解答群 ア CIS Benchmarks イ FedRAMP ウ OWASP ASVS エ OWASP ZAP オ QUIC カ X.509 (2)本文中の下線④の必要な措置とは何か。 60字以内で述べよ。 |
↓
↓
↓
↓
↓
正解は、ア CIS Benchmarks と ウ OWASP ASVS
この2つの用語に関しては、以下に書きました。
・CIS Benchmarks:[規格やガイドライン #11.CIS-Benchmarks](https://sc.seeeko.com/entry/legalstandards#11CIS-Benchmarks)
・OWASP ASVS: [規格やガイドライン #12.OWASP-ASVS](https://sc.seeeko.com/entry/legalstandards#12OWASP-ASVS)
参考ではあるが、 CERTコーディングスタンダードは以下である。CとJavaに関して、非常に詳細なプログラムの記載方法が提示されてある。
(3)余談
こちらは、業務で使う場合の参考として。情報処理安全確保支援士試験では出ません。
・セルフチェックとしては、IPAから簡易な指針が出されています。
簡易といっては失礼ですね。大変有効な指針です。
(旧リンク)https://www.ipa.go.jp/security/measures/index.html
・企業さんにおかれは、このセルフチェックも有効だと思います。
5分でできる!情報セキュリティ自社診断シート・パンフレット
https://www.ipa.go.jp/security/keihatsu/sme/guideline/5minutes.html
・IPA 中小企業の情報セキュリティ対策ガイドライン
https://www.ipa.go.jp/security/keihatsu/sme/guideline/
・CISベンチマーク
https://sc.seeeko.com/entry/legalstandards#11CIS-Benchmarks
https://www.cisecurity.org/cis-benchmarks/
2.セキュリティ診断(脆弱性診断)
Webサーバへの攻撃は高度化、多様化しています。特に公開サーバは狙われやすくなっています。
サーバがセキュリティ面で安全かどうかを確認するために、セキュリティ診断をするほうがいいでしょう。
情報処理安全確保支援士試験の過去問(H26SC春午後2問2)では、「公開Webサーバの運用再開前に,脆弱性検査を実施することを推奨する」とあります。
診断には大きく2つあり、1つは「Webアプリケーション診断」、もう一つは「プラットフォーム診断」です。
この2つは、いくつかのセキュリティベンダーが診断メニューとして用意しています。
(1)Webアプリケーション診断
Webアプリケーションの診断です。
ツールには、AppScan(使いやすいが高い)、OWASP ZAP、Burp Suiteなどがあります。
(2)プラットフォーム診断
OSやミドルウェア(Javaを動かすTomcatやWebサーバのApacheなど)の診断をする。
ツールには、NMmapによるPortScanや、有名なNessus(安い)、無料のOpenVasなどがあります。
しかし、自社で診断するのは、難易度が高いので、第三者の専門家に診断してもらうのが得策です。
価格が高そうですね。
たしかに。Webサーバの診断をする場合、1台であっても100万円を超えることはよくあるものです。
そこで、自社で実施する場合は、IPAには「安全なウェブサイトの作り方」というのが公開されており、こちらは、手動にはなるが、簡易診断が行えます。
簡易とはいえ、やる価値は十二分にあります。
https://www.ipa.go.jp/security/vuln/websecurity.html
以下は全体像がチェックできて非常に有効だと思います。
https://www.ipa.go.jp/security/vuln/websitecheck.html
■参考
試験には出ません。プラットフォーム診断のツールには、以下があります。
・有名なのはNessus →今は有償版しかない。個人利用であれば無償版もあるが、利用シーンは少なそうだ
・Vuls →OSSなので無料で使える。たしか、検査対象にWindowsは含まれていなかった気がする。
・Openvas →OSSなので無料で使える。Windowsサーバも検査できるはず。
・Nexpose
3.ペネトレーションテスト(侵入テスト)
(1)ペネトレーションテストの概要
ペネトレーションテストに関して過去問(H27FE春午前問41)では、「コンピュータやネットワークのセキュリティ上の脆弱性を発見するために,システムを実際に攻撃して侵入を試みる手法」と述べられている。
ペネトレーションテストと脆弱性診断は同じですか?
問題 |
---|
Q.ペネトレーションテストと脆弱性診断の違いを答えよ。 |
↓
↓
↓
↓
↓
脆弱性診断の一部として、ペネトレーションテストがあると考えてください。ペネトレーションテストは、実際に侵入してみるものですが、侵入せずに診断をすることができます。たとえば、OSのバージョンや、使用している暗号方式を確認することで、脆弱性が無いかを評価できます。
以下の過去問を見てみましょう。
過去問(H19初級シスアド秋AM) |
---|
問50 ペネトレーションテストの主目的はどれか。 ア 使用している暗号方式の強度の確認 イ 対象プログラムの様々な入力に対する出力結果と仕様上の出力との一致の確認 ウ ファイアウォールが単位時間当たりに処理できるセッション数の確認 エ ファイアウォールや公開サーバに対するセキュリティホールや設定ミスの有無の確認 |
↓
↓
↓
↓
↓
スラムダンクで「ペネトレイト」の言葉が説明されていた。バスケットでも使われる言葉で、(ドリブルなどで中に)「侵入する」こと。
ペネトレーションテストとは、侵入テストと考えればよいだろう。
正解はエだ。
情報処理安全確保支援士試験の過去問(H23SC春午後1-4)に、ペネトレーションテストの例が述べられている。
過去問(H23SC春午後1-4) |
---|
〔ペネトレーションテストによる現状確認〕 他社のオークションサイトで、会員情報の流出事件が起きたことから、R社の経営陣はK課長にSサイトのセキュリティ対策を確認するように指示した。K課長は現状のセキュリティ対策の有効性を確認するために、セキュリティ専門会社であるW社に、インターネット及びN社のオフィスからのペネトレーションテスト(以下、Pテストという)を依頼した。表1はW社が報告したPテストの結果である。 |
(2)脆弱性診断時の注意点
実機に対して脆弱性診断および侵入テストを行う際には、「実環境への影響を最小限にする」ことが大事です。
問題 |
---|
Q1.実環境の影響を最小限にするためには、どんなことが必要か。 |
↓
↓
↓
↓
↓
A1.検討すべきことはいくつかある。過去問(R2SC午後1問3)の内容も参考しながら列挙する。
・可能であれば、予備機に対して診断を実施する
・もとに戻せるように、事前に設定やデータのバックアップを取っておく(攻撃によってデータや設定情報などを消してしまう可能性があるから)
・「診断前の状態に戻せないようなデータ更新が発生する検査項目は除く(R2SC午後1問3)」
・診断用に専用のIPアドレスおよびアカウント(たとえば、Webシステムのログインアカウント)を用意する。→診断が終わったら、アカウントごと削除する
・本番環境で実施する場合は、サービス提供に影響がない時間で実施する。→過去問(R2SC午後1問3)では「計画の一部を変更する」という内容が問われ、「9時~17時」で計画していたものを「診断時間を0時~8時の間にする。(解答例)」としている。
・IPSなどのセキュリティ監視機器が入っている場合はさらに注意が必要(後述)
■Q2.IPSなどのセキュリティ対策機器が入っている場合、どうするべきか。
問題 |
---|
Q2-1.セキュリティ対策機器を含めた診断をするか、セキュリティ対策機器無しでの診断をすべきか。それぞれの利点を述べよ。 |
↓
↓
↓
↓
↓
A2-1.以下以外にもあるだろうが、とりあえず、代表的なもの。
・セキュリティ対策機器を含めた診断:セキュリティ機器を含めたトータルの診断ができる。→仮にサーバに脆弱性が残っていたとしても、実際に攻撃が成立するかがわかる
・セキュリティ対策機器無しでの診断:過去問(R2SC午後1問3)では、「①より多くの脆弱性を検出する可能性がある」として、その理由を「N-IPSで遮断されていたPF診断の通信が通過するから(解答例)」とある。つまり、サーバなどで改修する必要がある脆弱性をより多く検出してくれる。
問題 |
---|
Q2-2.セキュリティ機器を通過させる場合、アラートが大量にでる。監視チームでは大量のアラートで現場が混乱する。どうしたらいいか。アラートが出ないように、セキュリティ機器の防御機能を無効にすることはふさわしくないが、なぜふさわしくないかの理由と、アラートの問題をどうしたらいいのかを答えよ。 |
↓
↓
↓
↓
↓
A2-2.
・セキュリティ機器の防御機能を無効にすることはふさわしくない理由:「本物の攻撃を防げないというリスクが生ずる(R2SC午後1問3)」
・どうしたらいいのか:「ホワイトリストに診断PCのIPアドレスを登録する(R2SC午後1問3設問1(2)解答例)」ことで、診断PCからの通信に関してはアラートを発生させないようにする。
4.ポートスキャン(port scan)
(1)ポートスキャン
ポートスキャンとは、言葉の通り、ポート(port)をスキャン(scan:調べる)ことです。 サーバにおいて、webサービス(80)やメールサービス(25)など、どんなポート(つまりサービス)が動いているかを見つけ、攻撃ができないかを探ります。
(2)ポートスキャンの仕組み
❶TCPの場合
TCPのポートスキャンは、対象のサーバに対して、SYNを送ります(というか、TCPの通信ならなんでもOK)。結果、SYN+ACKが返ってくると、ポートが空いて(=サービスを提供している)と判断できます。
SYN+ACKが返ってくるのは、TCPにおける3wayハンドシェークを試みようとしているからですね?
はい、その通りです。
ポートが閉じていれば、RST+ACKを返します。そもそもサーバが存在しなければ、もちろん何も返しません。
❷UDPの場合
UDPパケットを送付し、ICMP port unreachableというメッセージが返ってこれば、ポートは閉じています。サーバが起動している前提で、メッセージの応答がなければ、ポートは空いていると考えられます。
(3)過去問を解いてみよう
①H23春AP午後問9
過去問をみてみましょう。
過去問(H23春AP午後問9) |
---|
各サーバに対して,次のサイバー攻撃が行わ-れていたことが判明した。 【サイバー攻撃1】Webサーバに対して,Webページを表示するためのリクエストが大量に送られ,CPUとメモリの使用率が許容限度を超えてしまっていた。 【サイバー攻撃2】DBサーバにアクセスするプログラムの不備を利用して,データベース上の情報に不正にアクセスしようとした形跡が,Webサーバにあった。 【サイバー攻撃3】DNSプログラムが確保したメモリサイズを超えた入力を与えて,管理者権限を奪おうとした形跡が,DNSサーバ1にあった。 【サイバー攻撃4】使用可能なサービスを探した形跡が,DMZ内の各サーバにあった。 設問1 サイバー攻撃1~4について,その名称を答えよ。 |
↓
↓
↓
↓
↓
以外に難しかったかと思う。本来の問題は選択式ではあるが、これらは基本的なキーワードなので、答えたいところだ。
攻撃1 DoS攻撃
攻撃2 SQLインジェクション
攻撃3 バッファオーバーフロー
攻撃4 ポートスキャン
②もう一問解いてみましょう。
過去問(H26SC春午前Ⅱ問12、R1秋NW午前Ⅱ問17) |
---|
問12 脆弱性検査で,対象ホストに対してポートスキャンを行った。対象ポートの状態を判定する方法のうち,適切なものはどれか。 ア 対象ポートにSYNパケットを送信し,対象ホストから“RST/ACK”パケットを受信するとき,対象ポートが開いていると判定する。 イ 対象ポートにSYNパケットを送信し,対象ホストから“SYN/ACK”パケットを受信するとき,対象ポートが閉じていると判定する。 ウ 対象ポートにUDPパケットを送信し,対象ホストからメッセージ“port unreachable”を受信するとき,対象ポートが閉じていると判定する。 エ 対象ポートにUDPパケットを送信し,対象ホストからメッセージ“port unreachable”を受信するとき,対象ポートが開いていると判定する。 |
↓
↓
↓
↓
↓
順に見ていきましょう
ア:RST/ACKを受信した場合は、ポートが閉じています。
イ:“SYN/ACK”パケットを受信した場合は、3wayハンドシェークを実施する流れの正常な応答です。つまり、ポートが開いています。
ウ:正解選択肢です。
エ:ウが正解ですので、不正解です。
正解はウです。
③次は情報処理安全確保支援士試験の午後問題
過去問(H30秋SC午後1問2) |
---|
・ワームVは,次の2種類のIPアドレス範囲に対して,並行して445/TCPのポートをスキャンし,①正常な応答がある場合に,脆弱性を悪用して感染を試みる。 設問2(1)図3中の下線①について,どのようなTCPフラグの組合せの応答か。8字以内で答えよ。 |
↓
↓
↓
↓
↓
3wayハンドシェークを思い出せば簡単だったと思う。また、「フラグ」というヒントもある。
解答例
SYN+ACK
(4)ポートスキャナ―
ポートスキャンをする場合、nmapなどのツールを使うことが一般的です。このようなツールをポートスキャナと言います。過去問(平成26年秋FE午前)を解いてみましょう。
過去問(平成26年秋FE午前) |
---|
問45 Webサーバの検査におけるポートスキャナの利用目的はどれか。 ア Webサーバで稼働しているサービスを列挙して,不要なサービスが稼働していないことを確認する。 イ Webサーバの利用者IDの管理状況を運用者に確認して,情報セキュリティボリシとの相違を調べる。 ウ Webサーバヘのアクセス履歴を解析して,不正利用を検出する。 エ 正規の利用者IDでログインし, Webサーバのコンテンツを直接確認して,コンテンツの脆弱性を検出する。 |
↓
↓
↓
↓
↓
正解はアです。
5.ファジング
ファジングとは、 ソフトウェアの脆弱性をテストする手法の一つです。 ペネトレーションテストはシステム全体に対してに侵入テストで、ファジングは特定のソフトウェアの脆弱性がないかをテストする方法と考えましょう。
ファジングに関して過去問(H27春ES午前Ⅱ問24)では、「問題を引き起こしそうなデータを大量に入力して,そのときの応答や挙動を監視することによって,ソフトウェアの脆弱性を検出するテスト手法」「ソフトウェアのデータの入出力に注目し,問題を引き起こしそうなデータを大量に多様なパターンで入力して挙動を観察し,脆弱性を見つける(H28秋AP午前問45)」と述べられています。
詳しくはIPAの資料に記載がありますので、お時間があるときに確認してください。
http://www.ipa.go.jp/files/000057652.pdf
上記の資料には、6機種のブロードバンドルータにファジングをした結果、3機種で合計6件の脆弱性を検出したとの記載があります。
具体的な攻撃パターン例も、上記資料に記載されています。
では、情報処理安全確保支援士試験の過去問(H28秋SC午後Ⅰ問2)を解いてみましょう。
過去問(H28秋SC午後Ⅰ問2) |
---|
一般的には,開発時に,静的解析ツールを利用したり,通常の利用では想定しないデータを入力し,その応答から脆弱性を探す[ d ]検査を行うツールを利用したりして,脆弱性を洗い出すことも効果的である。 |
↓
↓
↓
↓
↓
さて、この空欄dに入る言葉ですが、お察しの通り、「ファジング」です。