追加 - みる会図書館


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

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

日替わりで雑学を表示ー 23 すばらしい。今日がフーサック ( Hoosac ) トンネルの記念日 ( 筆者の故郷を思い出させてく れる出来事 ) だということを忘れていた。 calend 訂の出力を自動化することは、簡単な作業だ。ログインまたはログアウトするとき に雑学を見たければ、単に自分の . cshrc または . logout ファイルに行を追加すればよい。プ ログラムのパスを追加すべきなので、次のように which コマンドの出力を使用するとよい。 HACK # 6 % echo which calendars 〉〉 . cshrc こでも、わ > " で追加することを忘れないでほしい。あるいは、 を設定してもよい咄 ack # 幻を参照 ) 。 . cshrc ファイルで noclobber いろんな遊び もちろん、その他にも、 では 2 つの例を紹介する。 現在の時刻 日付や時間に関する小さなハッキングを自由に設定できる。 ターミナルで作業をしているとき、いま何時かを知りたくなったことがあるだろう。もち ろん、 date を使用できるが、その出力はとても小さいし退屈だ。今度、何時かを知りたくなっ たら、次のコマンドを試してみてほしい。 アかもしれない。 % grdc 何と、別の部屋からも見えそうだ。このヒントを自分の相棒に教えるのは、面白いアイデ を追加すると、ログインするときに天文学的な説明を表示してくれる。 まるで、間抜けな会社員 ( Dilbe のが書いたような説明だ。 ~/. cshrc に /usr/games/pom の行 ときや、経営陣の行動を予測するときに役立つ。 pom ユーティリティは現在の月の相を表示する。これは、ソフトウェアの完成目標日を選ぶ も有益な説明が載っている。 んだことがあるだろうか。このマニュアルページには、これまでに筆者が見てきた中でも、最 これまでに man pom と実行して、 pom ( phaseofthemoon : 月の相 ) のマニュアルページを読 月の相 ルに組み込まれたパスワード保護付きのスクリーンセーバーのようなものである。 Cc] を押して再びログインするまで、ターミナルは時刻を表示し続ける。これは、ターミナ 筆者の場合、 ~ /. logout に /usr/games/grdc を追加している。ログアウトすると、℃国 ] +

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

HACK # 56 272 ー 6 章システムのセキュリティ 表 6-1 拡張パー arch nodump sappnd schg sunlnk uappnd uchg uunlnk フラグ名 ミツンヨンのフラグ ューザによる削除不能 ューザによる変更不能 ューザによる追加のみ システムによる削除不能 システムによる変更不能 システムによる追加のみ ダンプしない アーカイプ バックアップを強制または防止 ダンプからファイルを除外 ログに作用 バイナリと /etc に作用 バイナリと /etc に作用 既存のデータの変更を防止 あらゆる種類の変更を防止 削除と名前変更を防止 % chflags uchg important file % 15 -10 important file い。 ) 実際に、このファイルを変更できなくなったことを確かめてみる。このファイルを vi で い理由だ ! 」といった言葉を略すべきだったのかもしれないし、そうではないのかもしれな ていなかった文字が 0 だったのだろうと推測する。おそらく、「これがファイルを変更できな ファイルのフラグを表示するには、 ls -10 と実行する。 ()s のオプションのうち、使われ - 1 dru wheel uchg 14 Dec 1 11 : 13 important file 開き、行を追加し、変更を保存しようとして wq と入力すると、次のようなエラーが出る。 Read-onIy file, not written; use ! t0 override. このエラーメッセージに従って、 wq ! と入力してみる。 Error: important file: 0peration not permitted. もはや自分のファイルを変更できなくなったようだ。スー ても、同じ結果になるだろう。 次に、 echo を使用して、ファイルに行を追加してみる。 % echo "test string" 〉〉 important file important file: 0peration not permitted. 最後に、ファイルの移動、削除、コピーを試してみる。 % mv important file test ノヾ ーユーザになって試したとし mv: rename important file t0 test : Operation not permitted

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

