• ベストアンサー

inetdとTCP Wrapperについて

inetd及びTCP Wrapperは「inet.conf」「hosts.allow」「hosts.deny」の設定ファイルを参照してアクセス制御を行うとの事ですが、ここでいくつかの疑問があります。 (1)上記の3つのファイルを編集後、設定を反映させるにはデーモン等の再起動が必要かどうか。 (2)hosts.allow及びhosts.denyに記述した内容は、inetを経由しないサービスについても有効かどうか。 (3)inetd経由のデーモンはどのタイミングで停止するのか。 (1)についてですが、実験の結果、ファイルを編集後にすぐに反映される事はありませんでしたので、再起動などの作業が必要だと思いました。inetdを再起動しても反映されないようでしたので、killall -HUP inetd というコマンド(ネットで調べました)を行った所、反映されたようでした。この作業が正しいかどうか分かりませんので、ご意見頂きたいと思います。 また、killall のオプションである「-HUP」が何を示すのか分かりませんので、ご教授ください。 (2)についてですが、inetd.confに記述してあるサービスについてはhosts.allow及びhosts.denyの設定に従ってアクセス制御されている事は間違いないようです・・・が、inetdを経由しないサービスについてはアクセス制御されていないような気がします。inetd.confに記述していないサービスもアクセス制御の対象になるとも聞いた事がありますので、この点もご教授いただきたいと思います。 (3)についてですが、inetd経由でサービスを受ける場合には、そのサービスのセッションを確立後にデーモンが起動すると思います(間違いでしょうか??)。例えば、ftpサービスをinetd経由で提供しているとして、他のマシンからFTP接続するとデーモンが起動する・・・その後、クライアントがFTPを切断してからどのくらいでftpデーモンは停止するのでしょう? 間違い等は指摘お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Liqueur
  • ベストアンサー率51% (52/101)
回答No.5

> inetdの場合は「inetd restart」と「kill -HUP inetd」は > 同じ意味をなす、という理解で大丈夫でしょうか? 後者はより直接的に前者の動作をこなすものだと 思っておいてください。動作は同様になりますが 前者はいったんintedを停止し、起動するというプロセスを スクリプトで実行するのに対し、killコマンドは 現在起動しているjobに対し直接再起動する信号を送り 設定の読み直しを行います(リハッシュ)。 > libwrapd.aライブラリという言葉を始めて聞きました。 あいすみません、スペルミスです。libwrap.aライブラリです。 libwrap.aライブラリ、hosts.allow、hosts.deny この三つがTCPWrapperの実体です。 デーモンがコンパイルされる際にパスを指定しない (=組み込まない)のであれば制御は出来ません。inetd側で 制御させるように指定することは出来ます。通常 libwrap.aライブラリを組み込んでいないサービスに関しては そういった対策を施すことが多いです。 > 完了後に直ぐに切断するか、いくらか待つかと > いう点はどうでしょうか? う~ん、申し訳ありませんがこれは終了したのち すぐにソケットを閉じて終了されているだろう、としか 申せません。topコマンドなどでFTPプロセスを 確認してみてください。 推測ですが、FTPクライアント側で正常な 終了動作を行っていない場合、proftpd側の設定、 TimeoutIdle分だけ待った後に子プロセスを 消しているのかもしれません。

bulustar
質問者

お礼

ありがとうございます。 勉強させていただきました。

その他の回答 (4)

  • entree
  • ベストアンサー率55% (405/735)
回答No.4

> (1)上記の3つのファイルを編集後、設定を反映させるにはデーモン等の再起動が必要かどうか。 普通は不要だったような気がしますが・・・。というのも、inetd を使用した場合、tcpd (TCP Wrapper) 経由でデーモンが起動されるのは接続があった時点なので、接続があるまでは tcpd 自体、動作することはないわけですから。 ちなみに、kill -HUP inetd の -HUP (ハングアップ) は SIGHUP を表しています。 シグナルにはいくつかの種類があって、特によく使われるものとしては、 1 : SIGHUP 9 : SIGKILL (強制終了) 15 : SIGTERM (kill コマンドのデフォルト) があり、詳細については、/usr/include/signal.h から include されているファイルを見てください。(たとえば、Red Hat Linux の場合は /usr/include/bits/signum.h で定義されています) また、kill -HUP は kill -1 と書いてもかまいません。 > (2)hosts.allow及びhosts.denyに記述した内容は、inetを経由しないサービスについても有効かどうか。 TCP Wrapper をはじめとする hosts.allow、hosts.deny に対応しているアプリケーションは、これらのファイルを参照しますが、それ以外のアプリケーションは当然ながらこれらのファイルを参照しません。 > (3)inetd経由のデーモンはどのタイミングで停止するのか。 アクセスを受けた時点で接続され、切断された時点で停止します。クライアントが終了するとき、オープンしたソケットをクローズするのが普通なので・・・。

