セキュアなサーバを構築しよう(centos 5.xまで対応)

160
Copyrig ht 2004 ,2007 © Kensu 1 文文文文文 文文文文文 文文文文文文文文文文 文文文文文文文文文文 文文文文文文文文文文 UNIX 文文文文文文文文文文 UNIX ~Secure Server ~Secure Server Day~ Day~ Microsoft MVP – Windows Microsoft MVP – Windows Security Security NPO NPO 文文文文文文文文文文文文文文文文 文文文文文文文文文文文文文文文文 文文文文文文文文文文文 NTT 文文文文文文文文文文文 NTT 文文 文文 文文 文文

Upload: kensuke-nezu

Post on 13-Aug-2015

180 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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データ先端技術株式会社根津 研介根津 研介

Page 2: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

2

本資料の取扱について本資料の取扱について 本資料は、文部科学省科学技術振興調整費 中央大学研究開発機構

「情報セキュリ ティ・情報保証 人材育成拠点」人材養成計画に基づき、中央大学 研究開発機構  「情報セキュリティ教育システムの開発」ユニットが実施する「 Unix セキュリティ実践講座」の教材として使用するために提供するものです。

本資料を上記「本資料を上記「 UnixUnix セキュリティ実践講座」の使用目的以外に利用セキュリティ実践講座」の使用目的以外に利用(転載、転用、商業活動への使用など)することを禁止します。ただ(転載、転用、商業活動への使用など)することを禁止します。ただし、例外として、学校内、サークル内、企業内などでサーバ導入の際し、例外として、学校内、サークル内、企業内などでサーバ導入の際の参考資料として内部的に複写したり、活用することは許可します。の参考資料として内部的に複写したり、活用することは許可します。この場合でも、教育そのものを事業目的とする場合は例外条件としてこの場合でも、教育そのものを事業目的とする場合は例外条件として認められないので注意してください。認められないので注意してください。

本資料の扱いに関して不明点等ある場合には、 中央大学 研究開発本資料の扱いに関して不明点等ある場合には、 中央大学 研究開発機構 「情報セキュリティ教育システムの開発」ユニットまでお問い機構 「情報セキュリティ教育システムの開発」ユニットまでお問い合わせください。合わせください。

Page 3: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

3

セキュリティ概論セキュリティ概論

Page 4: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

4

セキュリティの必要性セキュリティの必要性 インターネットの長所インターネットの長所

世界中から自由にアクセスできる世界中から自由にアクセスできる 世界中に自由に公開できる世界中に自由に公開できる 手軽な値段で誰でも利用できる手軽な値段で誰でも利用できる

インターネットの短所インターネットの短所 法的な保護が及びにくい法的な保護が及びにくい  ~自分の身は自分で守るという姿勢が必要~  ~自分の身は自分で守るという姿勢が必要~ 全体を制御する「しくみ」とか「規制」がない全体を制御する「しくみ」とか「規制」がない 他者への犯罪の幇助をしてしまうことも!他者への犯罪の幇助をしてしまうことも!SPAM メールの送信元になっ

たり、攻撃元を詐称するための踏み台にされたり・・・

SPAM メールの送信元になったり、攻撃元を詐称するための踏み台にされたり・・・

Page 5: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

5

セキュリティ=国家の安全保障にもセキュリティ=国家の安全保障にも気を配らなければなりません気を配らなければなりません

Page 6: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ) ) 刑事でなければなりません。民事の損害賠償などは、ま刑事でなければなりません。民事の損害賠償などは、ま

ず、成り立ちません。(損害額の算定が微少なため)ず、成り立ちません。(損害額の算定が微少なため) 国際私法国際私法 (( ベルヌ条約、サイバー犯罪防止条約等)と各ベルヌ条約、サイバー犯罪防止条約等)と各

国に於ける法整備、法解釈の違いも問題になります国に於ける法整備、法解釈の違いも問題になります

Page 7: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

7

TPOTPO に合わせたセキュリティに合わせたセキュリティコンビニのセキュリティ

1. 店舗スペースは「公開」で不特定多数のアクセスを許す

2. 店舗内トイレは「店員に一声かけて」利用する

3. レジ裏の事務所は非公開

4. 事務所にはビデオ録画システムを設置し,防犯の目的や犯罪発生時の保全措置に利用

公開サーバの最低限のセキュリティ1. 公開する範囲を正しく判断し正しく

公開する

2. 公開する範囲を「正しい相手」に公開する

3. 公開すべきでない(するつもりがない)部分を公開しない / させない

4. 必要な部分では「監視するしくみ」を作りこむ

セキュリティ構築の5セキュリティ構築の5 W1HW1H ををはっきりさせよう!はっきりさせよう!

Page 8: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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% までなら技術さえあれば自分で構築可能までなら技術さえあれば自分で構築可能→ → それ以上なら、単独で運用できる範囲を超えてしまいますそれ以上なら、単独で運用できる範囲を超えてしまいます

Page 9: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

9

セキュアサーバ構築のコストセキュアサーバ構築のコスト (2)(2)

サーバーの価値を計算するサーバーの価値を計算する 不正利用者の立場からみたサーバーの不正利用者の立場からみたサーバーの価値価値 システムに含まれるデータの価値システムに含まれるデータの価値

機密情報があるか?など      機密情報があるか?など           → 転売の価値や改竄、脅     → 転売の価値や改竄、脅迫等迫等

踏み台にするサーバーとしての価踏み台にするサーバーとしての価値値

上位プロバイダとの回線速度など上位プロバイダとの回線速度など その他の価値その他の価値

怨恨、意趣晴らし、愉快犯など怨恨、意趣晴らし、愉快犯など

機密情報機密情報 なしなし顧客のデータ顧客のデータ なしなし

回線速度回線速度 <1Mbit<1Mbit 程度?程度?

怨恨関係怨恨関係 ???(???( 多分なし多分なし ))

総合総合 1515 点程度?点程度?

計算例

これらを総合的に判断して、必要となるセキュリティレベルを考える

Page 10: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

10

020

40

60

80

100

構築 セ キ ュリティ対策 日常監視

