方法 - みる会図書館


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

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

HACK # 61 6 章 システムのセキュリティ % sudo bash # 朝 /some/protected/dir # pwd /some/protected/dir 別の手段として、以下のようなスクリプトを書く方法もある。 # ! /usr/local/bin/bash cd /some/protected/dir;/bin/ls このスクリプトにアクセスできるように /usr/local/etc/sudoers で設定すると、権限のある 次の例は、実際には制限というよりも、やや不便だという程度にすぎない。 利な方法でデータにアクセスできる。 を使用できるが、標準出力の場合に比べれば普通に近い方法だ。つまり、 sudo cat という便 標準入力をリダイレクトしようと試みると同じ問題が発生する。この場合にも同様の方法 限を与えることができるし、少し面倒だが望みの結果を得ることができる。 欲しいのはファイルだけなので標準出力ストリームは捨てる。こうすれば、 sudo は tee に権 まり、この tee コマンドは、標準入力から受け取った I/O ストリームをファイルに書き込む。 この例では sudo で tee を実行し、 - a ( append つまり追加の意味 ) スイッチを付けている。つ secret stu 幵 % sud0 cat /some/protected/dir/secret 〉 /dev/null % ech0 "secret stu 幵 " ー sud0 tee -a /some/protected/dir/secret \ う点にある。ただし、この場合には以下の回避方法がある。 この時、問題は echo コマンドでなく bash シェルが I/O リダイレクションを実行したとい bash : /some/protected/dir/secret : Permission denied % sud0 ech0 "secret stu 幵 " 〉 /some/protected/dir/secret シェルと sudo の間で対話するには、 I/O リダイレクションを使用する方法もある。 にならない。例えば、 bash - てでは ( d を使用できない。 しかし、ほとんどの制限付きシェルは非常に「制限が厳しい」ので、あまり一般的な解決策 別の手段として、ユーザに制限付きシェル ( 例えば bash - r ) の実行を許可する方法もある。 を許可することができる。 で移動することをユーザに許可するわけではないが、特定のディレクトリで作業を行うこと ユーザは、保護されたディレクトリの内容を ls で参照できる。保護されたディレクトリに ( d

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

はじめに 分の必要性に合わせて設定をカスタマイズする方法を取り上げる。 2 章ファイルとファイルシステム XIX ファイルがなかったとしたら、どうやって Unix コマンドにデータを与えればよいの だろうか。おそらく、データを自分で切り刻んで、どこかに格納しなければならない だろう。 2 章では、情報が自分のマシン上に存在する場合だけでなく、どこか別のサー バ上に存在する場合についても、情報を見つけ出して処理する手法を解説する。 3 章ブートとログイン環境 どんなに立派なセキュリテイプランでも、ユーザが入ってくると台なしになってしま うことが多い。機密性の高いマシンから悪人を遠ざけるには、二面的な方法が必要に なる。それは、通常のユーザアカウントを善良なパスワードボリシーで保護する方法 と、ハードウェアを物理的に保護する方法である。 3 章では、プートとログインのプ ロセスをカスタマイズして保護するために、いくつかの選択肢を探ってみる。 4 章バックアップ ファイルを作成し始めると、失ってはいけない重要なデータを作ることになるだろ う。そこで、バックアップが必要になってくる。 4 章では、大惨事が発生した場合で も貴重なデータを保存しておくために、さまざまなアイデアや手段を紹介する。 5 章ネットワーク 頑固な個人主義者でない限りは、きっとネットワークに接続することだろう。この事 実は、神秘的な失敗をする可能性が高くなることだけでなく、利ロな Hack を新たに 生み出す機会があることも示している。 5 章では、ネットワーク接続の活用方法に焦 点を合わせる。 6 章システムのセキュリティ セキュリティは、考え方も重要だが、手順も同じくらい重要だ。自由に使用できる ツールがあれば役に立つ。 6 章では、悪人を遠ざける方法や、システムを最新の状態 に維持する方法など、システムのセキュリティを高めるための各種のツールやアイデ アを探求する。 7 章高度な手法 長年にわたる改良のおかげで、 BSD の環境は強力で保守しやすくなった。あなたは、 システムの能力を十分に活用しているだろうか。 7 章では、読者が達成できるレベル を可能な限り高めてみる。

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

