ネットワーク - みる会図書館


検索対象: BSD hacks : プロが使うテクニック&ツール100選
141件見つかりました。

1. BSD hacks : プロが使うテクニック&ツール100選

HACK # 59 Sno 「 t 、 ACID 、 MYSQL 、 F 「 eeBSD で侵入検知 # cd / u 立 / 10 ( al / / # ln - 5 / us て / 10 ( al / / a ( id / us て / 10 ( al / ww / snort ー 295 Web プラウザで http://localhost/snort/acid_main.php を開き、「 Setup 」リンクをクリック する。 ACID で使用する拡張テープルを作成するために、 CCreateACIDAG]å=•タンをクリッ クする。終了すると、以下のようなメッセージが現れる。 Successfu11y created ・ acid ag Successfu11y created ・ acid ag alert ・ Successfu11y created 'acid ip cache' Successfu11y created ・ acid event ・ そして「 Main 」ページのリンクをクリックして、 ACID の主要なページに移る。こで次 のような疑問を抱くかもしれない。「どこで警告が発生するのだろうか ? 」今は発生しない。 まだ snort を開始していないからだ。 Snort を実行 ますは手で s n ort を実行し、実際に動くことを確かめてみる。どのネットワークインタ フェースのトラフィックを監視するかを、 - i スイッチで指定する。この例では X10 だ。 ℃ trl] + Cc] を押して sno て t を終了し、デーモンモードで再起動する。 かった。 この例のように、 snort がエラーを出さなかったら喜んでほしい。 snort が動くことがわ By Martin Roesch (roesch@sourcefire.com/ 鼎w.snort.org/ Version 2.0.5 (Bui1d 98 ) - * 〉 Snort! く * - = lnitialization CompIete = Rule application order: ->activation- 〉 dynamic->alert->pass- 〉 10g 十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十十 0 Dynamic rules 1458 0ption Chains linked into 146 Chain Headers 1458 Snort rules read. database: using the "alert" facility # /usr/local/bin/snort - ( 5n0 て t. ( onf -i X10 # cd / us て / 10 ( al / et (

2. BSD hacks : プロが使うテクニック&ツール100選

Sno 「 t 、 ACID 、 MySQL 、 F 「 eeBSD で侵入検知ー 287 ステムのソフトウェアを頻繁に変更する傾向にあれば、検査も頻繁に実施するほうがよいが、 どのソフトウェアをいつインストールしたのかを覚えておいてもかまわない。 参照 ・ man mtree Snort. ACID 、 MySQL 、 FreeBSD で侵入検知 ー注意深い管理者は、どのようにしてワームを検地すればよいか 企業はリストラの傾向にあるし、新種のウイルスとワームが急速に広まって猛攻撃を仕掛 けてくるので、現代の管理者は気の遠くなるような難題に直面している。管理者は問題を修 正して、システムをスムーズに動かし続けなければならない。さらに、場合によっては、ネッ トワークがワームのえじきになることを防ぐ必要もある。そのためにはネットワークを流れ るトラフィックを監視し、感染したノードを突き止め、欠陥を修正するために数多くのべン ダのパッチをあてるなど、さまざまなことを実施しなければならない。 この状況を改善するにはコンピュータの世界に暗黒側の人間がいることを警告するために、 LAN 上に IDS (lntntsion Detection System : 侵入検知システム ) を配備すればよい。 この Hack では、 FreeBSD 、 MySQL 、 Sno れ、 ACID (Analysis ConsoIe forlntrusion Databases) を使用して、非常に効果的で安定した IDS を実装する方法を示す。いくっかのアプリケーショ ンをインストールして設定する必要はあるが、検索可能な IDS を実装して、豊富な機能を盛 り込むことができる。また、独自の警告を生成することもできるし、さまざまな形式で情報 を表示することもできる。 ソフトウェアをインストール すでに FreeBSD4.8-RELEASE 以降をインストールして、ディスク容量が十分にあるとし よう。さらに、システムに完全にパッチをあてており、最新の po ホコレクションをインス トールしているとする。こでは、 FreeBSD と MySQL のコマンドを知っていると役に立つ。 PHP4 、 Apache 、 MySQL をインストール 始めに、 PHP4 、 Apache 、 MySQL クライアントをインストールする。スーパーユーザにな り、以下のように実行する。 # cd /usr/ports/www/mod_php4 # make install clean H A C K HACK # 59

