Red Hat Linux 7.xやTurbolinux 7で、別ホストからSambaやSWATにアクセスできない

提供: Samba-JP
移動先:案内検索
KB番号 J0055
最終更新日 2002/01/27
作成者 たかはしもとのぶ
最終更新者 あんどうようこ

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Turbolinux 7
  • Red Hat Linux 7.2
  • Red Hat Linux 7.1
  • Red Hat Linux 7.1J

現象

Red Hat Linux 7.1以降の環境下において、Sambaにアクセスしようとすると、pingで双方のPCを認識できているにもかかわらず、 「\\(Linux PC)にアクセスできません。ネットワークパスが見つかりません。」と表示されます。 また、SWATでアクセスしようとしてもアクセスできません。

Turbolinux 7以降でも同様の現象が発生します。

Samba自体は起動しており、smbclient等で localhost に対するアクセスを行なったり、Sambaマシン上のWebブラウザでSWATにアクセスしたりする限りは問題なく動作しているように見えます。 なお、この現象はSambaのバージョンに関わりなく発生します。

原因

Red Hat Linux 7.1以降で、デフォルトのままインストールを行なうと、ワークステーションとしての設定が行なわれ、ホスト上のサーバサービスに対するほぼ全てのアクセスがLinuxレベルでipchainsにより禁止されます。

Red Hat Linuxは多目的なディストリビューションであり、クライアントの機能、サーバの機能、ルータやファイヤウォールの機能がすべて入っています。 標準の構成でインストールするとワークステーション用になり、サーバサービスを動かすことよりもクライアントマシンがインターネット上で攻撃されないような設定になります。

また、Red Hat Linux 7.x に同梱されているSWATは xinetd スーパーデーモンから呼び出されるよう設定されていますが、セキュリティ上、SWATを有効にしただけでは別のマシンから接続することができないように xinetd 側で設定されています。

対処策

まずは、ipchainsの設定を変更します。Red Hat Linux 7.1以降ではlokkitコマンドで行ないます。 まずは、root で

# /usr/sbin/lokkit

と入力して、lokkit を起動します。

Customise → Trusted Devices(信頼できるデバイス)において、Samba サーバを有効にしたいLANカードをチェックすることでSambaへのアクセスが可能になります。ただしこの場合はipchainsが提供するファイアウォール機能は全く無効になってしまいます。

Sambaだけにアクセスを許可するには、下部のテキストボックスに

139:tcp,138:udp,137:udp

という設定を手入力で入力してください(図1)。 SWATへのアクセスを許可したい場合は、加えて

901:tcp

という設定も追加しておいて下さい。

なお、ここで行った設定は/etc/sysconfig/ipchainsというファイルに書き込まれますので、このファイルを直接編集しても構いません。このファイルを直接編集することで、更に詳細なアクセス制御が可能になります。

続いて、他のホストからSWATを呼び出すために、xinetdスーパーデーモン用設定ファイルを変更する必要があります。

作業手順は以下のとおりです。

1. /etc/xinetd.d/swat ファイルを開き、接続を許可するIPアドレスを only_from 行として追加します。

     <例>
     自ホストと 192.168.0.0 ネットワーク内のすべてのホストからの接続を許可する場合

     # default: off
     # description: SWAT is the Samba Web Admin Tool. Use swat \
     #              to configure your Samba server. To use SWAT, \
     #              connect to port 901 with your favorite web browser.
     service swat
     {
             disable = no
             port    = 901
             socket_type     = stream
             wait    = no
             only_from = 127.0.0.1
             only_from = 192.168.0.0 ← この行を追加
             user    = root
             server  = /usr/sbin/swat
             log_on_failure  += USERID
     }

2. 以下のコマンドで、xinetdスーパーデーモンを再起動します。

      # /etc/rc.d/init.d/xinetd restart

これでSWATからの接続が可能になっている筈です。手元のブラウザで、

http://<SambaサーバのIPアドレス>:901

として確認を行って下さい。

関連情報として、以下もご参照下さい。

この技術情報は samba-jp:10692、samba-jp:11516、sugj-admin:2028からの一連のスレッドの議論を元に作成されています。