金銭的費用工数緊急性

サーバのライフサイクルと「コサーバのライフサイクルと「コスト」スト」

構築のコスト(金銭的コスト)だけに注意が向いて、運用のコストが考えられていないことが多い

構築のコスト(金銭的コスト)だけに注意が向いて、運用のコストが考えられていないことが多い

運用に必要な「目に見えないコスト」の方が実はトータルすると重要!

運用に必要な「目に見えないコスト」の方が実はトータルすると重要!

緊急性の高い作業は、夜中や休日に集中

緊急性の高い作業は、夜中や休日に集中

いかにいかに管理の手間管理の手間を下げるかがカギ!を下げるかがカギ!

Page 11: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

11

サーバー=サービスを提供するシステムサーバー=サービスを提供するシステムサービスの品質をはかる基準サービスの品質をはかる基準

RAS(RAS( 大型コンピュータ大型コンピュータ //エンタープライズサーバの世界の用語エンタープライズサーバの世界の用語 )) ReliabilityReliability :信頼性 - 「いつでも安定したサービス」:信頼性 - 「いつでも安定したサービス」 AvailabilityAvailability :可用性 - 「24時間、:可用性 - 「24時間、 365365 日稼働」日稼働」 ServiceService ability ability :保守性 -「誰でもどこでも簡単に」:保守性 -「誰でもどこでも簡単に」

MTBFMTBF とと MTTRMTTR MTBF:できるだけサービスを落とさないMTBF:できるだけサービスを落とさない MTTRMTTR :サービスが落ちたらすばやく回復する:サービスが落ちたらすばやく回復する

Page 12: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

12

サーバー=サービスを提供するシステムサーバー=サービスを提供するシステムの品質をはかる基準セキュリティの品質をはかる基準セキュリティ

国際規格国際規格 ISO/IEC17799ISO/IEC17799 による定義(による定義( CIA)CIA) を購入前のマヨを購入前のマヨネーズで例えると・・・ネーズで例えると・・・

Confidenciality Confidenciality :機密性 -チューブに穴は空いていませんか?:機密性 -チューブに穴は空いていませんか? Integrity Integrity :完全性 -口のシールが貼り直されていませんか?:完全性 -口のシールが貼り直されていませんか? AvailabilityAvailability :可用性 -売り切れていませんか?:可用性 -売り切れていませんか?

Page 13: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

13

サーバという「サービスの品質」サーバという「サービスの品質」サーバが目標とする品質とセキュリティサーバが目標とする品質とセキュリティ

品質の目標品質の目標1. いつでも安定していて、2. いつでも利用することができて、3. 「正しい中身」が「正しい人」に伝わり、

4. 保守作業が簡単なシステム。セキュリティはこの目標を達成し、セキュリティはこの目標を達成し、

維持し続けるための手段の1つにすぎない維持し続けるための手段の1つにすぎない

Page 14: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

14

サーバという「サービスの品質」サーバという「サービスの品質」サービスの維持管理とセキュリティサービスの維持管理とセキュリティ

「セキュリティ」の意味「セキュリティ」の意味1. 安全、安全保障、安全確保、保障。2. 戸締まり、防衛手段、警備、防護、

保全、保安。3. 無事、治安、安心。

日常の保守作業はすべて「セキュリティ」日常の保守作業はすべて「セキュリティ」という大きなフレームワークの一部!という大きなフレームワークの一部!

保障:生命、財産、権利などを保護して守ること

保障:生命、財産、権利などを保護して守ること

Page 15: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

15

サーバという「サービスの品質」サーバという「サービスの品質」メインテナンスも立派なセキュリティメインテナンスも立派なセキュリティ

•システムの定期的なバックアップ•システムログのチェック•不正利用、サービス不能、サービス停止の防止•システム侵入の防止、検出•セキュリティインベントリ(ソフトウェアのセキュリティホール発覚など)の監視•速やかなサービス不能状態の検出、回復•自動監視、自動警報発報、自動アップデート

RAS の向上 MTBF をより長く

MTTR を最小に

Page 16: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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型 ) 利用ディストリビューションのユーザメーリングリストの利用

自動化に向いている自動化に向いている 自動化に向いていない自動化に向いていない

Page 17: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

17

予防保守と緊急対応予防保守と緊急対応緊急対応

1. 緊急事態の発生時の対応体制、対応マニュアル/メモの作成と実行

2. 異常状態検出時の対応体制、対応マニュアル/メモの作成と実行

3. 問いあわせ発生時( Web サイト脆弱性、 SPAMメール送信、踏み台による第三者への攻撃元などの通告)の対応体制、対応マニュアル/メモの作成と実行(捜査機関などの協力要請への対応も別途、要検討)

4. 記録保全体制、手順書の作成

5. サービス/システム一時停止の判断基準の作成

インシデントレスポインシデントレスポンスンス

予防保守1. ハードウェアの二重化 (RAID 、フェ

イルオーバー、スタンバイシステムなど )

2. データの多重化(バックアップも含む)

3. システムログの監視(通常状態の把握と異常状態の検知)

4. パフォーマンス統計の監視(通常状態の把握と異常状態の検知)

5. ソフトウェアのバージョンアップ

6. 異常状態の自動検出システムの作りこみ(システム停止、サービス停止を含む)

自動化に向いている自動化に向いている

Page 18: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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をターゲットにしたものも・・・

Page 19: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 の安定動作の確認

メーリングリストの主旨は、あくまでも「情報交換」。

「収集」のみではなく、「提供」できるようにする努力も工数のうちです。

メーリングリストの主旨は、あくまでも「情報交換」。

「収集」のみではなく、「提供」できるようにする努力も工数のうちです。

Page 20: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

20

情報収集のコツ情報収集のコツ (3)(3)

ホームページの活用ホームページの活用

前2ページで紹介したところにはそれぞれに大抵前2ページで紹介したところにはそれぞれに大抵ホームページがありますホームページがあります WWWCWWWC 等のホームページ更新チェッカで自動化等のホームページ更新チェッカで自動化

記事のリンク先のホームページ情報も確認しまし記事のリンク先のホームページ情報も確認しましょうょう

  プル型コンテンツなのでプッシュ型と比較するとプル型コンテンツなのでプッシュ型と比較すると

ひと手間多くかかりますひと手間多くかかります注意!

Page 21: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

21

セキュリティポリシーの必要性セキュリティポリシーの必要性(1)(1)

個人サーバ運用の立場からみて・・・個人サーバ運用の立場からみて・・・

作業手順、作業量の明確化作業手順、作業量の明確化 やるべきこととやった方がいいこと、やっちゃいけなやるべきこととやった方がいいこと、やっちゃいけな

いことが明確になる→ちゃんとメモを取ろう!いことが明確になる→ちゃんとメモを取ろう! 作業全体の見通しがよくなる作業全体の見通しがよくなる 忘れた頃にやってくるバージョンアップ忘れた頃にやってくるバージョンアップ //再構築再構築 裁判裁判 //訴訟、刑事事件などの際の証拠保全訴訟、刑事事件などの際の証拠保全

Page 22: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

22

セキュリティポリシーの必要性セキュリティポリシーの必要性(2)(2)

企業サーバ運用の立場からみて…企業サーバ運用の立場からみて…

作業手順、作業量の明確化作業手順、作業量の明確化 複数人で均質の作業複数人で均質の作業 全社的なセキュリティ意識の統一全社的なセキュリティ意識の統一 対外的なポリシー運用の提示対外的なポリシー運用の提示 担当者が変わった頃にくるバージョンアップ担当者が変わった頃にくるバージョンアップ //再構再構

築築 裁判 /訴訟、刑事事件などの際の証拠保全

これは、企業だけでなく、ゼミのサーバや部のサーバ、学校のイントラサーバでもおなじ。

これは、企業だけでなく、ゼミのサーバや部のサーバ、学校のイントラサーバでもおなじ。

訴訟のリスクはより大きい!訴訟のリスクはより大きい!

Page 23: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

23

セキュリティポリシーの必要性セキュリティポリシーの必要性(3)(3)

素早いレスポンスを心がけよう!素早いレスポンスを心がけよう!

サーバサーバ // サービス停止の判断を独力でできない場合は、「緊サービス停止の判断を独力でできない場合は、「緊急連絡網」を作って指示を仰ごう。急連絡網」を作って指示を仰ごう。

脆弱性指摘などがあった場合には、調査期間と回答期限をつ脆弱性指摘などがあった場合には、調査期間と回答期限をつけてまずは返信しておこう。けてまずは返信しておこう。

指摘自体が「愉快犯」の可能性もゼロではありません。まず指摘自体が「愉快犯」の可能性もゼロではありません。まずは、指摘事項の確認・再現を怠ってはなりません。は、指摘事項の確認・再現を怠ってはなりません。

システムが侵入されていると、オペレータ作業でシステムが侵入されていると、オペレータ作業で rootroot権限権限が乗っ取られる場合もあるので注意!が乗っ取られる場合もあるので注意!

やりとりや作業は、きちんと記録を付けましょう。やりとりや作業は、きちんと記録を付けましょう。

Page 24: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 25: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

25

サーバー運用の注意点サーバー運用の注意点 (1)(1)

「やられたら再インストールすればいい」「やられたら再インストールすればいい」は間違は間違い!い!

本当にやられちゃったら気付きません。 ← 本当にやられちゃったら気付きません。 ← rootkitrootkit の存在の存在 簡単な自動ツールくらいしか目で見てわからないです簡単な自動ツールくらいしか目で見てわからないです いつかは面倒になって目でも見なくなりますいつかは面倒になって目でも見なくなります

「天災は忘れた頃にやってくる」「天災は忘れた頃にやってくる」 ペーターとおおかみペーターとおおかみ

気付いたときには手遅れです気付いたときには手遅れです教訓:侵入を事前予報できるシステムが必要教訓:侵入を事前予報できるシステムが必要

脆弱なフリーのサーバ事件

Page 26: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

26

サーバー運用の注意点サーバー運用の注意点 (2)(2)

サーバー1台ですべてやろう・・・は間違い!サーバー1台ですべてやろう・・・は間違い!

NATNAT ルータ機能、フィルタリング機能、サーバ機能・・・全ルータ機能、フィルタリング機能、サーバ機能・・・全部をごちゃごちゃに1台で運用するのはスゴく難しい部をごちゃごちゃに1台で運用するのはスゴく難しい 技術的チャレンジ・・・、でも一歩間違えるとネット全体に迷惑技術的チャレンジ・・・、でも一歩間違えるとネット全体に迷惑

が・・・が・・・ 趣味のサーバーも「グローバル趣味のサーバーも「グローバル IPIP アドレス」を持っている立場としてアドレス」を持っている立場として

は、は、 NASANASA    /FBI/FBI    /NSA/NSA や、や、 YahooYahoo 、楽天、ホワイトハウスサーバ、楽天、ホワイトハウスサーバと同等の責任がありますと同等の責任があります

多重防御多重防御 // 多層防御が防御の基本多層防御が防御の基本 なぜ、大阪城には外堀と内堀があったの?なぜ、大阪城には外堀と内堀があったの? なぜ、大阪夏の陣では簡単に陥落しちゃったの?なぜ、大阪夏の陣では簡単に陥落しちゃったの?

教訓:幾重にも防護壁を作っておきましょう教訓:幾重にも防護壁を作っておきましょう

ブロードバンドルータの併

Page 27: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

27

サーバー運用の注意点サーバー運用の注意点 (3)(3)

固定固定 IPIP アドレスを取得するアドレスを取得する

IPIP アドレスはサーバーの「住所」ですアドレスはサーバーの「住所」です いつ転居するか分からない「住所」では困ることがありますいつ転居するか分からない「住所」では困ることがあります ドメインは「友達の鈴木君ち」みたいなもので固定であることドメインは「友達の鈴木君ち」みたいなもので固定であること

が信頼性につながりませんが信頼性につながりません 可変アドレス、ダイナミック可変アドレス、ダイナミック DNSDNS では利用できないもでは利用できないも

のも・・・のも・・・ おうちメールサーバーは運用できませんおうちメールサーバーは運用できません アクセスが多くなると他の人への攻撃になることも・・・アクセスが多くなると他の人への攻撃になることも・・・教訓:やっぱり安心の固定教訓:やっぱり安心の固定 IPIPアドレス!アドレス!

Page 28: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

28

サーバー運用の注意点サーバー運用の注意点 (4)(4)

複数の固定複数の固定 IPIPアドレスを取得しよう!アドレスを取得しよう!

インターネットのインシデントは、主に「自分のサーバだけインターネットのインシデントは、主に「自分のサーバだけをねらい打ちにしたもの」と、「機械的に総ナメにしていくをねらい打ちにしたもの」と、「機械的に総ナメにしていくもの」に分けられますもの」に分けられます 「機械的」なものにはツールやウィルスなどがありますが、これらは「機械的」なものにはツールやウィルスなどがありますが、これらは

それほどそれほど「危険性は高くありません」「危険性は高くありません」 これを判断するためには、2つ以上の連続した(もしくは近これを判断するためには、2つ以上の連続した(もしくは近

い)アドレスで監視をする必要がありますい)アドレスで監視をする必要があります これは、複数サーバでなくともこれは、複数サーバでなくとも IPIP アドレスのエイリアス機能でもアドレスのエイリアス機能でも OKOK

   教訓:比較/対照は分析の基礎です教訓:比較/対照は分析の基礎です

Page 29: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

29

サーバ管理者に求められる資質サーバ管理者に求められる資質 (1)(1)

サーバ上の情報に個人的興味サーバ上の情報に個人的興味を持ってはいけないを持ってはいけない

ユーザのパスワードは「すユーザのパスワードは「すぐに忘れる」ぐに忘れる」

管理の都合上「知ってしまっ管理の都合上「知ってしまった」事も知らぬ存ぜぬを貫くた」事も知らぬ存ぜぬを貫く

サーバ上の不法行為の証拠にサーバ上の不法行為の証拠には常に目を光らせるは常に目を光らせる

管理者権限、管理者アカウン管理者権限、管理者アカウント情報は、管理者をやめたらト情報は、管理者をやめたら「忘れなければならない」「忘れなければならない」

From hira@<平山>

To naka@<なかむらくん>

Subject きのうのデート

なかむらくん、昨日は楽しいデートをどうもありがとう・・・。

遊園地とってもたのしかったです。また誘ってください。

ふむふむ・・・

Page 30: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

30

サーバ管理者に求められる資質サーバ管理者に求められる資質 (2)(2)

サーバ管理者は実用的な法サーバ管理者は実用的な法律家である必要があります。律家である必要があります。 著作権法著作権法 不正アクセス禁止法不正アクセス禁止法 個人情報保護法個人情報保護法 プロバイダ法プロバイダ法 表現の自由と名誉毀損表現の自由と名誉毀損 脅迫等の刑法脅迫等の刑法 etc…etc…

世の状況(裁判の判決な世の状況(裁判の判決など)にも敏感でなければなど)にも敏感でなければなりません。りません。

・映画のコピー

・不許可のアイドル写真

・ TV のキャプチャ画像

・不法なソフトウェアコピー

・ホームページのコピペふむふむ・・・

Page 31: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

31

サーバ管理者に求められる資質サーバ管理者に求められる資質 (3)(3)~優良推薦参考図書~~優良推薦参考図書~

「ハイテク犯罪捜査入門~捜査実務編」「ハイテク犯罪捜査入門~捜査実務編」 警察、検察側の現在の常識と今後数年間の動警察、検察側の現在の常識と今後数年間の動向を占うことができる書籍向を占うことができる書籍

著者は、現役の札幌高等検事局検事さん著者は、現役の札幌高等検事局検事さん 技術書ではないが、「捜査」の現場で、実際技術書ではないが、「捜査」の現場で、実際

に何がどのような判断で行われているかを知に何がどのような判断で行われているかを知っておくことは必ず役立ちます。特に、初動っておくことは必ず役立ちます。特に、初動捜査における「証拠」として何を用意してお捜査における「証拠」として何を用意しておけばよいかなどの判断にも使えます。けばよいかなどの判断にも使えます。

※※技術的には、現場の警察官を対象としている技術的には、現場の警察官を対象としているため、初心者向けの若干のウソも見られます。ため、初心者向けの若干のウソも見られます。

※※ギャグも満載です☆ギャグも満載です☆

Page 32: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

32

サーバー構築方法サーバー構築方法

Page 33: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

33

セキュアサーバー構築方法論セキュアサーバー構築方法論

10:9010:90 の法則を適用すると・・・の法則を適用すると・・・ パケットフィルタリングによるセキュリティの確保パケットフィルタリングによるセキュリティの確保

サーバー、ルーターそれぞれで設定が必要サーバー、ルーターそれぞれで設定が必要 守れるもの、守れないものを意識することが必要守れるもの、守れないものを意識することが必要 サービスの限定など、他の機能との組み合わせが必要サービスの限定など、他の機能との組み合わせが必要

サービスの限定、公開範囲の限定サービスの限定、公開範囲の限定 各サービス、ソフトウェア毎の設定が必要  各サービス、ソフトウェア毎の設定が必要  

自動監視ツールなどによる監視コストの低減自動監視ツールなどによる監視コストの低減 ツールとして自作しなければいけない場合もあるツールとして自作しなければいけない場合もある プロバイダのサービスや商用ソフトウェア利用が推奨される場合もプロバイダのサービスや商用ソフトウェア利用が推奨される場合も

・・・  ・・・              

商用ファイヤーウォール商用ファイヤーウォール

Snort などの侵入検知ツール

Snort などの侵入検知ツール

本格的なスキルや監視コストが必要

Page 34: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

34

パケットフィルタリングについパケットフィルタリングについてて (1)(1)

パケットフィルタリングが有効な場面パケットフィルタリングが有効な場面

公開する内容、条件、相手などがルールとして固定的に決定できる場合公開する内容、条件、相手などがルールとして固定的に決定できる場合 時間帯限定公開や、同時接続数上限などの設定は基本的にできない時間帯限定公開や、同時接続数上限などの設定は基本的にできない FTPFTP でのファイル転送などサービスポートが動的なものには向かないでのファイル転送などサービスポートが動的なものには向かない

サービスの単位で、または公開先として固定的な場所からのアクセスがサービスの単位で、または公開先として固定的な場所からのアクセスが特定できる場合特定できる場合 今日は今日は NIFTYNIFTY から、明日はから、明日は so-netso-net から・・・という動的な条件には向から・・・という動的な条件には向

かないかない HTTPHTTP でで javascriptjavascript の実行権限などサービス内での制限はできないの実行権限などサービス内での制限はできない

時間帯限定はブロードバンドルータによっては可能なものもあります

時間帯限定はブロードバンドルータによっては可能なものもあります

Page 35: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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の ベース管理ツール用*

Page 36: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

インターネットに公開すべきでないポートがほとんどインターネットに公開すべきでないポートがほとんど

Page 37: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

絶対にインターネットに公開すべきでないポート絶対にインターネットに公開すべきでないポート

Page 38: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

38

パケットフィルタリングについパケットフィルタリングについてて (5)(5)

危険なソースルーティング危険なソースルーティング

コンピュータ C攻撃者 B

コンピュータ A送信元:送信元: AA 宛先:宛先: CC 経由:経由:

送信元:送信元: CC 宛先:宛先: AA 経由:経由: BB

送信元:送信元: CC 宛先:宛先: AA 経由:経由:

送信元:送信元: AA 宛先:宛先: CC 経由:経由: BB

通常のパケットソースルーティングされると・・・

Page 39: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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を一切サービスしてないなら防御可能

Page 40: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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> に反応する

Page 41: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 も利用している

Page 42: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 の防止

Page 43: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 を使用

Page 44: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

44

パケットフィルタリングについパケットフィルタリングについてて (11)(11)

ICMP ICMP Smurf攻撃のしくみSmurf攻撃のしくみ (1)(1)

1.1. 攻撃者は攻撃者は IPIP アドレスをなアドレスをなりすまして各サイトのブローりすまして各サイトのブロードキャストアドレスにドキャストアドレスに ICMPICMP エコエコーを送信ーを送信

ターゲット

攻撃者

Page 45: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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. ネットワークがパンクネットワークがパンクターゲット

攻撃者

Page 46: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 が適切に設定されていれば防げるものですが適切に設定されていれば防げるものです

Page 47: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

47

パケットフィルタリングについパケットフィルタリングについてて (14)(14)

短命なポート(エフェメラル・ポート)短命なポート(エフェメラル・ポート)

Web サーバPC ポート番号:1234 ポート番号:8

0ポート番号:1234 ポート番号:8

0•接続を依頼する側が一時的に使用するポート•1024番以降の適当なポートを使用

Page 48: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

48

パケットフィルタリングについパケットフィルタリングについてて (15)(15) ~パケットフィルタリン~パケットフィルタリングの要点~グの要点~

パケットフィルタリングで利用できるパラメータパケットフィルタリングで利用できるパラメータ

送信元送信元 IPIP アドレスアドレス あて先あて先 IPIP アドレスアドレス 送信元ポート番号送信元ポート番号 あて先ポート番号あて先ポート番号 プロトコル種別プロトコル種別 TCPTCP のフラグ(のフラグ( SYN,FIN,ACKSYN,FIN,ACK など)など) ICMPICMP のタイプのタイプ

これらの情報を必要に応じて組み合わせて設定するこれらの情報を必要に応じて組み合わせて設定する

範囲指定が可能

機器によっては未対応機器によっては未対応

Page 49: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

49

パケットフィルタリングについてパケットフィルタリングについて(16)(16)

ブロードバンドルーターの設定の要点ブロードバンドルーターの設定の要点

NAT+IPNAT+IP マスカレードでは外部からの攻撃はまず不可能マスカレードでは外部からの攻撃はまず不可能 外部からの攻撃を防止する目的のパケットフィルタリング不要外部からの攻撃を防止する目的のパケットフィルタリング不要 → → SYNFloodSYNFlood 攻撃防止機能を持つものもある攻撃防止機能を持つものもある

LANLAN からの外向きのパケットフィルタリングが必要からの外向きのパケットフィルタリングが必要 ウィルス感染ウィルス感染 PCPC からのパケット発信(からのパケット発信( SMTPSMTP 大量送信など)防止大量送信など)防止 Microsoft NetworkMicrosoft Network (ネットワークフォルダ(ネットワークフォルダ )) 等のパケットの漏洩を防等のパケットの漏洩を防

止止 公開サーバは簡易公開サーバは簡易 DMZDMZ もしくはポート単位で公開するもしくはポート単位で公開する ルータルータ 22 台用いて、本格的な台用いて、本格的な DMZDMZ を組むことを強く推奨しを組むことを強く推奨し

ますます

Page 50: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 への接続を許可し受信済メールを転送可能にへの接続を許可し受信済メールを転送可能に

Page 51: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 を止めないといけない

Page 52: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ですです

Page 53: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 54: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 55: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 でです。す。

Page 56: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

56

サーバー構築手順~インストールサーバー構築手順~インストール編~編~

インストール時にはブロードバンドルータ内で作業せよ!インストール時にはブロードバンドルータ内で作業せよ!

TCP/IPTCP/IP の制限でファイヤーウォール機能の制限でファイヤーウォール機能 (( パケットフィルタパケットフィルタ )) だだけでは防止できないものもあるけでは防止できないものもある

ディストリビューションディストリビューション CDCD だけではなく最初にだけではなく最初にアップデートするのにインターネット接続が必要アップデートするのにインターネット接続が必要

ディストビューションディストビューション CDCD はセキュリティ的に問はセキュリティ的に問題のある「古い状態」であることが多い題のある「古い状態」であることが多い

Page 57: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

57

CentOSCentOS は、インターネットに接続した上でオンは、インターネットに接続した上でオンラインで追加インストールをしたり、ソフトラインで追加インストールをしたり、ソフトウェアの更新版をインストールしたりできます。ウェアの更新版をインストールしたりできます。

本講座で使用する追加のソフトウェアの大半を本講座で使用する追加のソフトウェアの大半を CCent OSent OS のアップデータ(のアップデータ( yum)yum) でインストールででインストールできるようにするソフトウェア書庫(リポリトきるようにするソフトウェア書庫(リポリトジ)もいくつか公開されています。ジ)もいくつか公開されています。

時間がないので実習は行いませんが、内容は実時間がないので実習は行いませんが、内容は実習補助資料にあるので、後で自分で環境構築して習補助資料にあるので、後で自分で環境構築してみてください。みてください。

CenCen tt OSOS を使った追加ソフトを使った追加ソフトウェアウェアインストールについてインストールについて

Page 58: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

58

サーバー構築手順~最初の1手サーバー構築手順~最初の1手 (1)(1)~~

sshssh サーバー以外をまずは非公開にサーバー以外をまずは非公開に

ssh環境を最初に構築しよう 端末側( Windows) は PuTTY や TeraTERM pr

o + TTSSH 、 Poderosa で環境を構築しよう セキュリティ的な検討、日本語化度を考慮

するとPoderosaがオススメ。ただし、 ssh2 の鍵の互換性に若干の問題がある。

Page 59: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 も対も対

応 応

Page 60: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 61: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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対応など多くのサポート機能、ツールがある 対応など多くのサポート機能、ツールがある

Page 62: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ほとんどのイリーガルアクセスを防止可

Page 63: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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…

Page 64: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 でのでのリモートログインもチャレンジしてみてください。リモートログインもチャレンジしてみてください。

Page 65: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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権限奪取の防止権限奪取の防止

コマンド毎やユーザをグループ毎にして、細かく制御も可能

コマンド毎やユーザをグループ毎にして、細かく制御も可能

Page 66: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 コマンドを使うとこういった文法エラーをチェックしてくれます

Page 67: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 だけでは、ちょっといまひとつ・・・。

Page 68: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

68

実習3:sudoを体感する(1実習3:sudoを体感する(10分)0分)

前ページの設定を行い、実行例がきちんとできる前ページの設定を行い、実行例がきちんとできることを確認してください。ことを確認してください。 このとき、このとき、 syslogsyslog に出て来るメッセージも確認します。に出て来るメッセージも確認します。

実行権限のないユーザが実行しようとして跳ねら実行権限のないユーザが実行しようとして跳ねられることを確認してください。れることを確認してください。 このとき、このとき、 syslogsyslog に出て来るメッセージも確認します。に出て来るメッセージも確認します。

次に、特定のユーザだけシステムのリブートを可次に、特定のユーザだけシステムのリブートを可能にする設定を考えてみてください。能にする設定を考えてみてください。

必要なユーザは適宜追加してください。必要なユーザは適宜追加してください。

Page 69: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 70: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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度アクセスしてもらいエラーログから判断する

先方のログインユーザを調べてメール

先方のログインユーザを調べてメール

Page 71: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 で必要なサービスのみ上っていることを確認

Page 72: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

}

