セキュアなサーバを構築しよう(centos 5.xまで対応)
TRANSCRIPT
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
1
文部科学省文部科学省中央大学研究開発機構中央大学研究開発機構
UNIXセキュリティ実践講座UNIXセキュリティ実践講座~Secure Server ~Secure Server
Day~Day~Microsoft MVP – Windows Microsoft MVP – Windows
Security Security NPONPO 日本ネットワークセキュリティ協会日本ネットワークセキュリティ協会
NTTデータ先端技術株式会社NTTデータ先端技術株式会社根津 研介根津 研介
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
2
本資料の取扱について本資料の取扱について 本資料は、文部科学省科学技術振興調整費 中央大学研究開発機構
「情報セキュリ ティ・情報保証 人材育成拠点」人材養成計画に基づき、中央大学 研究開発機構 「情報セキュリティ教育システムの開発」ユニットが実施する「 Unix セキュリティ実践講座」の教材として使用するために提供するものです。
本資料を上記「本資料を上記「 UnixUnix セキュリティ実践講座」の使用目的以外に利用セキュリティ実践講座」の使用目的以外に利用(転載、転用、商業活動への使用など)することを禁止します。ただ(転載、転用、商業活動への使用など)することを禁止します。ただし、例外として、学校内、サークル内、企業内などでサーバ導入の際し、例外として、学校内、サークル内、企業内などでサーバ導入の際の参考資料として内部的に複写したり、活用することは許可します。の参考資料として内部的に複写したり、活用することは許可します。この場合でも、教育そのものを事業目的とする場合は例外条件としてこの場合でも、教育そのものを事業目的とする場合は例外条件として認められないので注意してください。認められないので注意してください。
本資料の扱いに関して不明点等ある場合には、 中央大学 研究開発本資料の扱いに関して不明点等ある場合には、 中央大学 研究開発機構 「情報セキュリティ教育システムの開発」ユニットまでお問い機構 「情報セキュリティ教育システムの開発」ユニットまでお問い合わせください。合わせください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
3
セキュリティ概論セキュリティ概論
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
4
セキュリティの必要性セキュリティの必要性 インターネットの長所インターネットの長所
世界中から自由にアクセスできる世界中から自由にアクセスできる 世界中に自由に公開できる世界中に自由に公開できる 手軽な値段で誰でも利用できる手軽な値段で誰でも利用できる
インターネットの短所インターネットの短所 法的な保護が及びにくい法的な保護が及びにくい ~自分の身は自分で守るという姿勢が必要~ ~自分の身は自分で守るという姿勢が必要~ 全体を制御する「しくみ」とか「規制」がない全体を制御する「しくみ」とか「規制」がない 他者への犯罪の幇助をしてしまうことも!他者への犯罪の幇助をしてしまうことも!SPAM メールの送信元になっ
たり、攻撃元を詐称するための踏み台にされたり・・・
SPAM メールの送信元になったり、攻撃元を詐称するための踏み台にされたり・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
5
セキュリティ=国家の安全保障にもセキュリティ=国家の安全保障にも気を配らなければなりません気を配らなければなりません
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
6
サーバを法律が守ってくれる?サーバを法律が守ってくれる? 場合によっては、守ってくれる程度場合によっては、守ってくれる程度
日本と捜査協力や犯人引渡協定のない国、日本と捜査協力や犯人引渡協定のない国、国交の無い国国交の無い国ではでは日本国の法律は無力です。日本国の法律は無力です。
-- 不正アクセスを国交の無い国から受けたので捜査して欲しい 不正アクセスを国交の無い国から受けたので捜査して欲しい etc..etc.. 行為者が国内にいる日本人であれば、他の国のサーバをいく行為者が国内にいる日本人であれば、他の国のサーバをいく
つ経由しても日本の法律で裁くことができます。つ経由しても日本の法律で裁くことができます。 刑法第一条~第五条参照( 刑法第一条~第五条参照(
http://www.ron.gr.jp/law/law/keihou.htmhttp://www.ron.gr.jp/law/law/keihou.htm ) ) 刑事でなければなりません。民事の損害賠償などは、ま刑事でなければなりません。民事の損害賠償などは、ま
ず、成り立ちません。(損害額の算定が微少なため)ず、成り立ちません。(損害額の算定が微少なため) 国際私法国際私法 (( ベルヌ条約、サイバー犯罪防止条約等)と各ベルヌ条約、サイバー犯罪防止条約等)と各
国に於ける法整備、法解釈の違いも問題になります国に於ける法整備、法解釈の違いも問題になります
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
7
TPOTPO に合わせたセキュリティに合わせたセキュリティコンビニのセキュリティ
1. 店舗スペースは「公開」で不特定多数のアクセスを許す
2. 店舗内トイレは「店員に一声かけて」利用する
3. レジ裏の事務所は非公開
4. 事務所にはビデオ録画システムを設置し,防犯の目的や犯罪発生時の保全措置に利用
公開サーバの最低限のセキュリティ1. 公開する範囲を正しく判断し正しく
公開する
2. 公開する範囲を「正しい相手」に公開する
3. 公開すべきでない(するつもりがない)部分を公開しない / させない
4. 必要な部分では「監視するしくみ」を作りこむ
セキュリティ構築の5セキュリティ構築の5 W1HW1H ををはっきりさせよう!はっきりさせよう!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
8
セキュアサーバ構築のコストセキュアサーバ構築のコスト (1)(1)
自分だけで構築・運用可能か判断する自分だけで構築・運用可能か判断する
「10:90の法則」が基準:「10:90の法則」が基準: 10%10% の工数での工数で 90%90%の効果の効果 UNIXUNIX 開発の設計思想~もっともバランスがよい~開発の設計思想~もっともバランスがよい~ セキュリティにセキュリティに 100%100% はない~どこかで見切りが必要~はない~どこかで見切りが必要~
→ → 90%→91%90%→91% にするにはにするには 20%20% の労力が必要の労力が必要→ → 98%→99%98%→99% にはには 100%100% の労力が必要の労力が必要
サーバーやサービス毎に必要な効果を考えよう!サーバーやサービス毎に必要な効果を考えよう!→ → 90%90% までなら技術さえあれば自分で構築可能までなら技術さえあれば自分で構築可能→ → それ以上なら、単独で運用できる範囲を超えてしまいますそれ以上なら、単独で運用できる範囲を超えてしまいます
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
9
セキュアサーバ構築のコストセキュアサーバ構築のコスト (2)(2)
サーバーの価値を計算するサーバーの価値を計算する 不正利用者の立場からみたサーバーの不正利用者の立場からみたサーバーの価値価値 システムに含まれるデータの価値システムに含まれるデータの価値
機密情報があるか?など 機密情報があるか?など → 転売の価値や改竄、脅 → 転売の価値や改竄、脅迫等迫等
踏み台にするサーバーとしての価踏み台にするサーバーとしての価値値
上位プロバイダとの回線速度など上位プロバイダとの回線速度など その他の価値その他の価値
怨恨、意趣晴らし、愉快犯など怨恨、意趣晴らし、愉快犯など
機密情報機密情報 なしなし顧客のデータ顧客のデータ なしなし
回線速度回線速度 <1Mbit<1Mbit 程度?程度?
怨恨関係怨恨関係 ???(???( 多分なし多分なし ))
総合総合 1515 点程度?点程度?
計算例
これらを総合的に判断して、必要となるセキュリティレベルを考える
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
10
020
40
60
80
100
構築 セ キ ュリティ対策 日常監視
金銭的費用工数緊急性
サーバのライフサイクルと「コサーバのライフサイクルと「コスト」スト」
構築のコスト(金銭的コスト)だけに注意が向いて、運用のコストが考えられていないことが多い
構築のコスト(金銭的コスト)だけに注意が向いて、運用のコストが考えられていないことが多い
運用に必要な「目に見えないコスト」の方が実はトータルすると重要!
運用に必要な「目に見えないコスト」の方が実はトータルすると重要!
緊急性の高い作業は、夜中や休日に集中
緊急性の高い作業は、夜中や休日に集中
いかにいかに管理の手間管理の手間を下げるかがカギ!を下げるかがカギ!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
11
サーバー=サービスを提供するシステムサーバー=サービスを提供するシステムサービスの品質をはかる基準サービスの品質をはかる基準
RAS(RAS( 大型コンピュータ大型コンピュータ //エンタープライズサーバの世界の用語エンタープライズサーバの世界の用語 )) ReliabilityReliability :信頼性 - 「いつでも安定したサービス」:信頼性 - 「いつでも安定したサービス」 AvailabilityAvailability :可用性 - 「24時間、:可用性 - 「24時間、 365365 日稼働」日稼働」 ServiceService ability ability :保守性 -「誰でもどこでも簡単に」:保守性 -「誰でもどこでも簡単に」
MTBFMTBF とと MTTRMTTR MTBF:できるだけサービスを落とさないMTBF:できるだけサービスを落とさない MTTRMTTR :サービスが落ちたらすばやく回復する:サービスが落ちたらすばやく回復する
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
12
サーバー=サービスを提供するシステムサーバー=サービスを提供するシステムの品質をはかる基準セキュリティの品質をはかる基準セキュリティ
国際規格国際規格 ISO/IEC17799ISO/IEC17799 による定義(による定義( CIA)CIA) を購入前のマヨを購入前のマヨネーズで例えると・・・ネーズで例えると・・・
Confidenciality Confidenciality :機密性 -チューブに穴は空いていませんか?:機密性 -チューブに穴は空いていませんか? Integrity Integrity :完全性 -口のシールが貼り直されていませんか?:完全性 -口のシールが貼り直されていませんか? AvailabilityAvailability :可用性 -売り切れていませんか?:可用性 -売り切れていませんか?
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
13
サーバという「サービスの品質」サーバという「サービスの品質」サーバが目標とする品質とセキュリティサーバが目標とする品質とセキュリティ
品質の目標品質の目標1. いつでも安定していて、2. いつでも利用することができて、3. 「正しい中身」が「正しい人」に伝わり、
4. 保守作業が簡単なシステム。セキュリティはこの目標を達成し、セキュリティはこの目標を達成し、
維持し続けるための手段の1つにすぎない維持し続けるための手段の1つにすぎない
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
14
サーバという「サービスの品質」サーバという「サービスの品質」サービスの維持管理とセキュリティサービスの維持管理とセキュリティ
「セキュリティ」の意味「セキュリティ」の意味1. 安全、安全保障、安全確保、保障。2. 戸締まり、防衛手段、警備、防護、
保全、保安。3. 無事、治安、安心。
日常の保守作業はすべて「セキュリティ」日常の保守作業はすべて「セキュリティ」という大きなフレームワークの一部!という大きなフレームワークの一部!
保障:生命、財産、権利などを保護して守ること
保障:生命、財産、権利などを保護して守ること
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
15
サーバという「サービスの品質」サーバという「サービスの品質」メインテナンスも立派なセキュリティメインテナンスも立派なセキュリティ
•システムの定期的なバックアップ•システムログのチェック•不正利用、サービス不能、サービス停止の防止•システム侵入の防止、検出•セキュリティインベントリ(ソフトウェアのセキュリティホール発覚など)の監視•速やかなサービス不能状態の検出、回復•自動監視、自動警報発報、自動アップデート
RAS の向上 MTBF をより長く
MTTR を最小に
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
16
通常監視と情報収集通常監視と情報収集通常監視
1. サービス可否のチェック
2. マシンのチェック
3. ネットワーク品質のチェック
4. システム負荷のチェック
5. 利用状況のチェック
6. 異常状態の検出
7. システム統計情報の監視
情報収集1. (Push型 )CERT/CC, JPCERT/CC,各種メールニュースなどの利用
2. (Push型 ) セキュリティ関連メーリングリストによる情報収集
3. (Pull型 ) セキュリティ関連ホームページの利用
4. (Push型 ) 利用ディストリビューションのユーザメーリングリストの利用
自動化に向いている自動化に向いている 自動化に向いていない自動化に向いていない
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
17
予防保守と緊急対応予防保守と緊急対応緊急対応
1. 緊急事態の発生時の対応体制、対応マニュアル/メモの作成と実行
2. 異常状態検出時の対応体制、対応マニュアル/メモの作成と実行
3. 問いあわせ発生時( Web サイト脆弱性、 SPAMメール送信、踏み台による第三者への攻撃元などの通告)の対応体制、対応マニュアル/メモの作成と実行(捜査機関などの協力要請への対応も別途、要検討)
4. 記録保全体制、手順書の作成
5. サービス/システム一時停止の判断基準の作成
インシデントレスポインシデントレスポンスンス
予防保守1. ハードウェアの二重化 (RAID 、フェ
イルオーバー、スタンバイシステムなど )
2. データの多重化(バックアップも含む)
3. システムログの監視(通常状態の把握と異常状態の検知)
4. パフォーマンス統計の監視(通常状態の把握と異常状態の検知)
5. ソフトウェアのバージョンアップ
6. 異常状態の自動検出システムの作りこみ(システム停止、サービス停止を含む)
自動化に向いている自動化に向いている
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
18
情報収集のコツ情報収集のコツ (1) (1)
プッシュ型コンテンツを有効に利用プッシュ型コンテンツを有効に利用
JPCERT/CCJPCERT/CC メーリングリストメーリングリスト ((http://www.jpcert.or.jp/announce.htmlhttp://www.jpcert.or.jp/announce.html)) US CERT US CERT メーリングリスト メーリングリスト ((http://www.us-cert.gov/cas/index.htmlhttp://www.us-cert.gov/cas/index.html)) スラッシュドットジャパンスラッシュドットジャパン [[ 毎日のヘッドライン毎日のヘッドライン ] (] (http://http://slashdot.jpslashdot.jp//)) CNET Japan : NewsLetter( CNET Japan : NewsLetter( http://japan.cnet.com/news/sec/http://japan.cnet.com/news/sec/ ) ) Microsoft Microsoft プロダクトセキュリティ警告サービス日本語版 プロダクトセキュリティ警告サービス日本語版 ((
http://www.microsoft.com/japan/technet/security/bulletin/notify.asphttp://www.microsoft.com/japan/technet/security/bulletin/notify.asp))
無作為攻撃では Windowsをターゲットにしたものも・・・
無作為攻撃では Windowsをターゲットにしたものも・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
19
情報収集のコツ情報収集のコツ (2)(2)
メーリングリストの活用 メーリングリストの活用
セキュリティホール セキュリティホール memo ML(memo ML(http://memo.st.ryukoku.ac.jp/http://memo.st.ryukoku.ac.jp/)) 2424 時間常時接続 時間常時接続 ML (ML (
http://cn24h.hawkeye.ac/connect24h.htmlhttp://cn24h.hawkeye.ac/connect24h.html)) Intrusions List ML (Intrusions List ML (http://http://
www.dshield.org/mailman/listinfo/intrusionswww.dshield.org/mailman/listinfo/intrusions)) 各種各種 OSOS のユーザーのユーザー MLML
LinuxLinux ディストリビューションのユーザディストリビューションのユーザ MLML など などパッチを当てるタイミング、update の安定動作の確認
パッチを当てるタイミング、update の安定動作の確認
メーリングリストの主旨は、あくまでも「情報交換」。
「収集」のみではなく、「提供」できるようにする努力も工数のうちです。
メーリングリストの主旨は、あくまでも「情報交換」。
「収集」のみではなく、「提供」できるようにする努力も工数のうちです。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
20
情報収集のコツ情報収集のコツ (3)(3)
ホームページの活用ホームページの活用
前2ページで紹介したところにはそれぞれに大抵前2ページで紹介したところにはそれぞれに大抵ホームページがありますホームページがあります WWWCWWWC 等のホームページ更新チェッカで自動化等のホームページ更新チェッカで自動化
記事のリンク先のホームページ情報も確認しまし記事のリンク先のホームページ情報も確認しましょうょう
プル型コンテンツなのでプッシュ型と比較するとプル型コンテンツなのでプッシュ型と比較すると
ひと手間多くかかりますひと手間多くかかります注意!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
21
セキュリティポリシーの必要性セキュリティポリシーの必要性(1)(1)
個人サーバ運用の立場からみて・・・個人サーバ運用の立場からみて・・・
作業手順、作業量の明確化作業手順、作業量の明確化 やるべきこととやった方がいいこと、やっちゃいけなやるべきこととやった方がいいこと、やっちゃいけな
いことが明確になる→ちゃんとメモを取ろう!いことが明確になる→ちゃんとメモを取ろう! 作業全体の見通しがよくなる作業全体の見通しがよくなる 忘れた頃にやってくるバージョンアップ忘れた頃にやってくるバージョンアップ //再構築再構築 裁判裁判 //訴訟、刑事事件などの際の証拠保全訴訟、刑事事件などの際の証拠保全
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
22
セキュリティポリシーの必要性セキュリティポリシーの必要性(2)(2)
企業サーバ運用の立場からみて…企業サーバ運用の立場からみて…
作業手順、作業量の明確化作業手順、作業量の明確化 複数人で均質の作業複数人で均質の作業 全社的なセキュリティ意識の統一全社的なセキュリティ意識の統一 対外的なポリシー運用の提示対外的なポリシー運用の提示 担当者が変わった頃にくるバージョンアップ担当者が変わった頃にくるバージョンアップ //再構再構
築築 裁判 /訴訟、刑事事件などの際の証拠保全
これは、企業だけでなく、ゼミのサーバや部のサーバ、学校のイントラサーバでもおなじ。
これは、企業だけでなく、ゼミのサーバや部のサーバ、学校のイントラサーバでもおなじ。
訴訟のリスクはより大きい!訴訟のリスクはより大きい!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
23
セキュリティポリシーの必要性セキュリティポリシーの必要性(3)(3)
素早いレスポンスを心がけよう!素早いレスポンスを心がけよう!
サーバサーバ // サービス停止の判断を独力でできない場合は、「緊サービス停止の判断を独力でできない場合は、「緊急連絡網」を作って指示を仰ごう。急連絡網」を作って指示を仰ごう。
脆弱性指摘などがあった場合には、調査期間と回答期限をつ脆弱性指摘などがあった場合には、調査期間と回答期限をつけてまずは返信しておこう。けてまずは返信しておこう。
指摘自体が「愉快犯」の可能性もゼロではありません。まず指摘自体が「愉快犯」の可能性もゼロではありません。まずは、指摘事項の確認・再現を怠ってはなりません。は、指摘事項の確認・再現を怠ってはなりません。
システムが侵入されていると、オペレータ作業でシステムが侵入されていると、オペレータ作業で rootroot権限権限が乗っ取られる場合もあるので注意!が乗っ取られる場合もあるので注意!
やりとりや作業は、きちんと記録を付けましょう。やりとりや作業は、きちんと記録を付けましょう。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
24
システムログの保存(保全措システムログの保存(保全措置)置)
保存期間を最低1年以上に!保存期間を最低1年以上に!
ディストリビューションの標準設定はディストリビューションの標準設定は4週間。最低でも53週間(3714週間。最低でも53週間(371日)に。日)に。 /etc/logrotate.conf /etc/logrotate.conf の の rotate 4 → roatate 5rotate 4 → roatate 5
3 3 にする。にする。 定期的にログを定期的にログを CD-RCD-R に焼いてバックに焼いてバック
アップを取りましょうアップを取りましょう /var /var は専用パーティションを用意しては専用パーティションを用意して
大きめにとる。大きめにとる。 // と一緒で溢れるとfsが壊れることと一緒で溢れるとfsが壊れること
も・・・も・・・ 512M512M とかとか 1GB1GB とか豪勢にとりましょうとか豪勢にとりましょう
/etc/logrotate.conf の例:
# see "man logrotate" for details# rotate log files weeklyweekly
# keep 4 weeks worth of backlogs
rotate 4 → 53
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
25
サーバー運用の注意点サーバー運用の注意点 (1)(1)
「やられたら再インストールすればいい」「やられたら再インストールすればいい」は間違は間違い!い!
本当にやられちゃったら気付きません。 ← 本当にやられちゃったら気付きません。 ← rootkitrootkit の存在の存在 簡単な自動ツールくらいしか目で見てわからないです簡単な自動ツールくらいしか目で見てわからないです いつかは面倒になって目でも見なくなりますいつかは面倒になって目でも見なくなります
「天災は忘れた頃にやってくる」「天災は忘れた頃にやってくる」 ペーターとおおかみペーターとおおかみ
気付いたときには手遅れです気付いたときには手遅れです教訓:侵入を事前予報できるシステムが必要教訓:侵入を事前予報できるシステムが必要
脆弱なフリーのサーバ事件
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
26
サーバー運用の注意点サーバー運用の注意点 (2)(2)
サーバー1台ですべてやろう・・・は間違い!サーバー1台ですべてやろう・・・は間違い!
NATNAT ルータ機能、フィルタリング機能、サーバ機能・・・全ルータ機能、フィルタリング機能、サーバ機能・・・全部をごちゃごちゃに1台で運用するのはスゴく難しい部をごちゃごちゃに1台で運用するのはスゴく難しい 技術的チャレンジ・・・、でも一歩間違えるとネット全体に迷惑技術的チャレンジ・・・、でも一歩間違えるとネット全体に迷惑
が・・・が・・・ 趣味のサーバーも「グローバル趣味のサーバーも「グローバル IPIP アドレス」を持っている立場としてアドレス」を持っている立場として
は、は、 NASANASA /FBI/FBI /NSA/NSA や、や、 YahooYahoo 、楽天、ホワイトハウスサーバ、楽天、ホワイトハウスサーバと同等の責任がありますと同等の責任があります
多重防御多重防御 // 多層防御が防御の基本多層防御が防御の基本 なぜ、大阪城には外堀と内堀があったの?なぜ、大阪城には外堀と内堀があったの? なぜ、大阪夏の陣では簡単に陥落しちゃったの?なぜ、大阪夏の陣では簡単に陥落しちゃったの?
教訓:幾重にも防護壁を作っておきましょう教訓:幾重にも防護壁を作っておきましょう
ブロードバンドルータの併
用
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
27
サーバー運用の注意点サーバー運用の注意点 (3)(3)
固定固定 IPIP アドレスを取得するアドレスを取得する
IPIP アドレスはサーバーの「住所」ですアドレスはサーバーの「住所」です いつ転居するか分からない「住所」では困ることがありますいつ転居するか分からない「住所」では困ることがあります ドメインは「友達の鈴木君ち」みたいなもので固定であることドメインは「友達の鈴木君ち」みたいなもので固定であること
が信頼性につながりませんが信頼性につながりません 可変アドレス、ダイナミック可変アドレス、ダイナミック DNSDNS では利用できないもでは利用できないも
のも・・・のも・・・ おうちメールサーバーは運用できませんおうちメールサーバーは運用できません アクセスが多くなると他の人への攻撃になることも・・・アクセスが多くなると他の人への攻撃になることも・・・教訓:やっぱり安心の固定教訓:やっぱり安心の固定 IPIPアドレス!アドレス!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
28
サーバー運用の注意点サーバー運用の注意点 (4)(4)
複数の固定複数の固定 IPIPアドレスを取得しよう!アドレスを取得しよう!
インターネットのインシデントは、主に「自分のサーバだけインターネットのインシデントは、主に「自分のサーバだけをねらい打ちにしたもの」と、「機械的に総ナメにしていくをねらい打ちにしたもの」と、「機械的に総ナメにしていくもの」に分けられますもの」に分けられます 「機械的」なものにはツールやウィルスなどがありますが、これらは「機械的」なものにはツールやウィルスなどがありますが、これらは
それほどそれほど「危険性は高くありません」「危険性は高くありません」 これを判断するためには、2つ以上の連続した(もしくは近これを判断するためには、2つ以上の連続した(もしくは近
い)アドレスで監視をする必要がありますい)アドレスで監視をする必要があります これは、複数サーバでなくともこれは、複数サーバでなくとも IPIP アドレスのエイリアス機能でもアドレスのエイリアス機能でも OKOK
教訓:比較/対照は分析の基礎です教訓:比較/対照は分析の基礎です
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
29
サーバ管理者に求められる資質サーバ管理者に求められる資質 (1)(1)
サーバ上の情報に個人的興味サーバ上の情報に個人的興味を持ってはいけないを持ってはいけない
ユーザのパスワードは「すユーザのパスワードは「すぐに忘れる」ぐに忘れる」
管理の都合上「知ってしまっ管理の都合上「知ってしまった」事も知らぬ存ぜぬを貫くた」事も知らぬ存ぜぬを貫く
サーバ上の不法行為の証拠にサーバ上の不法行為の証拠には常に目を光らせるは常に目を光らせる
管理者権限、管理者アカウン管理者権限、管理者アカウント情報は、管理者をやめたらト情報は、管理者をやめたら「忘れなければならない」「忘れなければならない」
From hira@<平山>
To naka@<なかむらくん>
Subject きのうのデート
なかむらくん、昨日は楽しいデートをどうもありがとう・・・。
遊園地とってもたのしかったです。また誘ってください。
ふむふむ・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
30
サーバ管理者に求められる資質サーバ管理者に求められる資質 (2)(2)
サーバ管理者は実用的な法サーバ管理者は実用的な法律家である必要があります。律家である必要があります。 著作権法著作権法 不正アクセス禁止法不正アクセス禁止法 個人情報保護法個人情報保護法 プロバイダ法プロバイダ法 表現の自由と名誉毀損表現の自由と名誉毀損 脅迫等の刑法脅迫等の刑法 etc…etc…
世の状況(裁判の判決な世の状況(裁判の判決など)にも敏感でなければなど)にも敏感でなければなりません。りません。
・映画のコピー
・不許可のアイドル写真
・ TV のキャプチャ画像
・不法なソフトウェアコピー
・ホームページのコピペふむふむ・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
31
サーバ管理者に求められる資質サーバ管理者に求められる資質 (3)(3)~優良推薦参考図書~~優良推薦参考図書~
「ハイテク犯罪捜査入門~捜査実務編」「ハイテク犯罪捜査入門~捜査実務編」 警察、検察側の現在の常識と今後数年間の動警察、検察側の現在の常識と今後数年間の動向を占うことができる書籍向を占うことができる書籍
著者は、現役の札幌高等検事局検事さん著者は、現役の札幌高等検事局検事さん 技術書ではないが、「捜査」の現場で、実際技術書ではないが、「捜査」の現場で、実際
に何がどのような判断で行われているかを知に何がどのような判断で行われているかを知っておくことは必ず役立ちます。特に、初動っておくことは必ず役立ちます。特に、初動捜査における「証拠」として何を用意してお捜査における「証拠」として何を用意しておけばよいかなどの判断にも使えます。けばよいかなどの判断にも使えます。
※※技術的には、現場の警察官を対象としている技術的には、現場の警察官を対象としているため、初心者向けの若干のウソも見られます。ため、初心者向けの若干のウソも見られます。
※※ギャグも満載です☆ギャグも満載です☆
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
32
サーバー構築方法サーバー構築方法
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
33
セキュアサーバー構築方法論セキュアサーバー構築方法論
10:9010:90 の法則を適用すると・・・の法則を適用すると・・・ パケットフィルタリングによるセキュリティの確保パケットフィルタリングによるセキュリティの確保
サーバー、ルーターそれぞれで設定が必要サーバー、ルーターそれぞれで設定が必要 守れるもの、守れないものを意識することが必要守れるもの、守れないものを意識することが必要 サービスの限定など、他の機能との組み合わせが必要サービスの限定など、他の機能との組み合わせが必要
サービスの限定、公開範囲の限定サービスの限定、公開範囲の限定 各サービス、ソフトウェア毎の設定が必要 各サービス、ソフトウェア毎の設定が必要
自動監視ツールなどによる監視コストの低減自動監視ツールなどによる監視コストの低減 ツールとして自作しなければいけない場合もあるツールとして自作しなければいけない場合もある プロバイダのサービスや商用ソフトウェア利用が推奨される場合もプロバイダのサービスや商用ソフトウェア利用が推奨される場合も
・・・ ・・・
商用ファイヤーウォール商用ファイヤーウォール
Snort などの侵入検知ツール
Snort などの侵入検知ツール
本格的なスキルや監視コストが必要
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
34
パケットフィルタリングについパケットフィルタリングについてて (1)(1)
パケットフィルタリングが有効な場面パケットフィルタリングが有効な場面
公開する内容、条件、相手などがルールとして固定的に決定できる場合公開する内容、条件、相手などがルールとして固定的に決定できる場合 時間帯限定公開や、同時接続数上限などの設定は基本的にできない時間帯限定公開や、同時接続数上限などの設定は基本的にできない FTPFTP でのファイル転送などサービスポートが動的なものには向かないでのファイル転送などサービスポートが動的なものには向かない
サービスの単位で、または公開先として固定的な場所からのアクセスがサービスの単位で、または公開先として固定的な場所からのアクセスが特定できる場合特定できる場合 今日は今日は NIFTYNIFTY から、明日はから、明日は so-netso-net から・・・という動的な条件には向から・・・という動的な条件には向
かないかない HTTPHTTP でで javascriptjavascript の実行権限などサービス内での制限はできないの実行権限などサービス内での制限はできない
時間帯限定はブロードバンドルータによっては可能なものもあります
時間帯限定はブロードバンドルータによっては可能なものもあります
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
35
主なウェルノウン・ポー主なウェルノウン・ポートト
「「 ** 」のついているサービスは基本的」のついているサービスは基本的に公開すべきでないポートに公開すべきでないポート 社内社内 LANLAN 等、イントラネットでの運用等、イントラネットでの運用
を前提とするセキュアでないサービスを前提とするセキュアでないサービス インターネットがいにしえの良き時代インターネットがいにしえの良き時代
であったころに参加者がすべて善良でであったころに参加者がすべて善良であることを前提としたサービスあることを前提としたサービス
ホ ゚ー ト TCP/ UDP サービス名20 TCP ftp- data FTPサービスのデータ転送用21 TCP ftp- control FTPサービス制御用22 TCP ssh Secure Shellセキュア・シェル( )接続23 TCP telnet Telnet接続25 TCP smtp sendmail/ qmail/ postfixなどのメール・サーバ接続53 TCP/ UDP domain DNSドメイン・ネーム・サービス( )67 UDP bootps BOOTPサーバ*68 UDP bootpc BOOTPクライアント*69 UDP tftp TFTPサーバ*70 TCP gopher Gopherサーバ*79 TCP finger Fingerサービス*80 TCP http Webサーバ98 TCP linuxconf linuxconfネットワーク・サービス*
109 TCP pop- 2 POP- 2メール受信用110 TCP pop- 3 POP- 3メール受信用111 TCP/ UDP sunrpc RPC 4.0 portmapper*113 TCP ident identクライアント・ユーザ確認( )*119 TCP nntp インターネット・ニュース・サービス123 TCP/ UDP ntp ネットワーク時刻同期サービス135 TCP microsoft- rpc Microsoft RPC Exchange Serverの サービス( など)137 UDP netbios- ns MS- Networkネーム・サービス*138 UDP netbios- dgm MS- Networkブラウジング・サービスなど*139 TCP netbios- ssn MS- Network /ファイル プリンタ共有サービス*143 TCP imap IMAP4メール・サービス144 TCP NeWS NeWSウィンドウ・システム・サービス*161 UDP snmp ネットワーク管理用*162 UDP snmp- trap ネットワーク管理用(異常検知など)*443 TCP https Web暗号化した サービス445 TCP microsoft- DS Windows 2000 CIFS以降の 接続用*512 TCP exec BSD UNIX rexecd系 の デーモン用*512 UDP biff UNIX biff(メール到着通知)サービス*513 TCP login BSD UNIX rlogind系 の デーモン用*513 UDP who BSD UNIX rwhod系 の デーモン用*514 TCP shell BSD UNIX rwhod系 の デーモン用*514 UDP syslog BSD UNIX syslogd系 の デーモン用*515 TCP printer BSD UNIX lpd系 の デーモン用*517 UDP talk BSD UNIX talkd系 の デーモン用*518 UDP ntalk SunOS talkdの デーモン用*520 UDP route BSD UNIX routed系 の デーモン用*525 UDP timed BSD UNIX timed系 の デーモン用*554 TCP/ UDP rtsp リアルタイム・ストリーミング用635 UDP mount NFSマウント・サービス*901 TCP swat Samba Webの ベース管理ツール用*
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
36
パケットフィルタリングについパケットフィルタリングについてて (3)(3)
10241024 以降の定義済ポートの例以降の定義済ポートの例
Microsoft SQL ServerMicrosoft SQL Server のの RPCRPC (( Remote Procedure Call)Remote Procedure Call) で使うで使う 1433/TCP1433/TCP 非透過型プロキシーサービス非透過型プロキシーサービス (delegate(delegate など)でなど)で 8080/TCP,1080/TCP8080/TCP,1080/TCP X WindowX Window のフォントサーバのフォントサーバ (xfs)(xfs) でで 7100/TCP7100/TCP X WindowX Window のの XX サーバーでサーバーで 6000/TCP6000/TCP 仮名漢字変換仮名漢字変換 WnnWnn サーバーでサーバーで 22273/TCP22273/TCP 仮名漢字変換仮名漢字変換 CannaCanna サーバーでサーバーで 5680/TCP5680/TCP NFSNFS でで 2049/UDP2049/UDP
インターネットに公開すべきでないポートがほとんどインターネットに公開すべきでないポートがほとんど
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
37
パケットフィルタリングについパケットフィルタリングについてて (4)(4)
10241024 以降で以降で IANAIANA 未定義だがよくウィルスに使われるポートの例未定義だがよくウィルスに使われるポートの例
SasserSasser ウィルスが使うウィルスが使う Microsoft RPCMicrosoft RPC のの 1025/TCP1025/TCP DamewareDameware ウィルスが使うバックドアポートウィルスが使うバックドアポート 6129/TCP6129/TCP MyDoomMyDoom ウィルスが使うバックドアポートウィルスが使うバックドアポート 3127/TCP3127/TCP SQL SnakeSQL Snake ウィルスが使うウィルスが使う Microsoft SQL ServerMicrosoft SQL Server のの 1433/TCP1433/TCP バックドアバックドア (( トロイの木馬)プログラムトロイの木馬)プログラム WinHoleWinHole でで 1080/TCP1080/TCP バックドアプログラムバックドアプログラム RingZeroRingZero でで 8080/TCP8080/TCP とと 3128/TCP3128/TCP Windows XPWindows XP のリモートデスクトップが使うのリモートデスクトップが使う 3389/TCP3389/TCP
絶対にインターネットに公開すべきでないポート絶対にインターネットに公開すべきでないポート
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
38
パケットフィルタリングについパケットフィルタリングについてて (5)(5)
危険なソースルーティング危険なソースルーティング
コンピュータ C攻撃者 B
コンピュータ A送信元:送信元: AA 宛先:宛先: CC 経由:経由:
送信元:送信元: CC 宛先:宛先: AA 経由:経由: BB
送信元:送信元: CC 宛先:宛先: AA 経由:経由:
送信元:送信元: AA 宛先:宛先: CC 経由:経由: BB
通常のパケットソースルーティングされると・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
39
パケットフィルタリングについパケットフィルタリングについてて (6)(6)
TCPTCP の特殊な状態の特殊な状態 (1)(1) ~接続~接続~~ 3-Way Handshake3-Way Handshake
SEQ :シーケンス番号
ACK :返信番号
CTL :制御フラグ
③<411> <312> <ACK>+ データ
① <311> <SYN>
② <411> <312> <SYN,ACK>
要求者 A 相手 B SEQ ACK CTL
3-3- ウェイ・ハンドシェウェイ・ハンドシェイクイク パケットフィルタリ
ングで防御しきれない
•①を大量に送りつけて B をサービス不能に・・・ → SYN Flood攻撃•①の応答②があるかどうかでポートスキャン
Syslog にもでてきません
Syslog にもでてきません防御にはサーバ上のユーティリティなどが必要防御にはサーバ上のユーティリティなどが必要
Web やftpを一切サービスしてないなら防御可能
Web やftpを一切サービスしてないなら防御可能
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
40
パケットフィルタリングについパケットフィルタリングについてて (7)(7)
TCPTCP の特殊な状態の特殊な状態 (2)(2) ~切断~切断~~
SEQ :シーケンス番号
ACK :返信番号
CTL :制御フラグ
パケットフィルタリングで防御しきれな
い•①の応答②があるかどうかでポートスキャン
実際は双方向通信なので、反対向きも行われる
実際は双方向通信なので、反対向きも行われる
① <FIN>
② <FIN,ACK>
リクエスト側 SEQ ACK CTL
リクエストを受ける側
多くの機器や OS ではサービスが有効なら未接続の状態でも <FIN> に反応する
多くの機器や OS ではサービスが有効なら未接続の状態でも <FIN> に反応する
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
41
パケットフィルタリングについパケットフィルタリングについてて (8)(8)
UDP(User Datagram Protocol)UDP(User Datagram Protocol) についについてて
パケットが相手に到達したことが確認できないパケットが相手に到達したことが確認できない 「接続を覚えて」おかなくてもよい「接続を覚えて」おかなくてもよい TCPTCP と異なり相手の返信をまたなくてもよいと異なり相手の返信をまたなくてもよい
インターネットサービスでは少数派、主にインターネットサービスでは少数派、主に DNS/snmpDNS/snmp 等で利用される等で利用される
名前←→ IP アドレス変換の問い合わせなど名前←→ IP アドレス変換の問い合わせなど
プライマリ DNS とセカンダリDNS とのデータ複写で TCP も利用している
プライマリ DNS とセカンダリDNS とのデータ複写で TCP も利用している
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
42
パケットフィルタリングについパケットフィルタリングについてて (9)(9)
ICMP(Internet Control Message Protocol)ICMP(Internet Control Message Protocol) についてについて
データ通信には使われないデータ通信には使われない ネットワーク障害によるエラー通知ネットワーク障害によるエラー通知 診断機能用のメッセージのやりとり診断機能用のメッセージのやりとり いくつかのメッセージタイプがあるいくつかのメッセージタイプがある ブロードキャストアドレス宛てのブロードキャストアドレス宛ての ICMPICMP には全機器が反応には全機器が反応
Host Unreachable
Host Unreachable
Network Unreachable
Network Unreachable
自サイトのブロードキャストアドレス宛の自サイトのブロードキャストアドレス宛の ICMPICMP は遮断しなければならないは遮断しなければならない
Ping や traceroute など
Ping や traceroute など
Smurf という DDoS の防止
Smurf という DDoS の防止
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
43
パケットフィルタリングについパケットフィルタリングについてて (10)(10)
タイプ 名前 意味0 Echo Reply ICMP ping/ tracerouteエコー応答( の返信用)3 Destination Unreachable あて先アドレスに到達不可能4 Source Quenche 受信バッファあふれによる送信元への通信停止要求5 Redirect 最適な経路でないことを送信元に通知8 Echo ICMP ping/ tracerouteエコー要求( の送信用)9 Router Advertisement ルータ通知
10 Router Selection ルータ選択11 Time Exceed TTL Time To Live( )時間の超過12 Parameter Problem パケットのパラメータ異常13 Timestamp タイム・スタンプ保持要求14 Timestamp Reply タイム・スタンプ保持応答17 Address Mask Request アドレス・マスク要求18 Address Mask Reply アドレス・マスク応答
ICMPメッセージのタイプ
Windows 版の tracertコマンドが利用
Windows 版の tracertコマンドが利用
UNIX/Linux 版の traceroute はUDP/33434 を使用
UNIX/Linux 版の traceroute はUDP/33434 を使用
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
44
パケットフィルタリングについパケットフィルタリングについてて (11)(11)
ICMP ICMP Smurf攻撃のしくみSmurf攻撃のしくみ (1)(1)
1.1. 攻撃者は攻撃者は IPIP アドレスをなアドレスをなりすまして各サイトのブローりすまして各サイトのブロードキャストアドレスにドキャストアドレスに ICMPICMP エコエコーを送信ーを送信
ターゲット
攻撃者
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
45
パケットフィルタリングについパケットフィルタリングについてて (12)(12)
ICMP ICMP Smurf攻撃のしくみSmurf攻撃のしくみ (2)(2)
1.1. 攻撃者は攻撃者は IPIP アドレスをなアドレスをなりすまして各サイトのブローりすまして各サイトのブロードキャストアドレスにドキャストアドレスに ICMPICMP エコエコーを送信ーを送信
2.2. 各サイトの全機器がターゲ各サイトの全機器がターゲットに一斉にットに一斉に ICMPICMP エコーエコーリプライを送信リプライを送信
3.3. ネットワークがパンクネットワークがパンクターゲット
攻撃者
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
46
パケットフィルタリングについパケットフィルタリングについてて (13)(13)
実は実は SmurfSmurf 攻撃には攻撃には DNS DNS クエリクエリ SmurfSmurf 攻撃もあります攻撃もあります
1.1. 犠牲者ホストの犠牲者ホストの IPIP アドレスをなりすました端末からの問アドレスをなりすました端末からの問いあわせ(クエリ)をネット上のいあわせ(クエリ)をネット上の DNSDNS サーバ群に一斉送サーバ群に一斉送信信
2.2. DNSDNS サーバがインターネット側からのクエリに反応して、サーバがインターネット側からのクエリに反応して、検索結果を返す検索結果を返す
3.3. 犠牲者ホストにクエリの結果が溢れて犠牲者ホストにクエリの結果が溢れて DDoSDDoS になるになる
これは本来、これは本来、 LANLAN内からの端末クエリしか反応しない様に内からの端末クエリしか反応しない様に
DNSDNS が適切に設定されていれば防げるものですが適切に設定されていれば防げるものです
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
47
パケットフィルタリングについパケットフィルタリングについてて (14)(14)
短命なポート(エフェメラル・ポート)短命なポート(エフェメラル・ポート)
Web サーバPC ポート番号:1234 ポート番号:8
0ポート番号:1234 ポート番号:8
0•接続を依頼する側が一時的に使用するポート•1024番以降の適当なポートを使用
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
48
パケットフィルタリングについパケットフィルタリングについてて (15)(15) ~パケットフィルタリン~パケットフィルタリングの要点~グの要点~
パケットフィルタリングで利用できるパラメータパケットフィルタリングで利用できるパラメータ
送信元送信元 IPIP アドレスアドレス あて先あて先 IPIP アドレスアドレス 送信元ポート番号送信元ポート番号 あて先ポート番号あて先ポート番号 プロトコル種別プロトコル種別 TCPTCP のフラグ(のフラグ( SYN,FIN,ACKSYN,FIN,ACK など)など) ICMPICMP のタイプのタイプ
これらの情報を必要に応じて組み合わせて設定するこれらの情報を必要に応じて組み合わせて設定する
範囲指定が可能
機器によっては未対応機器によっては未対応
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
49
パケットフィルタリングについてパケットフィルタリングについて(16)(16)
ブロードバンドルーターの設定の要点ブロードバンドルーターの設定の要点
NAT+IPNAT+IP マスカレードでは外部からの攻撃はまず不可能マスカレードでは外部からの攻撃はまず不可能 外部からの攻撃を防止する目的のパケットフィルタリング不要外部からの攻撃を防止する目的のパケットフィルタリング不要 → → SYNFloodSYNFlood 攻撃防止機能を持つものもある攻撃防止機能を持つものもある
LANLAN からの外向きのパケットフィルタリングが必要からの外向きのパケットフィルタリングが必要 ウィルス感染ウィルス感染 PCPC からのパケット発信(からのパケット発信( SMTPSMTP 大量送信など)防止大量送信など)防止 Microsoft NetworkMicrosoft Network (ネットワークフォルダ(ネットワークフォルダ )) 等のパケットの漏洩を防等のパケットの漏洩を防
止止 公開サーバは簡易公開サーバは簡易 DMZDMZ もしくはポート単位で公開するもしくはポート単位で公開する ルータルータ 22 台用いて、本格的な台用いて、本格的な DMZDMZ を組むことを強く推奨しを組むことを強く推奨し
ますます
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
50
パケットフィルタリングについてパケットフィルタリングについて(17)(17)
公開サーバーの設定の要点公開サーバーの設定の要点
いくつかの公開サービスいくつかの公開サービス プライマリプライマリ DNSDNS
通常の通常の 53/UDP53/UDP へのアクセスと、セカンダリをお願いしているセへのアクセスと、セカンダリをお願いしているセカンダリカンダリ DNSDNS のの IPIP アドレスからのアドレスからの 53/TCP53/TCP への接続許可が必要への接続許可が必要
セカンダリメール・サーバー(受けてあげるなら・・・)セカンダリメール・サーバー(受けてあげるなら・・・) 他の人のプライマリ・メール・サーバーに何らかの障害があると他の人のプライマリ・メール・サーバーに何らかの障害があると
きにメールを代行受信きにメールを代行受信 25/TCP25/TCP への接続を許可した上で、プライマリ・メール・サーバへの接続を許可した上で、プライマリ・メール・サーバ
ーのーの 25/TCP25/TCP への接続を許可し受信済メールを転送可能にへの接続を許可し受信済メールを転送可能に
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
51
パケットフィルタリングについてパケットフィルタリングについて(18)(18)
公開サーバーの設定例公開サーバーの設定例番号 パケットの向き IP送信元 アドレス IPあて先 アドレス プロトコル 送信元ポート番号 あて先ポート番号 ICMPのタイプ /通過 破棄 説明1 IN すべて 61.211.1.178 TCP すべて 25,80,443 - 通過 Web SMTP, の接続を許可2 IN 192.168.0.0/ 24 61.211.1.178 TCP すべて 22 - 通過 LAN sshからのみ を許可3 IN IPセカンタ リ゙の アト レ゙ス 61.211.1.178 TCP すべて 53 - 通過 DNSセカンダリ からのゾーン転送を許可4 IN すべて 61.211.1.178 UDP すべて 53 - 通過 DNSへの問い合わせを許可5 IN すべて 61.211.1.178 ICMP - - 0 3 8 11,,, 通過 ネットワーク試験用6 IN すべて すべて すべて すべて すべて すべて 破棄 上記以外の入力パケットを遮断7 OUT 61.211.1.178 IPフ ラ゚イマリの アト レ゙ス TCP すべて 25 - 通過 プライマリ・メール・サーバへの転送を許可8 OUT 61.211.1.178 すべて TCP 25 80 443, , すべて - 通過 より安全にするなら設定する9 OUT 61.211.1.178 61.211.1.180 TCP 22 すべて - 通過 同上10 OUT 61.211.1.178 61.210.22.254 TCP すべて 53 - 通過 同上11 OUT 61.211.1.178 すべて UDP 53 すべて - 通過 同上12 OUT 61.211.1.178 すべて ICMP - - 0 3 8 11,,, 通過 同上13 OUT すべて すべて すべて すべて すべて すべて 破棄 -
MTA の設定不良によるオープンリレーの防止
MTA の設定不良によるオープンリレーの防止
管理者の ssh アクセスをインターネットから可能にするならルール2を変更。この場合、 /etc/hosts.allow などでアクセス元を限定すること。
管理者の ssh アクセスをインターネットから可能にするならルール2を変更。この場合、 /etc/hosts.allow などでアクセス元を限定すること。
パッケージのアップデートはftpを使う場合がほとんどなので、この場合、ルール 13 を止めないといけない
パッケージのアップデートはftpを使う場合がほとんどなので、この場合、ルール 13 を止めないといけない
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
52
パケットフィルタリングの具体例パケットフィルタリングの具体例 (1)(1)LinuxLinuxののiptablesiptables利用上の注意点利用上の注意点
1. インターネットに接続した状態で/etc/rc.d/init.d/iptables restart するのはあまり好ましくありません。1. 上記スクリプトの設計上、いったん全部削除して、ポリシーだけ残るので、ACCEPTポリシーだけ残った状態で全てのポートが一瞬オープン状態になります2. システムの再起動ならば、iptablesのポリシが設定されてからネットワークが立ち上がるので安全です。
2. ネットワークを切断してコンソールで作業するか、システムを再立ち上げしましょう。
CentOSもデフォルトではポリシがCentOSもデフォルトではポリシが ACCEPTACCEPT ですです
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
53
パケットフィルタリングの具体例パケットフィルタリングの具体例 (2)(2)
CentOSで の標準例ファイアウォールオンCentOSで の標準例ファイアウォールオン (/et(/etc/sysconfig/iptables)c/sysconfig/iptables)
:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:RH-Firewall-1-INPUT - [0:0]-A INPUT -j RH-Firewall-1-INPUT-A FORWARD -j RH-Firewall-1-INPUT-A RH-Firewall-1-INPUT -i lo -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT-A RH-Firewall-1-INPUT -p 50 -j ACCEPT-A RH-Firewall-1-INPUT -p 51 -j ACCEPT-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibitedCOMMIT
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
54
パケットフィルタリングの具体例パケットフィルタリングの具体例 (3)(3)
CentOSでファイアウォールオン標準設定を改CentOSでファイアウォールオン標準設定を改善してみましょう!善してみましょう!
:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:RH-Firewall-1-INPUT - [0:0]-A INPUT -j RH-Firewall-1-INPUT-A FORWARD -j RH-Firewall-1-INPUT-A RH-Firewall-1-INPUT -i lo -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type ping -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type pong -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type time-exceeded -j ACCEPT-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibitedCOMMIT
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
55
実習実習 11 :: CentOSCentOS のファイアウォーのファイアウォールル 機能をカスタマイズしてみよう 機能をカスタマイズしてみよう(( 55 分)分)
CentOSCentOS は、は、 RedHat Enterprise LinuxRedHat Enterprise Linux と同様にと同様に iptableiptabless を利用したパケットフィルタ機能により簡易ファを利用したパケットフィルタ機能により簡易ファイアウォールを実現しています。イアウォールを実現しています。
前前 33 ページの内容を見て、実際に簡易ファイアページの内容を見て、実際に簡易ファイアウォールを設定してみましょう。そして、その効果ウォールを設定してみましょう。そして、その効果を確認してみましょう。を確認してみましょう。 icmpicmp の設定も変更してみの設定も変更してみましょう。ましょう。
GUIGUI の設定コマンドはの設定コマンドは rootroot で、次のコマンドを実行で、次のコマンドを実行します。します。# system-config-securitylevel# system-config-securitylevel
また、設定ファイルは、また、設定ファイルは、 /etc/sysconfig/iptables/etc/sysconfig/iptables でです。す。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
56
サーバー構築手順~インストールサーバー構築手順~インストール編~編~
インストール時にはブロードバンドルータ内で作業せよ!インストール時にはブロードバンドルータ内で作業せよ!
TCP/IPTCP/IP の制限でファイヤーウォール機能の制限でファイヤーウォール機能 (( パケットフィルタパケットフィルタ )) だだけでは防止できないものもあるけでは防止できないものもある
ディストリビューションディストリビューション CDCD だけではなく最初にだけではなく最初にアップデートするのにインターネット接続が必要アップデートするのにインターネット接続が必要
ディストビューションディストビューション CDCD はセキュリティ的に問はセキュリティ的に問題のある「古い状態」であることが多い題のある「古い状態」であることが多い
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
57
CentOSCentOS は、インターネットに接続した上でオンは、インターネットに接続した上でオンラインで追加インストールをしたり、ソフトラインで追加インストールをしたり、ソフトウェアの更新版をインストールしたりできます。ウェアの更新版をインストールしたりできます。
本講座で使用する追加のソフトウェアの大半を本講座で使用する追加のソフトウェアの大半を CCent OSent OS のアップデータ(のアップデータ( yum)yum) でインストールででインストールできるようにするソフトウェア書庫(リポリトきるようにするソフトウェア書庫(リポリトジ)もいくつか公開されています。ジ)もいくつか公開されています。
時間がないので実習は行いませんが、内容は実時間がないので実習は行いませんが、内容は実習補助資料にあるので、後で自分で環境構築して習補助資料にあるので、後で自分で環境構築してみてください。みてください。
CenCen tt OSOS を使った追加ソフトを使った追加ソフトウェアウェアインストールについてインストールについて
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
58
サーバー構築手順~最初の1手サーバー構築手順~最初の1手 (1)(1)~~
sshssh サーバー以外をまずは非公開にサーバー以外をまずは非公開に
ssh環境を最初に構築しよう 端末側( Windows) は PuTTY や TeraTERM pr
o + TTSSH 、 Poderosa で環境を構築しよう セキュリティ的な検討、日本語化度を考慮
するとPoderosaがオススメ。ただし、 ssh2 の鍵の互換性に若干の問題がある。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
59
サーバー構築手順~最初のサーバー構築手順~最初の 11 手手 (2)(2)~~
PuTTYPuTTY
ダウンロードサイトダウンロードサイト ((英語英語 ))http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htmlhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
ダウンロードサイト(非公式日本語パッチ版ダウンロードサイト(非公式日本語パッチ版 ))http://www11.tok2.com/home/hdk/download.htmlhttp://www11.tok2.com/home/hdk/download.html
非公式日本語パッチ作成者サイト非公式日本語パッチ作成者サイトhttp://hp.vector.co.jp/authors/VA024651/#PuTTYkj_tophttp://hp.vector.co.jp/authors/VA024651/#PuTTYkj_top
特徴特徴 SSH1(RSA), SSH2SSH1(RSA), SSH2 (( DSA)DSA) に対応に対応 cp, ftp cp, ftp に対応する に対応する PSCP, PSFTPPSCP, PSFTP コマンドがあるコマンドがある Windows 95/98/Me/NT/2000/XP for x86Windows 95/98/Me/NT/2000/XP for x86 以外に以外に NT on AlphaNT on Alpha も対も対
応 応
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
60
サーバー構築手順~最初のサーバー構築手順~最初の 11 手手 (3)(3)~~
TeraTERM pro + TTSSHTeraTERM pro + TTSSH 日本語版日本語版
TeraTERM → TeraTERMTeraTERM → TeraTERM 日本語版 → 日本語版 → TTSSH →TTSSH → TTSSHTTSSH 日本語版と順番にバ日本語版と順番にバイナリファイルの差分を上書きする必要がある(日本語メニューが不要であイナリファイルの差分を上書きする必要がある(日本語メニューが不要であれば、日本語版は不要)れば、日本語版は不要)
インストール手順、ダウンロード先、および使い方については以下のサイトインストール手順、ダウンロード先、および使い方については以下のサイトが詳しいが詳しいhttp://www.netlab.is.tsukuba.ac.jp/~one/ssh/http://www.netlab.is.tsukuba.ac.jp/~one/ssh/
特徴特徴 SSH1(RSA)SSH1(RSA) にのみ対応にのみ対応 安定した日本語環境安定した日本語環境 開発、メインテナンスはすでに終了開発、メインテナンスはすでに終了
右のように右のように UTF-8UTF-8対応、対応、 ssh2ssh2対応も有志の方により対応も有志の方により 進んでいます。 進んでいます。
UTF-8UTF-8 はは Fedora CoreFedora Core 以降が標準コードに採用以降が標準コードに採用
・最近、 ssh2対応などの拡張をしようというプロジェクトができました。対応するサイトは、http://www.ayera.com/teraterm
で TeraTERM 3.1.3 が公開されています。日本語版はまだない模様。
・ ttssh で UTF-8 をサポートするプロジェクトもあります (ssh2対応含む ) 。
http://www.vector.co.jp/soft/winnt/net/se320973.html
・最近、 ssh2対応などの拡張をしようというプロジェクトができました。対応するサイトは、http://www.ayera.com/teraterm
で TeraTERM 3.1.3 が公開されています。日本語版はまだない模様。
・ ttssh で UTF-8 をサポートするプロジェクトもあります (ssh2対応含む ) 。
http://www.vector.co.jp/soft/winnt/net/se320973.html
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
61
サーバー構築手順~最初のサーバー構築手順~最初の 11 手手 (3)(3)~~
Poderosa(Poderosa( ポデローサ)ポデローサ)
日本語の扱いや日本語の扱いや WindowsWindows プログラムとしての安定性に特徴があります。プログラムとしての安定性に特徴があります。 純粋な、純粋な、 .NET Framework.NET Framework を使用したアプリケーションです。を使用したアプリケーションです。 タブ式タブ式 GUIGUI 、、 SSH2SSH2 をサポートしているオープンソースのをサポートしているオープンソースの WindowsWindows 用ターミ用ターミ
ナルエミュレータ。ナルエミュレータ。 インストール手順、ダウンロード先、および使い方については以下のサイトがインストール手順、ダウンロード先、および使い方については以下のサイトが詳しい詳しいhttp://ja.poderosa.org/http://ja.poderosa.org/
特徴特徴 SSH1,SSH2SSH1,SSH2 に対応に対応 .NET Framework.NET Framework対応言語でマクロを記述可能対応言語でマクロを記述可能 ローカルのローカルの CygwinCygwin やや SFU(Services for UNIX)SFU(Services for UNIX) に対応に対応 タブ式ウィンドウ画面タブ式ウィンドウ画面 SSH2SSH2 ポートフォワードツール、ポートフォワードツール、 SSHSSH鍵作成ウィザード、鍵作成ウィザード、 SOCKSSOCKS対応、対応、 II
Pv6Pv6対応など多くのサポート機能、ツールがある 対応など多くのサポート機能、ツールがある
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
62
サーバー構築手順~最初のサーバー構築手順~最初の 11 手手 (4)(4)~~
CentOSCentOS のサーバー側 のサーバー側 sshdsshd の設定上の注意の設定上の注意
/etc/ssh/sshd_config /etc/ssh/sshd_config のパラメータのパラメータPermitRootLogin noPermitRootLogin no → root→ root での直接ログイン不可での直接ログイン不可MaxAuthTries 1MaxAuthTries 1 → 1→ 1 セッションの最大試行回数1回セッションの最大試行回数1回PasswordAuthentication no → PasswordAuthentication no → 生パスワードでの認証不可生パスワードでの認証不可GSSAPIAuthentication no → GSSAPIGSSAPIAuthentication no → GSSAPI 認証不可認証不可
etc/hosts.allow etc/hosts.allow のパラメータのパラメータsshd:[sshd:[ 自サイトのネットワークアドレス自サイトのネットワークアドレス ]/[]/[ ネットマスネットマス
クク ]]sshd:*.jpsshd:*.jp ほとんどのイリーガルアクセスを防止可
能
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
63
SSHSSH の裏まで知りたいあなたに・・の裏まで知りたいあなたに・・・・~優良推薦図書~~優良推薦図書~
「実用「実用 SSHSSH第第 22版版 -- セキュアシェル徹底活用ガイド」セキュアシェル徹底活用ガイド」http://www.oreilly.co.jp/books/4873112877/http://www.oreilly.co.jp/books/4873112877/細かな使い方や設定方法が書かれています。細かな使い方や設定方法が書かれています。新しい使い方のヒントが載っています。新しい使い方のヒントが載っています。
コンパイル時のオプションコンパイル時のオプション サーバ全体のオプションサーバ全体のオプション 各ユーザが利用可能なオプション各ユーザが利用可能なオプション ftpftp をを SSHSSH に通すに通す 鍵の種類で利用できる機能を制限鍵の種類で利用できる機能を制限etc…etc…
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
64
実習2:ssh環境を構築しよう!実習2:ssh環境を構築しよう!(( 115分)5分)
ここまでのsshの説明に従った設定を行います。ここまでのsshの説明に従った設定を行います。/etc/ssh/sshd_config /etc/ssh/sshd_config ファイルはデフォルト(記ファイルはデフォルト(記述しなかった場合の動作)が述しなかった場合の動作)が ##コメントとして書コメントとして書かれています。これと異なる部分だけ記述してやかれています。これと異なる部分だけ記述してやればOKです。ればOKです。
補助教材を参考に実習してください。補助教材を参考に実習してください。※※なお、今回はCentOS自身のローカル接続をなお、今回はCentOS自身のローカル接続を
おこないます。時間が余った人は、おこないます。時間が余った人は、 PoderosaPoderosa でのでのリモートログインもチャレンジしてみてください。リモートログインもチャレンジしてみてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
65
サーバー構築手順~サーバー構築手順~ sudosudo の利用の利用 (1)(1)~~
sudoで sudoで rootroot になれるユーザを限定するになれるユーザを限定する
歴史的理由により /etc/sudoers ファイルで wheel グループに属しているユーザに root になれる権限を設定します
root になってもよいユーザを vigr コマンドで wheel グループに登録します
登録されたユーザは、ユーザ毎のパスワードで root になれます sudo で指定したコマンドや権限のないユーザの sudo の試みは syslo
g に記録されます
ローカルマシンの一般ユーザのローカルマシンの一般ユーザの rootroot権限奪取の防止権限奪取の防止
コマンド毎やユーザをグループ毎にして、細かく制御も可能
コマンド毎やユーザをグループ毎にして、細かく制御も可能
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
66
サーバー構築手順~サーバー構築手順~ sudosudo の利用の利用 (2)(2)~~
root::0:rootroot::0:rootbin::1:root,daemon,majordomo,bin::1:root,daemon,majordomo,majordomomajordomodaemon::2:root,daemondaemon::2:root,daemonsys::3:root,admsys::3:root,admadm::4:root,adm,daemonadm::4:root,adm,daemontty::5:tty::5:disk::6:rootdisk::6:rootlp::7:daemon,lplp::7:daemon,lpmem::8:mem::8:kmem::9:kmem::9:wheel::10:root,suzuki,tanaka,itowheel::10:root,suzuki,tanaka,itomail::12:mail,binmail::12:mail,bin……
/etc/group
vigr で編集しないとシャドウパスワードファイルが更新されない
vigr で編集しないとシャドウパスワードファイルが更新されない
### This file MUST be edited with the 'visudo' command as root.# This file MUST be edited with the 'visudo' command as root.### See the sudoers man page for the details on how to write a sudoers fi# See the sudoers man page for the details on how to write a sudoers file.le.##
# Host alias specification# Host alias specification
# User alias specification# User alias specification
# Cmnd alias specification# Cmnd alias specification
# User privilege specification# User privilege specificationroot ALL=(ALL) ALLroot ALL=(ALL) ALL%wheel ALL (ALL) ALL%wheel ALL (ALL) ALL
/etc/sudoers
‘‘=’=’ がない!がない!
visudo コマンドを使うとこういった文法エラーをチェックしてくれます
visudo コマンドを使うとこういった文法エラーをチェックしてくれます
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
67
サーバー構築手順~サーバー構築手順~ sudosudo の応用例~の応用例~
# # ホストエイリアスの指定ホストエイリアスの指定Host_Alias DMZ = *.famm.ne.jp, aaa.bbb.ccc.ddd/255.255.255.240Host_Alias DMZ = *.famm.ne.jp, aaa.bbb.ccc.ddd/255.255.255.240# # ユーザ名エイリアスの指定ユーザ名エイリアスの指定User_Alias OPERATOR = suzuki, hayashi, itohUser_Alias OPERATOR = suzuki, hayashi, itoh# # コマンドエイリアスの指定コマンドエイリアスの指定Cmnd_Alias OPERATION = /etc/rc.d/init.d/* restart, /usr/sbin/useraddCmnd_Alias OPERATION = /etc/rc.d/init.d/* restart, /usr/sbin/useradd# # 特権ユーザの指定特権ユーザの指定root ALL = (ALL) ALLroot ALL = (ALL) ALL%wheel ALL = (ALL) ALL%wheel ALL = (ALL) ALL# OPERATOR# OPERATOR に属する管理者はメインテナンス用にに属する管理者はメインテナンス用に OPERATIONOPERATION で定義したコマンドだけ実行可で定義したコマンドだけ実行可能能OPERATOR DMZ = (root) OPERATIONOPERATOR DMZ = (root) OPERATION
/etc/sudoers
ワイルドカード指定できワイルドカード指定できますます
引数を指定すること引数を指定することもできますもできます
実行コマンド例:
1. sudo –u root /etc/rc.d/init.d/httpd restart
2. sudo –u root /usr/sbin/useradd –m milky
実行コマンド例:
1. sudo –u root /etc/rc.d/init.d/httpd restart
2. sudo –u root /usr/sbin/useradd –m milky
セキュリティ的には・・・:
1. 応用例は、よりセキュア。
2. root だけでは、ちょっといまひとつ・・・。
セキュリティ的には・・・:
1. 応用例は、よりセキュア。
2. root だけでは、ちょっといまひとつ・・・。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
68
実習3:sudoを体感する(1実習3:sudoを体感する(10分)0分)
前ページの設定を行い、実行例がきちんとできる前ページの設定を行い、実行例がきちんとできることを確認してください。ことを確認してください。 このとき、このとき、 syslogsyslog に出て来るメッセージも確認します。に出て来るメッセージも確認します。
実行権限のないユーザが実行しようとして跳ねら実行権限のないユーザが実行しようとして跳ねられることを確認してください。れることを確認してください。 このとき、このとき、 syslogsyslog に出て来るメッセージも確認します。に出て来るメッセージも確認します。
次に、特定のユーザだけシステムのリブートを可次に、特定のユーザだけシステムのリブートを可能にする設定を考えてみてください。能にする設定を考えてみてください。
必要なユーザは適宜追加してください。必要なユーザは適宜追加してください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
69
サーバー構築手順~サーバー構築手順~ inetdinetd の設定の設定 (1)(1)~~
inetdinetd 本体の設定 本体の設定 /etc/inetd.conf/etc/inetd.conf
不必要なネットワークサービスは起動しない デーモンモードで常時起動するものも書かない TurboLinux では turboservice, RedHat Linux では n
tsysv でも設定可能 最低必要なものは以下のようなものです
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a -dpop-2 stream tcp nowait root /usr/sbin/tcpd ipop2dpop-3 stream tcp nowait root /usr/sbin/tcpd ipop3dimap stream tcp nowait root /usr/sbin/tcpd imapd
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
70
サーバー構築手順~サーバー構築手順~ inetdinetd の設定の設定 (2)(2)~~
tcp_wrappertcp_wrapper の設定例 の設定例 /etc/hosts.allow/etc/hosts.allow
in.ftpd :211.9.xx.xxxin.ftpd :61.9.xx.xxx/255.255.255.0ipop2d,ipop3d,imapd,in.ftpd :.ykhm00.ap.so-net.ne.jpipop2d,ipop3d,imapd,in.ftpd :.iwate.ppp.infoweb.ne.jpsshd : .samba.gr.jpsshd : .jpALL : ALL : spawn (/usr/sbin/safe_finger –l @%h | /bin/mail –s %s-%h alert ) & : deny
1度アクセスしてもらいエラーログから判断する
1度アクセスしてもらいエラーログから判断する
先方のログインユーザを調べてメール
先方のログインユーザを調べてメール
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
71
サーバー構築手順~サーバー構築手順~ xinetdxinetd の設定の設定 (1)(1)~~
chkconfigchkconfig による設定による設定
起動するサービスとアクセス制限内容は inetd.conf + tcp_wrapper とおなじ
turboservice/ntsysv でも設定可能 設定するコマンド
/sbin/chkconfig --level 345 ftp on/sbin/chkconfig --level 345 pop3 on/sbin/chkconfig --level 345 pop2 on/sbin/chkconfig --level 345 imap on
chkconfig --list で必要なサービスのみ上っていることを確認
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
72
サーバー構築手順~サーバー構築手順~ xinetdxinetd の設定の設定 (2)(2)~~
サービス毎のアクセス制限 サービス毎のアクセス制限 /etc/xinetd.d/ftp/etc/xinetd.d/ftp の例の例
only_from = パラメータで指定するservice ftp {
disable = noonly_from = 211.9.xx.xxxonly_from = 61.9.xx.xxx/255.255.255.yyyonly_from = 210.9.xx.0only_from = .iwate.ppp.infoweb.ne.jp…..log_on_failure += USERID
}
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
73
サーバー構築手順~起動サービスの設定サーバー構築手順~起動サービスの設定 (1)(1) ~~
ntsysv/turboservicentsysv/turboservice による設定による設定
redhat-config-services/system-config-services は RedHat 系、 turboservice は TurboLinux
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
74
サーバー構築手順~起動サービスの設定サーバー構築手順~起動サービスの設定 (2)(2) ~~
自動起動させるサービスの例自動起動させるサービスの例
apmd/acpidapmd/acpid atd/crond/anacronatd/crond/anacron random/httpd(Webrandom/httpd(Web サービスをするならサービスをするなら )) inet/network/inetd/xinetd ipchains(2.2 系 )/iptables(2.4 系 ) iplog/syslog keytable irqbalance rawdevices
kudzu/readahead/readahead_early/rhnsd/yum(RedHat Linux 等 )
named(DNS を動かすなら) portmapportmap sendmailsendmail(MTA(MTA にに sendmailsendmail を使うならを使うなら )) snmpd(mrtgsnmpd(mrtg 等を使うなら等を使うなら )) sshd smartd xntpd(ntpd を使うなら )
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
75
サーバー構築手順~サーバー構築手順~ DNS(1)DNS(1) ~~ネームサーバーの設定ネームサーバーの設定
セカンダリネームサーバ以外には情報の転送を不許可にするセカンダリネームサーバ以外には情報の転送を不許可にする /etc/named.conf /etc/named.conf で、で、
allow-transfer { IPallow-transfer { IP アドレスアドレス 1 ; // 1 ; // 転送を許可するセカンダリネームサーバ転送を許可するセカンダリネームサーバ 11 IPIP アドレスアドレス 2 ; // // 22 ; // // 2 … … };};
バージョンチェックできないようにするバージョンチェックできないようにする (( バグバージョンを探す攻撃バグバージョンを探す攻撃防止防止 )) /etc/named.conf/etc/named.conf で、で、
zone “bind” chaos { allow-query { localhost; }; // localhostzone “bind” chaos { allow-query { localhost; }; // localhost からしか許さないからしか許さないtype master;type master;file “bind”;file “bind”;};};
Bind 9.x では不必要!Bind 9.x では不必要!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
76
サーバー構築手順~サーバー構築手順~ DNS(2)DNS(2) ~~
ネームサーバーの設定ネームサーバーの設定 (( つづき)つづき)
/var/named/bind (/var/named/bind ( 標準)で、標準)で、$origin bind.$origin bind.@ 1d chaos soa localhost. root.localhost. (@ 1d chaos soa localhost. root.localhost. (1 ; serial1 ; serial3H ; refresh3H ; refresh1H ; retry1H ; retry1W ; expiry1W ; expiry1D ) ; minimum1D ) ; minimumchaos ns localhost.chaos ns localhost.chaos A 127.0.0.1chaos A 127.0.0.1
[ チェック方法 ]
$nslookup –class=chaos –query=txt localhost version.bind( 実際は1行 )
Server: localhost
Address: 127.0.0.1
VERSION.BIND text = “8.2.3-REL”
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
77
実習4:実習4: CentOSCentOS でのでの version.bindversion.bind のの有効性を調べてください有効性を調べてください (( 5分5分 ))
前ページのような前ページのような chaoschaos クラスを利用したクラスを利用した脆弱性の発見方法がCentOSで有効か脆弱性の発見方法がCentOSで有効かどうかを調べてください。どうかを調べてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
78
サーバー構築手順~メールサーバ~サーバー構築手順~メールサーバ~オープンリレー(オープンリレー( OpenRelay)OpenRelay) しないように注意しないように注意
Sendmail 8Sendmail 8 系以降、系以降、 qmailqmail 、、 postfixpostfix ではリレーしなではリレーしないのが基本いのが基本-しかし、設定を誤るとオープンリレーになってしまう。-しかし、設定を誤るとオープンリレーになってしまう。
2004/072004/07 で2台のサーバーで観測すると、オープンで2台のサーバーで観測すると、オープンリレーチェックのメールサーバーアクセスがリレーチェックのメールサーバーアクセスが 5757回回 //109109回回
telnet telnet でも手軽にチェックできるので、設定を変更でも手軽にチェックできるので、設定を変更するたびにチェックしようするたびにチェックしよう
不正中継調査サイト不正中継調査サイトhttp://www.abuse.net/relay.htmlhttp://www.abuse.net/relay.html
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
79
サーバー構築手順~ファイル転送サーバー構築手順~ファイル転送 (1)(1)~~
FTPFTP サービスとサービスと WebDAVWebDAV
よりセキュアなのはよりセキュアなのは WebDAVWebDAV FTPFTP ではシステムにアカウントが必要、ではシステムにアカウントが必要、 WebDAVWebDAVは不要は不要 システム中のアクセスできるファイルエリアを制御しやすいのはシステム中のアクセスできるファイルエリアを制御しやすいのは WebDAVWebDAV。。
FTP(wuFTPD, proftpdFTP(wuFTPD, proftpd 等)ではユーザ毎の等)ではユーザ毎の chrootchroot環境が必要で、これを構築、環境が必要で、これを構築、維持、運用維持、運用 (( ユーザの追加など)するのは結構たいへんユーザの追加など)するのは結構たいへん
FTPFTP では認証に生パスワードが流れる。では認証に生パスワードが流れる。 WebDAVWebDAVはは BASICBASIC 認証でなく、認証でなく、 digesdigestt 認証ならばパスワードは暗号化される認証ならばパスワードは暗号化される
WebDAVWebDAVは接続がは接続が [[ クライアントクライアント ]→[]→[ サーバー:サーバー: 80/TCP]80/TCP] に固定。に固定。 FTPFTP はモーはモードによってドによって [[ クライアントクライアント ]←→[]←→[ サーバサーバ ]] どちらの接続もありえるし、使用どちらの接続もありえるし、使用ポートも流動的ポートも流動的
FTP はパケットフィルタリングしにくい!
FTP はパケットフィルタリングしにくい!
WindowsWindows のの WEBWEB フォルフォルダ機能を実現するダ機能を実現する
ApacheApache のモジュールのモジュール
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
80
サーバー構築手順~ファイル転送サーバー構築手順~ファイル転送 (2)(2)~~サーバー構築手順~ファイル転送サーバー構築手順~ファイル転送 (2)(2)~~
FTPFTP サービスサービス (( 通常モード)通常モード)[ 制御コネクション ]Ftp クライアント
(1024)Ftp サーバ (21)
PORT 192,168,1,1,4,0
OK
[データコネクション ]Ftp クライアント(1024)
Ftp サーバ (20)
GET のデータ転送
4,0 は、 0x04, 0x00で、 0x0400 、つまり 1024 を示す。
4,0 は、 0x04, 0x00で、 0x0400 、つまり 1024 を示す。
接続の向き 20/TCP1024/TCP
接続の向きとポート番号が問題
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
81
サーバー構築手順~ファイル転送サーバー構築手順~ファイル転送 (3)(3)~~
FTPFTP サービスサービス (PASV(PASVモード)モード)[ 制御コネクション ]Ftp クライアント
(3000)Ftp サーバ (21)
PASV
OK(211,9,36,180,4,255)
[データコネクション ]Ftp クライアント(3001)
Ftp サーバ (1279)
GET のデータ転送
4,0 は、 0x04, 0xff で、 0x04ff 、つまり 1279 を示す。
4,0 は、 0x04, 0xff で、 0x04ff 、つまり 1279 を示す。
接続の向き 1279/TCP3001/TCP
接続の向きとポート番号が問題
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
82
サーバー構築手順~ファイル転送サーバー構築手順~ファイル転送 (4)(4)~~
WebDAVWebDAVの欠点もあるの欠点もある
あまり多くの日本語情報がないあまり多くの日本語情報がない ApacheApache ではでは 2.02.0 系でないと標準モジュールでない系でないと標準モジュールでない 日本語を上手に使おうとすると非標準モジュール日本語を上手に使おうとすると非標準モジュール (mod_encoding)(mod_encoding) がが
必要必要 非標準モジュールがソースでしか配布されていない非標準モジュールがソースでしか配布されていない (RPM/de(RPM/debがbが
ない)ない) クライアントによって挙動が違うことがあるクライアントによって挙動が違うことがある (Windows XP(Windows XP など)など)
ApacheのApacheの V.upV.up でバイナリが非互換になるとちょっと悲しいことになるでバイナリが非互換になるとちょっと悲しいことになる
Apache のセキュリティホール対策版の1.3.26 など・・・
Apache のセキュリティホール対策版の1.3.26 など・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
83
実習5:実習5: WebDAVWebDAV 環境を構築する(環境を構築する( 2200 分)分)
DAVDAVの設定を行ってください。ユーザ認証の設定を行ってください。ユーザ認証はは BASICBASIC 認証で設定してください。認証で設定してください。
WindowsWindows のウェブブラウザから、のウェブブラウザから、 WebDAVWebDAVにアクセスしてファイルが置けることを確にアクセスしてファイルが置けることを確認してください。認してください。
詳細は、補助資料を参考にしてください。詳細は、補助資料を参考にしてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
84
サーバー構築手順~サーバー構築手順~ WWWWWW サービサービス~ス~
Apache設定のポイントApache設定のポイント (1)(1) ApacheApache のバージョンを表示しないのバージョンを表示しない (httpd.conf)(httpd.conf)
ServerSignatureServerSignature OffOff→→Apache 1.3Apache 1.3 以降。サーバが生成する以降。サーバが生成する (( エラーなどのエラーなどの )) ドキュメントドキュメント にバージョン等の付加情報をつけないにバージョン等の付加情報をつけない
ServerTokensServerTokens ProductOnlyProductOnly→→Apache 1.3.12Apache 1.3.12 以降。サーバレスポンスヘッダにバージョンや以降。サーバレスポンスヘッダにバージョンや プリコンパイルモジュールの情報を含めないプリコンパイルモジュールの情報を含めない
Apache のセキュリティホール対策版の1.3.26 以前のセキュリティホールをつくワームが近いうちにきっとでてきます。
Apache のセキュリティホール対策版の1.3.26 以前のセキュリティホールをつくワームが近いうちにきっとでてきます。
Nimdaタイプの IPアドレス総なめタイプかもしれませんが、バージョンをチェックするタイプであればこの防御は有効です。
Nimdaタイプの IPアドレス総なめタイプかもしれませんが、バージョンをチェックするタイプであればこの防御は有効です。
設定していないと・・・:
HTTP/1.1 200 OK
Date: Thu, 27 Jun 2002 07:54:50 GMT
Server: Apache/1.3.23 (TurboLinux) mod_throttle/3.1.2 PHP/4.1.2
Connection: close
設定してあると・・・:
HTTP/1.1 200 OK
Date: Thu, 27 Jun 2002 07:54:50 GMT
Server: Apache
Connection: close
FreeBSDFreeBSD版の版のワームはでてワームはでてきてしまいまきてしまいましたした
Slapper ワームがこの機能を利用しています
Slapper ワームがこの機能を利用しています
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
85
実習6:実習6: apacheapache のセキュリティを設のセキュリティを設定してみる(定してみる( 1010 分)分)
/etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf で、で、ServerSignature On/Off/EmailServerSignature On/Off/EmailServerTokens ProductOnly/Major/Minor/Minimal/OS/FServerTokens ProductOnly/Major/Minor/Minimal/OS/F
ullullと切り替えたときのレスポンスヘッダの違いを確認と切り替えたときのレスポンスヘッダの違いを確認
してくしてください。ださい。→変更したら、必ず再起動→変更したら、必ず再起動 (service httpd rest(service httpd rest
art )art ) します。 します。 CentOSのデフォルトは、CentOSのデフォルトは、 Server TokenServer Token
s OS / ServerSignature Ons OS / ServerSignature On です。です。 確認方法は、端末窓から、確認方法は、端末窓から、
$ telnet localhost 80$ telnet localhost 80適当な文字+リターン適当な文字+リターン
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
86
サーバー構築手順~サーバー構築手順~ WWWWWW サービサービス~ス~
Apache設定のポイントApache設定のポイント (2)(2)
BASICBASIC 認証を使わずにダイジェスト認証を使う認証を使わずにダイジェスト認証を使う BASICBASIC 認証ではパスワードは認証ではパスワードは mimemime エンコードされているだけの状態でエンコードされているだけの状態で
ネットワークを流れているネットワークを流れている 盗聴盗聴 (Sniffer)(Sniffer) して簡単に生のパスワードが得られます して簡単に生のパスワードが得られます ダイジェスト認証は、ダイジェスト認証は、 MD5MD5 でハッシュ化されているのでほぼ安全でハッシュ化されているのでほぼ安全 Apache 1.xApache 1.x の標準モジュールでないの標準モジュールでない (experimental(experimental のの )mod_auth_digest)mod_auth_digest モモ
ジュールでサポートされているので手でコンパイルしてインストールしなジュールでサポートされているので手でコンパイルしてインストールしなければいけないければいけない
→ → Apache 2.x Apache 2.x では標準モジュールになっていますでは標準モジュールになっています
電子メールの添付ファイ電子メールの添付ファイルの形式ルの形式
BASICBASIC 認証(認証( ApacheApache の標準パスワード形式)はセキュリティがないのと同じの標準パスワード形式)はセキュリティがないのと同じ
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
87
サーバー構築手順~サーバー構築手順~ WWWWWW サービサービス~ス~
Apache設定のポイントApache設定のポイント (3)(3)
mod_auth_digestmod_auth_digest モジュールのインストール方法モジュールのインストール方法1.1. ソースコードを取得、展開するソースコードを取得、展開する2.2. cd apache_1.3.26/src/modules/experimentalcd apache_1.3.26/src/modules/experimental3.3. /usr/bin/apxs –D DEV_RANDOM –c mod_auth_digest.c /usr/bin/apxs –D DEV_RANDOM –c mod_auth_digest.c でコンパイルでコンパイル4.4. rootroot で、で、 /usr/bin/apxs –i mod_auth_digest.so /usr/bin/apxs –i mod_auth_digest.so でインストールでインストール5.5. httpd.conf httpd.conf で、以下を追加するで、以下を追加する
LoadModule digest_auth_module /usr/libexec/apache/mod_auth_digest.soLoadModule digest_auth_module /usr/libexec/apache/mod_auth_digest.so AddModule mod_auth_digest.cAddModule mod_auth_digest.c
6.6. パスワードの作成はパスワードの作成は htdigesthtdigest コマンドを使うコマンドを使う
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
88
実習7:実習7: apacheapache のダイジェスト認証のダイジェスト認証をを 使う(15分) 使う(15分)
実習4の実習4の WebDAVWebDAV 環境で、環境で、 BASICBASIC 認証を使用し認証を使用しましたが、これをダイジェスト認証に変更してましたが、これをダイジェスト認証に変更してください。ください。
CentOSでは、CentOSでは、 apache 2.xapache 2.x なのでダイジェなのでダイジェスト認証は標準で組み込まれていますが、これスト認証は標準で組み込まれていますが、これを確認してください。を確認してください。
詳細は添付資料を参照のこと。詳細は添付資料を参照のこと。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
89
サーバー構築手順~サーバー構築手順~ ntpntp サービスサービス (1)(1)~~
ntpd/xntpdntpd/xntpd 設定のポイント設定のポイント
自サイト内と自サイト内と localhostlocalhost からのみの時刻問い合わせに応えるようにすからのみの時刻問い合わせに応えるようにするる
server 211.9.xx.xxxserver 211.9.xx.xxx ####上位上位 ntpntp サーバのサーバの IPIP アドレスアドレスserver 211.9.yy.yyyserver 211.9.yy.yyy ####上位上位 ntpntp サーバのサーバの IPIP アドレス アドレス restrict default ignorerestrict default ignore ####ルールは最後にマッチした行の制限がルールは最後にマッチした行の制限が
## ## かかるので、最初にデフォルトをかかるので、最初にデフォルトを記述記述
restrict 127.0.0.1restrict 127.0.0.1restrict 61.9.zz.zzz mask 255.255.255.vvv noquery nomodify nopeer notrust notraprestrict 61.9.zz.zzz mask 255.255.255.vvv noquery nomodify nopeer notrust notrap
####自サイトからの問いあわせ自サイトからの問いあわせ OKOKrestrict 211.9.xx.xxx noquery nomodifyrestrict 211.9.xx.xxx noquery nomodifyrestrict 211.9.yy.yyy noquery nomodifyrestrict 211.9.yy.yyy noquery nomodify
ntp は、 123/udp を使うため、 IP アドレスによる接続制限は確実ではありません。
ntp は、 123/udp を使うため、 IP アドレスによる接続制限は確実ではありません。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
90
サーバー構築手順~サーバー構築手順~ ntpntp サービスサービス (2)(2)~~
croncron でで ntpdatentpdate を使う手もあるを使う手もある
上位プロバイダで上位プロバイダで ntpntp サーバがある場合などある程度ネットワーサーバがある場合などある程度ネットワークの遅延がないことが期待できる場合クの遅延がないことが期待できる場合
管理サーバーの台数が少ない場合管理サーバーの台数が少ない場合 rootroot でで crontab –e crontab –e で次の設定を追加するで次の設定を追加する
0-59/12 * * * * /usr/bin/ntpdate NTP0-59/12 * * * * /usr/bin/ntpdate NTP サーバのサーバの IPIP アドレス アドレス > /dev/null 2>> /dev/null 2>&1 &1
いずれの方法の場合も、一日に1回システムのハードウェアクロックいずれの方法の場合も、一日に1回システムのハードウェアクロック (rtc)(rtc) を同期してを同期しておきましょう! おきましょう! crontab –e crontab –e で以下を追加しておく。で以下を追加しておく。0 4 * * * /sbin/hwclock -w >/dev/null 2>&10 4 * * * /sbin/hwclock -w >/dev/null 2>&1
「福岡大学」は現在、公開を取りやめていますので、参照しないようにしてください。
「福岡大学」は現在、公開を取りやめていますので、参照しないようにしてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
91
サーバー構築手順~サーバー構築手順~ WebminWebmin のススメのススメ (1)(1)~~
WebminWebmin とは?とは?
WebWeb ブラウザだけでブラウザだけで LinuxLinux 管理がすべてできます。初級者でも扱え管理がすべてできます。初級者でも扱えます。ます。
GPLGPL ライセンスやライセンスや BSDBSD ライセンス、商用ライセンスのさまざまなライセンス、商用ライセンスのさまざまなアドオンツールが、 アドオンツールが、 http://webmin.thirdpartymodules.comhttp://webmin.thirdpartymodules.com から入から入手できます手できます
管理画面は日本語対応管理画面は日本語対応 暗号化通信暗号化通信 (OpenSSL)(OpenSSL) に対応。安全なツールです。に対応。安全なツールです。 管理ユーザを追加して、一部の管理権限だけを与えられます管理ユーザを追加して、一部の管理権限だけを与えられます ID/ID/ パスワードのクラッキングを防御するしくみがありますパスワードのクラッキングを防御するしくみがあります
ユーザの追加・削除のみ・・・など
ユーザの追加・削除のみ・・・など
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
92
サーバー構築手順~サーバー構築手順~ WebminWebmin のススメのススメ (2)(2)~~OpenSSL のセキュリティ証明書なので通常心配は不要
必要なソフトウェアの設定メニューは充実
www.famm.jp
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
93
サーバー構築手順~サーバー構築手順~ WebminWebmin のススメのススメ (3)(3)~~アクセス元を限定できますアクセス元を限定できます
使ってい使っているポートるポートを判らなを判らなくするこくすることも可能とも可能
パスワード破りの試パスワード破りの試みを防止する機能がみを防止する機能が
ありますあります
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
94
実習8:実習8: webminwebmin を使用する(を使用する( 1010分)分)
Webminは補助資料にあるようにインWebminは補助資料にあるようにインターネット上の公開リポジトリからインスターネット上の公開リポジトリからインストールします。トールします。
SSLSSL でのアクセスが可能であることを確認しでのアクセスが可能であることを確認してください。てください。
WebminWebmin のセキュリティ設定を行い、機能しのセキュリティ設定を行い、機能していることを確認してください。ていることを確認してください。
作業手順は、補助資料を参考にしてください。作業手順は、補助資料を参考にしてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
95
サーバー構築手順~サーバー構築手順~ portsentry(1)portsentry(1)~~
PortsentryPortsentry ができることができること
あやしいポートスキャンをフルオートで検出あやしいポートスキャンをフルオートで検出 SYNSYN フラグによるハーフオープンスキャンフラグによるハーフオープンスキャン FINFIN フラグによるスキャンフラグによるスキャン その他のおかしなフラグを立っているパケットその他のおかしなフラグを立っているパケット
攻撃者の攻撃者の IPIP アドレスを自動的にパケットフィルタリングのルールアドレスを自動的にパケットフィルタリングのルールに登録に登録
攻撃者の攻撃者の IPIP アドレスを自動的にアドレスを自動的に tcp_wrappertcp_wrapper のアクセス拒否リスのアクセス拒否リストに登録トに登録攻撃の前兆の可能性の高いポートスキャンをシャットアウト攻撃の前兆の可能性の高いポートスキャンをシャットアウト
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
96
サーバー構築手順~サーバー構築手順~ portsentry(2)portsentry(2)~~
PortsentryPortsentry の設定方法の設定方法
/usr/local/psionic/portsentry/portsentry.conf /usr/local/psionic/portsentry/portsentry.conf を修正を修正 KILL_ROUTE=“/sbin/iptables KILL_ROUTE=“/sbin/iptables -I INPUT -s $TARGET$ -j DR-I INPUT -s $TARGET$ -j DR
OPOP”” KILL_HOSTS_DENY=“ALL: $TARGET$ : DENY” → /etc/hosts.denKILL_HOSTS_DENY=“ALL: $TARGET$ : DENY” → /etc/hosts.den
yy Portsentry.ignorePortsentry.ignore に無視するに無視する IPIP を表記アドレスを表記アドレス
127.0.0.0/8127.0.0.0/8 211.9.xx.yyy/28211.9.xx.yyy/28 0.0.0.00.0.0.0
Localhost のことLocalhost のこと
自分のサイトの DMZ自分のサイトの DMZ
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
97
サーバー構築手順~サーバー構築手順~ portsentry(3)portsentry(3)~~
ipchains ipchains に設定された情報に設定された情報 (( 一部)一部) (ipchains –L)(ipchains –L)DENY all ----l- otf1392.d-b.ne.jp anywhere n/aDENY all ----l- otf1392.d-b.ne.jp anywhere n/aDENY all ----l- 211.144.72.241 anywhere n/aDENY all ----l- 211.144.72.241 anywhere n/aDENY all ----l- 211.183.1.221 anywhere n/aDENY all ----l- 211.183.1.221 anywhere n/aDENY all ----l- 211.44.26.81 anywhere n/aDENY all ----l- 211.44.26.81 anywhere n/aDENY all ----l- sdn-ap-011caburbP0063.dialsprint.net anywhereDENY all ----l- sdn-ap-011caburbP0063.dialsprint.net anywhere n/an/aDENY all ----l- 211.144.85.49 anywhere n/aDENY all ----l- 211.144.85.49 anywhere n/aDENY all ----l- 61.177.32.85 anywhere n/aDENY all ----l- 61.177.32.85 anywhere n/aDENY all ----l- 61.170.156.55 anywhere n/aDENY all ----l- 61.170.156.55 anywhere n/a
/etc/hosts.deny /etc/hosts.deny に設定された情報に設定された情報 (( 一部)一部)ALL: 80.11.83.26 : DENYALL: 80.11.83.26 : DENYALL: 64.231.103.220 : DENYALL: 64.231.103.220 : DENYALL: 211.214.245.113 : DENYALL: 211.214.245.113 : DENYALL: 211.120.191.140 : DENYALL: 211.120.191.140 : DENYALL: 211.218.5.71 : DENYALL: 211.218.5.71 : DENYALL: 211.238.90.236 : DENYALL: 211.238.90.236 : DENYALL: 211.59.22.209 : DENYALL: 211.59.22.209 : DENYALL: 211.228.40.126 : DENYALL: 211.228.40.126 : DENYALL: 211.111.152.192 : DENYALL: 211.111.152.192 : DENY
実際の運用サーバーで防実際の運用サーバーで防御した記録です御した記録です
PortsentryPortsentry が自動登録が自動登録
していますしています
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
98
実習9:実習9: portsentryportsentry を使用する(を使用する( 1010分)分)
portsentryportsentry をコンパイル、インストールします。一部、をコンパイル、インストールします。一部、コンパイルエラーがでますが若干の修正で通ります。コンパイルエラーがでますが若干の修正で通ります。((詳細は添付資料を参照。スクリプトを提供しています)詳細は添付資料を参照。スクリプトを提供しています)
設定ファイルの中身を検査しましょう。設定ファイルの中身を検査しましょう。 ログを確認しながら、リモートからあやしいポートを叩ログを確認しながら、リモートからあやしいポートを叩
いてみましょう。何が起きましたか?いてみましょう。何が起きましたか? 自分の使用端末が誤って接続不可にならないように設定自分の使用端末が誤って接続不可にならないように設定
し、確認してください。し、確認してください。 NmapNmap を使用して様々な怪しいたたき方をして反応を確を使用して様々な怪しいたたき方をして反応を確
認してください。認してください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
99
SELinuxを使おうSELinuxを使おう (1)(1)
SELinuxSELinux に向いているもの・向かないものに向いているもの・向かないもの SELinuxSELinux では限定された公開サーバの脆弱性かでは限定された公開サーバの脆弱性か
らシステムを「守る」のに向いていますらシステムを「守る」のに向いています (( 特に特にrootroot 権限で動く必要のあるサーバの場合)権限で動く必要のあるサーバの場合)
LinuxLinux カーネルそのものに脆弱性があった場合カーネルそのものに脆弱性があった場合は守りきれませんは守りきれません
事前に「ルール」が設定されていないものは、事前に「ルール」が設定されていないものは、守ってくれません守ってくれません
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
100
SELinuxを使おうSELinuxを使おう (2)(2) ~~情報源~情報源~
日経日経 ITProITPro【セキュア【セキュア OS SELinuxOS SELinux 入門(全入門(全 66回回 ))】】http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040422http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040422/1/mokuji.jsp/1/mokuji.jsp
( (無料のユーザ登録が必要無料のユーザ登録が必要 )) Fedora Core 2Fedora Core 2 でで SELinuxSELinux を使うを使う http://www.selinux.gr.jp/documents/FC2selinux.htmlhttp://www.selinux.gr.jp/documents/FC2selinux.html 日本日本 SELinuxSELinux ユーザ会ドキュメントユーザ会ドキュメント
http://www.selinux.gr.jp/documents.htmlhttp://www.selinux.gr.jp/documents.html 日本日本 SELinuxSELinux ユーザ会メーリングリストユーザ会メーリングリスト
http://www.selinux.gr.jp/ml.htmlhttp://www.selinux.gr.jp/ml.html
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
101
SELinux、ちょっと難しそうSELinux、ちょっと難しそう・・・そんなあなたには・・・そんなあなたには TOMOYO TOMOYO LinuxLinux がオススメがオススメ
(( 株株 )NTT)NTT データが開発し、データが開発し、 GPLGPL で公開で公開されているされている LinuxLinux 拡張の純国産セキュア拡張の純国産セキュアOSOS
とにかく設定と操作が簡単!とにかく設定と操作が簡単!1.1. 動かしたいプログラムを「ログモードで記録」動かしたいプログラムを「ログモードで記録」2.2. はき出されたログファイルが即ルールファイルはき出されたログファイルが即ルールファイル3.3. ルールにないプログラムの起動やファイルへのアルールにないプログラムの起動やファイルへのア
クセスを禁止クセスを禁止Log & Do & Set == Easy 3 Steps ! That’s all!Log & Do & Set == Easy 3 Steps ! That’s all!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
102
サーバー運用管理方法サーバー運用管理方法
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
103
通常監視に使用するユーティリ通常監視に使用するユーティリティティ
ユーティリティ名称 説明iplogger/ ippl/ iplog tcp (tcplog),udp (udplog),icmp (icmplog)通信 通信 通信 の記録logwatch 各種サービスのデイリーな集計ログレポートのメール通告logcheck ログ異常レポートのメール通告。精度はあまりよくないtripwire/ AIDE システムの重要ファイルの改竄チェック&メール通告swatch 各種ログファイルのリアルタイム監視&メール通告webalizer httpアクセスの統計情報作成&ウェブページ作成analog httpアクセスの統計情報作成&ウェブページ作成mrtg システム負荷やネットワーク負荷の統計情報snmpd mrtg (を補助するデーモン 本来の用途は別)cron /毎日 一定時間毎などに指定コマンドを繰り返し実行するat 指定日時に指定コマンドを一回だけ実行する
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
104
通常監視すべきログファイル通常監視すべきログファイル
パス名 監視ツール 種類/ var/ log/ messages* swatch iplog, named, qmail, snmpd, etc… 総合ログ/ var/ log/ dmesg dmesg システムのブートログ/ var/ log/ maillog* swatch qmail/ sendmailのメール配信ログ/ var/ log/ secure* swatch sshd, sudo, login /等の認証関連の成功 失敗ログ/ var/ log/ wtmp* last / lastb 過去のログイン履歴/ログイン失敗履歴/ var/ log/ httpd/ access_log* analog / webalizer apache (httpd.confの標準アクセスログ の設定による)/ var/ log/ httpd/ error_log* apache (httpd.confの標準エラーログ の設定による)/ var/ log/ httpd/ ssl_engine_log apache mod_ssl (httpd.confの モジュールのログ の設定による)/ var/ log/ cron* cronの実行ログ
※ *( アスタリスク ) がついているものは logrotate で *.1, *.2, … と増える。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
105
atd/crond atd/crond デーモンデーモンatdatd デーモンデーモン
at/atq/atrmat/atq/atrm コマンドで制御コマンドで制御 未来の指定時刻に一度だけ指定コ未来の指定時刻に一度だけ指定コ
マンドを実行マンドを実行例例 )) at now + 4 hours at now + 4 hours at> mv ….at> mv …. at><CTRL+D><CR>at><CTRL+D><CR>
古いホームページと新しいホーム古いホームページと新しいホームページを夜中に自動切替・・・といページを夜中に自動切替・・・というような利用方法に使ううような利用方法に使う
例) 例) at 4am tomorrowat 4am tomorrow at> cd /home/httpdat> cd /home/httpd at> mv html html.oldat> mv html html.old at> mv html.new htmlat> mv html.new html at>at>
crond/anacroncrond/anacron デーモンデーモン crontab –e –u user-idcrontab –e –u user-id でファイでファイ
ルを編集ルを編集例例 ) crontab ) crontab ファイルの例ファイルの例 ::0-59/5 * * * * /usr/bin/mrtg0-59/5 * * * * /usr/bin/mrtg
mrtg/logwatch/logcheck/tripwirmrtg/logwatch/logcheck/tripwire/webalizere/webalizer などが利用などが利用
ログファイルの切替ログファイルの切替 (logrotate)(logrotate)などでも利用などでも利用
RASRAS の向上の向上
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
106
実習10:at実習10:at /cron/cron を使用する(を使用する( 55分)分)
atd/anacron/crondatd/anacron/crond 等のデーモンが動作しているこ等のデーモンが動作していることを確認してください。とを確認してください。
次の項目を次の項目を at/anacron/cronat/anacron/cron のうち、もっともふのうち、もっともふさわしいものを利用して設定してください。さわしいものを利用して設定してください。 毎朝4時に毎朝4時に rootroot宛にタイトル「おはよう~」のメール宛にタイトル「おはよう~」のメール
をうつをうつ 毎日、朝6時、12時、18時に毎日、朝6時、12時、18時に rootroot宛にディスクの宛にディスクの
使用量をまとめたメールをうつ使用量をまとめたメールをうつ 15分おきにシステム負荷の過去15分平均の記録をと15分おきにシステム負荷の過去15分平均の記録をと
るる
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
107
iplogger/ippl/iplog(1) iplogger/ippl/iplog(1) ~特徴~~特徴~ syslog(/var/log/messages)syslog(/var/log/messages) にログが出せるにログが出せる icmplog / udplog(iplogger) icmplog / udplog(iplogger) はセキュリティ的に信頼性が低いのはセキュリティ的に信頼性が低いの
で起動対象から外すで起動対象から外す ((原理的になりすましされやすい)原理的になりすましされやすい) tcplog(iplogger)tcplog(iplogger) の結果は、外部からの攻撃者の予兆に利用できるの結果は、外部からの攻撃者の予兆に利用できる ipplippl は、は、 iploggeriplogger をベースにコンフィグできるように拡張したもをベースにコンフィグできるように拡張したも
のの iplogiplog は、ハーフオープンスキャンやは、ハーフオープンスキャンや FINFIN スキャン等も記録可能スキャン等も記録可能 パケットフィルタがあまりきつくかかっていると意味のある情パケットフィルタがあまりきつくかかっていると意味のある情
報がとれなくなる報がとれなくなる 複数の条件の異なるサーバーでログを取るとより有意な情報が複数の条件の異なるサーバーでログを取るとより有意な情報が
とれるとれる
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
108
iplogiplog のログ出力の例のログ出力の例
/var/log/messages/var/log/messages に記録されるメッセージの例に記録されるメッセージの例/May 2 18:28:22 server iplog[20826]: TCP: port 355 connection attempt from pd3015b.ykhm00.ap.jipdec.jp:3362
May 2 18:28:22 server iplog[20826]: TCP: port 1372 connection attempt from pd3015b.ykhm00.ap.jipdec.jp:3364
May 2 18:28:22 server iplog[20826]: TCP: port scan detected [ports 1488,355,1372,362,383,32771,1542] from pd3015b.ykhm00.ap.jijpdec.jp [ports 3350,3351,3353,3354,3356,...] <--------------- (1)
May 2 18:28:45 server iplog[20826]: ICMP: www.jipdec.com: port is unreachable to (udp: dest port 33375, source port 53)
May 2 18:28:52 server iplog[20826]: TCP: http connection attempt from 192.168.0.1:11171
May 2 18:29:05 server iplog[20826]: TCP: http connection attempt from 192.168.3.20:3368
May 2 18:29:21 server iplog[20827]: TCP: port scan mode expired for pd3015b.ykhm00.ap.jipdec.jp - received a total of 63 packets (1764 bytes).
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
109
iplog(3) iplog(3) ~カスタマイズ~~カスタマイズ~/etc/iplog.conf/etc/iplog.conf の設定例の設定例
#iplog のユーザ / グループを指定
user nobody
group nobody
# インタフェース、監視ネットワークを指定 ( 使用ネットワークに合わせる)
interface eth0
promisc 123.456.789.0/24# Web サーバ /SMTP サーバ /DNS サーバへのログを取らないignore tcp dport 80ignore tcp dport 25Ignore tcp sport 25ignore udp dport 53Ignore udp sport 53
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
110
iplog(4) iplog(4) ~誤認への配慮~~誤認への配慮~iplogiplog がポートスキャンと誤認したログがポートスキャンと誤認したログ (1)(1)
May 2 18:42:44 server iplog[20826]: TCP: port scan detected [port 80] from client.sbnet.ne.jp [ports 3880,3881,3882,3883,3884,...]
iplogiplog がポートスキャンを記録したログがポートスキャンを記録したログ (2)(2)May 2 18:28:22 server iplog[20826]: TCP: port scan detected [ports 1488,355,1372,362,383,32771,1542] from pd3015b.ykhm00.ap.sbnet.ne.jp [ports 3350,3351,3353,3354,3356,...]
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
111
実習11:実習11: iplogiplog を使用する(を使用する( 1010 分)分)
CentOSそのものにはCentOSそのものには iplogiplog はインストールされてはインストールされていません。しかし、補助資料にあるようにいません。しかし、補助資料にあるように iplogiplog はは RPMRPMでインストールできます。実習環境にあるでインストールできます。実習環境にある RPMRPM を使っを使ってインストールを行い、起動時に自動実行するように設てインストールを行い、起動時に自動実行するように設定してください。詳細は補助資料を参照します。定してください。詳細は補助資料を参照します。
WindowsWindows マシンからマシンから WebWeb アクセスしてみたり、ホストアクセスしてみたり、ホストマシンからマシンから nmapnmap してみたりして、してみたりして、 /var/log/messages/var/log/messagesにどのようなメッセージがでてくるか確認してください。にどのようなメッセージがでてくるか確認してください。
本資料を基に、出力結果をカスタマイズしてください。本資料を基に、出力結果をカスタマイズしてください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
112
logwatch/logcheck(1) logwatch/logcheck(1) ~特徴~~特徴~ rpmrpm でインストールしたのならば設定不要でインストールしたのならば設定不要 1日1回1日1回 (logwatch)(logwatch) 、1時間に1回、1時間に1回 (logcheck)(logcheck) 自自
動的に実行される動的に実行される logwatchlogwatch はサマリをはサマリを logchecklogcheck はリストを出力はリストを出力 結果は(標準で)結果は(標準で) rootroot へメールで送付へメールで送付 起動設定は起動設定は /etc/cron.daily/logwatch, /etc/cron.h/etc/cron.daily/logwatch, /etc/cron.h
ourly/logcheck ourly/logcheck で行われているで行われている logchecklogcheck でで rootroot メールは溢れがちなので不必要な場合メールは溢れがちなので不必要な場合
は、上記のファイルの起動行をコメントにしたり、は、上記のファイルの起動行をコメントにしたり、 //etc/log.d/logwatch.conf etc/log.d/logwatch.conf でカスタマイズします。でカスタマイズします。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
113
logwatch(2) logwatch(2) ~サマリの内容~~サマリの内容~ ########## LogWatch 4.3.2 (02/18/03) ########## ########## LogWatch 4.3.2 (02/18/03) ########## --------------------- pam_unix Begin ------------------------ --------------------- pam_unix Begin ------------------------ system-auth:system-auth: Unknown Entries:Unknown Entries: session opened for user root by ken(uid=0): 4 Time(s)session opened for user root by ken(uid=0): 4 Time(s) session closed for user ken: 3 Time(s)session closed for user ken: 3 Time(s)---------------------- pam_unix End ------------------------- ---------------------- pam_unix End ------------------------- ------------------ Disk Space -------------------------------------- Disk Space --------------------Filesystem Size Used Avail Use% Mounted onFilesystem Size Used Avail Use% Mounted on/dev/hda7 2.3G 2.0G 188M 92% //dev/hda7 2.3G 2.0G 188M 92% //dev/hda1 45M 18M 26M 40% /boot/dev/hda1 45M 18M 26M 40% /boot/dev/hda6 1.0G 188M 1.8G 9% /var/dev/hda6 1.0G 188M 1.8G 9% /var########## LogWatch End #################### LogWatch End ##########
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
114
実習12:実習12: logwatchlogwatch の出力を確認(の出力を確認( 55分)分)
CentOS にはCentOS には logwatchlogwatch がすでにインがすでにインストールされています。ストールされています。
rootroot アカウントでメールを確認して、アカウントでメールを確認して、 logwlogwatchatch が実際にどのような出力をメールするが実際にどのような出力をメールするのか確認してください。のか確認してください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
115
Tripwire(1) Tripwire(1) ~特徴~~特徴~ システムの改竄を検出するためのツールシステムの改竄を検出するためのツール商用版とフリーソフトウェア版がある商用版とフリーソフトウェア版がある croncron を使って、結果はを使って、結果は rootroot へメールで送付へメールで送付 起動設定は起動設定は /etc/cron.daily/tripwire-check/etc/cron.daily/tripwire-check でで行われている行われている 手動の実行コマンド手動の実行コマンド : tripwire --check: tripwire --check
最初に「正しい状態」を覚えさせておいて、最初に「正しい状態」を覚えさせておいて、これとの差をチェックするこれとの差をチェックする
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
116
Tripwire(2) Tripwire(2) ~準備~~準備~1.1. /etc/tripwire/twinstall.sh/etc/tripwire/twinstall.sh を実行を実行
サイトパスフレーズとローカルパスフレーズを設定サイトパスフレーズとローカルパスフレーズを設定
2.2. /etc/tripwire/twcfg.txt /etc/tripwire/twcfg.txt を編集を編集 (( 例は後述)例は後述)3.3. 暗号署名された暗号署名された tw.cfgtw.cfg を作成を作成
/usr/sbin/twadmin --create-cfgfile twcfg.txt/usr/sbin/twadmin --create-cfgfile twcfg.txt
4.4. /etc/tripwire/twpol.txt/etc/tripwire/twpol.txt を編集(例は後述)を編集(例は後述)5.5. 暗号署名されたポリシーファイル暗号署名されたポリシーファイル tw.poltw.pol を作成を作成
/usr/sbin/twadmin --create-polfile twpol.txt/usr/sbin/twadmin --create-polfile twpol.txt
6.6. 基準データベースの作成基準データベースの作成 /usr/sibn/tripwire -–init/usr/sibn/tripwire -–init
7.7. 確認してエラーになるファイルを存在を確認し、なければコメ確認してエラーになるファイルを存在を確認し、なければコメントアウトしながらントアウトしながら 44~~ 66 を繰返す(厳密には不足もあるのでを繰返す(厳密には不足もあるので追加も必要追加も必要 ))
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
117
Tripwire(3) Tripwire(3) ~準備~~準備~/etc/tripwire/twcfg.txt の例ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t
$HOSTNAME は書換えできません。
$HOSTNAME は書換えできません。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
118
Tripwire(4) Tripwire(4) ~準備~~準備~/etc/tripwire/twpol.txt の例/sbin/dumpe2fs -> $(SEC_CRIT) ;
/sbin/dump -> $(SEC_CRIT) ;
/sbin/dump.static -> $(SEC_CRIT) ;
# /sbin/e2fsadm -> $(SEC_CRIT) ; tune2fs?
/sbin/e2fsck -> $(SEC_CRIT) ;
/sbin/e2label -> $(SEC_CRIT) ;
/sbin/fdisk -> $(SEC_CRIT) ;
/sbin/fsck -> $(SEC_CRIT) ;
/sbin/fsck.ext2 -> $(SEC_CRIT) ;
/sbin/fsck.vfat -> $(SEC_CRIT) ;
# /sbin/ftl_check -> $(SEC_CRIT) ;
# /sbin/ftl_format -> $(SEC_CRIT) ;
/sbin/hdparm -> $(SEC_CRIT) ;
#/sbin/lvchange -> $(SEC_CRIT) ;
#/sbin/lvcreate -> $(SEC_CRIT) ;
標準添付のサンプルは RedHat Linux 7 を基準にしているので、ディストリビューションに合わせて大修正が必要!
標準添付のサンプルは RedHat Linux 7 を基準にしているので、ディストリビューションに合わせて大修正が必要!
ファイル/ディレクトリがみつからないときには、
# slocate e2fsadm
などとして探す。これで見つかった場合はレイアウトが違うということなので、たとえば、
# rpm –qf /sbin/e2fsadm
xxx-yy.0-5
# rpm –ql xxx
で他に登録すべきファイルがないかチェック。
ファイル/ディレクトリがみつからないときには、
# slocate e2fsadm
などとして探す。これで見つかった場合はレイアウトが違うということなので、たとえば、
# rpm –qf /sbin/e2fsadm
xxx-yy.0-5
# rpm –ql xxx
で他に登録すべきファイルがないかチェック。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
119
Tripwire(5) Tripwire(5) ~出力例~~出力例~Parsing policy file: /etc/tripwire/tw.pol*** Processing Unix File System ***Performing integrity check...Wrote report file: /var/lib/tripwire/report/main.security-stadium.org-20020715-040328.twrTripwire(R) 2.3.0 Integrity Check Report…------------------------------------------------------------------------------- Section: Unix File System------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- Shell Related Programs 100 0 0 0 Critical Utility Sym-Links 100 0 0 0 Shell Binaries 100 0 0 0 * Critical configuration files 100 0 0 3 * System boot changes 100 4 1 0 OS executables and libraries 100 0 0 0 Security Control 100 0 0 0 Login Scripts 100 0 0 0 * Root config files 100 0 0 3
Total objects scanned: 19937Total violations found: 11
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
120
AIDE(Advanced Intrusion Detection EnAIDE(Advanced Intrusion Detection Environment) vironment) ~特徴~~特徴~
TripwireTripwire に似た改ざん検査ツールに似た改ざん検査ツール TripwireTripwireほど複雑でないルールも作成可能ほど複雑でないルールも作成可能 ディレクトリ単位で細かい設定が可能ディレクトリ単位で細かい設定が可能 croncron を使って、一定時間毎に動かす必要がを使って、一定時間毎に動かす必要があるのは一緒あるのは一緒
DBDB をログ保存に使用できるをログ保存に使用できる 最初に「正しい状態」を覚えさせておいて、最初に「正しい状態」を覚えさせておいて、
これとの差をチェックするのは同じ。これとの差をチェックするのは同じ。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
121
実習13:実習13: AIDEAIDE を実行できるようにを実行できるようにする(する( 1010 分)分)
CentOSにはCentOSには AIDEAIDE が標準ではインスが標準ではインストールされていません。トールされていません。
Dag WieersDag Wieers氏の氏の Dag Apt Repository (Dag Apt Repository (http:http://dag.wieers.com/apt//dag.wieers.com/apt)) からから yum/aptyum/apt でダでダウンロードできます。ウンロードできます。 yumyum でインストーでインストールしてください。ルしてください。
補助資料に従って、補助資料に従って、 AIDEAIDE を実行してみまを実行してみましょう。しょう。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
122
webalizer(1) webalizer(1) ~特徴~~特徴~ ApacheApache のアクセス統計ページを作成するツールのアクセス統計ページを作成するツール あまり詳細な情報はでないが簡単に作成できるあまり詳細な情報はでないが簡単に作成できる croncron を使って、一定時間毎に動かす必要があるを使って、一定時間毎に動かす必要がある トップ・チャートなどを何位まで出すか設定可能トップ・チャートなどを何位まで出すか設定可能 ApacheApache のログファイル形式はのログファイル形式は combinedcombined にするにする 複雑なログファイル構成では対応できない複雑なログファイル構成では対応できない アクセス傾向を見るのに向いているアクセス傾向を見るのに向いている 日本語対応日本語対応
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
123
webalizer(2) webalizer(2) ~準備:ログファイル形~準備:ログファイル形式~式~/etc/httpd/conf/httpd.conf の例## The following directives define some format nicknames for use with# a CustomLog directive (see below).#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agent## The location and format of the access logfile (Common Logfile Format).# If you do not define any access logfiles within a <VirtualHost># container, they will be logged here. Contrariwise, if you *do*# define per-<VirtualHost> access logfiles, transactions will be# logged therein and *not* in this file.## CustomLog /var/log/httpd/access_log commonCustomLog logs/access_log combined
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
124
webalizer(3) webalizer(3) ~準備:構成定義ファイ~準備:構成定義ファイル~ル~/etc/webalizer.conf の例
LogFile /var/log/httpd/access_log
OutputDir /var/www/webalizer
HistoryName /var/lib/webalizer/webalizer.hist
Incremental yes
IncrementalName /var/lib/webalizer/webalizer.current
PageType htm*
PageType cgi
DNSCache /var/lib/webalizer/dns_cache.db
DNSChildren 20
HTMLHead <META NAME="author" CONTENT="The Webalizer">
Quiet yes
HideURL *.gif
HideURL *.GIF
HideURL *.jpg
HideURL *.JPG
HideURL *.png
HideURL *.PNG
HideURL *.ra
IgnoreSite nikkeibp.co.jp
SearchEngine yahoo.com p=
SearchEngine altavista.com q=
SearchEngine google.com q=
SearchEngine eureka.com q=
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
125
webalizer(4) webalizer(4) ~準備:起動スクリプ~準備:起動スクリプト~ト~crontab -e の例
0 0-23/2 * * * /root/bin/do_webalizer > /dev/null 2>&1
/root/bin/do_webalizer の中身
#! /bin/bash# update access statistics for the web siteif [ -s /var/log/httpd/access_log ] ; then /usr/bin/webalizerfiexit 0
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
126
webalizer(5) webalizer(5) ~出力例~~出力例~
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
127
実習14:実習14: webalizerwebalizer をインストールをインストールし、自動実行するようにする(し、自動実行するようにする( 1010分)分)
CentOSにはCentOSには webalizerwebalizer がインストーがインストールされています(ただし英語版)。ルされています(ただし英語版)。
WebalizerWebalizer がが rpmrpm パッケージでインストーパッケージでインストールされている位置を確認して前数ページをルされている位置を確認して前数ページを参考にして参考にして webalizerwebalizer のカスタマイズと自のカスタマイズと自動実行まで設定してください。動実行まで設定してください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
128
analog(1) analog(1) ~特徴~~特徴~ WebalizerWebalizer より詳細なより詳細な apacheapache の 統計がとれますアクセスの 統計がとれますアクセス バッチモードとバッチモードと GUIGUI で処理するモードがありますで処理するモードがあります GUIGUI はカスタマイズできるがはカスタマイズできるが vivi などで直接編集が必要などで直接編集が必要 GUIGUI で使うと利用者の個人情報漏洩の危険がありますで使うと利用者の個人情報漏洩の危険があります セキュアにするにはセキュアにするには perl CGIperl CGI やや confconf ファイルをガリガリいじファイルをガリガリいじ
れなければいけませんれなければいけません ApacheApache の安定性能のためにの安定性能のために IP -> FQDNIP -> FQDN 変換しないでログを変換しないでログを
取ると、単独で変換する能力はありません取ると、単独で変換する能力はありません WebalizerWebalizer と同様にと同様に combinedcombined でログを取る必要がありますでログを取る必要があります 日本語対応日本語対応
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
129
analog(2) analog(2) ~準備~準備 :: ログファイル形式~ログファイル形式~/etc/httpd/conf/httpd.conf の例## The following directives define some format nicknames for use with# a CustomLog directive (see below).#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agent## The location and format of the access logfile (Common Logfile Format).# If you do not define any access logfiles within a <VirtualHost># container, they will be logged here. Contrariwise, if you *do*# define per-<VirtualHost> access logfiles, transactions will be# logged therein and *not* in this file.## CustomLog /var/log/httpd/access_log commonCustomLog logs/access_log combined
基本は webalizerといっしょ
基本は webalizerといっしょ
hostnameLookups Off
の設定では国別、 別ドメインの統計解析が単独ではできません。
別途、 dnstran 等の でツールバッチ変換しなければなりません。=処理中は負荷が大きくなります
hostnameLookups Off
の設定では国別、 別ドメインの統計解析が単独ではできません。
別途、 dnstran 等の でツールバッチ変換しなければなりません。=処理中は負荷が大きくなります
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
130
analog(3) analog(3) ~~ GUIGUI での設定~での設定~
リアルタイムで処理するのでかなりシステムに負荷のかかる処理になります
リアルタイムで処理するのでかなりシステムに負荷のかかる処理になります
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
131
analog(4) analog(4) ~出力例~~出力例~ これでもかなりカスタマイズしてありますが、それでもマスクしなければならない程危険です
これでもかなりカスタマイズしてありますが、それでもマスクしなければならない程危険です
あくまでも GUI は動作確認用と割り切って、実際に利用する場合にはバッチモードでの利用を強くお奨めします
あくまでも GUI は動作確認用と割り切って、実際に利用する場合にはバッチモードでの利用を強くお奨めします
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
132
analog(5) analog(5) ~バッチモードの設定~バッチモードの設定例~例~/etc/analog-seminar.cfg(1):# Configuration file for analog 5.01# See http://www.analog.cx/## Here are a couple of configuration commands to get you started. Add any more# you like from the Readme.## Lines starting with # are comments.## There is a much more extensive configuration file in examples/big.cfg## If you need a LOGFORMAT command it must go here, above the LOGFILE commands.LANGFILE /usr/lib/analog/lang/jp.lngLANGUAGE JAPANESEOUTPUT HTMLOUTFILE /home/seminar/public_html/seminar-analog.htmlLOGFORMAT COMMONLOGFORMAT COMBINEDLOGFILE /var/log/httpd/www.seminar.jp-*access_log*.gz# OUTFILE Report.htmlALL ONGENERAL ONSTATUS ONMONTHLY ON
出力を日本語に指定出力を日本語に指定
HTML と TEXT に出力できますHTML と TEXT に出力できます
ワイルドカードや gzip圧縮ファイルも指定可能
ワイルドカードや gzip圧縮ファイルも指定可能
全部出力全部出力概要出力概要出力
状態コード出力状態コード出力
月間サマリ出力月間サマリ出力
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
133
analog(6) analog(6) ~バッチモードの設定~バッチモードの設定例~例~/etc/analog-seminar.cfg(2):WEEKLY ONHOST ONREFERRER ONFULLDAILY OFFQUARTER OFFYEARLY OFFQUARTERLY ONQUARTERREP ONFIVEREP OFFFIVESUM OFF# OUTFILE /usr/lib/analog/web/analog.html# OUTPUT HTMLCHARTDIR images/LOCALCHARTDIR /home/education/public_html/images/HOSTNAME "Famm Open Source Seminar page access analyze"SUBDIR http://*# REQINCLUDE pagesREQLINKINCLUDE pagesREFLINKINCLUDE *REDIRREFLINKINCLUDE *FAILREFLINKINCLUDE *
円グラフチャートの URL 上の位置と、実際の出力ディレクトリ円グラフチャートの URL 上の位置と、実際の出力ディレクトリ
週刊集計 ON週刊集計 ON
参照リンク、リクエストリンク等リンク関連参照リンク、リクエストリンク等リンク関連
ホスト別集計 ONホスト別集計 ON
参照元 ON参照元 ON
全日 ON全日 ON
四半期集計 ON四半期集計 ON
年間集計 ON年間集計 ON
15 分集計系ON15 分集計系ON
5 分集計系ON5 分集計系ON
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
134
analog(7) analog(7) ~バッチモードの設定~バッチモードの設定例~例~/etc/analog-seminar.cfg(3):UNCOMPRESS *.gz,*.Z "gzip -cd"BROWOUTPUTALIAS Mozilla NetscapeBROWOUTPUTALIAS "Mozilla (compatible)" "Netscape (compatible)"BROWOUTPUTALIAS IWENG AOLSUBBROW */*SUBTYPE *.gz,*.Z# Add whichever of these types of pages you have on your server, or others.PAGEINCLUDE *.shtml# PAGEINCLUDE *.asp# PAGEINCLUDE *.jsp# PAGEINCLUDE *.cfmPAGEINCLUDE *.plPAGEINCLUDE *.phpSEARCHENGINE http://*altavista.*/* qSEARCHENGINE http://*yahoo.*/* pSEARCHENGINE http://*google.*/* qROBOTINCLUDE REGEXPI:robotROBOTINCLUDE Googlebot*TYPEOUTPUTALIAS .htm ".htm [Hypertext Markup Language]"TYPEOUTPUTALIAS .gz ".gz [Gzip compressed files]"TYPEOUTPUTALIAS .jpg ".jpg [JPEG graphics]"
圧縮ファイルの解凍コマンド圧縮ファイルの解凍コマンド
ブラウザ種別判定用/まとめ用ブラウザ種別判定用/まとめ用
拡張子登録拡張子登録
ブラウザ種別の表記形式 Lynx/2.8.3rel.1 libwww-FM/2.14 などブラウザ種別の表記形式 Lynx/2.8.3rel.1 libwww-FM/2.14 など
指定拡張子をページ単位でまとめる指定拡張子をページ単位でまとめる
サーチエンジンの登録サーチエンジンの登録
BOT/ロボットの登録BOT/ロボットの登録
集計用ファイル種別の登録集計用ファイル種別の登録
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
135
analog(8) analog(8) ~バッチモードの実行~バッチモードの実行例~例~
crontab –e :
0 6,18 * * * /usr/bin/analog +/etc/seminar-analog.cfg > /dev/null 2>&1
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
136
mrtg(1) mrtg(1) ~特徴~~特徴~ 元々は、元々は、 Multi Router Traffic Grapher=Multi Router Traffic Grapher= 複数のルータのトラ複数のルータのトラ
フィックをグラフ化するユーティリティフィックをグラフ化するユーティリティ 2つの値を与えるとグラフ化する能力がある2つの値を与えるとグラフ化する能力がある ucd-snmpucd-snmp (( net-snmp)net-snmp) の付加機能で、の付加機能で、 CPUCPU ロードアベレーロードアベレー
ジやメモリジやメモリ // スワップ空き容量、指定プログラムのプロセスワップ空き容量、指定プログラムのプロセス数、指定サイトまでのス数、指定サイトまでの pingping 時間などを表示時間などを表示
日本語対応。ただし、日本語コードは日本語対応。ただし、日本語コードは JISJIS 。トップページ。トップページはサンプルからカスタマイズ可能だが日本語にするならはサンプルからカスタマイズ可能だが日本語にするなら JIJISS コードで。→コードで。→ mrtgmrtg はトップページは書き換えないはトップページは書き換えない
2値で不足なら、2値で不足なら、 RRDToolRRDTool やや orcaorca の利用を検討しましょうの利用を検討しましょう
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
137
mrtg(2) mrtg(2) ~~ /etc/snmp/snmpd.conf/etc/snmp/snmpd.conf の設定の設定~~
Com2sec notConfigUser localhost snmpseminar
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1 80
access notConfigGroup "" any noauth exact systemview none none
syslocation Famm Network Service, Operation DESK
syscontact Kensuke Nezu<[email protected]>
load 1.0 1.0 1.0
コミュニティ名:パスワードのようなものコミュニティ名:パスワードのようなもの
への配慮でセキュリティ localhostからのみ接続可
への配慮でセキュリティ localhostからのみ接続可
※下線部は書き換えましょう
できればパケットフィルタで外部からの IN の snmp(161/udp)と snmp-trap(162/udp) はREJECT しましょう!
できればパケットフィルタで外部からの IN の snmp(161/udp)と snmp-trap(162/udp) はREJECT しましょう!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
138
mrtg(3) mrtg(3) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(1)(1)~~
# Created by# /usr/local/mrtg-2/bin/cfgmaker snmpseminar@localhost
Interval:5Options[^]:growrightWriteExpires: YesRefresh:300Language: iso-2022-jp
### Global Config Options
# for UNIXWorkDir: /var/www/html/mrtg
# or for NT# WorkDir: c:\mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right# Options[_]: growright, bits#Options[_]: growright, bits
※下線部は書き換えましょう
実際の出力先実際の出力先
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
139
mrtg(4) mrtg(4) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(2)(2)~~
Target[cpu]: 1.3.6.1.4.1.2021.10.1.5.2&1.3.6.1.4.1.2021.10.1.5.3:snmpseminar@localhostMaxBytes[cpu]: 2000Title[cpu]: CPU Load AveragePageTop[cpu]: <H1> CPUシステム負荷 </H1>Options[cpu]: nopercent, integer, gauge, absolute, withzeroes, growrightYLegend[cpu]: CPU Load AverageShortLegend[cpu]: %Legend1[cpu]: 5 分平均システム負荷Legend2[cpu]: 15 分平均システム負荷LegendI[cpu]: 5 分平均 :LegendO[cpu]:15 分平均 :Colours[cpu]: CYAN#159AAA,RED#EA6555,GREEN#144F04, VIOLET#FFFFFF
Target[mem]: 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.4.0:snmpseminar@localhostMaxBytes1[mem]: 524000MaxBytes2[mem]: 500000Title[mem]: Memory Free SizePageTop[mem]: <H1> メモリ空き容量 </H1>Options[mem]: gauge, absolute, growrightYLegend[mem]: Mem[kBytes]ShortLegend[mem]: kBytes
※下線部は書き換えましょう
JIS コード。以下、同様JIS コード。以下、同様
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
140
mrtg(5) mrtg(5) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(3)(3)~~
Legend1[mem]: 実メモリLegend2[mem]: スワップLegendI[mem]: 実メモリ :LegendO[mem]: スワップ :Colours[mem]: CYAN#159AAA,RED#EA6555,GREEN#144F04, VIOLET#FFFFFF
####################################################################### System: seminar.famm.ne.jp# Description: Linux seminar.famm.ne.jp 2.2.18-1smp #1 SMP Wed Jan 17 19:47:24 JST 2001 i686# Contact: Kensuke Nezu<[email protected]># Location: Famm Network Service, Operation DESK######################################################################
### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '211.9.36.189' | Eth: '00-90-cc-00-c9-64' ###
Target[server]: 1:snmpseminar@localhost:SetEnv[server]: MRTG_INT_IP="211.9.36.189" MRTG_INT_DESCR="eth0"Options[server]: growrightMaxBytes[server]: 1250000Title[server]: Traffic Analysis for The Internet
※下線部は書き換えましょう
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
141
mrtg(6) mrtg(6) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(4)(4)~~
PageTop[server]: <H1> サーバーネットワーク送受信負荷 </H1> <TABLE> <TR><TD>System:</TD> <TD>seminar.famm.ne.jp in Famm Network Service, Operation DESK</TD></TR> <TR><TD>Description:</TD><TD>eth0 </TD></TR> <TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR> <TR><TD>Ip:</TD> <TD>211.9.36.189 (seminar.famm.ne.jp)</TD></TR> </TABLE>
############################################################## ping stats for www.bit-drive.ne.jp# time ping to www.bit-drive.ne.jp (211.9.34.68)
Title[ping0]: time ping to www.bit-drive.ne.jpMaxBytes[ping0]: 5000AbsMax[ping0]: 10000Options[ping0]: gaugeTarget[ping0]: `/etc/mrtg/mrtg-ping-probe 211.9.34.68`PageTop[ping0]: <H1> インターネット速度計:上位サーバー </H1> <P> このサーバーと上位回線のサーバーとの間で、 ping の結果を計測します。YLegend[ping0]: milli secondsShortLegend[ping0]: ミリ秒
※下線部は書き換えましょう
ftp://ftp.pwo.de/pub/pwo/mrtg/mrtg-ping-probe/ から入手可能です
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
142
mrtg(7) mrtg(7) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(5)(5)~~
Legend1[ping0]: 最も遅かった送受信ミリ秒Legend2[ping0]: 最も速かった送受信ミリ秒Legend3[ping0]: 過去5分間の最も遅かった送受信ミリ秒Legend4[ping0]: 過去5分間の最も速かった送受信ミリ秒LegendI[ping0]: 最遅 :LegendO[ping0]: 最速 :WithPeak[ping0]: ymwd
#-------------------------------------------------------------------
############################################################## ping stats for www.geocities.co.jp# time ping to www.geocities.co.jp (210.153.89.190)
Title[ping1]: time ping to www.geocities.co.jpMaxBytes[ping1]: 5000AbsMax[ping1]: 10000Options[ping1]: gaugeTarget[ping1]: `/root/mrtg/mrtg-ping-probe 210.153.89.190`PageTop[ping1]: <H1> インターネット速度計:インターネットポータルサイト </H1> <P> このサーバーとインターネットポータルサイト「ジオシティー」との間で、 ping の結果を計測します。YLegend[ping1]: milli seconds
※下線部は書き換えましょう
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
143
mrtg(8) mrtg(8) ~~ /etc/mrtg/mrtg.conf/etc/mrtg/mrtg.conf の設定の設定(6)(6)~~
YLegend[ping1]: milli seconds
ShortLegend[ping1]: ミリ秒
Legend1[ping1]: 最も遅かった送受信ミリ秒
Legend2[ping1]: 最も速かった送受信ミリ秒
Legend3[ping1]: 過去5分間の最も遅かった送受信ミリ秒
Legend4[ping1]: 過去5分間の最も速かった送受信ミリ秒
LegendI[ping1]: 最遅 :
LegendO[ping1]: 最速 :
WithPeak[ping1]: ymwd
#-------------------------------------------------------------------
※下線部は書き換えましょう
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
144
mrtg(9)mrtg(9) ~実行環境~~実行環境~ トップページは以下から「ソースを表示」、してファイルに保存しトップページは以下から「ソースを表示」、してファイルに保存し
カスタマイズカスタマイズhttp://ww1.famm.ne.jp/mrtg/index.htmlhttp://ww1.famm.ne.jp/mrtg/index.html
トップページを作るのが面倒な場合は、日本語にはならないが、コトップページを作るのが面倒な場合は、日本語にはならないが、コマンドを使って作る手もありますマンドを使って作る手もあります# indexmaker --columns 1 --enumerate /etc/mrtg/mrtg.cfg > /[mrtg# indexmaker --columns 1 --enumerate /etc/mrtg/mrtg.cfg > /[mrtg の出力の出力
先ディレクトリ先ディレクトリ ]/index.html]/index.html mrtgmrtg を5分おきに実行を5分おきに実行 (crontab –e)(crontab –e)
0-59/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg 0-59/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg snmpdsnmpd を自動起動に設定を自動起動に設定
# chkconfig --level 345 snmpd on# chkconfig --level 345 snmpd on さあ、アクセスしてみましょう!さあ、アクセスしてみましょう!
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
145
実習15:実習15: mrtgmrtg をインストールし、をインストールし、自動実行するようにする(自動実行するようにする( 3030 分)分)
mrtgmrtg はコンパイル、インストールが必要はコンパイル、インストールが必要です。です。 net-snmpnet-snmp はは CentOSCentOS にパッケージにパッケージはあるのでインストールされていることをはあるのでインストールされていることを確認してください。確認してください。
mrtgmrtg とと mrtg-ping-probemrtg-ping-probe を使って設定しまを使って設定します。トップページはコマンドを使った自動す。トップページはコマンドを使った自動生成を使用してください。生成を使用してください。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
146
mrtg(10)mrtg(10) ~実行例~~実行例~
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
147
swatch(1)swatch(1) ~特徴~~特徴~ ログファイルのように追加書きこみされていくものをリアルタイログファイルのように追加書きこみされていくものをリアルタイ
ムで監視できます→ ‘ムで監視できます→ ‘ tail -f tail -f ファイル‘の拡張版のようなものですファイル‘の拡張版のようなものです logrotatelogrotate などでファイルが切り替わる時には などでファイルが切り替わる時には - -restart-time- -restart-time
で再起動時刻を指定しますで再起動時刻を指定します 簡単なパターンマッチング簡単なパターンマッチング ((正規表現)で検出設定ができます 正規表現)で検出設定ができます 自動起動は、自動起動は、 /etc/rc.d/rc.local/etc/rc.d/rc.local に次ページのように記述します。構に次ページのように記述します。構造上、自動停止はできません造上、自動停止はできません
監視ファイル1つごとに1つ起動する
監視ファイル1つごとに1つ起動する
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
148
if [ -f /root/.swatchrc ] ; then
/usr/bin/swatch --config-file=/root/.swatchrc --tail-file= /var/log/messages --restart-time 04:05 & > /dev/null 2>&1
fi
if [ -f /root/.swatchrc.secure ] ; then
/usr/bin/swatch --config-file=/root/.swatchrc.secure --tail-file= /var/log/secure --restart-time 04:05 & > /dev/null 2>&1
fi
if [ -f /root/.swatchrc.maillog ] ; then
/usr/bin/swatch --config-file=/root/.swatchrc.maillog --tail-file= /var/log/maillog --restart-time 04:05 & > /dev/null 2>&1
fi
swatch(2)swatch(2) ~自動起動~自動起動 /etc/rc.d/rc.local/etc/rc.d/rc.local~~
毎朝 04:05 にリスタート毎朝 04:05 にリスタート
監視ファイルを指定監視ファイルを指定
Conf ファイルの指定
Conf ファイルの指定
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
149
ignore /from 211.9.36.1[789][0-9]/
ignore /from .*.famm.ne.jp/
watchfor /named.*: denied query/
mail [email protected],subject=denied query issued
watchfor /failed login/
mail [email protected],subject=failed login.
watchfor /port [0-9][0-9][0-9][0-9] connection/
mail alert,subject=port scanned.
throttle 01:00
watchfor /port [0-9][0-9][0-9][0-9][0-9] connection/
mail alert,subject=port scanned.
throttle 01:00
swatch(3)swatch(3) ~設定ファイルの例~~設定ファイルの例~ignore / 無視するパターン / ignore / 無視するパターン /
watchfor / 監視するパターン /
mail 送付アドレス , subject= タイトル
watchfor / 監視するパターン /
mail 送付アドレス , subject= タイトル
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
150
差出人差出人 : root [[email protected]]: root [[email protected]]
送信日時送信日時 : 2002: 2002 年年 77月月 2525 日木曜日 日木曜日 8:528:52
宛先宛先 : [email protected]: [email protected]
件名件名 : fin scan detected: fin scan detected
Jul 25 08:51:43 www tcplog[565]: fin sJul 25 08:51:43 www tcplog[565]: fin scan detected from 211.238.69.99 (21can detected from 211.238.69.99 (211.238.69.99)1.238.69.99)
差出人差出人 : root [[email protected]]: root [[email protected]]
送信日時送信日時 : 2002: 2002 年年 77月月 2222 日月曜日 日月曜日 220:130:13
宛先宛先 : [email protected]: [email protected]
件名件名 : denied query issued: denied query issued
Jul 22 20:11:45 www named[1390]: deJul 22 20:11:45 www named[1390]: denied query from [212.31.103.23].4096 nied query from [212.31.103.23].4096 for "version.bind"for "version.bind"
送信日時送信日時 : 2002: 2002 年年 77月月 2222 日月曜日 日月曜日 4:54:599
宛先宛先 : [email protected]: [email protected]
件名件名 : connect refused: connect refused
Jul 22 04:56:45 www1 ipop3d[6297]: refJul 22 04:56:45 www1 ipop3d[6297]: refused connect from 218.45.130.1used connect from 218.45.130.1
swatch(4)swatch(4) ~送付されるメールの~送付されるメールの例~例~
差出人差出人 : root [[email protected]]: root [[email protected]]
送信日時送信日時 : 2002: 2002 年年 77月月 2424 日水曜日 日水曜日 9:379:37
宛先宛先 : [email protected]: [email protected]
件名件名 : refused connection: refused connection
Jul 24 09:36:03 www sshd[3091]: refused conneJul 24 09:36:03 www sshd[3091]: refused connect from neptune.interplanllc.comct from neptune.interplanllc.com
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
151
実習実習 116:6: swatchswatch をインストールし、をインストールし、自動実行するようにする(自動実行するようにする( 1515 分)分)
swatchswatch はインストールが必要です。はインストールが必要です。 設定ファイルは、とりあえず設定ファイル設定ファイルは、とりあえず設定ファイル
の例を参考に設定してみましょう。の例を参考に設定してみましょう。 実際には、実際には、 iplogiplog 等が出力するログを見ながら、等が出力するログを見ながら、怪しいポートスキャンのログなどを摘出する怪しいポートスキャンのログなどを摘出するように設定します。ように設定します。
これは、実運用時にさじ加減で足したり、引これは、実運用時にさじ加減で足したり、引いたりして、出力を加減するものです。いたりして、出力を加減するものです。
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
152
SyslogSyslog 監視の工夫について監視の工夫について
Lame ServerLame Server とは、上位のとは、上位の DNSDNS からあるゾーンのサーバからあるゾーンのサーバと指定されているのにちゃんとサービスしていないホスと指定されているのにちゃんとサービスしていないホストのことトのこと
DMZDMZ のアドレスのアドレス //ドメインドメイン ,CROND,CROND 実行ログ実行ログ ,named,named統計ログ統計ログ /Lame Server/Lame Serverログログ ,WEB(80/tcp), ,WEB(80/tcp), SQLsnake(1433/tcp) SQLsnake(1433/tcp) を除いてダイエットすると少し見を除いてダイエットすると少し見やすくなりますやすくなります
ダイエットの仕方の例:
cat /var/log/messages.{4,3,2,1} /var/log/messages |grep -v famm.ne.jp |grep –v famm.co.jp|grep -v 211.9.36 | grep -v CROND | grep -v 'named.*Cleaned' | grep -v 'named.*USAGE' | grep -v 'named.*STATS' | grep -v 'port 80' | grep -v 'icmplog.*127.0.0.1'
| grep -v 'system-auth.*user' | grep -v 'icmplog' | grep -v 'named.*Lame server' | grep -v "named.*All possible A RR's lame" | grep -v 'tcplog.*port 1433‘ | uniqgrep -v CNAME |grep -v 'www last message repeated' | grep -v localhost.localdomaingrep -v 'master zone' | grep -v 'WARNING SOA' | grep -v 'named.*AXFR' | grep –v 'named.*NOTIFY'
ダイエットの仕方の例:
cat /var/log/messages.{4,3,2,1} /var/log/messages |grep -v famm.ne.jp |grep –v famm.co.jp|grep -v 211.9.36 | grep -v CROND | grep -v 'named.*Cleaned' | grep -v 'named.*USAGE' | grep -v 'named.*STATS' | grep -v 'port 80' | grep -v 'icmplog.*127.0.0.1'
| grep -v 'system-auth.*user' | grep -v 'icmplog' | grep -v 'named.*Lame server' | grep -v "named.*All possible A RR's lame" | grep -v 'tcplog.*port 1433‘ | uniqgrep -v CNAME |grep -v 'www last message repeated' | grep -v localhost.localdomaingrep -v 'master zone' | grep -v 'WARNING SOA' | grep -v 'named.*AXFR' | grep –v 'named.*NOTIFY'
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
153
RASRAS向上作戦向上作戦 checkmachine / checksamba / checkmachine / checksamba / 応用例:応用例: scanmachinescanmachine
自動巡回自動巡回 pingping スクリプトスクリプト croncron で一定時間毎にチェックさせるで一定時間毎にチェックさせる pingping がエラーになるとがエラーになると EmailEmail でお知らせでお知らせ
rotate.shrotate.sh 特定の特定の URLURL ディレクトリを毎日ランダムに名前変更して、新しディレクトリを毎日ランダムに名前変更して、新し
い名前をメールでお知らせい名前をメールでお知らせ rebootmailrebootmail
システムがリブートすると近辺のログを自動送付システムがリブートすると近辺のログを自動送付 カーネルのパニックリブートカーネルのパニックリブート
Kernel panicKernel panic でシステムダウンした場合、一定時間後に自動的にでシステムダウンした場合、一定時間後に自動的に再起動再起動
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
154
checkmachine: checkmachine: 自サイトゾーンの確自サイトゾーンの確認認
#!/bin/sh#!/bin/shALERTMAIL=“[email protected] [email protected] [email protected]"ALERTMAIL=“[email protected] [email protected] [email protected]"COMMANDS="/bin/ping -q -c 3 "COMMANDS="/bin/ping -q -c 3 "BASE="211.9.36."BASE="211.9.36."MAIL="/bin/mail -s"MAIL="/bin/mail -s"#HOSTS="177 178 180 185 187 188 189"#HOSTS="177 178 180 185 187 188 189"HOSTS="177 178 180 185 187 189"HOSTS="177 178 180 185 187 189"for I in $HOSTS ; dofor I in $HOSTS ; do $COMMANDS ${BASE}${I} > /dev/null 2>&1$COMMANDS ${BASE}${I} > /dev/null 2>&1 if [ $? == 1 ] ; thenif [ $? == 1 ] ; then DATE=`/bin/date '+%m/%d %H:%M:%S'`DATE=`/bin/date '+%m/%d %H:%M:%S'` NAME=`/usr/bin/nslookup ${BASE}${I} 2>/dev/null | /bin/grep Name: | /bin/awkNAME=`/usr/bin/nslookup ${BASE}${I} 2>/dev/null | /bin/grep Name: | /bin/awk ' {print $2}'`' {print $2}'` for J in $ALERTMAIL ; dofor J in $ALERTMAIL ; do $MAIL "${DATE} FAMM Server down!" $J <<!EOF$MAIL "${DATE} FAMM Server down!" $J <<!EOF${BASE}${I}(${NAME})${BASE}${I}(${NAME})!EOF!EOF donedone fifidonedone
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
155
応用例:応用例: scanmachine: scanmachine: 自サイトの自サイトの使用中使用中 IPIP アドレスとアドレスと FQDNFQDN の確認の確認
#!/bin/sh#!/bin/shALERTMAIL=""ALERTMAIL=""COMMANDS="/bin/ping -q -c 1 "COMMANDS="/bin/ping -q -c 1 "BASE="211.9.36."BASE="211.9.36."MAIL=""MAIL=""HOSTS="177 178 179 180 181 182 183 184 185 186 187 188 189 190"HOSTS="177 178 179 180 181 182 183 184 185 186 187 188 189 190"#HOSTS="177 178 180 185 187 188 189"#HOSTS="177 178 180 185 187 188 189"#HOSTS="177 178 180 185 187 189"#HOSTS="177 178 180 185 187 189"for I in $HOSTS ; dofor I in $HOSTS ; do NAME=`/usr/bin/nslookup ${BASE}${I} 2>/dev/null | /bin/grep Name: | /bin/awk 'NAME=`/usr/bin/nslookup ${BASE}${I} 2>/dev/null | /bin/grep Name: | /bin/awk ' {print $2}'`{print $2}'` $COMMANDS ${BASE}${I} > /dev/null 2>&1$COMMANDS ${BASE}${I} > /dev/null 2>&1 if [ $? == 1 ] ; thenif [ $? == 1 ] ; then echo "Down ${BASE}${I}(${NAME})"echo "Down ${BASE}${I}(${NAME})" elseelse echo "Up ${BASE}${I}(${NAME})"echo "Up ${BASE}${I}(${NAME})" fifidonedone
実行例 :
# ./scanmachine
Up 211.9.36.177(gw-yokohama-lan01.famm.ne.jp)
Up 211.9.36.178(ns.famm.ne.jp)
Up 211.9.36.179(www1.famm.co.jp)
Up 211.9.36.180(ns1.famm.ne.jp)
Down 211.9.36.184(www5.famm.ne.jp)
Up 211.9.36.187(darwin.samba.gr.jp)
実行例 :
# ./scanmachine
Up 211.9.36.177(gw-yokohama-lan01.famm.ne.jp)
Up 211.9.36.178(ns.famm.ne.jp)
Up 211.9.36.179(www1.famm.co.jp)
Up 211.9.36.180(ns1.famm.ne.jp)
Down 211.9.36.184(www5.famm.ne.jp)
Up 211.9.36.187(darwin.samba.gr.jp)
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
156
checksamba: samba-jpchecksamba: samba-jp サーバの確サーバの確認認
#!/bin/sh#!/bin/shALERTMAIL=“[email protected]"ALERTMAIL=“[email protected]"COMMANDS="ping -q -c 1 -w 5"COMMANDS="ping -q -c 1 -w 5"BASE=".samba.gr.jp"BASE=".samba.gr.jp"#HOSTS="sydney darwin perth adelaide"#HOSTS="sydney darwin perth adelaide"HOSTS="sydney perth adelaide"HOSTS="sydney perth adelaide"for I in $HOSTS ; dofor I in $HOSTS ; do $COMMANDS ${I}${BASE} > /dev/null 2>&1$COMMANDS ${I}${BASE} > /dev/null 2>&1 if [ $? == 1 ] ; thenif [ $? == 1 ] ; then DATE=`date '+%m/%d %H:%M:%S'`DATE=`date '+%m/%d %H:%M:%S'` mail -s "${DATE} Samba Server down!" $ALERTMAIL <<!EOFmail -s "${DATE} Samba Server down!" $ALERTMAIL <<!EOF${I}${BASE}${I}${BASE}!EOF!EOF fifidonedone
Checkmachine と異なり DNS が死んでいてもエラーになる
Checkmachine と異なり DNS が死んでいてもエラーになる
こんなメールが携帯に・・・
件名: 07/25 08:39:03 Samba Server down!
Date: Thu, 25 Jul 2002 08:39:03 +0900
From: root <[email protected]>
darwin.samba.gr.jp
こんなメールが携帯に・・・
件名: 07/25 08:39:03 Samba Server down!
Date: Thu, 25 Jul 2002 08:39:03 +0900
From: root <[email protected]>
darwin.samba.gr.jp
知り合いのサイト同士で相互にチェックしてあげたりなどの応用もいいと思います
知り合いのサイト同士で相互にチェックしてあげたりなどの応用もいいと思います
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
157
rotate.sh: rotate.sh: 認証は面倒だけどセキュ認証は面倒だけどセキュアにしたい・・・というわがままアにしたい・・・というわがままを実現を実現
#!/bin/sh#!/bin/[email protected][email protected][email protected][email protected][email protected][email protected]
ACCESS_HOME=/home/seminar/public_htmlACCESS_HOME=/home/seminar/public_htmlSUBJECT=`date +%m/%d``echo “SUBJECT=`date +%m/%d``echo “ のの URL” | nkf -j`URL” | nkf -j`OLDFILE=`echo $ACCESS_HOME/*`OLDFILE=`echo $ACCESS_HOME/*`NEWFILE=`/bin/mktemp -u $ACCESS_HOME/XXXXXX`NEWFILE=`/bin/mktemp -u $ACCESS_HOME/XXXXXX`FILENAME=`/bin/basename $NEWFILE`FILENAME=`/bin/basename $NEWFILE`/bin/mv -f $OLDFILE $NEWFILE/bin/mv -f $OLDFILE $NEWFILE(cat | /usr/sbin/sendmail -t) <<!EOF(cat | /usr/sbin/sendmail -t) <<!EOFX-Mailer: Access CGI v1.0 copyright 2000, by FAMM Corp.X-Mailer: Access CGI v1.0 copyright 2000, by FAMM Corp.To: $SEND_USERTo: $SEND_USERFrom: $FROM_USERFrom: $FROM_USERErrors-To: $ADMIN_USERErrors-To: $ADMIN_USERSubject: $SUBJECTSubject: $SUBJECTSender: $FROM_USERSender: $FROM_USERMime-Version: 1.0Mime-Version: 1.0Content-Transfer-Encoding: 7bitContent-Transfer-Encoding: 7bitContent-Type: text/plain; charset=ISO-2022-JPContent-Type: text/plain; charset=ISO-2022-JP
$SUBJECT$SUBJECThttp://www.famm.co.jp/~akusesu/$FILENAME/park.htmlhttp://www.famm.co.jp/~akusesu/$FILENAME/park.html!EOF!EOF
毎日、不明なURL毎日、不明なURL
新しいURLは毎日メールで届く・・・新しいURLは毎日メールで届く・・・
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
158
rebootmail: rebootrebootmail: reboot 時に関連ログ摘時に関連ログ摘出出
#!/bin/sh#!/bin/sh(/bin/echo "-- kernel boot log --" ; \(/bin/echo "-- kernel boot log --" ; \ /bin/dmesg ; \/bin/dmesg ; \ /bin/echo "-- last 200 line syslog --" ; \/bin/echo "-- last 200 line syslog --" ; \ /usr/bin/tail –200 /var/log/messages) \/usr/bin/tail –200 /var/log/messages) \ | /bin/mail -s "`hostname` rebooted" [email protected]| /bin/mail -s "`hostname` rebooted" [email protected]
Crontab に以下を設定しておく:
@reboot /root/bin/rebootmail
Crontab に以下を設定しておく:
@reboot /root/bin/rebootmail
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
159
カーネルのパニックリブート機能カーネルのパニックリブート機能 AccessabilityAccessability は上がるがは上がるが ReliabilityReliability は下がりますは下がります カーネルが対応するフラグ付きでコンパイルさカーネルが対応するフラグ付きでコンパイルさ
れていなければなりませんれていなければなりません 最近のカーネルではほとんどそのまま使えるはずです最近のカーネルではほとんどそのまま使えるはずです
/etc/rc.d/rc.local /etc/rc.d/rc.local に以下の記述を追加するだけに以下の記述を追加するだけ
if [ -w /proc/sys/kernel/panic ]; thenif [ -w /proc/sys/kernel/panic ]; then
echo 5 > /proc/sys/kernel/panicecho 5 > /proc/sys/kernel/panic
fifi
Kernel panic したら5秒後に再起動
Kernel panic したら5秒後に再起動
Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.
160
おわりおわり