インターネットサービス向けサーバのセキュリティ対策ー午後

応用情報技術者平成30年秋期 午後問1


ファイル：2018h30a_ap_pm_qs.pdf


**１、表２中のa,bに入れる適切な字句を解答群の中から選ぶ。**

aはポートスキャンですね。

・ポートは「パソコン等の周辺機器が外部とデータ通信をする出入口」を指します。
・ポートスキャン
ポートスキャナ―を使い、サーバやネットワーク機器の各ポートに対し通信をし、戻ってきたリアクションから、ポートの開閉をはじめ、サービスやバージョンなどを特定します。この行為を「ポートスキャン」と呼んでいます。不要なポートスキャンはもちろん、ましてや得た情報を悪用しサイバー攻撃を行うことは、明らかな犯罪行為となります。

・ポートスキャンによって得られる応答

　　１）、オープン：待機していることを示す、パケットが送信られる
　　２）、クローズ：待機しているサービスがないことを示す応答がある
　　３）、フィルタ中：フィルタリングされたことを示す

・ポートスキャンによって得られる情報
　　１）、開いているポート番号
　　２）、閉じているポート番号
　　３）、制限されているポート番号
　　４）、開いているポートで稼働しているサービスに関する情報
　　５）、OSに関する情報

・代表的なポート番号とその役割
代表的なプロトコル
TCP20:FTP（データ）
TCP21:FTP（制御）
TCP22:SSH（セキュアログイン）
TCP23:Telnet（接続機器の遠隔操作）
TCP25:SMTP（メール送信）
UDP53:DNS（ドメインの名前解決）
UDP67:DHCP（IPアドレス割当[サーバ側]）
UDP68:DHCP（IPアドレス割当[クライアント])
TCP80:HTTP
TCP110:POP3（メールを受信）
UDP123:NTP（時刻同期・調整）
TCP443:HTTPS

・ポートスキャンの種類
　１）、TCPスキャン
　　　　TCPスキャンの場合は「スリーウェイハンドシェイク」と呼ばれる接続方法を利用します。スリーウェイハンドシェイクとは他者とTCP通信する際に3回のやり取りをして接続する方法です。きちんと通信が確立されるため、ログ（痕跡）が残りやすい方法として知られています。


　２）、SYNスキャン
　　　　完全なTCP接続を行わない方法がSYNスキャンです。「ハーフオープンスキャン」や「ステルススキャン」とも呼ばれています。まず、SYNパケットを標的のポートに送信します。TCPスキャンと同じく対象サーバがオープン（サービスが起動）ならSYN+ACKパケット、クローズならRST+ACKパケットが返ってきます。


　３）、FINスキャン
　　　　標的となるポートに「接続終了」を意味するFINスキャンを送信する方法です。スキャンされた対象サーバのポートがオープンなら対象のサーバは、接続の中断・拒否を意味するRSTを返します。

　４）、クリスマスツリースキャン
　　　　標的となるポートにFIN、緊急確認を意味するURG、PUSHパケットを送信する方法です。対象サーバがオープンなら何も返ってきません。クローズならRSTパケットが返ってきます。


　５）、NULLスキャン
　　　　標的となるポートに何のフラグも立てないパケットを送信する方法です。対象サーバがオープンなら何も返ってきません。クローズならRSTパケットが返ってきます。


　６）、UDPスキャン
　　　　UDPはTCPと根本的に異なり、一方的に通信する方法です。UDPスキャンではUDPで待ち受けているサービス状態を判断するために行います。標的となるポートにUDPパケットを送信し、オープンであれば、何も返らず、クローズならICMP port unreachableが返ってきます。



ｂはWebアプリケーションのセッション管理ですね。
セッションIDをもっていればサーバー側は誰が問い合わせてきたのかがすぐにわかる為、毎回認証行為をする必要がなくなる。
これはセッションIDの生成方法が予想しやすいのが原因です。例えばセッションIDが連番になっている、ユーザーIDや日時がセッションIDの元となっている、乱数に規則性があり複数のセッションIDを集めることで規則性を見つけ、結果セッションIDの推測に繋がる、オープンソースのソフトウェアだとセッションIDの生成ロジックがわかってしまい、解読される恐れがある。

＜＜表２＞＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591618/d09b18de-2adf-b81f-603e-ed3e09ab85b8.png)