Page 73: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

73

サーバー構築手順~起動サービスの設定サーバー構築手順~起動サービスの設定 (1)(1) ~~

ntsysv/turboservicentsysv/turboservice による設定による設定

redhat-config-services/system-config-services は RedHat 系、 turboservice は TurboLinux

Page 74: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 を使うなら )

Page 75: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 では不必要!

Page 76: セキュアなサーバを構築しよう(CentOS 5.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”

Page 77: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

77

実習4:実習4: CentOSCentOS でのでの version.bindversion.bind のの有効性を調べてください有効性を調べてください (( 5分5分 ))

前ページのような前ページのような chaoschaos クラスを利用したクラスを利用した脆弱性の発見方法がCentOSで有効か脆弱性の発見方法がCentOSで有効かどうかを調べてください。どうかを調べてください。

Page 78: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 79: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 のモジュールのモジュール

Page 80: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

接続の向きとポート番号が問題

Page 81: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

接続の向きとポート番号が問題

Page 82: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 など・・・

Page 83: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

83

実習5:実習5: WebDAVWebDAV 環境を構築する(環境を構築する( 2200 分)分)

DAVDAVの設定を行ってください。ユーザ認証の設定を行ってください。ユーザ認証はは BASICBASIC 認証で設定してください。認証で設定してください。

WindowsWindows のウェブブラウザから、のウェブブラウザから、 WebDAVWebDAVにアクセスしてファイルが置けることを確にアクセスしてファイルが置けることを確認してください。認してください。

詳細は、補助資料を参考にしてください。詳細は、補助資料を参考にしてください。

Page 84: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ワームがこの機能を利用しています

Page 85: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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適当な文字+リターン適当な文字+リターン

Page 86: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 の標準パスワード形式)はセキュリティがないのと同じの標準パスワード形式)はセキュリティがないのと同じ

