まずは、どんな攻撃があるかを知ろう

セキュリティの目的は、システムやデータの機密性/完全性/可用性を確保することです。多くの悪意を持つクラッカーがあなたのシステムやデータの機密性/完全性/可用性を脅かそうとしています。

まずは、敵を知ることが重要です。クラッカーが何を狙ってどのようにシステムやデータを攻撃してくるのかを知っておきましょう。

機密性に対する脅威と対策

機密性に対する脅威として、データの盗聴が挙げられます。ネットワークを転送される経路上で悪意のある第三者にデータを盗聴されると、通信内容が漏れてしまいます。また、データの送信元と宛先の間に悪意を持つ第三者が介在して、データが詐取されてしまう中間者攻撃(Man In the Middle Attack)があります。

図 データの盗聴と中間者攻撃
図 データの盗聴と中間者攻撃

データの盗聴に対する対策は、暗号化です。データを暗号化することで、盗聴されてもデータの内容が第三者に漏れることはありません。データの暗号化には、さまざまな技術が利用されています。また、中間者攻撃を防ぐには、通信相手が意図している相手かどうかを確認する認証が重要です。PKIに基づいたデジタル証明書を利用するSSLによって、データの暗号化と通信相手の認証を実現できます。

データの盗聴や中間者攻撃を成立させるためには、悪意のあるユーザは通信経路上のどこかに接続しなければなりません。社内ネットワーク上のデータを盗聴するためには、社内ネットワークに接続する必要があります。データの盗聴や中間者攻撃を防止するには、ネットワークに接続するときに認証を行ったり、ルータやファイアウォール、IDS/IPSなどのネットワーク機器でのアクセス制御も重要です。

また、ネットワーク上を転送されるデータではなく、Webアプリケーションを攻撃対象としてデータを盗聴しようとする攻撃もあります。SQLインジェクションやクロスサイトスクリプティング攻撃などWebアプリケーションの脆弱性を狙って、不正なリクエストを送信し、データを盗み出します。

図 Webアプリケーションのデータの盗聴
図 Webアプリケーションのデータの盗聴

Webアプリケーションに対する防御は、Webアプリケーション側で不正なリクエストを受け付けないようにプログラムの作りこみを行うことが重要です。そして、Webアプリケーションの防御にはWAF(Web Application Firewall)も有効です。

完全性に対する脅威と対策

完全性に対する脅威として、データの改ざんが挙げられます。ネットワーク上を転送されるデータが悪意のあるユーザによって書き換えられてしまう危険性があります。データの改ざんを防ぐには、デジタル署名を利用します。デジタル署名によって、データの送信元と改ざんされていないことが保証されます。

機密性に対する脅威と同様に、ネットワーク上を転送されるデータだけではなく、アプリケーションを攻撃対象としてデータを改ざんする攻撃があります。バッファーオーバフローやSQLインジェクション、クロスサイトスクリプティング攻撃などは、不正なリクエストを送信してデータを改ざんします。こうした攻撃によって、Webサイトを書き換えてウィルスを仕込み、そのサイトにアクセスしてきたPCにウィルスを送り込むような場合もあります。

図 Webサイトの改ざん
図 Webサイトの改ざん

アプリケーションのデータの改ざんに対する対策は、前述のようにWebアプリケーションのプログラムの作りこみをしっかりと行うこととWAFです。

完全性に対する別の脅威としてなりすましがあります。なりすましにもさまざまなパターンがあります。何らかのサービスのユーザになりすまして、不正にシステムにログインして、個人情報などを詐取する場合があります。このような不正なログインの攻撃としてブルートフォース攻撃や辞書攻撃、セッションハイジャックなどがあります。ブルートフォース攻撃は総当り攻撃とも呼ばれ、ユーザID/パスワードの組み合わせを総当りで試行します。辞書攻撃は、辞書にある単語をパスワードとして不正なログインの試行を行う攻撃です。セッションハイジャックは正規のユーザのセッションIDを盗聴して、ユーザのセッションを乗っ取る攻撃です。正規のユーザになりすまして、ログインできてしまうと、正規のユーザのデータが盗聴されたり改ざんされることにつながります。

ユーザのなりすましを防止するためには、パスワードのポリシーを厳格にしたり、パスワード以外の要素も認証に利用する二要素認証やワンタイムパスワードを利用します。また、アプリケーション側でセッションIDの管理を厳密に行うように作りこみセッションハイジャックを防止します。

図 ユーザのなりすまし
図 ユーザのなりすまし

通信相手となるサーバになりすます攻撃もあります。一例として、DNSキャッシュポイズニングがあります。DNSキャッシュポイズニングは、DNSサーバの情報を改ざんし、正規のサーバではなく悪意の持つユーザの不正サーバへアクセスさせます。不正サーバは正規のサーバとそっくりなインタフェースを持つように構成されていて、ユーザは不正なサーバにアクセスしていることに気がつきにくくしています。ユーザが気付かずに不正なサーバへ送信したデータが盗聴されることになります。

図 DNSキャッシュポイズニング
図 DNSキャッシュポイズニング

DNSキャッシュポイズニングの対策としては、DNSSECがあります。また、デジタル証明書によって、ユーザは通信相手が正規のサーバであることを確認できます。

さらに、否認も完全性に対する脅威です。否認とは、たとえば、オンラインのシステムで何らかの商品の発注をしたのに、発注者が発注したことを認めないことです。

否認に対する対策は、デジタル署名やタイムスタンプです。デジタル署名によって、データの送信元と改ざんされていないことが保証します。また、タイムスタンプを付加することでその時点でデータが存在していたことを保証します。

可用性に対する脅威と対策

可用性に対する脅威はDoS(Denial of Service)攻撃です。DoS攻撃とは、ネットワークを使えなくしたり、サーバをダウンさせたりしてサービスを提供できないようにする攻撃です。たとえば、大量のデータを送信してネットワークの帯域幅を使い切ってしまったり、特定のサーバに対して大量のTCPコネクション要求を送信してサーバのCPUプロセスに過剰な負荷をかけたりなどがDoS攻撃です。また、OSやアプリケーションで不正な処理を引き起こすパケットを送りつけて、サーバをシャットダウンさせるような攻撃もあります。主なDoS攻撃として、以下のようなものがあります。

  • TCP Synflood
  • Smurf攻撃
  • Teardrop攻撃

TCP SynfloodはサーバへのTCP接続要求を大量に送信します。送信元IPアドレスを偽装しているので、TCPの接続は完全に完了しないハーフコネクション状態となります。TCPのハーフコネクションがたくさん発生し、サーバのCPUプロセスの負荷が大きくなります。

Smurf攻撃は、大量のICMPパケットを送信して、ネットワークの帯域幅を過剰に消費させようとする攻撃です。

Teardrop攻撃は、IPヘッダのフラグメント情報が不正なパケットを送りつけます。OSによっては、不正なフラグメント情報のパケットを正しく処理できずにOSが停止することがあり、正常にサービスを提供できなくなります。

図 DoS攻撃
図 DoS攻撃

DoS攻撃の攻撃元が多数でなおかつ分散されたDDoS(Distributed DoS)攻撃もあります。悪意を持つユーザは、セキュリティ対策が十分ではないPCにボットと呼ばれる不正なプログラムを送り込み、DDoS攻撃に参加させます。多数の送信元からの一斉の攻撃で、狙われるとサービスの提供に深刻な影響がでます。

DoS/DDoS攻撃の対策は、IDS/IPSなどによるアクセス制御です。DoS/DDoS攻撃のパターンを検出すると、不正アクセスとして通信をブロックしてネットワークやサーバを防御します。

セキュリティの基礎