まづ、インターネットスーパーデーモン (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) を通して起動させるコトでフィルタリングが出来るってワケなのです。
で、具体的な書き方だけど、上に書いてあるよーな感じで書けば良いの。
あ、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
こんなふーに。