Page 87: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 コマンドを使うコマンドを使う

Page 88: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 なのでダイジェなのでダイジェスト認証は標準で組み込まれていますが、これスト認証は標準で組み込まれていますが、これを確認してください。を確認してください。

詳細は添付資料を参照のこと。詳細は添付資料を参照のこと。

Page 89: セキュアなサーバを構築しよう(CentOS 5.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 アドレスによる接続制限は確実ではありません。

Page 90: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

「福岡大学」は現在、公開を取りやめていますので、参照しないようにしてください。

「福岡大学」は現在、公開を取りやめていますので、参照しないようにしてください。

Page 91: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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/ パスワードのクラッキングを防御するしくみがありますパスワードのクラッキングを防御するしくみがあります

ユーザの追加・削除のみ・・・など

ユーザの追加・削除のみ・・・など

Page 92: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

92

サーバー構築手順~サーバー構築手順~ WebminWebmin のススメのススメ (2)(2)~~OpenSSL のセキュリティ証明書なので通常心配は不要

必要なソフトウェアの設定メニューは充実

www.famm.jp

Page 93: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

93

サーバー構築手順~サーバー構築手順~ WebminWebmin のススメのススメ (3)(3)~~アクセス元を限定できますアクセス元を限定できます

使ってい使っているポートるポートを判らなを判らなくするこくすることも可能とも可能

パスワード破りの試パスワード破りの試みを防止する機能がみを防止する機能が

ありますあります

Page 94: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

94

実習8:実習8: webminwebmin を使用する(を使用する( 1010分)分)

Webminは補助資料にあるようにインWebminは補助資料にあるようにインターネット上の公開リポジトリからインスターネット上の公開リポジトリからインストールします。トールします。

SSLSSL でのアクセスが可能であることを確認しでのアクセスが可能であることを確認してください。てください。

WebminWebmin のセキュリティ設定を行い、機能しのセキュリティ設定を行い、機能していることを確認してください。ていることを確認してください。

作業手順は、補助資料を参考にしてください。作業手順は、補助資料を参考にしてください。

Page 95: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

95

サーバー構築手順~サーバー構築手順~ portsentry(1)portsentry(1)~~

PortsentryPortsentry ができることができること

あやしいポートスキャンをフルオートで検出あやしいポートスキャンをフルオートで検出 SYNSYN フラグによるハーフオープンスキャンフラグによるハーフオープンスキャン FINFIN フラグによるスキャンフラグによるスキャン その他のおかしなフラグを立っているパケットその他のおかしなフラグを立っているパケット

攻撃者の攻撃者の IPIP アドレスを自動的にパケットフィルタリングのルールアドレスを自動的にパケットフィルタリングのルールに登録に登録

攻撃者の攻撃者の IPIP アドレスを自動的にアドレスを自動的に tcp_wrappertcp_wrapper のアクセス拒否リスのアクセス拒否リストに登録トに登録攻撃の前兆の可能性の高いポートスキャンをシャットアウト攻撃の前兆の可能性の高いポートスキャンをシャットアウト

Page 96: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 97: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 が自動登録が自動登録

していますしています

Page 98: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

98

実習9:実習9: portsentryportsentry を使用する(を使用する( 1010分)分)

portsentryportsentry をコンパイル、インストールします。一部、をコンパイル、インストールします。一部、コンパイルエラーがでますが若干の修正で通ります。コンパイルエラーがでますが若干の修正で通ります。((詳細は添付資料を参照。スクリプトを提供しています)詳細は添付資料を参照。スクリプトを提供しています)

設定ファイルの中身を検査しましょう。設定ファイルの中身を検査しましょう。 ログを確認しながら、リモートからあやしいポートを叩ログを確認しながら、リモートからあやしいポートを叩

いてみましょう。何が起きましたか?いてみましょう。何が起きましたか? 自分の使用端末が誤って接続不可にならないように設定自分の使用端末が誤って接続不可にならないように設定

し、確認してください。し、確認してください。 NmapNmap を使用して様々な怪しいたたき方をして反応を確を使用して様々な怪しいたたき方をして反応を確

認してください。認してください。

Page 99: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

99

SELinuxを使おうSELinuxを使おう (1)(1)

SELinuxSELinux に向いているもの・向かないものに向いているもの・向かないもの SELinuxSELinux では限定された公開サーバの脆弱性かでは限定された公開サーバの脆弱性か

らシステムを「守る」のに向いていますらシステムを「守る」のに向いています (( 特に特にrootroot 権限で動く必要のあるサーバの場合)権限で動く必要のあるサーバの場合)

LinuxLinux カーネルそのものに脆弱性があった場合カーネルそのものに脆弱性があった場合は守りきれませんは守りきれません

事前に「ルール」が設定されていないものは、事前に「ルール」が設定されていないものは、守ってくれません守ってくれません

Page 100: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 101: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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!

Page 102: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

102

サーバー運用管理方法サーバー運用管理方法

Page 103: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 指定日時に指定コマンドを一回だけ実行する

Page 104: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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, … と増える。

Page 105: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 の向上の向上

Page 106: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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分平均の記録をと

るる

Page 107: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 スキャン等も記録可能スキャン等も記録可能 パケットフィルタがあまりきつくかかっていると意味のある情パケットフィルタがあまりきつくかかっていると意味のある情

報がとれなくなる報がとれなくなる 複数の条件の異なるサーバーでログを取るとより有意な情報が複数の条件の異なるサーバーでログを取るとより有意な情報が

とれるとれる

Page 108: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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).

