Vine2.5 + So-net ADSLでのサーバ構築メモ

Contents List

Contents

  1. はじめに/更新情報
  2. 導入目的
  3. インストールするOS
  4. サーバ設定概略
  5. ホスト名
  6. ssh
  7. inetd/TCP Wrappers
  8. Samba
  9. Apache
  10. DDNS
  11. ACCAのルーター設定
  12. ProFTPD
  13. WinSCP
  14. Postfix/Qpopper
  15. 使わないサービスの停止
  16. 応用編

VineでのintedとTCP Wrappers

TCP Wrapperの仕組み

最初、ここがいまひとつ分かりませんでした。通常、サーバと私たちが言ってるもの(WebとかメールとかftpとかSambaとかsshとか)は、当然これらのサーバのあるドメインにアクセスした際、どのポートを呼び出したかによって、それに対応するサーバがそれに応答する(これがデーモンでいいのかな?)のですが、サーバによってはそれ程立ち上げる頻度が高くないものもあります。

だから、そういった起動頻度の少ないサーバは、常時立ち上げずにその代わりになるTCP Wrapperというプログラム(こいつもサーバデーモンですよね)を立ち上げて置いて、こいつに任せてしまおうと言うことです。で、必要なサーバをTCP Wrapperがその都度呼び出して動かそうと。これだと、使わない余分なサーバが立ち上がらないのでサーバマシンに負荷がかかるのを押さえられると。更に、TCP Wrapperを経由してサーバを起動させる場合には、hosts.allowとhosts.denyという設定をすることで、アクセスコントロールすることができるのです。

実際の設定

では、実際にはどういう設定をするのか?重要になるファイルはまず以下の3つです。

まず、viでinetd.confを開いてみます。

# To re-read this file after changes, just do a 'killall -HUP inetd'
#
#echo   stream  tcp     nowait  root    internal
#echo   dgram   udp     wait    root    internal
#discard        stream  tcp     nowait  root    internal
#discard        dgram   udp     wait    root    internal
#daytime        stream  tcp     nowait  root    internal
#daytime        dgram   udp     wait    root    internal
#chargen        stream  tcp     nowait  root    internal
#chargen        dgram   udp     wait    root    internal
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.proftpd
#telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
(中略)
#time   dgram   udp     wait    nobody  /usr/sbin/tcpd  in.timed
#auth   stream  tcp     wait    root    /usr/sbin/in.identd in.identd -e -o
#swat      stream  tcp     nowait.400      root /usr/sbin/tcpd swat
	

とりあえず#でコメントアウトしてあるのは動かしてないヤツです。あと、各行の要素がどういう意味かを見ていきましょう。もう一度例として1行抜いてみます。

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.proftpd
	

一番左はサーバの名称(この場合FTP)、その後の4つはとばして、5つ目の/usr/sbin/tcpd、このtcpdというのがtcp daemon、たぶんTCP Wrapperのデーモンでしょう。で右側が tcpd で動かすプログラム(デーモン)ということになるはずです。

実際に、ls /usr/sbinしてみると、確かにここにtcpdとin.proftpdというヤツがあります。では先程設定したsshをTCP Wrapper経由で動かせるように設定をします。以下の1行を加えてください。

ssh  stream  tcp  nowait   root /usr/sbin/tcpd sshd -i
	

sshdというのもtcpdと同じく、/usr/sbinにあるのでこういう感じになります。(-iオプションは、man sshdとかで調べましょう)。で、こうやってinetd.confでTCP Wrapper経由で起動するデーモンを指定した後、hosts.allow/denyで、動作環境を制限します。

vi /etc/hosts.denyします。基本的な考え方は、原則としてはすべて禁止して、必要なものだけ許可をするです。よってhosts.denyは以下のようになります。

ALL: ALL
	

そして、hosts.allowで、許可設定を行います。現状では、sshをサーバーマシン(localhost/127.0.0.1)以外のLAN内のPC(192.168.0.)で使いたいということになるので、

sshd : 192.168.0.0/255.255.255.0
	

と設定します。(書き忘れましたが、hosts.deny/allowの書き方は、許可するもの : 対象範囲です)。まぁ自分だけしか使わない訳なので、複数のユーザでLAN内で使っているわけでないなら、下記のようにしても良いかと思います。

ALL : 192.168.0.0/255.255.255.0
ALL : 127.0.0.1
	

後々、メールサーバとかftpサーバとかをインターネット上に公開する場合に、またこのhosts.allowで設定する感じになります。

さて、設定が終わったので、TCP Wrapperのデーモンを再起動しましょう。/etc/rc.d/init.d/inet restart。これでTCP Wrapperを経由してsshを起動させるように設定を変えたわけですが、先程sshdを既に起動させているので、これでは本当にinetd経由でsshを起動しているかどうか分かりません。ということで、まずsshdの起動をストップさせます。suになって、

/etc/rc.d/init.d/sshd stop 次にntsysvで起動時に立ち上げるデーモンの一覧を表示させて、sshにチェックが入っていれば外しましょう。これで一旦、クライアントマシン上のsshからログアウトします。そして、サーバ本体のターミナル上でsshが止まっているかどうかを確認しましょう。

/etc/rc.d/init.d/sshd status おそらくsshdは停止中ですというメッセージが出てくると思います。では、もう一度クライアントのWindows2000からTeratermを起動させて、sshで接続してみましょう。おそらくうまく接続できるはずです。つまり、TCP Wrapperを介してsshdが起動されたと言うことになります。これで成功です。

copyright © 2002 Kei All Right Reserved webmaster@maitrise.net
Last Modified