いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.113 / 読者数:1107名

こんばんは、うすだです。

ここのところ、また地震が多く発生しているような気がしております。

今、書いている最中にも、ここ名古屋で、ちょびっとですが揺れました。
愛知県西部が震源の小さいものでしたので、中越沖の方でなくてよかったのですが、 いつ大きな地震が起きてもおかしくないと思うと、安心してはいられません。

数年前に、リュックを用意するなどして備えたのですが、最近、 やや放置気味になっていましたので、また見直そうと思いました。

まあ、日本に住んでいる以上、どこにいようが、 地震からは逃れられないと思いますので、びくびくせず、 平常心でいられるよう心がけたいです。

…が、小心者なので、なかなかそうもいかないのが、われながら情けないところです。

ちょいネガティブですが、今週も、はりきってまいりたいと思います。

今週のお題 - host.conf を触ってみる

普段、深く考えずに、ホスト名などを使ってアクセスしていますが、その裏では、 IP アドレスやホスト名を得るため、 DNS サーバに問い合わせたりなどという複雑な処理を、 こっそりと行ってくださっていますよね。

DNS の場合、/etc/resolv.conf というファイルを変更しますと、 振舞いなどを変えることができます。

Vol.021 - resolv.conf を触ってみよう
http://www.usupi.org/sysad/021.html

しかし、実際には、DNS だけでなく、/etc/hosts ファイルや NIS などを使って、 解決しているところが多いのではないかと思います。

そして、まず DNS に問い合わせてほしいなとか、 /etc/hosts に重複して登録されていても問題ないようにしたいなとか、 いろいろなご要望が存在するのではないかと思います。

そんなとき、/etc/host.conf というファイルを変更することで、 振舞いを変えることができます。

もしニーズがなくても、この際ですから、いろいろ設定を知っておくと、 そんなシチュエーションのときに、役立つのではないでしょうか。

というわけで今週は、host.conf の設定方法をご紹介したいと思います。


それでは、まず前半で、設定項目を一気にご紹介し、後半では、 それらの動作確認をしてみたいと思います。

設定できる項目のうち、今回ご紹介するものを、以下に示します。

  • order {bind,hosts,nisの順序の指定}
  • multi {on|off}
  • reorder {on|off}
  • trim {ドメインの指定}

spoof 関連は、きっちり動作確認できていませんので、申し訳ありませんが、 今回はご紹介を見送りたいと思います。すみませんごめんなさい。


まずは、order です。
問い合わせる順序を指定します。指定できるのは bind(DNS), hosts, nis で、 カンマ(,) で区切って複数指定します。(ひとつだけでも OK です。)
たとえば、

  order hosts,bind

と指定しますと、 まず /etc/hosts を見に行き、解決しなければ DNS に問い合わせます。

…がしかし、今どきは /etc/nsswitch.conf の hosts の設定を見に行くようでして、 host.conf の order を変更しても反映されないようです。
ですが、古いディストリビューションやアプリケーションでは、 こちらを参照することもありますので、 nsswitch.conf と同じ設定にしておいた方が無難だと思います。

 

次は、multi です。
/etc/hosts に IP アドレスが複数設定されていたときに、 すべて返してもらうための設定です。
たとえば、/etc/hosts に、

  192.168.1.1      usugw.usu.usupi.org
  10.0.0.1         usugw.usu.usupi.org

と、usugw の IP アドレスが複数登録されているとき、host.conf に

  multi on

と書いておけば、両方の IP アドレスを返してくれます。
(multi の指定がなければ、最初の IP アドレスだけを返します。)

 

その次は、reorder です。
複数の IP アドレスが得られたときに、同じサブネット内のアドレスを、 先に返してもらうための設定です。
たとえば、前述の /etc/hosts の場合、自分の IP アドレスが 10.0.0.2 だと、 host.conf に

  reorder on

と書いておけば、10.0.0.1 を先に返してくれるようになります。

 

