セキュリティ 情報システム管理 6. セキュリティ 水野嘉明 情報システム管理 1
本日の内容 1. セキュリティについて セキュリティの必要性、クラッカー の攻撃手段、など 2. セキュリティ対策 どのようにして、セキュリティを 守るか 2
1. セキュリティについて 1.1 セキュリティの必要性 1.2 セキュリティに関する情報源 1.3 クラッカーの攻撃手段 3
1.1 セキュリティの必要性 セキュリティは、サーバ管理の基本 最優先課題としなければならない サーバ管理者として、“常識”が求められる 4 情報システム管理 4
1.1 セキュリティの必要性 サーバの特質 24時間運転 外部に対して開かれている 元々インターネットは、大学や研究機関が相互に助け合って発展 本質的には不正に対して脆弱 5
1.1 セキュリティの必要性 セキュリティが甘いと・・・ ビールス・ワームに感染 乗っ取り (外部から不正操作) 物理的に不正操作 機密情報の漏洩 破壊(データの破壊、物理的な破壊) 6
1.1 セキュリティの必要性 他のマシンへの攻撃の踏み台 ボット、IRCサーバ ⇒ SPAMメールやDDoS攻撃 に利用 サイトの改竄 ⇒ ビールス、ワームの配布 フィッシングサイト開設 偽サイトを用いた詐欺 7
1.1 セキュリティの必要性 知らない間に、加害者となる セキュリティの甘いサーバは、皆の迷惑 被害者から、損害賠償 を請求されることも有り得る (「知らなかった」「気付かなかった」 ではすまされない) 8
1.1 セキュリティの必要性 「不正アクセス行為の禁止等に関する法律」 第五条 「・・(サーバ管理者は)当該特定電子計算機を不正アクセス行為から防御するため必要な措置を講ずるよう努めるものとする。」 9
1.2 セキュリティに関する情報源 セキュリティ上の問題点・脆弱性についての情報源 CERT/CC (コンピュータ緊急対応 チーム/調整センター) JPCERT (日本版CERT) IPA (情報処理推進機構) OS、コンピュータメーカ、セキュリティソフトのメーカ等の公式サイト 10
1.3 クラッカーの攻撃手段 パスワードの不備を利用した攻撃 パスワード解析ツール ⇒ 辞書攻撃、総当り攻撃 ソーシャルエンジニアリング ⇒ なりすまし、盗聴 クラッカー:不正アクセスを行う者 ソーシャルエンジニアリング:非技術的方法による不正 root のパスワードを入手したら、 何でもやり放題 11
1.3 クラッカーの攻撃手段 セキュリティホールの利用 OSやサーバプログラムのような大きなソフトには、バグは必ず存在する ⇒ 不正なプログラムの実行 SQLインジェクション、クロスサイトスクリプティング等 12
1.3 クラッカーの攻撃手段 ウイルス/ワーム Windowsに感染するものが非常に多い Linuxのセキュリティホールを利用するものも、多数ある 13
1.3 クラッカーの攻撃手段 Webサイトの改ざん Webサイトを閲覧するだけで、ウィルスに感染する恐れ FTPのIDとパスワードが盗まれ、Webサイトの改ざんが芋づる式に広がる 14
1.3 クラッカーの攻撃手段 サーバマシンの破壊・妨害 物理的な破壊 ディスクの盗難、解読 DoS/DDoS攻撃 15
1.3 クラッカーの攻撃手段 具体的な攻撃手段の例 ボット / ゾンビ ウイルスやトロイの木馬により、他人のコンピュータを遠隔操作で悪用できるようにする スパムメールやDDoS攻撃の発信源にされる 16
1.3 クラッカーの攻撃手段 DoS / DDoS ((Distributed) Denial of Service) 17
1.3 クラッカーの攻撃手段 SQLインジェクション Web上のデータベースに対する攻撃 不正なSQL文を渡して、様々な不正を行う 18
1.3 クラッカーの攻撃手段 クロスサイトスクリプティング Webサイトの掲示板などに、不正なスクリプトを書き込む攻撃 閲覧すると、不正スクリプトが実行される 19
1.3 クラッカーの攻撃手段 ガンブラー Webサイトを改ざんして、「Web感染型ウイルス」を組み込む 感染したマシンからFTPパスワードを盗聴し、そのWebサイトを改ざん ⇒ 感染が多数に広がる 20
1.3 クラッカーの攻撃手段 ポートスキャン サーバのポートに順番にアクセス サーバ内で動作しているアプリケーションやOSの種類を調べる 進入口がないか調べる 攻撃の前準備 21
2. セキュリティ対策 2.1 サーバの物理的管理 2.2 セキュリティホールへの対応 2.3 パスワードの管理 2.4 不要サービスの停止 2.5 フィルタリング 2.6 ログの監視 2.7 SELinux 22
2.1 サーバの物理的管理 電源 UPS(無停電電源装置)の利用 電源容量の確認 ブレーカが落ちることが、たまにある コードの整理 内蔵バッテリを備え、停電時などにサーバに電力を提供 電源容量の確認 ブレーカが落ちることが、たまにある コードの整理 コードのカバー、プラグのロック、フリーアクセスフロア など 23
2.1 サーバの物理的管理 熱と ほこり 空調 タバコの煙は論外 (昔は結構問題となった) 盗難と破壊への対策 マシンルームへの入退出の制限 筐体のロック ワイヤーの利用 24
2.1 サーバの物理的管理 ビールス・ワーム対策 FD/CD/DVD/USBメモリの使用を制限・禁止 ソフトウェアのインストールを制限・禁止 ⇒ ドライブを接続しないこともある 25
2.2 セキュリティホールへの対応 ソフトは速やかに、アップデートする 自分で気をつけていることは困難 更新があったときに、 自動で通知 あるいは 自動的に アップデート をするように設定する 26
2.2 セキュリティホールへの対応 セキュリティ上のアップデートは、忘れずに行なわなければならない アップデートにより、不具合が発生することもある 自動通知 + テストしてからアップデート 27
2.3 パスワードの管理 長さや期限を制限 最低の長さを規定 英大文字・小文字・数字・記号を混ぜる 期限: エージング ☆ DES暗号化だと最大8文字 MD5暗号化を用いる (256字迄) 28
2.3 パスワードの管理 シャドウ・パスワードを利用する 暗号化したパスワードを、誰でも読める /etc/passwd ファイルではなく、 /etc/shadow ファイルに格納する (BSDでは /etc/master.passwd) ほとんどのUNIXで、標準 29
2.3 パスワードの管理 アカウントは、必要最小限に アカウントが多いほど、不正アクセスの入り口が増える 不要となったアカウントは、すぐに削除する (退社した人間のアカウントが残っており、そのアカウントで不正アクセスされた例がある) 30
2.3 パスワードの管理 ソーシャルエンジニアリング に注意 各ユーザに注意を徹底する ☆ 電話で会社の幹部や客のふり をして、聞きだそうとする ⇒ 誰かにパスワードを聞かれ ても教えないこと ☆ 「パスワードをメモに書いてディ スプレイに貼り付け」 ⇒ 不可 31
2.4 不要サービスの停止 動いていないプログラムは、セキュリティホールとはならない 不要なサービスは、停止する 32
2.4 不要サービスの停止 サービスを提供するのは デーモン スーパーデーモンから起動されるサービスプログラム 稼働状況の確認 rc?.d ディレクトリを確認 ps / sysv-rc-conf / service / chkconfig などのコマンド 33
2.4 不要サービスの停止 サービスを停止する 今動いているサービスを停止する ⇒ invoke-rc.d / service コマンド システムの起動時に、自動で起動するのを停止 ⇒ update-rc.d / sysv-rc-conf / chkconfig コマンド 34
2.4 不要サービスの停止 今動いている sendmail を停止する $ invoke-rc.d sendmail stop $ service sendmail stop 起動時にsendmail を起動しないようにする (リンクを rc?.dから削除) $ update-rc.d -f sendmail remove $ chkconfig --del sendmail 35
2.4 不要サービスの停止 inetd によるサポートは、 /etc/inetd.conf で定義 不要なサービスは、コメントアウトしておく 36
2.5 フィルタリング TCP/IP では、データは「パケット」を単位として送受信される パケットには以下の情報がある これらの情報を基に、パケットそのものの通過を制御するのが パケット・フィルタリング 37
2.5 フィルタリング IPアドレス a.b.c.d 以外からは拒否 IPアドレスa.b.c.d からは許可 サーバ ポート80は許可 再掲 2.5 フィルタリング IPアドレス a.b.c.d 以外からは拒否 IPアドレスa.b.c.d からは許可 サーバ パケット・ フィルタ SSHサーバ Webサーバ ポート80は許可 FTPサーバ (動作していない) ポート20は拒否 38
2.5 フィルタリング パケット・フィルタリングの設定 iptables にて設定 (前回 「5. ネットワークとファイアウォール」にて説明) 39
2.5 フィルタリング 代表的なサービスとそのポート番号 サービス 機能 番号 Web Webサーバ 80 FTP ファイル転送(データ) 20 ファイル転送(コマンド) 21 SSH リモートホストの操作(暗号化) 22 Telnet リモートホストの操作 23 DNS ホストの名前解決 53 SMTP 電子メールの配信 25 POP3 メールサーバからの受信 110 40
2.6 ログの監視 ログ (log : 航海日誌) システムの運用記録 ログの確認は、サーバの安全性を確認するための基本作業 不正な操作は行われていないか その他の不具合は発生していないか 41
2.6 ログの監視 すべて、ログにより発見できる ログの効用例 必要なデーモンが止まっている 不必要なデーモンが動いている アプリでエラーが発生している 不正なアクセス(攻撃)がある 手当たりしだいのログイン DDoS攻撃 ポートスキャン 42
2.6 ログの監視 ログの種類 システムが生成する シスログ syslogd というデーモンにより出力される 各ソフトが出力するログ 例えば、Webサーバなどが出力するログ 43
2.6 ログの監視 サービス プログラム (例:Telnet) ログ syslogd ファイル システムに依頼 サービス プログラム (例:Apache) ログ ファイル 独自に出力 44
2.6 ログの監視 シスログの例 (/var/log/messages) 45
2.6 ログの監視 syslogd の設定 どのような種類のシスログを どこへ出力するか /etc/syslog.conf ファイルにて 設定 46
2.6 ログの監視 /etc/syslog.conf の記法 ファシリティ:出力元を指定 auth, cron, kern, lpr, mail ・・・ プライオリティ:重要度 info, notice, ・・・ alert, emerg 出力先:ファイル名、端末など ファシリティ.プライオリティ 出力先 47
2.6 ログの監視 /etc/syslog.conf 例 48
2.6 ログの監視 ファシリティの種類 対象 auth 認証に関するログ authpriv cron 定期実行プログラム cron kern Linux カーネル lpr プリンタ mail メール 49
2.6 ログの監視 ファシリティの種類 (続き) 対象 news ニュース syslog シスログ user ユーザプロセス(一般アプリ) uucp ファイル転送プログラム uucp daemon 上記以外のデーモン local* アプリケーションに依存 50
2.6 ログの監視 プライオリティの種類 内容 debug デバッグ情報 info 一般的な情報 notice 重要な通知 warn 警告 Priority 内容 debug デバッグ情報 info 一般的な情報 notice 重要な通知 warn 警告 err 一般的なエラー 51
2.6 ログの監視 プライオリティの種類 (続き) 内容 crit 致命的なエラー alert 緊急に対処すべきエラー emerg Priority 内容 crit 致命的なエラー alert 緊急に対処すべきエラー emerg システムが停止しそうな状態にあることを示す情報 52
2.6 ログの監視 主なログファイル /var/log/wtmp ログインの履歴 /var/log/authlog 認証時のログ /var/log/cron cronの実行結果 /var/log/maillog メール関連 /var/log/messages システムメッセージ /var/log/httpd/ access_log Apacheのアクセスログ 53
2.6 ログの監視 dmesg コマンド カーネルのログやブート時のメッセージを表示する last コマンド 最近ログインしたユーザの一覧表示 logrotate ログファイルがパンクしないよう、ローテーションさせる仕組み 54
2.6 ログの監視 サーバでは、ログが大量に発生 適当な間隔(例えば1ヶ月)毎に、ログを分けて保存 セキュリティ 2.6 ログの監視 サーバでは、ログが大量に発生 適当な間隔(例えば1ヶ月)毎に、ログを分けて保存 新しいログファイルが作成されるたびに、一番古い世代のログファイルを削除する 55 情報システム管理
2.6 ログの監視 ログローテーションの推移 log log.0 log.1 log.2 4月分のログ 5月分のログ 6月分のログ ファイル名 4月時点 5月時点 6月時点 7月時点 log 4月分のログ 5月分のログ 6月分のログ 7月分のログ log.0 3月分のログ log.1 2月分のログ log.2 1月分のログ 56
2.7 SELinux 従来のLinux、UNIXは、 root の権限が強大 root権限を奪われると、お手上げ rootの権限を制限 KNOPPIXにはSELinuxは入っていない 57
2.7 SELinux ファイアウォールやセキュリティホールへの対応 侵入されるのを防ぐ SELinux 侵入されても、被害を最小限にする 58
2.7 SELinux SELinux TE (Type Enforcement) プロセス毎に、必要最小限のアクセス権限だけを割当てる RBAC (Role Based Access Control) ユーザ(含root)のアクセス権限をrole(役割)に基づいて分離する 59
2.7 SELinux アクセス権限があるかを検査 SELinuxの概念図 TE プロセス RBAC ファイル等のリソース ユーザ 60
2.7 SELinux SELinux の設定 ユーザーにはロール、プロセスにはドメイン、リソースにはタイプという ラベルを付与する ユーザーはどのドメインを許可されているかを設定 ドメインがタイプに対してどのような操作ができるかを設定 61
2.7 SELinux SELinux の設定 実際の設定方法は、複雑 標準のポリシーを活用 GUIツールを利用 62
【課題5】 シスログデーモン syslogd を、毎回起動するよう設定せよ KNOPPIXにおけるサービス制御スクリプトは、sysklogd update-rc.d コマンドを用いる 設定は、もちろん root で行う 設定したならば、いったん終了し、 ブートしなおす 63
【課題5】 次のログファイルを提出せよ /var/log/messages /var/log/auth.log 次ページの手順で1つのファイル (report5)にまとめ、manabaのレポート5に提出する 64
【課題5】 一つのファイルにまとめる手順 $ (root に su) # cp /var/log/messages report5 # echo ----- >> report5 # cat /var/log/auth.log >> report5 # chmod +r report5 # exit 65
次回の予定 1. DHCPサーバ DHCPの仕組みと設定 2. NAT NATの仕組みとNATルータの実現 66
お疲れ様でした