Linux による各種サーバー構築


インターネットスーパーデーモンと TCP Wrapper


[前の階層へ] | [トップページに戻る]





まづ、インターネットスーパーデーモン (inetd) ってゆーのは、inetd 自体が接続要求を受け付けた上で各デーモンへと接続取り次ぐってゆーよーなモノで、その上で IP アドレスによるフィルタリングを行うのが TCP Wrapper ってモノなのです。

まぁ、TCP Wrapper も具体的には、tcpd ってゆーデーモンなんだけど・・・。
それってゆーのはデーモンをくるむ (Wrap) モノで、インターネットスーパーデーモン (inetd) の設定ファイルである /etc/inetd.conf に書かれるのです。

実際に inetd.conf を見てもらうのが早いと思うんだけど・・・

ftp stream tcp nowait /usr/sbin/tcpd delegated SERVER=ftp

上の例で書くと、まず TCP 21番ポートで tcpd が受けてだいぢょぶそーなら delegated を起動して接続を取り次ぐってゆーよーな感じ。

で、どれが危険で、どれが危険ぢゃないかを判断する要素ってゆーのが、/etc/hosts.allow と /etc/hosts.deny。

前者は、tcpd が接続を受け付ける要求の一覧。
後者は、tcpd が接続を拒否する要求の一覧。

具体的には、IP アドレスによるフィルタリングとかをする際のフィルタリング設定が、/etc/hosts.allow と /etc/hosts.deny ってワケ。

まぁ、hosts.deny で「すべてを拒否」にしておいて、hosts.allow で 127.0.0.1 と 192.168.0.0/24 だけ許可とかって書くのが一般的みたい。
# 詳しい書式は、やっぱし man hosts.allow とかして見て(爆)

だから、誰にでも使われちゃ困るデーモンは、インターネットスーパーデーモン (inetd) から TCP Wrapper (tcpd) を通して起動させるコトでフィルタリングが出来るってワケなのです。

もっとも、ネットワークインターフェースによるフィルタリングは TCP Wrapper の機能にないと思ったから、IP Spoofing をされると TCP Wrapper の意味はない可能性もあるのです(苦笑)

ただ、それわもちろんプライベート IP アドレスが外部に漏れて(ばれて)いたら・・・の話だし、何よりセキュリティを TCP Wrapper だけに頼らなければ良いんだし。
# IP Masquerade でインターフェースによるフィルタリングもしとけば良いのです。

で、具体的な書き方だけど、上に書いてあるよーな感じで書けば良いの。
あ、UDP の場合には stream は dgram に。tcp は udp にすれば良いかと。

ポートの指定はどこでするのかって?

それは上でいう行頭の「ftp」ってゆーのがそーなの。
/etc/services で ftp が TCP 21 番ポートだってコトが定義されてるから ftp って書かれてれば /etc/services を参照して TCP の 21 番ポートだって分かるワケ。

だから、別のモノを通したいときには、services で名前を付けてポートを定義して、inetd.conf で上のよーに書けばおっけーなの。
それは、ftp に限らず Samba でもなんでもそだから。

例えば、Samba を inetd で TCP Wrapper 経由で起動させるなら inetd.conf に書くのは、こんな感じ。

netbios-ssn     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/local/samba/bin/smbd
netbios-ns      dgram   udp     wait    root    /usr/sbin/tcpd /usr/local/samba/bin/nmbd

もちろん netbios-ssn とかは /etc/services の方でポートとプロトコルは定義しとくのね。

netbios-ns	137/tcp
netbios-ns	137/udp
netbios-dgm	138/tcp
netbios-dgm	138/udp
netbios-ssn	139/tcp
netbios-ssn	139/udp

こんなふーに。