Page 109: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 110: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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,...]

Page 111: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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にどのようなメッセージがでてくるか確認してください。にどのようなメッセージがでてくるか確認してください。

本資料を基に、出力結果をカスタマイズしてください。本資料を基に、出力結果をカスタマイズしてください。

Page 112: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 でカスタマイズします。でカスタマイズします。

Page 113: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ##########

Page 114: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

114

実習12:実習12: logwatchlogwatch の出力を確認(の出力を確認( 55分)分)

CentOS にはCentOS には logwatchlogwatch がすでにインがすでにインストールされています。ストールされています。

rootroot アカウントでメールを確認して、アカウントでメールを確認して、 logwlogwatchatch が実際にどのような出力をメールするが実際にどのような出力をメールするのか確認してください。のか確認してください。

Page 115: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

最初に「正しい状態」を覚えさせておいて、最初に「正しい状態」を覚えさせておいて、これとの差をチェックするこれとの差をチェックする

Page 116: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 を繰返す(厳密には不足もあるのでを繰返す(厳密には不足もあるので追加も必要追加も必要 ))

Page 117: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 は書換えできません。

Page 118: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

で他に登録すべきファイルがないかチェック。

Page 119: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 120: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

120

AIDE(Advanced Intrusion Detection EnAIDE(Advanced Intrusion Detection Environment) vironment) ~特徴~~特徴~

