attack-course

Webサイトの安全性を高める施策 攻撃経路別の対策5選

前回は、ガラケー向けWebアプリケーションの脆弱性対策についてまとめた。こうした脆弱性対策の他にも、サーバーの脆弱性、なりすまし、盗聴、改ざん、マルウェア対策などが求められる。ここでは、Webサイトの安全性を高める施策についてまとめる。

1 Webサーバーへの攻撃経路と対策

基盤ソフトウェアの脆弱性をついた攻撃

Webサーバーなどにクロスサイト・スクリプティング(XSS)脆弱性があり、受動的な攻撃により利用者が被害を受ける場合がある。

 

不正ログイン

Webサーバーの管理に用いるソフトウェア(Telnetサーバー、FTPサーバー、SSHサーバー、phpMyAdminやTomcatの管理画面)に対するパスワード攻撃は頻繁に行われている。

 

対策

サービス提供に不要なソフトウェアは稼働させない

脆弱性の対処をタイムリーに行う

上流設計時に以下を確認・決定する。

  • サポートの期限の確認:ソフトウェア選定時にアップデートの提供期限を確認
  • パッチ適用の方法決定:新バージョンをフルインストールする。ソースレベルでパッチを適用してコンパイル(make)する。パッケージ管理システム(APTやYumなど)を利用する。パッチ適用ソフト(Windows UpdateやWSUSなど)を利用する

運営開始後は以下を行う。

  • 脆弱性情報を監視する:JVN(Japan Vulnerability Notes)などをRSS購読する
  • 脆弱性を確認したらパッチの提供状況や回避策を調べ対処計画を立てる:1)該当するソフトウェアが稼働しているかどうかを確認する。2)脆弱性による影響を確認し、対処の必要性を検討する。3)対処方法を決定する(対策プログラムを適用する、脆弱性を解決したバージョンにバージョンアップする、回避策を実行する)。4)詳細な実施計画を立案する(テスト環境での検証、作業スケジュールの決定、Webサイトの停止告知、サーバーのバックアップの手順、作業項目の詳細化、作業後の確認方法の詳細化、作業手順書とチェックリストの作成)
  • 脆弱性対処を実行する

 

一般公開する必要のないポートやサービスはアクセス制限する
  • 外部からは専用線かVPN経由でのみ接続する
  • 特定のIPアドレスからのみ接続を許すように制限する:インターネットの入口でルータやファイアウォールの設定により制限する、サーバーOSの機能(Windowsファイアウォールやiptables、TCP Wrapperなど)により制限する、ソフトウェアのアクセス制限機能により制限する(ポートスキャンの利用)

 

認証の強度を高める

  • TelnetサーバーとFTPサーバを削除あるいは停止し、SSH系サービスのみを稼働させる
  • SSHサーバーの設定によりパスワード認証を停止し、公開鍵認証のみとする

 

2 なりすまし対策

なりすましとは、正規サイトになりすました偽のWebサイトに利用者を誘導し、サイト改ざんや情報漏洩に使われるものである(ネットワークを安全に利用するための情報セキュリティ基礎知識5選を参照)。

 

ネットワーク的ななりすましの手口

DNSに対する攻撃

  • DNSサーバーに対する攻撃によりDNSの設定内容を書き換える
  • DNSキャッシュポイズニング攻撃:Web利用者が参照しているDNSキャッシュサーバーに対して再帰問い合わせを行い、本物のDNSサーバーが応答を返す前に偽の応答を送り込む手法のこと
  • 失効したドメインを第三者が購入して悪用する:VISAドメイン問題など

 

ARPスプーフィング

ARPスプーフィングとは、ARP(Address Resolution Protocol)の偽応答を返すことで、IPアドレスを偽装する手法のこと。ARPスプーフィングによるなりすまし攻撃は、対象サーバーがゲートウェイのIPアドレスに対するMACアドレスを要求(ARP要求)する再に、偽のARP応答を返し、ゲートウェイになりすますことですべてのパケットを経由させる。

 

フィッシング

フィッシング(Phishing)とは、正規サイトにそっくりな入力画面を用意してメールなどで利用者を誘導し、IDとパスワードや個人情報などを入力させて盗み取る手法のこと。

 

Webサイトのなりすまし対策

ネットワーク的な対策

  • 同一セグメント内に脆弱なサーバーを置かない
  • DNS運用の強化:DNSSECの導入の検討など

 

SSL/TLSの導入