3. BSD hacks : プロが使うテクニック&ツール100選

HACK # 58 286 ー 6 章システムのセキュリティ mtree はちゃんと気づいたようだ。その出力は実際にとても便利だ。追加したファイルは btsockstat だということがわかるし、追加した日時もわかる。この例では、このファイルを 追加したのは自分なので、解決方法は簡単だ。そうでなければ、時間をとって調査する必要 がある。その日時に担当していた管理者に話を聞いたり、その期間についてネットワークの ログを調べたりするとよい。 ファイルを追加すると、チェックサムが変化することに注意してほしい。変更の原因を突 き止めたら、現在の / usr / bin の状態を反映した新しいデータベースを作成すべきだ。以下に 必要なステップを要約する。 1. mtree - ( を実行して、データベースを作成する。 2. md5 を使用して、データベースの電子指紋を作成する。 3. openssl を使用して、データベースを暗号化する。 4. データベースを取り外し可能なメディアに移し、ディスクから削除する。 どのディレクトリの変更を監視するか 整合性データベースを作成するとき、自分自身に次のように問いかけてほしい。「どのファ イルについて、変更したことを知りたいのか ? 」その答は、自分のバイナリやアプリケーショ ンに左右されるだろう。 FreeBSD システムでは、一般的なバイナリは以下のディレクトリに ある。 /usr/compat/linux/sbin ・ /usr/compat/linux/bin /usr/X11R6/bin ・ /usr/local/bin /usr/sbin /usr/bin /sbin ・ /bin バなら、毎日の保守計画の一部にデータベースの検査を取り入れることを検討すべきだ。シ きか ? 」ということだ。その答は各自の状況に依存する。マシンが一般に公開しているサー 自分自身に問いかけるべき 2 番目の質問は、「どれくらいの頻度でデータベースを調査すべ とんどの po ホは、 /usr/local/bin または /usr/X11R6/bin に入っている。 名前に sbin の付くディレクトリは、システムのバイナリが入っているので特に重要だ。ほ

4. BSD hacks : プロが使うテクニック&ツール100選

HACK # 52 246 ー 5 章ネットワーク コマンドを分散して実行 tentakel を使用し、コマンドを分散して並列で実行する 1 台のコンピュータでなく、複数のコンピュータ上で同時にコマンドを実行したくなるこ とが多いだろう。例えば、管理しているグループ内の各サーバで、現在の統計情報を報告し たいことがある。また、複数の Web サーバを同時に更新したいこともある。 H A C K : # 52 安易な方法 単純には、以下のようなシェルスクリプトをコマンドラインから実行する方法が考えら れる。 # f0 て host in hostA hostB hostC 〉 d0 55h $host do something 〉 done しかし、 この方法には以下の欠点がある。 それぞれのリモートホストへの接続を同時に実行するわけではないので、時間がかか る。前の接続が終了した後で、次の接続を開始しなければならない。 ホストのグループ ( 例えばメールサーバやワークステーションのグループ ) を簡単に定 義する方法がないので、多数のホストを管理すると作業が複雑になることがある。 得られる出力は、リモートで実行したプログラムが生成したものである。 各ホストの開始と終了を示す印がないので、出力が読みにくい。 tentakel の利点 これらの欠点のいくつかをシェルスクリプトで解決してもよいが、それよりも tentakel を 検討することを勧めたい。 tentakel は ports コレクションから入手できる。 tentakel は複数の スレッドを開始し、各スレッドは互いに独立して動く。最長の待ち時間は、各リモートホス トの実行時間の合計でなく、最も遅いリモートホストの実行時間になる。 tentakel は、最後 のリモートコマンドが戻ってきた後で、すべてのリモートコマンドの実行結果を表示する。 各ホストの結果を組み合わせたり区別したりしながら、出力の形式を調節できる。 tentakel は、複数のホストをグループにまとめて扱う。 1 つのグループを 2 つのタイプのメ ンバーで構成できる。つまり、複数のホストだけでなく、他のグループをメンバーとして構 成できる。また、グループにパラメータを設定して、ユーザ名とアクセス方式 (rsh や ssh な