17 ターミナルと X のバインディングを使用ー 一方、それなしでは生きていけないほど便利な新しいマッピングを見つけたら、それらを 恒常的なものにしよう。 FreeBSD システムのスーパーユーザの権限を持っているならば、注 意深く /etc/rc. conf にマッピングを追加すればよい。 こでは、 2 つのマッピングを追加し てみる。 1 つは lynx を [ メニュー ] キーにマップし、もう 1 つは startx を左 CGUI] キーに マップする。 keychange="64 lynx" keychange="62 startx" スーパーユーザで設定したこれらのマッピングは、システム上のすべてのユーザに影響す る。自分個人のマッピングを保存したければ、シェル設定ファイルの最後に、固有の kbdcontrol コマンドを追加すればよい。筆者の場合、 ~/. cshrc ファイルの最後のあたりで、末 尾の endif の直前に以下の行を追加した。 % kbdcontrol -f 64 "lynx" % kbdcontrol -f 62 "startx" X でマッビングを使用 上記のマッピングはとても便利だが、新たにマップしたキーを X Wmdow セッションで試 してみるとどうなるだろう。キーを押しても、何も起こらない。抗議のビープ音さえ鳴らな い。これは、 X セッションの間は X プロトコルがすべての入出力を扱うからである。 X の GUI 上でもキーポードバインディングを使用したい場合、いくつかの選択肢がある。 1 つの方法は、自分が使用しているウインドウマネージャのマニュアルを読むことだ。ほと んどの新しいウインドウマネージャには、ポイント & クリック方式でキーポードバインディ ングを管理するインタフェースがある。筆者のお気に入りの選択肢は、 xbindkeys config ユー ティリティを使用することである。 xbindkeys config は、 po ホコレクションから入手できる ([Hack # 84 ] を昭 ) # cd /usr/ports/xll/xbindkeys config # make install clean xbindkeys config を使用するには、 xbindkeys も必要になる。 # cd /usr/ports/xll/xbindkeys # make install clean HACK # 4

4. 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 の付くディレクトリは、システムのバイナリが入っているので特に重要だ。ほ

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

HACK # 24 テフォルトのブートメ二ュ する必要がある。 /b00t ディレクトリには loader というプログラムも入っている。 ーをカスタマイズー 115 このアプリケーションは、 プートプロセスの仕上げをする役割を果たす。そのために、 10a der は 2 つの設定ファイル loader. rc と loader. conf を使用する。 loader. rc の中を覗いてみよう。 # more loade て . て ( \ Loader. rc \ $FreeBSD: src/sys/boot/forth/loader. rc,v 1.2 1999 / 11 / 24 17 : 59 : 37 dcs Exp $ \ 追加のコマンドを取り込む include /boot/loader. 4th \ loader. rc を読み込んで処理する start check-password \ 特に設定しなければ、この時点で自動的に自動ブートが働く ここでは、システムの破壊者ではなくハッカーになることを意図している。全く ブートしなくなったシステムなど、使ってもちっとも楽しくないからだ。した がって、 / boot の下のファイルをいじり回す前に、応急修理キットを必ず用意して おくべきだ ( 詳しくは、「 [Hack # 71 ] 応急修理キットを作成」と、 F[Hack # 72 ] F 「 eeBSD の復旧手順を実施」を参照 ) 。また、ファイルを編集するときには特に 警戒し、変更を保存する前に入力ミスがないかどうか十分に注意しなければなら \ バスワードのテストーバスワードがあれば先に自動ブートを実行 ない。 バックスラッシュ ( \ ) で始まる行はコメントだ。さらに トを追加するには、 # の後にコメントを書けばよい。 include /boot/loader. 4th # この行を削除してはいけない ! コマンドが入っている行にコメン start # この行を削除してはいけない ! これらは追加するにふさわしいコメントだ。プートローダが動くために必要なので、 らの 2 行を決して「削除してはいけない」からである。 このファイルを編集する前に、バックアップとしてコピーを作成しておくべきだ。 # cp loader. rc loade て・ .0 て ig これ その後で、 beastie. 4th を使用するようにとシステムに伝えるため、十分に「注意」しなが ら、 /boot/loader. rc の最後に以下の行を追加する。

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

HACK # 6 Nov 27 Nov 27 Nov 27 Nov 28 Nov 28 22 ー 1 章ユーザ環境のカスタマイズ % grep fortune ~ /. ( sh て ( /usr/games/fortune 入っていなければ、次のようにして追加する。 % ech0 ' /usr/games/fortune ・〉〉 ~/. cshrc わ " を 2 つ使用することを忘れないでほしい。さもないと . csh 江ファイルの内容が消えて しまう。変更をテストするには、シェルコマンド source を使用して、 . cshrc ファイルの内容 を再び実行すればよい。この方法は、ェイリアスを更新して直ちに利用したい場合にとても 便利だ。 % 50u て ( e ~ /. ( Sh て ( lndi 幵 erence will be the downfall of mankind, but who cares? ( 無関心は人類の滅亡につながるが、いったい誰が関心を持つのだろうか。 ) ターミナルからログアウトするときにも格言を表示したければ、 . logout ファイルの最後に fortune コマンドの行を追加すればよい。このファイルが存在しなければ、次のコマンドを実 行して、ファイルを作成すると同時に fortune コマンドの行を追加できる。 % echo ・ /usr/games/fortune' 〉 ~ /. logout 今回はファイルを新たに作成するので、わ " を 1 つしか使用しなかった。ファイルがすで に存在する場合には、既存のファイルの最後に追加するために、わ " を 2 つ使用しなければ ならない。 信じられないかもしれないが、 fortune にもスイッチがある。いくつかのスイッチは、他の スイッチよりも興味深い。 man fortune と実行してマニュアルページを読んで調べてほしい。 本日の雑学を表示 筆者は雑学オタクなので、 calendar コマンドが大のお気に入りだ。このコマンドは、 calendar という名前に反して、今月のカレンダーを表示するわけではない ( それは ( al の仕事だ ) 。そ の代わり、現在の日付に関連した雑学を表示する。 % calendar Nov 28 Nov 27 A1fred NobeI establishes Nobe1 Prize, 1895 Friction match invented, England, 1826 Hoosac Railroad Tunnel completed, 1873 , in NW Massachusetts lndependence Day in Albania and Mauritania lndependence 行 om Spain in Panama Proclamation of the Repub1ic in Chad Jimi Hendrix (J0hnny A11en Hendrix) is born in Seatt1e, 1942

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

PF を使用して無線ネットワークを保護 pass in on $int if 行く authorized hosts 〉 t0 any keep state pass out on $int if from any t0 く authorized h0StS> keep state ー 323 HACK # 65 これらのルールの直後に、未許可のホストが Web サーバと DNS サーバにアクセスできる ようにするためのルールを追加する。 pass in on $int if proto tcp from ! く authorized hosts 〉 t0 $auth server pass in on $int if proto {tcp, udp} from any t0 $dns server port domain \ keep state これで、 authorized hosts テープルのすべてのホストが、インターネットに完全にアクセス することができる。他のホストは、名前の検索と Web サーバへのアクセスだけを実施でき る。さらに、いくつかの簡単なルールを追加して、許可していないユーザが Web サイトを参 照しようとしたときに拒否ページを表示してみる。 NAT セクションに次のルールを追加する。 rdr on $int if proto tcp from ! く authorized h0StS> t0 any port www - 〉 \ $auth server このルールは、未許可のホストがリモートマシンの翻ポートへのアクセスを試みると、そ のアクセスを拒否ページを返す Web サーバにリダイレクトする。ファイアウォールのポック スまたは別個のマシンに、 Web サーバをインストールしてもかまわない。筆者の場合、他の Web サーバと混同することを防ぐため、ファイアウォール上で Apache を実行し、 127.0.0.1 とポート 8080 で待機させている。 Apache を設定 OpenBSD をインストールすると Apache もデフォルトで入っている。そこで Apache の設 定を変更し、ゲートウェイ ()P アドレス 127.0.0.1 ) のポート 8080 上で待機し、すべての URL に対して同じページを返すように設定する。 (Apache は、 FreeBSD の po ホコレクションと NetBSD のパッケージコレクションからも入手できる。 ) 最初に、 /etc/rc. conf の httpd flags パラメータで、 Apache を起動するように設定する。次 に、 Apache の設定ファイル /var/www/conf/httpd.conf を編集する必要がある。 Listen ディレ クテイプを探し、 127.0.0.1 : 8080 を追加する。そして以下のような VirtuaIHost 工ントリを作 成する。 く VirtuaIHost 127.0.0.1 : 8080 > ServerAdmin none DocumentRoot /var/www/auth

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

HACK 162 ー # 34 3 章ブートとログイン環境 /etc/ssh/sshd config こで少し考えてほしい。仮想ターミナルからログインしないとしたら、いったいユーザは どうやってシステムにログインするのだろうか。最もありそうなのは ( そして理想的なのは ) 、 ssh を通してログインすることだ。 SSH デーモンを実行しているシステムで / et ( / ssh / sshd config に 行を追加すれば、 ssh でシステムにログインできるユーザを正確に制御することができる。 制御する方法は 2 つある。 1 つは A110 て oups を使用する方法だ。デフォルトでは、すべての グループ ( つまりすべてのユーザ ) がシステムに ssh でログインできる。もう 1 つは AIIowUsers を 使用する方法である。こちらも、デフォルトでは、すべてのユーザが ssh でログインできる。 例として、ユーザ genisis 、 biko 、 dru だけに、特定のシステムに ssh でログインすることを 許可したいとする。まず、これらのユーザを含むグループとして、て emote を作成してみる。 # grep 100 /etc/group # pw groupadd remote -g 100 -M genisis biko dru この例では、最初に、グループ ID として 100 を使用していないことを確認した。そして、 pw groupadd コマンドでて emote グループを作成し、 GID を 100 とし ()g 100 ) 、 3 人のメンバー を追加した ()M genisis biko dru) 。 次に、 ssh によるアクセスを、このグループのメンバーだけに制限する。 # echo ' A110 roups remote' 〉〉 /etc/ssh/sshd config グループを指定する代わりに、 3 人のユーザを追加してもよい。 # echo ・ A110 se て 5 genisis biko dru ・〉〉 /etc/ssh/sshd config A110 印 ups と A110 se て s のどちらにも該当しないユーザが、 SSH デーモンに接続しようと した場合でも、パスワードの入力を求めてくる。しかし、たとえユーザが正しいユーザ名と パスワードを与えたとしても、接続の試みは失敗し、 "permission denied" のエラーメッセー ジが出る。 SSH デーモンはログイン失敗のメッセージをコンソールに表示し、そのメッセー ジのコピーを /var/log/messages に追加し、その日のセキュリティレポートの一部として root に電子メールを送る。 もっと細かく制御することもできる。「特定のユーザが常に同じシステムからログインする」 としたら、次のように設定することができる。 AlIowUsers genisis@10.0.0.2 biko@10.0.0.3 d て u@10.0.0.4 しかし、ユーザに静的な IP アドレスを与えていない場合には、こんなに細かく設定しては いけない。

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

HAC K # 56 274 ー 6 章システムのセキュリティ % chflags nouchg て esu 爬 このように実行すると、 resu 爬ファイルを変更できるようになる。ただし、 important stu 幵 ディレクトリについても no uc h g フラグを適用しなければ、保護されたディレクトリから resume ファイルを削除することはできない。 一部の変更を防止し、他の変更を許可 場合によっては、 uchg フラグだと少し強烈すぎることがある。例えば、ファイルを変更で きるようにしたいが、不注意でファイルを削除したくない場合には、代わりに uunlnk フラグ を使用すればよい。 % chflags uunlnk thesis こうすれば、このファイルを編集できるが、ファイルの移動または削除を試みると 0pe て a tion not permitted というエラーメッセージが出る。 uappnd フラグはもっと面白い。このフラグを設定すると、ファイルに追加することはできる が、既存の内容を変更することはできない。これは、プログ ( Web 上の日記 ) の場合に便利だ ろう。 % chflags uappnd myblog その反面、不便なところもある。 echo コマンドでファイルの末尾にコメントを追加するこ とはできるが、エデイタでファイルを開くことはできない。このフラグはファイルの移動と 削除も防止するので注意してほしい。 保護をログに記録 それでは、残りのフラグの説明を続ける。それは、スーパーユーザだけが管理できるフラ グだ。 sappnd 、 schg 、 sunlnk は、 u で始まるフラグと同等な働きをする。つまり、 s で始まる フラグはスーパーユーザ ( superuser ) 用、 u で始まるフラグはユーザ ( user ) 用だと考えれば よい。 一般ユーザにとって、追加に関するフラグは少し奇妙だと思うかもしれないが、システム のログを保護するには理想的だ。侵入者は、システムに侵入した後で、ログを変更または削 除して自分の形跡を隠すものだ。次のコマンドは、そんな侵入者の試みを妨害する。 # chflags -R sappnd /var/log

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

各種のアプリケーション向けに F 「 eeBSD をチュー TOP TABLE SIZE= サイズ さらに次の行を追加してもよい。 二ング ー 343 HAC K # 69 このオプションに / et ( / passwd の行数の 2 倍以上の素数を指定する。この値は top で使用す るハッシュのサイズを決める。 AMDK5/K6/K6-2 または Cyr ⅸ 6X86 チップでは、 LI キャッシュの書き込み用の割り付け がデフォルトで停止している。この機能を使用するには、以下のオプションを設定する。 options CPU WT ALLOC システムを NFS サーバとして使用しないことがわかっていれば、次のオプションで NFS サーバのコードの使用を中止すればよい。 options NFS NOSERVER カーネルメモリを節約する別の手段として、次の例に示すようにスワップデバイスの最大 数を定義する方法がある。複数のスワップデバイスを交互に使用するために、カーネルに 定容量のビットマップメモリを割り当てる必要がある。筆者の場合、ワークステーションで は 1 に、サーバでは 2 に設定している。サーバにスワップデバイスを追加する必要があると きには、簡単に別のパーティションを作成することができる。 options NSWAPDEV= 数 NIC ドライバ、 IPF(IPFilter) 、 IPFW()P Firewall) など、必要な機能をすべてカーネル内に 組み込みたければ ( つまり、機能をモジュールとしてロードしたくなければ ) 、以下の行を追 加してモジュールのコンパイルを省略すればよい。そうすればカーネルのコンパイル時間を ルモジュールを別々にロードできないので、機能を追加するにはカーネルを再コンパイルす MODULES OVERRIDE の利点はカーネルのコンパイル時間を短縮できることだ。欠点は、カーネ ネル設定ファイルで指定していなくても、 kldload でモジュールをロードすることができる。 デフォルトではすべての機能をモジュールとしてコンパイルする。その場合、たとえカー MODULES OVERRIDE= makeoptions 大幅に短縮できる ( 3 分の 2 くらいに短縮できることもある ) 。 現代のほとんどのネットワークカードとスイッチには、オートネゴシェーション ( 自動的に ネットワークの性能を最適化 る必要があることだ。