• 締切済み

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 の両方でアクセス制御するのもわかりにくくなりそうですし。 何かスマートなやり方というものはあるのでしょうか。

みんなの回答

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

xinetdの設定ファイルで指定するのは、xinetdが該当プログラムを起動するかどうかを決めます。起動されたプログラムの動作には無関係です。 hosts.allow/hosts.denyはプログラムがサブルーチンhosts_access(3)を使ってアクセス許可判断をする時に使われます。 したがって、全然目的が違うものです。xinetdから起動されるあるプログラムはhosts_access(3)を使わないかもしれません。また、使うプログラムもあるかもしれません。デーモンもhosts_access(3)を使うかもしれないし、独自の設定ファイルを使うかもしれません。 そのプログラムがhosts_access(3)を使うかどうかは、 strings プログラムファイル名 | grep /etc/hosts でわかるでしょう。

tao_0077
質問者

お礼

>xinetdから起動されるあるプログラムはhosts_access(3)を使わないかもしれません。また、使うプログラムもあるかもしれません。デーモンもhosts_access(3)を使うかもしれないし、独自の設定ファイルを使うかもしれません。 xinetd は「起動のみ」制御、hosts.*** はそれに対応したデーモンの「通信全体」を制御、ということですね。 そのことはわかるのですが、最終的な「許可・不許可」という点を実現するために、複数のファイルに設定しなければならない、というのが泥臭いと思えまして…。