TripwireTripwire に似た改ざん検査ツールに似た改ざん検査ツール TripwireTripwireほど複雑でないルールも作成可能ほど複雑でないルールも作成可能 ディレクトリ単位で細かい設定が可能ディレクトリ単位で細かい設定が可能 croncron を使って、一定時間毎に動かす必要がを使って、一定時間毎に動かす必要があるのは一緒あるのは一緒

DBDB をログ保存に使用できるをログ保存に使用できる 最初に「正しい状態」を覚えさせておいて、最初に「正しい状態」を覚えさせておいて、

これとの差をチェックするのは同じ。これとの差をチェックするのは同じ。

Page 121: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 を実行してみまを実行してみましょう。しょう。

Page 122: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

122

webalizer(1) webalizer(1) ~特徴~~特徴~ ApacheApache のアクセス統計ページを作成するツールのアクセス統計ページを作成するツール あまり詳細な情報はでないが簡単に作成できるあまり詳細な情報はでないが簡単に作成できる croncron を使って、一定時間毎に動かす必要があるを使って、一定時間毎に動かす必要がある トップ・チャートなどを何位まで出すか設定可能トップ・チャートなどを何位まで出すか設定可能 ApacheApache のログファイル形式はのログファイル形式は combinedcombined にするにする 複雑なログファイル構成では対応できない複雑なログファイル構成では対応できない アクセス傾向を見るのに向いているアクセス傾向を見るのに向いている 日本語対応日本語対応