1 1 章 ユーザ環境のカスタマイズ Hack # 1 -12 H A C K たが考えているよりもずっと簡単だということがわかるだろう。 ラインに不慣れな人や、タイピングが苦手な人も、そのまま読み続けてほしい。 Un ⅸはあな ている。少し時間を割いて、これらのトリックを学べば、きっと安心するだろう。コマンド ルにも、長ったらしい作業を簡単に実行するためのショートカットやトリックが満ちあふれ 落ちついてほしい。 FreeBSD のスーパーユーザのデフォルトは tcsh シェルだが、このシェ ない。 BSD システムのデフォルトのシェルが bash でないことを知ると、うろたえてしまうかもしれ だ。 Linux システムを管理していた人は、スーパーユーザであろうと一般ユーザであろうと、 好むと好まざるとに関わらす、 BSD ユーザーはコマンドラインで多くの時間を過ごすもの コマンドラインのスピード狂になろう デフォルトのシェルを最大限に活用 るだろう。では、それぞれの選んだ OS の前で姿勢を正し、ハッキングを始めてほしい。 クを紹介する。本章を読めば、何にもまして、 BSD のハッキングがどんなに楽しいかがわか だけで実行する方法を取り上げる。また、コマンドラインの失敗を防ぐために役立つトリッ なる方法を示し、最もありふれた作業を、ほんの少しのキーストロークやマウスのクリック 本章では、作業環境を最大限に活用するための手段をたくさん紹介する。シェルと親しく るツールを使用するか、または自分で考案してほしい。 してほしい。本書で取り上げたツールが読者の OS に入っていなければ、自分の OS に存在す む方法を示しているにすぎない。これらの Hack を踏み台にして、独自の解決方法を生み出 用できる。それぞれの Hack は、ありふれた問題に対して、少しだけ違った観点から取り組 本書は BSD に的を絞っているが、ほとんどの Hack はあらゆるオープンソースの OS に適 実行しようとする。つまり、「ハッキング」が好きなのである。 事の裏側を調べ、その仕組みを探り、ありふれたコンピュータ処理を新たな興味深い方法で オープンソース (http://opensource.org/ の UnixOS のユーザは、とても興味深い人々だ。物

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

HACK # 73 364 ー 7 章 高度な手法 gdb を初めて使用する人は、 ( gdb ) プロンプトで help と入力してみるとよい。そし て、デバッガの使用を終えたら quit と入力する。 2 番目はクラッシュしたプログラムのコアファイルを調べる方法だ。 % gdb プログラム名プロセス ID 3 番目はすでに動いているプログラムを調べる方法であり、次のように実行する。 % gdb プログラム名プログラム名 . ( 0 て e よい。 ラーを修正してセキュリティ侵害を防ぐために、どんな変更を加えるべきかを判断すれば 定して、プログラムがどこで異常な動作を実行したかを突き止めることができる。そして、工 デバッグメッセージを挿入するか、または GDB でプレークポイントとウォッチボイントを設 たときに実行していたソースコードの行も表示する。お気に入りのデバッグ技術を使用し、 る。 telnetd にデバッグ情報を組み込んでビルドしてあれば、 GDB は telnetd がクラッシュし これで telnetd をクラッシュさせて障害の原因となったエラーの種類を観察することができ Attaching t0 program 、 /usr/libexec/telnetd', process 27857 GNU gdb[. % gdb /usr/libexec/telnetd 27857 0 : 00.02 grep telnetd 27859 pd S + 0 : 00.05 telnetd 27857 ? ? S % ps -ax ー grep telnetd ここで testhost の別のターミナルで以下を実行する。 telnetd を起動し、 perl は攻撃用の文字列を送信する前に 30 秒間だけ待つ。 これで、 n ( はテスト用ホスト testhost に対してソケットを開き、それに応答して inetd が % perl -e ・ sleep 30 ; print ハ 37 ハ 366 " X512 ・一 nc testhost telnet 要がある。 実行中のプロセスに接続するのは難しい。そこで、攻撃スクリプトを次のように変更する必 残ったのは 3 番目の方法だけだ。しかし、誰かが接続するまで telnetd は起動しないので、 データが入っていることがあるので、コアファイルを残さないからだ。 目の方法も使用できない。 root 権限で動くプロセスは、プログラムのメモリイメージに機密 に接続して正しく動かすためには、 inetd が telnetd を起動しなければならないからだ。 2 番 telnetd の場合、最初の方法を使用することはできない。 telnetd をネットワークソケット

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

