Download presentation
Presentation is loading. Please wait.
Published byえいじろう あかさか Modified 約 8 年前
1
情報セキュリティ 第11回:2005年6月24日(金)
2
2 本日学ぶこと サーバサイドセキュリティ Webサーバのセキュリティ 暗号化通信(SSL/TLS),ユーザ認証,アクセス 制御 不正な入力への対応 SQL インジェクション クロスサイトスクリプティング バッファオーバーラン ファイアウォール iptables
3
3 なぜ,サーバサイドのセキュリティを考えるのか サーバが攻撃されると … ネットワークが機能しなくなる サービス(顧客など,外からのアクセス)に対応できな い! LAN の外にアクセスできない! 知らないうちに加害者になることも 踏み台攻撃, DDoS ( Distributed Denial of Service )攻 撃 報道などにより,社会的信頼を低下する
4
4 典型的なWebサーバ環境 クライアント 入力 We b サー バ 問い合わせ データベー スサーバ PC ( Window s) UN IX Apac he Postg reSQL MyS QL Ora cle SQ L 検索結果 HT TP Ser vle t CGI SS L 出力(HT ML,画像 など)
5
5 SSL利用の留意点 サーバ証明書は自作できるが,その分,信頼性がない 「オレオレ証明書」 クライアント証明書は必須ではない クライアント認証はできても,ユーザ認証はしていない
6
6 Webアクセスでのアクセス制御・ユーザ認証 アクセス制御やユーザ認証をしていないと … だれでもコンテンツにアクセス可能 Googlebot (crawler) などがコンテンツを取っていくかも 「リンクを張ってないから」は言い訳にならない
7
7 Webアクセスでのユーザ認証法( Apache ) Basic 認証 ユーザ名とパスワードを指定すればアクセス可能になる. 不特定のアクセスを排除する パスワードは暗号化されない 認証後の通信も暗号化されない Digest 認証 パスワードは暗号化される 認証後の通信は暗号化されない パスワードファイルをサーバに設置する /etc/passwd と別 Web アクセスで見えないところに置く!
8
8 アクセス制御 どこからのアクセスを許可・拒否するか サーバ内のどの情報へのアクセスを許可・拒否するか 設定ファイル( Apache ) httpd.conf, apache.conf, apache2.conf など 編集には一般に root 権限が必要
9
9 Webアクセスでの不正な入力 ディレクトリトラバーサル SQL インジェクション クロスサイトスクリプティング バッファオーバーラン(バッファオーバーフロー)
10
10 ディレクトリトラバーサル CGIを使って, Web アクセスで通常見ることのできな いファイルが見えてしまう 対策 ファイル名を指定するような入力フォームは作らない 「../ 」といった入力を適切に検出し,エラーとして扱う ファイルを開く前に,開いていいファイルか,そのフル パスから判断する( ×/etc/passwd, ○/var/www/data/file1 )
11
11 SQL インジェクション 期待される入力と SQL 文 SELECT count(*) FROM usertable WHERE username='takehiko' AND password='abcd'; 悪意のある入力と SQL 文 SELECT count(*) FROM usertable WHERE username='takehiko' AND password='1' OR 'X'='X'; delete 文を埋め込んで,レ コードをすべて削除してしま うかも
12
12 SQL インジェクションへの対策 入力中の特殊な文字をエスケープする(サニタイジン グ) 「 ' 」 → 「 \' 」など プレースホルダ(準備済み SQL 文)を使用する $sth = $dbh->prepare(q{ SELECT count(*) FROM usertable WHERE username=? AND password=? }); $sth->execute($username, $password); サニタイジングは,安全に処理してくれるライブラリルー チン (先人の知恵)にお任せ Perlの コード例
13
13 クロスサイトスクリプティング XSS とも書く 問題(悪意)ある URL でアクセスすると, Cookie などブ ラウザの情報が漏洩することがある アクセス先のホスト(Webサーバ)は,企業などで,悪 意はない ただし現在では,対策をしていないアプリケーションは 脆弱性があると言ってよい URL に JavaScript のコードが埋め込まれていることが多い
14
14 クロスサイトスクリプティングへの対策 サーバ側 サニタイジング 「 」 → 「 > 」,「 " 」 → 「 " 」 など クライアント側 アクセスしようとする URL をよく確認する HTML メールはできれば使わない URL エンコーディング(「 %3C 」など)に注意
15
15 バッファオーバーラン C や C++ で,配列や malloc で確保した領域の範囲外に情 報を書き込み,実行できてしまうことがある Webサーバに限らず,クライアント PC などでも起こり得 る Webサーバの場合,やたら長いパスでアクセスしていれ ば,この攻撃を疑う 対策: セキュリティ上問題のないバージョンのアプリケーション を使う CGIなどを C か C++ で作る場合,範囲外にノーチェック で書き込める危険な関数( strcpy , sprintf など)は使わない
16
16 ファイアウォール ファイアウォールとは 組織内のコンピュータネットワークへ外部から侵入(不正 アクセス)されるのを防ぐシステム パケットフィルタリングとは 送られてきたパケットを検査して,通過させるかどうか判 断する,ファイアウォールの一つの機能 パケットヘッダに含まれている情報:プロトコル,送信 元・先の IP アドレス,ポート番号など Linux でパケットフィルタリングをするには …iptables
17
17 iptables Linux でのパケットフィルタリングツール どこからのアクセスを許可・拒否するか どのインタフェースのアクセスを許可・拒否するか どのポート番号のアクセスを許可・拒否するか NAT (Network Address Transformation) の機能もある
18
18 iptables の利用方法の基本 外からのアクセス (INPUT) は基本的に DROP ,必要に応 じて ACCEPT lo (localhost に関するインタフェース)は ACCEPT インタフェースは /sbin/ifconfig を実行すればわかる LAN など,信頼できるネットワークからのアクセスはす べて ACCEPT でもよい 外からのアクセスに必要最小限なポートも ACCEPT ssh (22) , http (80) , https (443), smtp (25) など 一律 ACCEPT ではなく,本当に必要なもののみにする! ACCEPT のルールに当てはまらないものは, LOG をとる のもよい
19
19 ブロードバンドルータはセキュリティに役立つ? PC ( Windows でも PC-UNIX でも)をインターネットに 直結するのは,攻撃やウイルス感染のもと! まずブロードバンドルータを導入して,外からのアクセ スを遮断する. 外からのアクセスを受け入れるなら,「バーチャルサー バ」などの機能を使う DMZ (DeMilitarized Zone) 機能はなるべく使わない.使 うときは,アクセス先計算機のファイアウォールをきち んと設定してから.
20
20 まとめ サーバの安全性には最大の注意を払う 脅威を把握し,どこをどう措置するか決めて実行する サーバのセキュリティを知ることで分かる「パソコンの セキュリティ」もある
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.