5. BSD hacks : プロが使うテクニック&ツール100選

HAC K # 51 244 ー 5 章ネットワーク ド I*P コマンドを 1 行に 1 っすっ書き並べる。この例のマクロには、 bin(binary の意味 ) コマン ドが入っている。このコマンドは、ファイルをダウンロードするときに便利だ。アプリケー ションや ASC Ⅱ以外のファイルなど、すべてのファイルを正しくダウンロードできるからだ。 さらにこのマクロには、通常の作業ディレクトリに移動するための cd コマンドも入っている。 250 "/pub/FreeBSD/reIeases/i386" is new cwd. cd /pub/FreeBSD/reIeases/i386 200 Type set t0 1. bin ftP> $ fbsd プロンプトでるマクロ各と入力すればよい。 マクロを実行するには 2 つの方法がある。すでにド PP サーバに接続しているときには、 ftp マクロを必ず空白行で終えることが重要だ。 mget * cd /pub/XFree86/4.3.0/source prompt bell bin macdef X ~ /. netrc に以下のようにマクロを書けばよい。 最新の XFree86 ディストリビューションを直接ダウンロードしたいとする。この場合、 ftp プロンプトで毎回すべてを入力するのは無駄だ。例として、 ftp://ftp.xfree86.0てg/ から 何を実行したいかが決まっており、特に 2 回以上も同じことを繰り返す必要がある場合、 セッション全体のスクリプトを作成 ン全体のスクリプトを作成するつもりだったとしたら、これが完全に期待どおりの動作だ。 力するつもりだったとしたら、いささか期待外れだったかもしれない。しかし、ド rp セッショ セッションがいきなり終了し、通常のプロンプトが現れる。 ftp プロンプトからコマンドを入 この方法を試してみると、すべてのコマンドが完了することに気づくだろう。そしてド IV % echo " $ fbsd"l ftp ftp.freebsd.org することだ。 マクロを実行するための 2 番目の方法は、 ftp コマンドを起動するときに、次のように実行 、 P は、マクロの各コマンドを実行した後で、その結果を出力している。

6. BSD hacks : プロが使うテクニック&ツール100選

電子メー丿レを保留して後で配信 241 HACK # 50 DNS に対処 これまでの解説の背後には多くの前提がある。 sendmail は電子メールを処理するとき、 DNS フィックを追加する。これは効果的だが、 DNS 検索がタイムアウトになるまで待機 ューザモードで ppp を使用する場合、 /etc/ppp/ppp. conf で dial フィルタに DNS トラ この問題を改善するために、以下のことを実行できる。 してきた目的がすべて壊れてしまう。 がある。また、 PPP リンクが確立すると、 ( 直ちにキュー処理が起こるので ) これまでに目指 を頻繁に利用する。 DNS のトラフィックが、オンデマンドでダイヤルアップを起動すること がある場合には、必要に応じて変更すればよい。 dial フィルタのルール番号は 0 と 1 になっている。すでに dial フィルタのルール しなければならないので、やっかいな遅延が生じる。 ローカルのキャッシュまたはローカルネットワークの権威サーバとして、 DNS サーバを実行する。 自分で 自分のシステムとプロバイダのメールシステムについて、ホスト名と IP アドレスを /etc/hosts に登録する。そして、 DNS の代わりに、この単純なファイルを使用する ようにシステムを設定する ( FreeBSD4. x では host. conf のマニュアルページを、 5. x では nsswitch. conf のマニュアルページを参昭 ) その代わりに、ホストの検索で他のローカルのデータベース ( 例えば NIS や LDAP ) を 使用する。 ・ sendmail の設定ファイルで、ホスト名を角括弧で囲んで [ ホスト名 ] と指定する。 最後の方法は、 MX レコードを調べないようにと sendmail に指示する ( MX レコードは DNS からしか入手できない ) 。その代わり、 sendmail は IP アドレスだけを調べる。例えば、 /etc/ mail / ホスト名 . mc に、 ISP の SMTP サーバのホスト名を以下のように指定する。 DNS 検索を完全に排除することはできない。 これらの Hack は DNS の問題を軽減するだけなので注意してほしい。残念ながら、不要な その後で、前述のように設定ファイルを再ビルドする。 [smtp. example. (0mド )dnl define( 、 SMART HOST' ,