HACK # 47 228 ー 5 章ネットワーク る。世界中からアクセスできるのは、 DMZ 内に置いた部分だけだ。少し時間をとって、どの レコードを世界中に知らせる必要があるかを考えてほしい。おそらく、 DNS サ—Ä(I)MZ 内 の DNS サーバや、 ISP などが提供する 2 番目に望ましい DNS サーバ ) のレコード、 Web サー バのレコード、そして SMTP サーバのレコードなどが該当するだろう。これらのレコードだ けを、 DMZ の小さなゾーンに入れるべきだ。 2 番目のアプローチは、ゾーン転送を厳格に管理する方法だ。最も起こってほしくない事 態は、 DMZ 内の DNS サーバが内部のゾーン全体のコピーを要求することだ。同様に、イン ターネットのユーザが、内部の DNS サーバにネットワーク内のレコードすべてを要求する事 態も避けたい。 ゾーン転送を制御するには複数の方法があり、すべての方法を実装すべきだ。ますは DNS サーバのマニュアルを読み、ゾーン転送を要求できる IP アドレスを制限する方法を調べる必 要がある。これを BIND で実現する方法については、「 Securing an lnternet Name server 」 (http://www.acmebw.com/resources/papers/securing.pdf) を参照してほしい。 2 番目に、ファイアウォールでゾーン転送の制御を設定しなければならない。 DNS は興味 深いプロトコルであり、 TCP と UDP の両方でポート 53 を使用する。まず、ファイアウォー ルで UDP53 を「許可」しなければならない。禁止するとすべての名前解決が止まってしま う。それは悪い事態だ。一方、ゾーン転送では TCP53 を使用する。 TCP53 を許可するにあ たって、ゾーン転送に関与すべき DNS サーバの IP アドレスだけを許可するよう、注意深く ファイアウォール規則を構成しなければならない。そして、変更内容をセカンダリサーバに 転送することを忘れないでほしい。 3 番目に、定期的に DNS サーバをテストするようにガイドラインを作成しておくべきだ。 ネームサーバを保護するのは複雑だということに留意してほしい。どんなことをすると問題 が発生するのだろうか。例えば、 OS のパッチや DNS サーバのアプリケーションパッチを適 用すると、新しい欠陥が生じてしまうことがある。また、ファイアウォールのルールを変更 すると、意図に反してゾーン転送を許可してしまうおそれがある。複数の DNS サーバを ( お そらく複数の場所で ) 使用し、さらに複数のファイアウォールも使用するとなると、誤りを起 こす危険性が増える。日常的なテスト計画を立てれば、そんな誤りを検出できる可能性を高 め、問題が長期にわたって残り続ける危険を排除できる。 DNS をテスト DNS サーバをテストするには、 dig に ax 幵スイッチを渡す方法もあるが、筆者は host -al の出力を好んでいる。このユーティリティに自分のドメイン名を渡して実行すると、以下の ような結果が得られるだろう。

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

