2004年度 情報システム構成論 第4回 ネットワークセキュリティ基礎 2004年度 情報システム構成論 第4回 ネットワークセキュリティ基礎 西尾 信彦 nishio@cs.ritsumei.ac.jp 立命館大学 情報理工学部 情報システム学科 ユビキタス環境研究室
具体的問題 Ethernetの問題 TCP/IPの問題 上位層での脆弱性 盗聴・詐称・改ざん プロトコル仕様 プロトコル実装 アプリケーション設計,実装
ネットワークは信用できない LANはホストの追加が非常に簡単 インターネットはそもそも信用できない 無線LANは自由に接続が可能 正規のクライアントのみが接続している保証がない インターネットはそもそも信用できない 有線LANもコネクタを繋ぎ直せば、 誰でもネットワークに参加できる
DHCPの問題 DHCP (Dynamic Host Configuration Protocol) IPアドレスを動的に配布する 要求があり、空きがあれば自動的に配布され、正規ユーザ、不正規ユーザを見分ける機構をもっていない MACアドレスを指定して限定することは可能
ネットワーク参加時に ユーザ認証をする方法 MACアドレス詐称は可能 DHCPの機構では、参加を防ぎきれない IEEE802.1xを利用する IDとパスワードを利用 正規のユーザの場合のみIPアドレスを配布 ユーザ認証情報を保持するサーバを利用 RADIUS(Remote Access Dial In User Service)
盗聴・改ざん・詐称問題 Ethernetの問題 IPの問題 IEEE802.1xを利用しても、IPアドレスを 手動で取得、設定されれば意味がない IPの問題 インターネットでは、ルーティング経路が全て悪意のないホストではない可能性がある 途中で改ざんされても、それを知る機構が存在しない
Ethernet盗聴 Ethernetの動き 全パケットを一度受け取り、 自分宛てでないパケットを破棄する 破棄する前に読んでしまえ 正規の利用者の場合 不正な利用者の場合
ルータの所持者が悪意のある第三者の場合、改ざん、盗聴される恐れがある IPパケット改ざん・詐称 ルータの所持者が悪意のある第三者の場合、改ざん、盗聴される恐れがある
盗聴・改ざん・詐称の被害 パスワードなどを平文で送信した場合に、 パスワードを見ることが出来る パスワードアタックに利用される もっとも原始的で、非常に有効な攻撃方法 メールの内容や、見ているWebページなどの内容を全て取得することが出来る プライバシーや機密の問題
盗聴・改ざん・詐称の被害 システムを詐称して,パスワードを入力させる. ユーザのリクエストを変更する.
WEP (Wired Equivalent Privacy) 無線LANでの通信路の暗号化 RC4アルゴリズムを利用した秘密鍵暗号方式 40bit 方式で制定されたが,近年では128bit方式が採用されている さらにWPAが制定されている
Switching Hubによる盗聴防止 共有バスではないので盗聴されない 近年のネットワークのほとんどがSwitching Hub方式 さらにVLAN(仮想LAN)の構築も可能 おかげでSniffingやtcpdump, etherealなどが利用できなく(Switchを越えられなく)なっている.
IPSecを利用する ESP(Encapsulation Security Payload)とAH(Authentication Header) 主流はESP,以下ESPについて IPレベルでパケットを暗号化 IPSecで可能なこと データ部の暗号化 IPアドレスの隠蔽 パケット改ざんの検出 送信元成りすましの回避
IPSecの動き 暗号化とIPアドレス隠蔽(トンネリング)
IPSecの鍵の動き(IKE: Internet Key Exchange)
IPSecがあれば大丈夫? 特定ルート間の暗号化は可能だが、 不特定ルート間の暗号化は出来ない アプリケーション・プロトコルレベルでの セキュリティ対策も必要になる
上位層の問題 アプリケーションバグ コーティングミスや設計ミスによる物 代表例:バッファオーバーフロー 例: 下記のようなコードを含むプログラムは 引数に『;』を含む文字列を与えることによって、自由にコマンドを実行可能 代表例:バッファオーバーフロー void exeMkdir(char * arg){ char *cmd = malloc(sizeof(char)*(strlen(arg)+strlen(“mkdir “))); sprintf(cmd,”mkdir %s”,arg); exec(cmd); }
バッファオーバーフロー バッファオーバーフロー 事前に確保しておいたメモリ以上の書き込みを行うときに発生する。 古いプログラムや、設計が甘いプログラムなどで発生する 代表的なものはC言語のstrcpyなどを利用したときに発生するもの char to[10]; strcpy(to,”0123456789_over”);
バッファオーバーフロー攻撃 攻撃用の コードを実行 任意のコード データ領域を越えて書き込み データ領域 スタック情報を上書き 書き込み対象 データ領域 システムスタック情報 アプリケーション OS本体 攻撃用の コードを実行 データ領域を越えて書き込み スタック情報を上書き
プロトコル仕様の脆弱性 身元確認機構がないHTTP 身元確認機構がないDHCP 身元確認機構がないSMTP 詐称、改ざん 身元確認機構がないDHCP 不正アクセス 身元確認機構がないSMTP 違法メール送信の踏み台、差出人詐称 パスワードなどを平文で流す POP, IMAP, telnet, etc… パスワード・内容の盗聴の危険性
プロトコル問題例:HTTP セッションが存在しない Webページ上でのセッション維持はURLやCookieで行われる 例: http://xxxx.com/shopping?user=Akio&pass=PASS cookie: sessionid = 100000000 これらはパケットの傍受・盗聴で取得可能 詐称するには上記のアドレスにアクセスするだけで事足りる
上位層・プロトコル問題対策 最新のバージョンにアップデートする 安全なアプリケーション以外を使わせない 必要ではないサービス・プロトコルを 安易に利用・開放しない(Rainbowでのアプローチ) ファイアウォールで制限をかける
ファイアウォール 不正アクセスを遮断する
ファイアウォール方式 パケットフィルタリング型ファイアウォール ゲートウェイ・Proxy型ファイアウォール 第3層のファイアウォール アクセス元IPアドレス・アクセス先Portなどを判断基準としてパケットを制限する ゲートウェイ・Proxy型ファイアウォール 第7層のファイアウォール ゲートウェイ型 HTTPなどの要求の種類や送信元情報や送信先情報を利用してアクセスを制限する 細かい設定が可能、サービス内の特定機能のみ制限をかけることも出来る Proxy型 直接クライアントに対象サーバへアクセスさせるのではなく、代理アクセスを行いその結果をクライアントに返す。
防御できない攻撃 DoS(Denial of Service) DDoS(Distributed Denial of Service) パケットなどを大量に送信し、ネットワークに負荷をかけ、正常なサービスを妨害する DDoS(Distributed Denial of Service) DoSを複数のマシンから行うもの ポートスキャン パスワードチャレンジアタック 回数制限をかける 応答間隔を空ける 程度の方法しかない
DoS攻撃とは? Denial of Services (サービス拒否) の略 ウィルスではない 正規手続によるサービスの妨害および拒否 専用のツールを使用 標的となるインターネットサーバに大量のリクエストパケットを送りつけ サーバのリソースを使い尽くしてシステムを使用不可能にする
DoS攻撃の形態 発信元の偽り方で分類すると ランダム攪乱 反射攪乱 攻撃者はランダムに発信元アドレスを変更 攻撃者は被害者アドレスを詐称して多数の第三者(反射ホスト)に送信 多数の反射ホストは被害者に応答する 反射ホストはクラックする必要もなく, インターネット上のあらゆるサーバが候補
ランダム攪乱攻撃 S1 M S2 V S3 クラックして リモートコントロール src=random dst=victim
反射攪乱攻撃 R1 R4 S1 R2 R5 V M S2 R6 S3 R3 R7 クラックして リモートコントロール Request: src=victim dst=reflector Reply: src=reflector dst=victim
DoS攻撃に対する関連研究分類 侵入検知システム (IDS) フィルタリング 逆探知 リンクテスト,ログ,ICMP,パケットマーク
まとめ 現行のInternetは基本的に安全ではない より安全な機構を作り上げること、安全なプロトコルを「選ぶこと」は出来る 利用・構築する人間がセキュリティを 強く意識しているかことが最大の防壁