bulustar
質問者

お礼

回答ありがとうございます。 シグナルの件は非常に参考になりました。 (2)に関して TCP Wrapper に対応しているかどうかを判断するざ材料は何でしょうか?また、後から対応するように追加する事はできないのでしょうか? (3)に関して 回答者の方々の意見がほぼ一致しているのがこの問題ですが、私の勘違いかもしれません。私が疑問に思ったのは、以下の手順を行った後です。 1.クライアントからサーバへSSHで接続する 2.proftpdをinetd経由で動作させるように設定する 3.クライアントからFFFTPで接続する 4.FFFTPを切断する 5.接続しているSSHから、psコマンドでプロセスを表示させてみる この手順で、プロセスを表示させると、FFFTP切断後もproftpdが動作していました。ポートも21が開いていました。以上の点から、質問したような疑問を抱いた次第です。

  • Liqueur
  • ベストアンサー率51% (52/101)
回答No.3

(1) inetdまたはxinetdのトップレベルの設定ファイル及び 各サービスの設定ファイルの変更を行った場合、デーモンの 再起動が必要となります。killまたはkillallは信号を 送るコマンドで、その信号の強さは様々な種類があります。 kill -lかman kill、man signalなどで確認してみて ください(たとえば、何も引数を与えない場合に実行 されているのは15番のTERMですし、shutdown(halt)の 際にもkill信号が送られています)。kill -1 または kill -HUP でterminal line hangup、デーモンプロセスの 場合は再起動の動作になります。inetdの場合も同様で、 SIGHUPを受けとると、inetd は設定ファイルを再度 読み込ます。この際にサービスを追加・削除・変更も出来ます。 また、hosts.allowとhosts.denyの設定は、記述後 即座に適用され、サービスの再起動などは不要です。 (2)hosts.allow及びhosts.deny(TCP Wrapper)で 制御出来るサービスには、inetd経由のサービス、ssh、 portmapperにより提供されるサービス、加えてsftpdが あります。TCP Wrapperはlibwrapd.aライブラリで 提供され、TCP Wrapperにより制御を行いたいサービスは コンパイルオプションとしてlibwrap.aライブラリへの パスを指定することでTCP Wrapperによる制御が可能と なります。つまり、inetdを経由しないサービスも 対象になるということです。 (3)はサービスの完了後またinetdがソケットを監視します。 inetd独自のログタイプの設定にlog_on_success時に 記録できるDURATIONがサービスの継続時間になりますから、 そちらを確認すると正確な時間が割り出せると思います。

bulustar
質問者

お礼

回答ありがとうございます。 (1)に関して >kill -1 または kill -HUP でterminal line hangup、デーモンプロセスの場合は再起動の動作になります。 inetdの場合は「inetd restart」と「kill -HUP inetd」は同じ意味をなす、という理解で大丈夫でしょうか? (2)に関して libwrapd.aライブラリという言葉を始めて聞きました。パスを指定する事でTCP Wrapperによる制御が可能と ななる、との事ですが、パスを指定しない場合には、制御できないという事でしょうか? (3)に関して syslogにinetdのログを書き出してみれば、接続時間は分かりそうですね。xinetdの設定の仕方はWeb上にたくさん情報があるのですが、inetdはあまり多くないですね・・・。 >サービスの完了後またinetdがソケットを監視します。 完了後に直ぐに切断するか、いくらか待つかという点はどうでしょうか?

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