Page 123: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 124: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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=

Page 125: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 126: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

126

webalizer(5) webalizer(5) ~出力例~~出力例~

Page 127: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

127

実習14:実習14: webalizerwebalizer をインストールをインストールし、自動実行するようにする(し、自動実行するようにする( 1010分)分)

CentOSにはCentOSには webalizerwebalizer がインストーがインストールされています(ただし英語版)。ルされています(ただし英語版)。

WebalizerWebalizer がが rpmrpm パッケージでインストーパッケージでインストールされている位置を確認して前数ページをルされている位置を確認して前数ページを参考にして参考にして webalizerwebalizer のカスタマイズと自のカスタマイズと自動実行まで設定してください。動実行まで設定してください。

Page 128: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 でログを取る必要がありますでログを取る必要があります 日本語対応日本語対応

Page 129: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 等の でツールバッチ変換しなければなりません。=処理中は負荷が大きくなります

Page 130: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

130

analog(3) analog(3) ~~ GUIGUI での設定~での設定~

リアルタイムで処理するのでかなりシステムに負荷のかかる処理になります

リアルタイムで処理するのでかなりシステムに負荷のかかる処理になります

Page 131: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

131

analog(4) analog(4) ~出力例~~出力例~ これでもかなりカスタマイズしてありますが、それでもマスクしなければならない程危険です