**２、表４の中のd、eに入れる適切な字句を解答群の中から選び。**
ｄはSPFですね。
・SPFとは、
Sender Policy Framework（SPF）は、SMTPを利用したインターネット電子メールの送受信において送信者のドメインの偽称を防ぎ、正当性を検証する仕組みのひとつとして元Pobox社のMeng Wong氏により提唱された送信ドメイン認証方式である。

迷惑メールは、一般的に送信元アドレスを偽称して送信してくることが多い。送信元を偽ることで、受信者が迷惑メールの送信者を突き止めることを困難にするためである。インターネット上では、一般にSMTP（またはESMTP）で電子メールの配送を行う。SMTP通信による電子メールの配送では、送信者メールアドレスが2種類与えられる。電子メールのFrom:ヘッダー上に示される送信者アドレスと、SMTP通信でのMAIL FROM:コマンドの引数として与えられるメールアドレスである。SMTPでは、この2つが同じでなくてはいけないという規則はなく、また、一般に任意のアドレスを指定可能であるため送信者の偽称が非常に簡単に行える。

・SMTP (Simple Mail Transfer Protocol) は、電子メールを送信するために使用するアプリケーション層 のプロトコルです。 メールソフトから、メールサーバへ電子メールを送信する際にこのSMTPを使用します。
・MX（Mail eXchanger）レコードは、メールの配送先となるホスト名を定義するレコードです
・PTR（PoinTR）レコードは、IPアドレスとホスト名の関連付けを定義するレコードです。1つのIPアドレスに対して、1つのホスト名を登録できます

＜＜表４＞＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591618/b57dc929-f78a-906c-638b-6c00c05a200b.png)

＜ｄ、e、ｆ、ｇ、ｈ＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591618/3560ce20-d255-171b-55a4-0b9f0791b4f9.png)


**３、表４のｆ、ｇに入れる適切な字句を、図１中の構成機器の名称で答えよ。**
ｆは、まずFWですね。防衛の第一線ですね。
もし万が一、FWを突破すると、Webサーバに置いているDBをアクセスすると、そのFWを防衛の第二線としますね。

ｈは、DB中の秘密データをアクセスされてしまうのは、SQLインジェクションですね。

・SQLインジェクション（英: SQL Injection）とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。 また、その攻撃を可能とする脆弱性のことである。
目的は、DBの秘密データを閲覧・修正するですね。

・クロスサイトスクリプティング（英: cross site scripting）とは、Webアプリケーションの脆弱性もしくはそれを利用した攻撃。 脆弱性をツリー型に分類するCWEではこの攻撃を不適切な入力確認(CWE-20)によるインジェクション(CWE-74)のひとつとして分類している(CWE-79)。 略称はXSS。
目的は、利用者を偽サイトに誘導して、利用者の情報を盗むなどとのことですね。
XSS攻撃による主な被害の例：
　　・フィッシング詐欺
　　　不正なスクリプトが仕込まれたページを閲覧すると、勝手に正規のサイトを模した偽サイトへ移動してしまい、気づかずIDとパスワードなどを打ち込むとその情報が攻撃者に盗まれてしまうというものです。

　　・セッションハイジャック
　　　スクリプトが埋め込まれたページを閲覧することにより、このcookie情報が盗まれてしまうことがある

　　・ウェブサイトの改ざん
　　　XSS攻撃によって対象のウェブサイトが書き換えられてしまう（改ざんされてしまう）ことがあります。

＜＜図１＞＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591618/caeb7857-1b45-db2d-93f8-332e6f887b9c.png)


**４、表５の下線③について、表３の項番”脆３”で発見された脆弱性への対策として、ソフトウェアの企画・設計段階からセキュリティの専門家を参加させる狙いを３０字以内で述べよ。**

企画・設計段階はソフトウェア開発の早い段階ですね。
なので、最初から、セキュリティ付きのソフトウェアを開発するとの狙いですね。


最初からセ高いキュリティ機能付きソフトウェアを作成する狙い　（私の答え）
→
危殆化していない暗号化通信方式を採用するため　　（参考答え）


人によっては、答えは違うだろうね。
参考答えによると、表３の項番”脆３”で発見した脆弱性（＝脆弱な暗号化通信方式が使用できてしまう設定があり、情報漏えいの恐れがあった）の対策ですね。
つまり、試験中、設問中かいている内容に従って、答えればよいとのことかなと思っておりますね。



参照：

ポートスキャンは攻撃のための調査方法｜その種類と対策について
https://www.amiya.co.jp/column/port_scan_20200514.html

SPF
https://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/spf/
https://manual.iij.jp/dns/help/1481516.html

XSS
https://www.kagoya.jp/howto/network/xss/