関連する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 で守ることができないデーモンがあるのでしょうか?

  • /etc/xinetd.d/と/etc/hosts.allow

    環境はTBL7.0Serverです /etc/xinetd.d/と/etc/hosts.allowについてなんですが、基本的には/etc/xinetd.d/の直下のファイルでアクセス制御すればいいと思うのですが、/etc/hosts.allowでもサービスを許可してやらないとつかえません。 この2段階でアクセス制御するのは、標準的なやり方なんですか?管理上煩雑なので、できれば/etc/xinetd.d/以下の各サービスのファイルのみでアクセス制御したいのですがみなさんどうしています。

  • hosts.allowとhosts.denyについて

    centos5を利用しています。 /var/log/btmpファイルが200M、/var/log/secureファイルも20Mにもなっていました。 恥ずかしながら初めて中身をチェックしたのですが、SSHログインの失敗履歴のようでした。 このような場合の対処法をお聞きしたいのですが、 1. hosts.allowとhosts.denyを設定すればこの手のアタックは防げるのでしょうか? 2. hosts.allowとhosts.denyを設定後、/etc/rc.d/init.d/sshd restart でSSHを再起動したのですが、これで反映されたのでしょうか? 3. btmpファイルは削除しても問題ないでしょうか?削除する際に注意点などありましたらあわせて教えて頂けると幸いです。

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

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

  • VNCのインストール後の allowとdenyの設定

    お世話になります。 vine linux3.2でrealVNCをインストールしたのですが /etc/hosts.allow /etc/hosts.deny への記述が上手くできずクライアント(windowsXP 192.168.1.11)からサーバー(192.168.1.20)に接続できずに困っています。 /etc/hosts.deny には ALL : ALL /etc/hosts.allow には Xvnc :192.168.1.11 としているのですが何がいけないのでしょうか? 教えてください。/etc/hosts.denyの方を何も書かないでいたら きちんと接続できるんですけど・・・・。 私がOSをインストールしてから、Linuxで行った作業は VNCまでです。

  • Linux hosts.allowでのアクセス制御

    いつもありがとうございます。 RedHat hosts.allowでのアクセス制御について設定方法を質問させて頂きます。 /etc/hosts.allowに以下のサービスについて制御したいと思っております。 ************************************************************* http ssh icmp smtp ntp pgadmin samba postgresql dns ************************************************************* 以下「hosts.allow」の内容 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ # ssh sshd: 192.168.1. # http httpd: ALL # dns domain: ALL # icmp icmp: ALL # ntp ntpd: ALL # netbios-ssn netbios-ssn: ALL # smtp smtp: ALL # postgresql postgresql: 192.168.1. # pgadmin pgadmin: 192.168.1. -------------------------------------------------------------------- 上記にて設定すると、SSHのみ適用されますが他の設定が反映されません。 ※hosts.denyは「ALL: ALL」としております。 また、ファイアーウォールを有効にすると、SSHも含め接続できなくなります。 ※ファイアーウォールのルールは定義していません。 初心者からの質問で申し訳ありません。 アドバイスの程よろしくお願い致します。

  • /etc/hosts.allow にて alex@192.168.1.10 指定

    CENTOS5を使っております。 FIREWALL 有効 SELINUX 有効 server1 リモートホスト server2 SSHサービス稼動中。 ============================================ ここで、制御ファイルにて下記のようにしていますが、 server2側でアクセス拒否されてしまいます。 1. /etc/hosts.allow # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ALL:127.0.0.1 sshd: alex@192.168.10.62 2 /etc/hosts.deny # hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # The portmap line is redundant, but it is left to remind you that # the new secure portmap uses hosts.deny and hosts.allow. In particular # you should know that NFS uses portmap! sshd: ALL [root@server1 ssh]# ssh alex@server2 ssh_exchange_identification: Connection closed by remote host 私の認識では、allow→denyの読み取りで判断されるので許可されると 考えています。 それともUSER@を指定した記述が違うのでしょうか。 deny にて、sshd : ALL EXCEPT alex@192とも指定したがぺけでした。 どなたかご指摘お願いします。 P.S グーグルでもUSER@指定の場合を検索してみました。 http://www.cromwell-intl.com/unix/ssh.html sshd_config にてAllowUsers alexもぺけでした。。。 よろしくご指摘お願いいたします。

  • 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デーモンは停止するのでしょう? 間違い等は指摘お願いいたします。

  • sshってxinetdを通して起動されるんでしょうか?

    hosts.allowに、 vsftpd:***.***. :allow とすることで、外部からのftpサーバへの接続を アクセス制限することは出来たのですが、 今度は、sshdが外部からアクセスできなく なってしまいました。 hosts.denyは、勿論、ALL:ALLです。 しかし、sshは、xinetdを通さないで起動していると ばかり思っていましたので、host.denyとは関係なく 接続できるとおもっておりましたが、違うのでしょうか? RedHat8をインストールした後は、何も特に変更していない のですが・・・デフォルトでsshもTCPWrapperとかいう ものの影響を受けるのでしょうか? chkconfig --list で調べた時は、 xinetdをベースとしたプログラムにはsshは無かったのですが・・・? 何卒、ご存知の方、ご指導の程願います。

  • apache2でのallow,deny指定について

    Linux+Apache2+PHP+MySQLの組み合わせでWebサーバを運用しています。 海外向けのサービスのため、 日本国内からのWebアクセスを遮断することになりました。 日本国内のIPアドレス表はあるので、 httpd.conf内で <Directory ~> Order allow,deny Allow from all Deny from xx.xx.xx.xx/xx (以下国内IPアドレスが続く) </Directory> としてIPアドレスにより遮断しました。 これ自体は問題なく稼働しています。 ただ、日本国内からも運用上いくつかの拠点で閲覧できる必要があり、それらのIPアドレスに対してallow指定をしたいのですが、どうもうまくいきません。 ようは order allow,deny,allow のような感じでできればいいのですが、そういう指定はできないようです。 <Directory>ディレクティブを下で再定義したり、別に.htaccessで定義してallowしてみたりしたのですが、そうするともともとあったdeny指定がクリアされてしまうようです。 もちろん、deny fromするサブネットを細かく分けて記述すればいいのですが、今後IPアドレスの追加や削除が発生しうるため、あまり国内IPアドレス表の部分はいじりたくないのです。 また、deny from allでその後海外のIPアドレスをallowするというのは、IPアドレス表が膨大になりすぎるので、これも避けたいです。 理想的には、httpd.confで国内を遮断した後、別ファイルで許可するIPアドレスを記述できればと思っています。 なお、PHPアプリケーションのほうで遮断するというのはパフォーマンスが劣化するため考えておりません。 現在は、仕方なくサブネット単位で #Deny from xx.xx.xx.xx/xx みたいにコメントアウトして運用しています。 「絶対に国内からは見られては困る」というほどでもないので、まあこれでもいいかと思っていますが、 もっとスマートなやり方はないかと思いご質問させていただきました。 なにとぞよろしくお願いいたします。