4 章 バックアップ Hack # 35-41 本書で取り上げる Hack を集めていると、バックアップに 1 つの章全体を割くべきだとい うことが明らかになってきた。 BSD ユーザは、「バックアップ、バックアップ、バックアッ プ」と呪文のように繰り返している。しかも、あらゆる管理者は、バックアップをとるべき 環境や手元にあるツールを利用するために、独自の解決方法をハッキングしているように見 んる。 あなたが dump と tar の使用方法の説明書を探しているとしたら、 ーこにはない。むしろ、 あまり有名ではないが、これらと同様のツールとして pax と ( pio を取り上げ、特別な使用方 法を説明する。さらに、 ssh 経由でバックアップをとる Hack も取り上げ、初心者向けに、安 全なネットワーク接続を介してツールを組み合わせる手法を紹介する。 また、お気に入りのバックアップューティリティを最大限に活用するために、熟練ユーザ が作成したスクリプトも取り上げる。最後に、とても便利なオープンソースのユーティリ ティを紹介する。 SMBFS で FreeBSD をバックアップ 問題が発生したとき、良好なバックアップがあれば当日のうちに復旧できるが、そうでなけれ ば復旧に 1 週間もかかってしまう 良好な管理を実践するには、定期的なバックアップが不可欠だ。バックアップをとる手段 はさまざまである。 SCSI テーブドライプのようなハードウェアと、 8mm テープカートリッ ジを使用するという初歩的な方法もあれば、用 T テープライプラリシステムと、 50GB の圧縮 データを格納できるカートリッジを使用するような高度な方法もある。しかし、「すべて」の サーバに専用のハードウェアを用意するだけの費用がないときには、どうすればよいだろ うか。 ほとんどのネットワークには複数のシステムが存在するので、あるサーバのデータのアー カイプを、ネットワークを越えて別のサーバに送ることができる。こでは、 FreeBSD シス テムのバックアップをとるために、アーカイプユーティリティ tar と gzip で、 smbutil と H A C K

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

HACK # 88 432 ー 8 章最新バージョンに維持 ports をインストール インストールしたい po ホが見つかったら、インストール方法を学ぶ必要がある。これま でに FreeBSD の po ホコレクションを扱った経験のある人にとってはおなじみの手順になる だろう。 こでも XChat を例に取り上げる。 2 つの選択肢がある。 GTK + バージョン 1 を使用する xchat と、 GTK + バージョン 2 を使用する xchat2 だ。 こでは例として xchat2 を選ぶ。 さらに、 po ホのインストール方法も 2 つある。最初の方法は、 po ホのディレクトリに移 % cd /path/to/darwinports/dports/irc/xchat2 動して port install を実行することだ。 くバスワードを入力〉 % sudo - 5 2 番目の方法はファイルシステムのどこからでも実行できる。 # port install & & port clean くパスワードを入力 > % sudo - 5 ports ツリーを更新 ルは問題なく進むはすだ。 パスを正しく設定しており、インストールしたい po s が PortIndex にあれば、インストー # port install xchat2 & & port clean xchat2 po ホの開発者たちは新しい po ホの追加や既存の po ホの更新を頻繁に行うので、 po ホッリーを最新の状態にしておきたい。これを実現するのはとても簡単だ。 % cd /path/to/darwinports % cvs -q up -Pd 自分の べースディレクトリの変更に気づいたら、 Dar inPo ホべースのシステムも再ビルドすると よい。そのためには、最初にインストールしたときと同じコマンドを実行すればよい。 % cd /path/to/darwinports/base % . /configure % ma ke % sudo make install くバスワードを入力〉 % make clean

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

