1 / 22

情報セキュリティ

q. q. 情報セキュリティ. 第11回:2006年6月30日(金). q. q. 本日学ぶこと. サーバサイドセキュリティ Webサーバのセキュリティ 暗号化通信(SSL/TLS),ユーザ認証,アクセス制御 不正な入力への対応 SQL インジェクション クロスサイトスクリプティング バッファオーバーラン ファイアウォール セキュア OS. 本日の授業で学ぶ内容. 暗号通信がセキュリティのすべてではない 不正な入力のパターンを知り,それを防止する 機密性と可用性のバランスをとるには,アクセス制限 まずすべて拒否し,必要なものだけ許可する.

malini
Download Presentation

情報セキュリティ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. q q 情報セキュリティ 第11回:2006年6月30日(金) q q

  2. 本日学ぶこと • サーバサイドセキュリティ • Webサーバのセキュリティ • 暗号化通信(SSL/TLS),ユーザ認証,アクセス制御 • 不正な入力への対応 • SQLインジェクション • クロスサイトスクリプティング • バッファオーバーラン • ファイアウォール • セキュアOS

  3. 本日の授業で学ぶ内容 • 暗号通信がセキュリティのすべてではない • 不正な入力のパターンを知り,それを防止する • 機密性と可用性のバランスをとるには,アクセス制限 • まずすべて拒否し,必要なものだけ許可する

  4. なぜ,サーバサイドのセキュリティを考えるのかなぜ,サーバサイドのセキュリティを考えるのか • サーバが攻撃されると… • ネットワークが機能しなくなる • サービス(顧客など,外からのアクセス)に対応できない! • LANの外にアクセスできない! • 知らないうちに加害者になることも • 踏み台攻撃,DDoS (Distributed Denial of Service)攻撃 • 報道などにより,社会的信頼を低下する

  5. 典型的なWebサーバ環境 PostgreSQL Apache Oracle PC (Windows) UNIX MySQL 問い合わせ 入力 出力(HTML,画像など) 検索結果 クライアント Webサーバ SQL データベースサーバ SSL HTTP CGI Servlet

  6. SSL利用の留意点 • サーバ証明書は自作できるが,その分,信頼性がない • 「オレオレ証明書」 • クライアント証明書は必須ではない • クライアント認証はできても,ユーザ認証はしていない

  7. Webアクセスでのアクセス制御・ユーザ認証Webアクセスでのアクセス制御・ユーザ認証 • アクセス制御やユーザ認証をしていないと… • だれでもコンテンツにアクセス可能 • Googlebot (crawler)などがコンテンツを取っていくかも • 「リンクを張ってないから」は言い訳にならない crawler

  8. Webアクセスでのユーザ認証法(Apache) • Basic認証 • ユーザ名とパスワードを指定すればアクセス可能になる. • 不特定のアクセスを排除する • パスワードは暗号化されない • 認証後の通信も暗号化されない • Digest認証 • パスワードは暗号化される • 認証後の通信は暗号化されない • パスワードファイルをサーバに設置する • /etc/passwdと別 • Webアクセスで見えないところに置く!

  9. アクセス制御 • どこからのアクセスを許可・拒否するか • サーバ内のどの情報へのアクセスを許可・拒否するか • 設定ファイル(Apache) • httpd.conf, apache.conf など • 編集には一般にroot権限が必要 対象ディレクトリ アクセス制限の記述例 <Directory /home/*/public_html> order deny,allow deny from all allow from .wakayama-u.ac.jp allow from 192.168.0.0/255.255.255.0 </Directory> まず拒否 許可する接続元ホスト名 許可する 接続元IPアドレス

  10. Webアクセスでの不正な入力 • ディレクトリトラバーサル • SQLインジェクション • クロスサイトスクリプティング • バッファオーバーラン(バッファオーバーフロー)

  11. ディレクトリトラバーサル • CGIを使って,Webアクセスで通常見ることのできないファイルが見えてしまう • 対策 • ファイル名を指定するような入力フォームは作らない • 「../」といった入力を適切に検出し,エラーとして扱う • ファイルを開く前に,開いていいファイルか,そのフルパスから判断する(×/etc/passwd, ○/var/www/data/file1)

  12. SQLインジェクション • 期待される入力とSQL文 • SELECT count(*)FROM usersWHERE username='takehiko'AND password='abcd'; • 悪意のある入力とSQL文 • SELECT count(*)FROM usersWHERE username='takehiko'AND password='1' OR 'X'='X'; • delete文を埋め込んで,レコードをすべて削除してしまうかも

  13. SQLインジェクションへの対策 • 入力中の特殊な文字をエスケープする(サニタイジング) • 「'」→「\'」など • プレースホルダ(準備済みSQL文)を使用する • $sth = $dbh->prepare(q{ SELECT count(*) FROM usertable WHERE username=? AND password=? }); • $sth->execute($username, $password); • サニタイジングは,安全に処理してくれるライブラリルーチン(先人の知恵)にお任せ Perlの コード例 SELECT count(*)FROM usersWHERE username='takehiko'AND password='1\' OR \'X\'=\'X'; 上の例で $usernameが「takehiko」, $passwordが「1' OR 'X'='X」なら…

  14. クロスサイトスクリプティング • XSSとも書く • 問題(悪意)あるURLでアクセスすると,Cookieなどブラウザの情報が漏洩することがある • アクセス先のホスト(Webサーバ)は,企業などで,悪意はない • ただし現在では,対策をしていないアプリケーションは脆弱性があると言ってよい • URLにJavaScriptのコードが埋め込まれていることが多い

  15. クロスサイトスクリプティングへの対策 • サーバ側 • サニタイジング • 「<」→「&lt;」,「>」→「&gt;」,「"」→「&quot;」など • クライアント側 • アクセスしようとするURLをよく確認する • HTMLメールはできれば使わない • URLエンコーディング(「%3C」など)に注意

  16. バッファオーバーラン • CやC++で,配列やmallocで確保した領域の範囲外に情報を書き込み,実行できてしまうことがある • Webサーバに限らず,クライアントPCなどでも起こり得る • Webサーバの場合,やたら長いパスでアクセスしていれば,この攻撃を疑う • 対策: • セキュリティ上問題のないバージョンのアプリケーションを使う • CGIなどをCかC++で作る場合,範囲外にノーチェックで書き込める危険な関数(strcpy,sprintfなど)は使わない

  17. ファイアウォール • ファイアウォールとは • 組織内のコンピュータネットワークへ外部から侵入(不正アクセス)されるのを防ぐシステム • パケットフィルタリングとは • 送られてきたパケットを検査して,通過させるかどうか判断する,ファイアウォールの一つの機能 • パケットヘッダに含まれている情報:プロトコル,送信元・先のIPアドレス,ポート番号など • Linuxでパケットフィルタリングをするには…iptables

  18. OK NG iptables • Linuxでのパケットフィルタリングツール • どこからのアクセスを許可・拒否するか • どのインタフェースのアクセスを許可・拒否するか • どのポート番号のアクセスを許可・拒否するか • NAT (Network Address Transformation) の機能もある

  19. iptablesの利用方法の基本 • 外からのアクセス(INPUT)は基本的にDROP,必要に応じてACCEPT • lo (localhostに関するインタフェース)はACCEPT • インタフェースは /sbin/ifconfig を実行すればわかる • LANなど,信頼できるネットワークからのアクセスはすべてACCEPTでもよい • 外からのアクセスに必要最小限なポートもACCEPT • ssh (22),http (80),https (443), smtp (25) など • 一律ACCEPTではなく,本当に必要なもののみにする! • ACCEPTのルールに当てはまらないものは,LOGをとるのもよい

  20. ブロードバンドルータはセキュリティに役立つ?ブロードバンドルータはセキュリティに役立つ? • PC (WindowsでもPC-UNIXでも)をインターネットに直結するのは,攻撃やウイルス感染のもと! • まずブロードバンドルータを導入して,外からのアクセスを遮断する. • 外からのアクセスを受け入れたいなら,「バーチャルサーバ」などの機能を使う • DMZ (DeMilitarized Zone)機能はなるべく使わない.使うときは,アクセス先計算機のファイアウォールをきちんと設定してから.

  21. UNIXの安全性 • rootは全能の神⇒root権限を奪われる(権限昇格)と,何でもされてしまう • セキュアOS • 既存のOSと互換性は保ちつつ,神のような強大な権限をなくす • 「強制アクセス制御(Mandatory Access Control, MAC)」と「最小特権」を持つ • LinuxにおけるセキュアOS • SELinux (Security Enhanced Linux) • LIDS (Linux Intrusion Ditection System)

  22. まとめ • サーバの安全性には最大の注意を払う • サーバのセキュリティを知ることで分かる「パソコンのセキュリティ」もある

More Related