そして最後に、trim です。
IP アドレスからホスト名を得たときに、trim で指定したドメインと一致すると、 その部分を取り除いた名前を返すようにするための設定です。
コロン(:)やセミコロン(;)、カンマ(,)で区切ることで、 複数のドメインを指定することもできます。
たとえば、192.168.1.1 のホスト名を問い合わせて、 usugw.usu.usupi.org が得られたとき、host.conf に

  trim .usu.usupi.org

と書いておけば、.usu.usupi.org を取り除いた usugw だけを返します。
ただし、この設定は、DNS にのみ効果があります。


さらっとした説明が終わりましたので、動作確認をしてみましょう。

…の前に、動作確認用の Perl スクリプトを、先にご紹介しておきます。
以下は、ホスト名から IP アドレスなどを得るためのスクリプトです。

  #!/usr/bin/perl
  while(my $host = shift) {
      my ($name, $aliases, $t, $l, @addrs) = gethostbyname($host);
      print "Name: $name\nAliases: $aliases\nAddresses: ";
      for my $addr (@addrs) {
          print join('.', unpack("C*", $addr)) . " ";
      }
      print "\n";
  }

これを、getaddr.pl という名前で保存しておいてください。
そして、IP アドレスからホスト名などを得るためのスクリプトです。

  #!/usr/bin/perl
  use Socket;
  while(my $addr = shift) {
      my ($name, $aliases, $t, $l, @addrs) =
          gethostbyaddr(inet_aton($addr), AF_INET);
      print "Name: $name\nAliases: $aliases\nAddresses: ";
      for my $addr (@addrs) {
          print join('.', unpack("C*", $addr)) . " ";
      }
      print "\n";
  }

これを、gethost.pl という名前で保存しておきましょう。

 

…ええっと、順番通りにいきますと、まずは order の動作確認をすべきなのですが、 変更しても変わらないため、割愛させていただきます。

 

というわけで、まずは、multi です。
/etc/hosts に、以下のような設定を追加してみてください。

  192.168.1.1      usugw.usu.usupi.org
  10.0.0.1         usugw.usu.usupi.org

host.conf に multi の設定がない場合、

  % ./getaddr.pl usugw.usu.usupi.org
  Name: usugw.usu.usupi.org
  Aliases:
  Addresses: 192.168.1.1

IP アドレスは1つしか得られません。
ですが、host.conf に multi on の設定がある場合は、

  % ./getaddr.pl usugw.usu.usupi.org
  Name: usugw.usu.usupi.org
  Aliases:
  Addresses: 192.168.1.1 10.0.0.1

2つとも得られるようになります。

 

次に、reorder です。
自分のアドレスが 10.0.0.2 の場合でも、普通に問い合わせると、前述のように、 192.168.1.1 が先に得られます。
しかし、host.conf に reorder on の設定がある場合、

  % ./getaddr.pl usugw.usu.usupi.org
  Name: usugw.usu.usupi.org
  Aliases:
  Addresses: 10.0.0.1 192.168.1.1

10.0.0.1 が先に来るようになります。

 

そして最後に、trim です。
普通に、10.0.0.1 のホスト名を得ようとしますと、

  % ./gethost.pl 10.0.0.1
  Name: usugw.usu.usupi.org
  Aliases:
  Addresses: 10.0.0.1

usugw.usu.usupi.org という名前が得られます。
ここで、host.conf に、

  trim .usu.usupi.org

という設定を追加しますと、

  % ./gethost.pl 10.0.0.1
  Name: usugw
  Aliases:
  Addresses: 10.0.0.1

usugw だけになります。
(ちなみに、trim usu.usupi.org と設定すると、usugw. が返ります。)


以上、host.conf の設定方法と確認方法を、簡単にご紹介しました。

ご使用の環境は、上記の例とは異なると思いますので、環境に合わせて、 いろいろ設定や動作確認をしていただきたいと思います。

nsswitch.conf につきましては、これ以上長くなるとアレですので、 宿題でご紹介させていただく、という暴挙に出ることにしました。

宿題の答え

先週の宿題は、

  パスワードの推測を、もっと複雑にしてみましょう。

でした。

/usr/share/dict/words は単純な単語だけですので、 これらに数字や記号を挿入するなどして、 やや複雑なパスワードでも見つけられるかどうか、 試してみたいと思います。(あくまでも技術的観点で!)