HACK # 84 412 ー 8 章最新バージョンに維持 インして現在のバージョンよりも番号の大きなデルタをダウンロードし、順番に適用すれば これで終わりだ。これ以降 po ホッリーを更新したいときには、 CTM ミラーに ftp でログ よい。 H A C K 初めて FreeBSD に魅力を感じたのは po ホコレクションだし、それ以降も強く関心を抱き ・ . 一組み込みのコマンドを使用して、 FreeBSD の ports コレクションを追跡する ports を追跡 books/handbook/ctm. html) 8859-I/books/handb00k/ctm. html 、日本語版は http://www.freebsd.org/doc/ja JP. eucJP/ ・ fFreeBSD Handbook 』の CPM のセクション (http://www.freebsd.org/doc/en US. ISO ・ man Ctm 参照 lists.freebsd.org/pipermail/ctm-users/2003-0ct0ber/000039.html を読んでほしい。 ルタを ( tm rmail で扱う方法については、 ctm-users メーリングリストのメッセージ http : / / また、更新を適用する前に PGP の署名を確認することが望ましい。その方法と受信したデ man ctm rmail と実行してマニュアルページを見てほしい。 ェイリアスを作成する方法と、 p て ocmail のレシピを作成する方法だ。詳しい説明については ムが CTM の更新を横取りするほうが好ましい。そのためには 2 つの方法がある。 sendmail の ストに登録してはいけない。変更の電子メールを直接メールボックスに送るよりも、システ ただし、変更の電子メールを扱えるようにシステムを設定するまで、決してメーリングリ オンラインで登録した後で、その登録の確認を求める電子メールに応答すればよい。 listinfo/ctm-ports-cur/) 。 取るには ctm-ports-cur メーリングリストに登録すればよい (http://lists.freebsd.org/mailman/ に変更を受け取るほうがよい。毎日、 1 つか 2 つくらいの変更が発生している。変更を受け 無精な人や、定期的に変更を ftp で取得することを忘れがちな人は、電子メールで自動的 高度なハッキング ろう。 ツリーを作り直したくなるような事態に備えて、巨大な最初のデルタを残しておくとよいだ 必要はない。ただし、ダウンロードの速度や時間が問題になる場合には、再び最初から po れ s 適用に成功し . ( tm status にデルタ番号が書き込まれたら、そのデルタファイルを残しておく ダウンロードした圧縮ファイルを残しておくかどうかは自分で判断してほしい。デルタの

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

応急修理キットを作成ー 355 1 つの方法は、インストール CD - ROM から直にプートすることだ。ただし、その CD-ROM がプート可能なメディアであり、 BIOS がサポートしている場合に限る。これらの条件にあて はまる場合には、 boot. flp 、 kern. flp 、 mfsroot. flp は必要ない。 CD-ROM からプートする方法を選択しない場合、 boot. flp を使用する方法と、 kern. flp と mfsroot. flp の両方を使用する方法がある。基本的に、 boot. flp は他の 2 枚のフロッピーの内 容を 1 枚のフロッピーに収めたものだ。 boot. flp の問題点は、 2.88MB のデータを格納できる フロッピーが必要になることだ。 ハードウェアによっては d ⅱ vers. flp が必要になることもあるし、不要なこともある。イン ストーラがすべてのハードウェアを検出できれば、このフロッピーは必要ない。検出できな ければこのフロッピーが必要になる。ライプファイルシステムが入っている CD がない場合、 fixit. flp が必要になる。このフロッピーに実際の修理ユーティリティが入っているからだ。 これらのファイルをフロッピーにコピーするには、 dd を使用する。必要な *. flp ファイル キット以外の準備 とよい。そしてフロッピーを書き込み禁止にする。 フロッピーのラベルに、コピーしたファイルの名前と FreeBSD のバージョンを書いておく # dd if=fixit. flp of=/dev/fdo ごとに、フロッピーを入れ替えながら次のコマンドを繰り返せばよい。 フロッピーをテストする前に、重要なシステム情報を印刷しておくべきだ。緊急時に詳し HACK # 71 い情報をすべて思い出せるとは限らない。最初に # more /etc/fstab しておくとよい。 ファイルシステムのレイアウトをコピー # Device /dev/adoslb /dev/adosla /dev/adosle /dev/adoslf /dev/adosld /dev/acdo p て 0 ( linproc /dev/fdo Mountpoint none /tmp /usr /var /cdrom /proc /compat/linux/proc /floppy FStype SWap ufs ufs ufs Cd9660 procfs linprocfs rw msdOS 0ptions SW て 0 , noaut0 rw, noaut0 Dump 0 1 2 2 2 0 0 0 0 Pass# 0 1 2 2 2 0 0 0 0 こでは、単に more コマンドで画面に表示してみた。 自分のシステムでセットアップして いる印刷方法に応じて、その出力を直に lpr に送ってもよいし、いったんファイルにリダイ レクトした後でプリンタに送ってもよい。

10. 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 な