7. BSD hacks : プロが使うテクニック&ツール100選

なぜ sendmail が必要なのか 砌 tp. リ犂加 v . net ' ) define( 、 SMART HOST ・ この行を次のように変更する。 dnl define( 、 SMART HOST' , 坦 . i 平 . m ぬ 1. se Ⅳ e ) お気に入りのエデイタで、・・ホスト名 . mc" ファイルを開き、以下の行を見つける。 、 hostname 、は、システムのホスト名に置き換わる。 # cp freebsd. mc 、ホスト名、 . mc # cd /etc/mail ー 237 HAC K # 49 tp. ツ 0 匹 0 ⅵ de て . 肥 t を、プロバイダの SMTP サーバの名前に置き換えてほしい。 dnl は、 を閉じても問題は少ないだろう。このボートを使用した発信を停止するには、 準だが、現在のところ使用しているアプリケーションは少ないので、このポート デフォルトでは、発信用のポート 587 も開いている。このボートは SMTP の標 るので注意してほしい。左側はバッククオート ( 、 ) 、右側は一重引用符 C ) だ。 イルから例の行のコメントを外すことができる。 . mc ファイルでは、左右の引用符が違ってい コメントにするために使用する。したがって、このように変更すると、デフォルトの . mc ファ 「 DeleteuntilNewLine ( 復帰改行まで削除 ) 」という意味であり、 . mc ファイルでテキストを hostname. mc に次の行を追加する。 FEATURE()o default msa)dnl . mc ファイルを処理して . cf ファイルを生成し、 # make # make install # make restart-mta インストールして作動させる。 MSP の設定については、 sendmail のデフォルトを変更する必要はない。デフォルトの設定 では、ローカル以外のユーザ宛のすべてのメッセージを、プロバイダの利ロなホストに送信 して処理を依頼する。 MSP には、ネットワークを越えて電子メールを受信する手段は備わっ ていない。 ローカルの MTA なしで簡単に sendmail を設定 sendmail の MSP キュー処理プロセスと MTA プロセスの両方を実行することに対する代替 手段は、 MSP キュー処理プロセスだけを実行することだ。 sendmail の MTA については、使

8. BSD hacks : プロが使うテクニック&ツール100選

HAC K # 46 tcpdump を使いこなす require ' jabber4r/jabber4r' ipdata = 、 /sbin/ifconfig tun0 、 、 date 、 . chomp! session. close sleep 5 . send set body()l had to dial up fo て internet access at #{now}. \n#{ipdata}\n") session. new chat message("user@jabberserver"). sesslon = Jabber: :Session. bind digest("user@jabberserver/modem" 'secret") ー幻 5 この Ruby スクリプトは、ます現在の日時を調べる。次に tun0 インタフェースの状態を調 べるが、この中にダイヤルアップ ISP から割り当てられた現在の IP アドレスが入っている。 この IP アドレスを使用して、自分のコンピュータに ssh でログインし、問題の原因を究明す ることができる。 Jabber4r モジュールは http://jabber4r.rubyforge ・ org/ にある。また、 http://www ・ germane- software.com/software/rexml/ から REXML (Ruby で作られた XML パーサ ) モジュールも入手 する必要がある。これらの両方のモジュールを、 OpenBSD3.4 に入っている Ruby パッケー ジ上に、問題なくインストールできる。 復旧後の作業 接続が復旧したら後片付けをする必要がある。 ppp を停止し、再び PF を開始する ( おそら く pfctl で )。そしてロックファイルを削除する ( / tmp / testconnect. sh スクリプトが何度もダイ ヤルアップを繰り返すことを防止するために作成していたファイル ) 。これで少なくとも次の 災難が起こるまで、正常な接続に戻るはずだ。 参照 ・ Jabber の web サイト (http://www.jabber.org/) ・ Ruby の Web サイト (http://www.ruby-lang ・ org/en/、 日本語版は http://www.ruby- lang ・ org/ja/) tcpdump を使いこなす tcpdump と友達になろう ネットワーク管理者のツールのうち、最も便利なユーティリティの 1 つが tc pd ump だ H A C K

9. BSD hacks : プロが使うテクニック&ツール100選

