tcp_wrappersのちょっとした話

tcp_wrappers、言わずと知れた「/etc/hosts.deny」「/etc/hosts.allow」を使った
ネットワークサービスのアクセス制御です。

大抵、

  • 「/etc/hosts.deny」に「ALL:ALL」
  • 「/etc/hosts.allow」に「許可したいデーモン:許可したいネットワーク」

とするかと。

この場合、使うデーモンを許可しておかないと、アクセスできなくなることに。
inetdやxinetd経由で起動している場合は意識するのですが、
スタンドアロンで動かしているデーモンは忘れることも。

怪しいと思ったら、lddコマンドで調べてみるといいと思います。
lddコマンドを使うと、使用している共有ライブラリを調べることができます。
「libwrap.so」が含まれている場合はデーモン自身がtcp_wrappersを使うようになっているので、
「/etc/hosts.allow」に書いてやる必要があります。

下はSendmailの場合。

# ldd /usr/sbin/sendmail
        linux-gate.so.1 =>  (0x003f9000)
        libssl.so.6 => /lib/libssl.so.6 (0x004fa000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x00110000)
        libdb-4.3.so => /lib/libdb-4.3.so (0x00251000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x007bb000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00a42000)
        libwrap.so.0 => /lib/libwrap.so.0 (0x00ede000)
        libhesiod.so.0 => /usr/lib/libhesiod.so.0 (0x00349000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x0034d000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x0037f000)
        libldap-2.3.so.0 => /usr/lib/libldap-2.3.so.0 (0x005f4000)
        liblber-2.3.so.0 => /usr/lib/liblber-2.3.so.0 (0x00398000)
        libc.so.6 => /lib/libc.so.6 (0x0062e000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00ddc000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00858000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00a00000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x003fa000)
        libdl.so.2 => /lib/libdl.so.2 (0x003a6000)
        libz.so.1 => /usr/lib/libz.so.1 (0x003ab000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00952000)
        /lib/ld-linux.so.2 (0x003c6000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x003e3000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x003be000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00420000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00438000)

OpenSSHなんかも。

# ldd /usr/sbin/sshd
        linux-gate.so.1 =>  (0x00d74000)
        libwrap.so.0 => /lib/libwrap.so.0 (0x00110000)
        libpam.so.0 => /lib/libpam.so.0 (0x00d61000)
        libdl.so.2 => /lib/libdl.so.2 (0x00713000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00a3e000)
        libaudit.so.0 => /lib/libaudit.so.0 (0x00d3a000)
        libfipscheck.so.1 => /usr/lib/libfipscheck.so.1 (0x00bd6000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x005e5000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x00799000)
        libutil.so.1 => /lib/libutil.so.1 (0x00cfe000)
        libz.so.1 => /usr/lib/libz.so.1 (0x006e8000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00118000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x0044e000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00131000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00517000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00622000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00f98000)
        libnss3.so => /usr/lib/libnss3.so (0x0029f000)
        libc.so.6 => /lib/libc.so.6 (0x008da000)
        /lib/ld-linux.so.2 (0x00dd2000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x003d7000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x0015f000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00cee000)
        libnssutil3.so => /usr/lib/libnssutil3.so (0x00168000)
        libplc4.so => /usr/lib/libplc4.so (0x00c1b000)
        libplds4.so => /usr/lib/libplds4.so (0x00181000)
        libnspr4.so => /usr/lib/libnspr4.so (0x00b3a000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00184000)


「libwrap.so」が含まれていたら、後は「/etc/hosts.allow」に書いてやるだけ。


今日はこんなところで。