これでもかなりカスタマイズしてありますが、それでもマスクしなければならない程危険です

あくまでも GUI は動作確認用と割り切って、実際に利用する場合にはバッチモードでの利用を強くお奨めします

あくまでも GUI は動作確認用と割り切って、実際に利用する場合にはバッチモードでの利用を強くお奨めします

Page 132: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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圧縮ファイルも指定可能

全部出力全部出力概要出力概要出力

状態コード出力状態コード出力

月間サマリ出力月間サマリ出力

Page 133: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 134: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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/ロボットの登録

集計用ファイル種別の登録集計用ファイル種別の登録

Page 135: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 136: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 の利用を検討しましょうの利用を検討しましょう

Page 137: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 しましょう!

Page 138: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

※下線部は書き換えましょう

実際の出力先実際の出力先

Page 139: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 コード。以下、同様

Page 140: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

※下線部は書き換えましょう

Page 141: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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/ から入手可能です

Page 142: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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]: &nbsp; 最遅 :LegendO[ping0]: &nbsp; 最速 :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

※下線部は書き換えましょう

Page 143: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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]: &nbsp; 最遅 :

LegendO[ping1]: &nbsp; 最速 :

WithPeak[ping1]: ymwd

#-------------------------------------------------------------------

※下線部は書き換えましょう

Page 144: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 さあ、アクセスしてみましょう!さあ、アクセスしてみましょう!

Page 145: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

145

実習15:実習15: mrtgmrtg をインストールし、をインストールし、自動実行するようにする(自動実行するようにする( 3030 分)分)

mrtgmrtg はコンパイル、インストールが必要はコンパイル、インストールが必要です。です。 net-snmpnet-snmp はは CentOSCentOS にパッケージにパッケージはあるのでインストールされていることをはあるのでインストールされていることを確認してください。確認してください。

mrtgmrtg とと mrtg-ping-probemrtg-ping-probe を使って設定しまを使って設定します。トップページはコマンドを使った自動す。トップページはコマンドを使った自動生成を使用してください。生成を使用してください。

Page 146: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

146

mrtg(10)mrtg(10) ~実行例~~実行例~

Page 147: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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つ起動する

Page 148: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 ファイルの指定

Page 149: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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= タイトル

Page 150: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 151: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

151

実習実習 116:6: swatchswatch をインストールし、をインストールし、自動実行するようにする(自動実行するようにする( 1515 分)分)

swatchswatch はインストールが必要です。はインストールが必要です。 設定ファイルは、とりあえず設定ファイル設定ファイルは、とりあえず設定ファイル

の例を参考に設定してみましょう。の例を参考に設定してみましょう。 実際には、実際には、 iplogiplog 等が出力するログを見ながら、等が出力するログを見ながら、怪しいポートスキャンのログなどを摘出する怪しいポートスキャンのログなどを摘出するように設定します。ように設定します。

これは、実運用時にさじ加減で足したり、引これは、実運用時にさじ加減で足したり、引いたりして、出力を加減するものです。いたりして、出力を加減するものです。

Page 152: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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'

Page 153: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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 でシステムダウンした場合、一定時間後に自動的にでシステムダウンした場合、一定時間後に自動的に再起動再起動

Page 154: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 155: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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)

Page 156: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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]>

To: [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]>

To: [email protected]

darwin.samba.gr.jp

知り合いのサイト同士で相互にチェックしてあげたりなどの応用もいいと思います

知り合いのサイト同士で相互にチェックしてあげたりなどの応用もいいと思います

Page 157: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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は毎日メールで届く・・・

Page 158: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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

Page 159: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

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秒後に再起動

Page 160: セキュアなサーバを構築しよう(CentOS 5.xまで対応)

Copyright 2004,2007 © Kensuke Nezu, All rights Reserved.

160

おわりおわり