ここでは単純に、数字や記号を最後につける方法を、試してみましょう。
パスワードの候補を入力して、 それに数字や記号を最後につけるフィルタを作ってみます。

  #!/usr/bin/perl
  my @PASSWD_CHARS = ('a'..'z', 'A'..'Z', '0'..'9',
      split(//, "!\"#\$\%\&()=~|{[@}]*:+_\\?>.<-^/"));
  while(<>) {
      chop;
      foreach my $ch (@PASSWD_CHARS) {
          print "$_$ch\n";
      }
  }

あまりきれいではありませんが、気にしないでください。
たとえば、これを incpasswd.pl という名前で保存したら、 試しに以下を実行してみましょう。

  % echo test | ./incpasswd.pl
  test0
  test1
  test2
  ...

test という候補が、いっぱい(90個)に膨れあがります。

  % ./incpasswd.pl < /usr/share/dict/words

なんてことをすると、ものすごいことになりますね…。

では、確認をしてみましょう。
前々回ご紹介した makepasswd.pl で、暗号化されたモノを作ります。

  % ./makepasswd.pl test1 '$1$ultimate'
  $1$ultimate$nzUiC3m1aWzBODAovHDZY.

そして、前回ご紹介した searchpasswd.pl で確認します。
(ユーザ名に root を指定していますが、特に意味はありません。)

  % echo test | ./incpasswd.pl | ./searchpasswd.pl root \
  '$1$ultimate$nzUiC3m1aWzBODAovHDZY.'
  root's password: test1

はい、当り前ですが、ばっちり見つけられました。
ちなみに、/usr/share/dict/words を使って試してもいいのですが、 相当な時間がかかることが予想されます。お暇なかたのみ、お試しください。
(/usr/share/dict/words だけでも、わたしの PC では 10分くらいかかりました。 その90倍では…1日つぶれてしまいますね。)

  % cat /usr/share/dict/words | ./incpasswd.pl | \
  ./searchpasswd.pl root '$1$ultimate$nzUiC3m1aWzBODAovHDZY.'

あとほかに、数字や記号を先頭に付加するとか、大文字小文字に変換するとか、 いろいろバリエーションを増やせると思います。
余力のあるかたは、いろいろ考えて試してみてください。

…なんのこっちゃわからん、と思われた貴兄は、以下をご覧ください。

Vol.111 - パスワードの暗号化について理解する
http://www.usupi.org/sysad/111.html
Vol.112 - パスワードを推測する
http://www.usupi.org/sysad/112.html

今週の宿題

今週の宿題は、

  nsswitch.conf の hosts の設定方法を確認し、host.conf の order と
  設定を合わせましょう。

です。

nsswitch.conf の設定は、ご覧の通り的にわかりやすいものです。
ですので、nsswitch.conf の設定だけ変更してみたり、 host.conf の設定を合わせてみたりなど、いろいろやってみてください。

あとがき

毎年、ネタにしようと思っているのに、 直前になって忘れるという失態を繰り返してましたが、今年は、 ちゃんと忘れずにいました。
…といいますか、今年は忘れないよう、メモっていました。

それは、「システム管理者の日」のことです。

毎年、7月の最終金曜日を「システム管理者の日」と定めて、 システムの利用者が管理者にプレゼントしたりするのだそうです。
(ということは、今年は、7/27 がその日ですね。)

とはいえ、一般的には、まだまだ知られていないように思います。
ですので、さりげなく、以下のページをプリントアウトして掲示したり、 ログイン時にメッセージを強制出力したりなど、今のうちにアピールしておくと、 当日は、祝福の嵐を浴びることになるかもしれませんよ。

System Administrator Appreciation Day
http://www.sysadminday.com/

もし万が一、すごい祝福されたとか、 プレゼントの山ができたという貴兄がいらっしゃいましたら、ご連絡ください。 (うらやましがりますので。)

 

さて、来週は、諸般の事情により、といいますか、 ちょっと炎上している予定ですので、お休みをいただきたいと思います。
すみませんが、よろしくお願いします。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週…じゃなくて再来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−はやく秋にならないかな…栗の季節に。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本