(1) inetd.confについてはinetdを再起動すれば反映されます。されなかったように感じたのは勘違いでしょう。 -HUP は通常は端末セッションの切断(HangUP)を意味します。例えばtelnetでログインしてviを使っている最中にネットが切れれば、vi とログインシェルに -HUPシグナルが送られ、各プログラムは終了します。 ただし、デーモンプロセスは端末を持たないため上記の意味での -HUPシグナルを受け取ることはありえません。つまり -HUPの意味が空いているのでそれを利用して、「設定ファイルを再読み込みする」という全く別の意味を与えることが多いです。整理すると、 ・通常プロセス→端末切断→終了 ・デーモンプロセス→設定ファイル再読み込み 行った作業は正しいです。 hosts.allow/denyについてはTCPwrapperが動作の都度読むはずなので特に対処はいらないでしょう。 (2) プログラムによるとしか言いようが無いです。あと、正しくはinetdがhosts.allow/denyを読んでいるわけじゃなくてinetdから起動されるTCPWrapperが読みます。TCPWrapperと無関係にこの2つのファイルを読むプログラムはあります。 (3) 「デーモン」とはサービスしていないときも稼動してサービス要求を待ちつづけるものを指します。したがって、inetdはデーモンですが、inetdから起動される各プログラムはデーモンとは呼びません。ソフトによっては設定で、(その1)デーモンとして起動 (その2)inetdから起動、といった区別があると思います。 クライアントがinetd.confに書いてあるポートに接続するとinetdは対応するプログラムを起動してそのクライアントとのセッションを渡します。その後はinetdはその処理に全く関知せず別のリクエストを待ちます。起動されセッションを受け取ったプログラムはセッションが閉じれば終了します。

bulustar
質問者

お礼

回答ありがとうございます。 (1)に関して ・inetdは再起動すればinetd.confが反映される ・hosts.allow/denyはTCPwrapperが動作の都度読むので編集終了後に直ぐに反映される この2点でしょうか。 (2)に関して >TCPWrapperと無関係にこの2つのファイルを読むプログラムはあります。 どんなプログラムがTCPWrapperと無関係にファイルを読み込むか、といった事が書いてある文書はあるのでしょうか?

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

(1)再起動はどうやりましたか? 停止してから起動しましたか? 場合によっては再起動というアクションが意味を成さず、停止→起動のアクションを行わなければならないものもあります。HUPは、ハングアップシグナルという意味で、大抵のプログラムではこのシグナルを受け取ると最初からプログラムを開始します。KILLはキルシグナル、INTはインタラプトシグナルです。シグナルで検索してみましょう。 (2)それは当然でしょう。hostsファイルを使うプログラムと使わないプログラムがあり、それはプログラム次第です。Windowsにもレジストリというデータ保存機構がありますが、使うソフトと使わないソフトがあります。ソフトの作成元に問い合わせるしかありません。 (3)前半はその解釈で問題ないと思います。後半は、これまたソフトによる、としか言えませんね。一般的には、セッション管理をInetdに任せる場合はクライアントから切断されたらさっさと終了するものが多いように思います。

bulustar
質問者

お礼

回答ありがとうございます。 私が行ったのは、restartでした。 停止→起動と、再起動の違いは初耳でした。調べておきたいと思います。