ネットワークを越えて安全にバックアップ 179 HACK # 38 準備作業 warning: permanently added ・ 192.168.2.93 ' (DSA) t0 the list 0f known hosts. Are you sure you want t0 continue connecting (yes/no)? yes DSA key fingerprint is e2 : 75 : a7 : 85 : 46 : 04 : 71 : 51 : db : a8 : 9e : 83 : bl : 5c : 7a : 2c. The authenticity 0f host ' 10.0.0.1 ( 10.0.0.1 ) ' can't be established. % sshd -1 rembackup 10.0.0.1 スは 10.0.0.1 となっている。 きることを確認する。このシナリオでは、巨大なハードディスクのあるシステムの IP アドレ 次に、バックアップをとる予定のシステムから、 ssh でユーザて emba ( kup としてログインで だろう。 ) まり好ましい記憶方法はない。たとえあったとしても、 pw が何の略かを覚える人などいない ディレクトリを作成し、 - s スイッチでデフォルトのシェルを設定する。 ( pw については、あ 入れ ( そのグループは事前に存在していなければならない ) 、 - m スイッチでユーザのホーム pw コマンドを知らない読者のために説明すると、 - g スイッチでユーザを指定のグループに Retype New Password : New Password : Changing 10 ( al password for rembackup # passwd rembackup # pw useradd rembackup -g rembackup -m - 5 /bin/csh # pw groupadd rembackup rembackup という名前のユーザとグループを作成する。 「 [Hack#631 ssh サーバを制限」で取り上げる scponly シェルを使用する方法がある ) 。次に 巨大なハードディスクのあるシステム上で、 sshd を実行しているとする ( 代替手段として、 バックアップ トする準備が整った。 すばらしい。 rembackup としてログインできたので、両方のシステムでバックアップをテス Connection t0 10.0.0.1 closed. 10g0 ut % exit password : を自動化するバックアップスクリプトを作成する。 まずはコマンドラインからコマンドをテストしてみる。十分な結果を得た後で、その手順

10. BSD hacks : プロが使うテクニック&ツール100選

ー 161 ログインを制限 ユーザは「絶対に root でログインしてはならない」ので、このデフォルトを変更してログイ ンできないようにしておくべきだ。どの仮想ターミナルについても、 secure を insecure に変 更するか、または単に se ( ure を削除すべきだ。 / et ( / ttys を編集するときには十分に注意してほしい。入力ミスをすると、システ ムにログインできなくなってしまうおそれがある。実際に変更する前に別のター ミナルからにログインし、ログアウトする前にその変更をテストするべきだ。 /etc/login.access 次に、 / etc / login. a ( ( ess を使って何ができるかを見てみよう。最も厳しい設定としては、 のファイルを使用して、すべてのリモートログインを防止できる。そうすると、システムの 前に物理的に座っている場合にのみログイン可能になる。 - :ALL:ALL EXCEPT LOCAL このファイルの各行で使用する構文に注目してほしい。 - は、アクセスを拒否することを意 味する。その逆は + であり、アクセスを受け入れることを意味する。最初の ALL は、すべて のユーザに該当するワイルドカードだ。 2 番目の ALL は、すべての場所に該当するワイルド カードだ。 EXCEPT LOCAL は、例外としてローカルな場所だけを許可するという意味になる。 このルールを少し変更すると、例えば、リモートとローカルの両方から root でログインす ることを禁止できる。 -:root:ALL このファイルを変更するときには注意してほしい。この構文では、ユーザ名とグループ名 のどちらでも使用できるので、システムへのログインの許可を誰に与えるかを正確に指定で きる。これは、サーバシステムへのアクセスを制限するときに、とても便利である。 この構文では IP アドレスも使用できる。この機能が便利なのは、自分のネットワークまた は特定のサプネットのホストだけに、特定のシステムにアクセスする許可を与えるような場 合だ。ただし、このような IP アドレスを使用するセキュリティ対策では、 IP アドレスが偽造 される可能性があることを覚えておいてほしい。 最後に、このファイルを変更したら「直ちに変更をテスト」してほしい。特定のユーザだ けがアクセスできるように制限した場合、それらのユーザがログインできることを確認しな ければならない。さらに、他のユーザでログインを試し、ログインできないことを確認しな ければならない。 HACK # 34