SSL(Secure Sockets Layer)やTLS(Transport Layer Security)の導入によって、第三者機関(CA)によるドメインの正当性の証明をすることができる。現在販売されているサーバー証明書には、価格の安い順に以下の種類がある。ドメイン認証証明書、組織認証証明書、EV-SSL証明書。また、イスラエルのStartComという企業は、無料のサーバー証明書を発行している。

 

確認しやすいドメインの採用

下記のような属性型ドメインが適している。

  • 企業の運営するサービス:.co.jp
  • 政府機関のサービス:.go.jp
  • 地方公共団体のサービス:.lg.jp
  • 教育機関のサービス:.ac.jpあるいは.ed.jp

 

3 盗聴・改ざん対策

盗聴・改ざんの経路

  • 無線LANの盗聴・改ざん
  • ミラーポートの悪用
  • プロキシサーバーの悪用
  • 偽のDHCPサーバー
  • ARPスプーフィングとDNSキャッシュポイズニング

 

中間者攻撃

中間者攻撃(man-in-the-middle attack;MITM)とは、対象サイトと利用者の間に盗聴用の機器を割り込ませ、HTTPSリクエストをバケツリレーすることにより盗聴・改ざんを行うもの。SSL(HTTPS)通信でもプロキシなどを用いた中間者攻撃により内容の参照・改ざんができ、中間者攻撃中はブラウザの証明書エラーとなる。

 

対策

SSL利用時の注意点

  • 入力画面からHTTPSにする:入力画面の改ざん対策
  • クッキーのセキュア属性に注意(セッション管理の不備、リダイレクト処理、クッキー出力による脆弱性のクッキーのセキュア属性不備を参照)
  • 画像やCSS、JavaScriptなどもHTTPSで指定する
  • frame、iframeを使わない
  • ブラウザのデフォルト設定でエラー表示されないようにする
  • アドレスバーを隠さない
  • ステータスバーを隠さない
  • コンテキストメニュー(右クリックメニュー)を無効化しない

 

4 マルウェア対策

Webサイトのマルウェア(ウイルスなどの不正プログラム)対策とは

  • Webサーバーがマルウェアに感染していないこと:情報漏洩、サイト改ざん、不正な機能実行、他サイトへの攻撃(踏み台)
  • Webサイトを通じてマルウェアを公開しないこと:Webサイトを閲覧した利用者のPCがマルウェアに感染する

 

マルウェアの感染経路

独立行政法人情報処理推進機構の調査(2009年)によると、ウイルスの感染経路は、電子メール(45.2%)、インターネット接続(48.3%)、外部媒体、持ち込みクライアント(48.0%)となっている(重複回答あり)。

 

Webサーバーのマルウェア対策の概要

  • サーバーの脆弱性対処をタイムリーに行う
  • 出所不明なプログラムをサーバーに持ち込まない
  • サーバー上では運営に直接関係のない操作(Webやメールの閲覧など)をしない
  • サーバーにUSBメモリなどの外部メディアを装着しない
  • Webサーバーのネットワークを執務スペースのLANと切り離す
  • サーバーに接続するクライアントPCにウイルス対策ソフトを導入してパターンファイルを最新に保つ
  • Windows UpdateなどによりクライアントPCに最新のセキュリティパッチを導入する

 

Webサーバーにマルウェアを持ち込まない対策

マルウェア対策の要否を検討する(責任者)

  • Webサイト運営者
  • アップロードファイルの投稿者
  • アップロードファイルの閲覧者

 

ポリシーを定めて利用者に告知する

  • ファイルのウイルス対策の方法
  • 利用者の責任で利用することなど

 

ウイルス対策ソフトによる対処

  • サーバーにウイルス対策ソフトを導入し、アップロード領域を検査対象として設定する
  • ウイルス対策ゲートウェイ製品を通過させる
  • ウイルス対策ソフトのAPIを利用して検査処理を作り込む

 

最後に

今回挙げた5つの対策を実施することで、自然と「ガンブラー」対策にもなる。ガンブラー(Gumblar)とは、Webサイト改ざんとウェブ感染型ウイルス(Webサイトを閲覧するだけで感染させられてしまうウイルス)の組み合わせによるウイルス感染の手口である。FTPに代わるSCPやSFTPの公開鍵認証やアクセス制限により、不正ログインに対処できる。また、管理者のクライアントPCの脆弱性対策とウイルス対策ソフトにより、クライアントPCへのウイルス感染を防ぐことができるのだ。何事も基本が大切である。

次回は、開発マネジメントにおけるセキュリティ施策についてまとめる。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>