関連するQ&A

  • ファイアウォールは必要?hosts.allow と hosts.deny だけではダメ?

    ネットで調べたところ、次のことが分かりました。 ●TCP Wrappers (/etc/hosts.{allow,deny} で設定)は inetd または xinetdで制御されていないプロセスへのアクセスをブロックできない。 ●とはいえ、sshd, sendmail は inetd/xinetdで制御されていないものの、/etc/hosts.{allow,deny}を自ら読みに行って、ここで許可されてないアクセスは拒否することができる。 sshd や sendmail も hosts.allow と hosts.deny で守ることができるとすると、Firewall(iptables)は、なぜ必要なのでしょうか?hosts.allow と hosts.deny で守ることができないデーモンがあるのでしょうか?

  • xinetd を使う場合の hosts.allow/hosts.deny

    サーバ:CentOS 4.4 xinetd を使ってアクセスコントロールをしようとしています。 /etc/xinetd.d/サービス名 でサービス毎の設定が出来ますが、その中で(only_fromを使って)制御しようとしていますが、その際に /etc/hosts.allow と /etc/hosts.deny はどうなるのでしょうか。これらのファイルを削除して、xinetd の設定ファイルのみでアクセス制御するにしても、xinetd を通さないデーモンが直接 hosts.allow と hosts.deny を参照しようとする場合もありそうで怖そうです。 かといって xinetd と hosts.allow,hosts.deny の両方でアクセス制御するのもわかりにくくなりそうですし。 何かスマートなやり方というものはあるのでしょうか。

  • VPS TCP Wrapper

    サーバ初心者で勉強中です はじめてのCentOS5という本を読みながら お名前.comのVPSサーバでSSHサーバの設定中です TCPWrapperの設定なのですが /etc/hosts.allow sshd: 192.168.0. /etc/hosts.deny ALL: ALL と設定するように書いてました でもこれをしてしまうとローカルからでしかアクセスできなくなってしまうと思うんです VPSではTCPWrapperの理想的な設定とか定番の設定みたいなものはあるのでしょうか? ご指導 アドバイスをおねがいします。

  • inetdについて教えていただきたいのですが。

    vine linux3.2を使用しています。 inetdについて教えて頂きたいのですが、 inetdはポートにアクセスがあればプロセスをたちあげるツールですよね?ということはftpの場合、サーバー側でftpプロセスがonになっていれば、ポート21にアクセスがあってもinetdがあろうがなかろうが関係ないということなんでしょうか? sshを使用してサーバーに接続しているのでinetdのサービス自体必要なのかと疑問に思っています。もしかしたら根本的に勘違いをしているのかもしれません。教えて下さい。お願い致します。

  • inetdの再起動の方法

    古いLinux(v.7.1程度)がネットワークに接続されておりまして、hosts.allowを書き換えた後、変更を有効にしようと思っておりますが、inetdを再起動すれば良いのではないかと思いましたが、方法を教えてください。あるいはtcpdサーバを再起動する場良いのかもしれませんが、同様に方法が解りません。おしえてください。

  • VineLinux3.1のサーバにtelnetアクセスできない。

    VineLinux3.1をインストールいたしました。 telnetでアクセスしようとしてもできません。 google等いろいろ調べたのですが、分かりませんでした。 なぜでしょうか? よろしくお願いします。 【状況】 ・他のPCからtelnetしようとしても、  Connection closed by foreign host ・Vineのコンソールから  telnet 127.0.0.1  としても同様。 ・コンソールからの ping 127.0.0.1  他のPCからの  ping *.*.*.* は問題ないです。 ・ps -ef でみると inetdのプロセスは起動してます。 ・他のコンソールからtelnetでアクセスし用としているときに、  ps -ef を見ると、telnetのサービスは起動してます。 【インストール後に設定したこと】 ・/etc/inetd.conf のtelnet部分についてコメントを外しました。 ・/etc/hosts.allow  には、  ALL : 127.0.0.1  ALL : *.*.*.*  を設定しました。 ・/etc/hosts.deny には何も設定してません。 ・apt-get update/upgradeを行ってます。

  • Sambaセキュリティについて

    smb.confに設定されるhosts allow、hosts denyについての質問です。 手元の資料に、設定においてはhosts allowが優先されるので、hosts denyで拒否が設定されているホストであってもhosts allowで許可されていれば、接続が許可されるとあります。 以下の場合は、グループkeiriにホストsoumuが含まれている場合、soumuからのアクセスは許可されるのでしょうか? hosts allow = @keiri hosts deny = soumu

  • TCP Wrapper を用いた際のr系コマンドの認証のしくみについて

    r系コマンドの実行をTCP Wrapperで制御している場合、通常のr系コマンド実行時の認証に使われるrhostsファイルも参照の上、hosts.allow 及び host.deny ファイルも参照するという仕組みなのでしょうか? それともTCP Wrapperで制御している場合は、rhostsファイルは参照しないのでしょうか?

  • 任意のサービスを行っているファイルを探す

    こんにちは、honiyonです。  TCP Wrapの設定(hosts.allowやdeny)を行うために、サービスを行っているデーモンのファイル名を取得したいと考えています。   hosts.allowやhosts.denyの設定は、サービス名ではなくサービスを行っているデーモンのファイル名で指定するのですよね? Ex.)in.telnetd : ALL  今は適当にファイルの予測を付けて「find / -name 'hoge'」としていますが、うまくヒットしない事があり、しても別のファイルだったり(^^; もっと効率の良い方法はないかな~と思っています。  宜しくお願い致します(..

  • /etc/hosts.allow 及び /etc/hosts.deny について

    /etc/hosts.allow 及び /etc/hosts.deny は Tcp Wrapper のみが参照するファイルなんでしょうか? それとも inetd が参照するファイルなんでしょうか? 素人な質問ですみません。