Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル

ハードコピー版(英語)を購入する

目次


Previous: 4.5 ディスク共有の設定 Chapter 4
ディスク共有
Next: 4.7 仮想サーバ
 

4.6 Samba のネットワークオプション

Samba をマルチホームのマシン(すなわち複数サブネットに足があるマシン)上で動かしていたり、セキュリティポリシーを実装する必要があったりする場合は、ネットワークの設定オプションに習熟しておくべきであろう:

練習を行っていくために、Samba サーバが複数のサブネットがあるネットワークに接続しているものとする。具体的には、マシンが 192.168.220.* と 134.213.233.* の両方のサブネットにアクセスしていることにしよう。以下が現在の設定ファイルに追加したネットワークに関する設定オプションである:

[global]
	netbios name = HYDRA
	server string = Samba %v on (%L)
	workgroup = SIMPLE

	#  Networking configuration options
	hosts allow = 192.168.220. 134.213.233. localhost
	hosts deny = 192.168.220.102
	interfaces = 192.168.220.100/255.255.255.0 \
					134.213.233.110/255.255.255.0
	bind interfaces only = yes

[data]
	path = /home/samba/data
	guest ok = yes
	comment = Data Drive
	volume = Sample-Data-Drive
	writeable = yes

最初に hosts allow hosts deny オプションから説明していこう。これらのオプションになじみがあるのであれば、それは恐らく多くの UNIX システムの /etc ディレクトリに存在する hosts.allowhosts.deny ファイルから連想されたものであろう。 これらのオプションの目的もファイルと同様であり、IPアドレスベースで他のホストからの接続を許可したり拒否したりすることでセキュリティを提供するものである。 hosts.allow hosts.deny ファイルを直接利用しない理由は、Samba のディスクやプリンタ共有への接続とは無関係に接続を制御したいサービスがサーバ上に存在するかも知れないためである。

上記の hosts allow オプションを利用して以下のような IP アドレスの指定を行った: 192.168.220. (3つ目のピリオドに注意すること。4番目の数値を省略している) 。これは、以下のように指定したのと同じことである: "192.168.220 サブネットの全てのホスト"。しかし、hosts deny の行では明示的に 192.168.220.102 からのアクセスは許可しないように指定している。

hosts allow オプションで指定されたサブネットに存在するにも関わらず、192.168.220.102 からのアクセスが拒否できることを不思議に思うかもしれないが、これはSamba が hosts allow hosts deny で指定されたルールをソートする方式のためである:

  1. allow もしくは deny options が smb.confで指定されていない場合、Samba はシステムにアクセスできるすべてのマシンからの接続を許可する。

  2. hosts allow hosts deny オプションが smb.conf [global] セクションで設定されていた場合、それは全ての共有に対して適用される。これは共有に対してオプションが設定されている場合でも変らない。

  3. hosts allow オプションだけがある共有に対して設定されていた場合、そこに記述されているホストだけが共有を利用することができる。その他のホストは接続できない。

  4. hosts deny オプションだけがある共有に対して設定されていた場合、そこに記述されていない全てのホストがその共有を利用することができる。

  5. hosts allow hosts deny オプションの両方が定義されていた場合、拒否リストに存在せず、かつ許可リストに存在するホストのみが共有にアクセスできる。その他の場合、ホストはアクセスを許可されない。

    注意: あるホストが所属するサブネット全体からのアクセスを拒否している場合、特定のホストだけに共有へのアクセスを明示的に許可することはできないことに注意すること

最後の点について、もう一つ例をみてみよう。以下の設定について検討してみる:

hosts allow = 111.222.
hosts deny = 111.222.333.

この場合、サブネット 111.222.*.* に属するホストだけが Samba の共有にアク セスできる。クライアントが 111.222.333.* のサブネットに所属している場合、 hosts allowで指定された範囲に入っているが、アクセスは拒否される。クライアントが Samba の共有に接続するには hosts allow のリストに入っている必要があるだけでなく、 hosts denyのリストに入っていては ならない 。 コンピュータがアクセスを許可されていない共有に接続しようとした場合、エラーメッセージが返却される。

残った二つのオプションは、 interfaces bind interface only オプションである。 interfaces オプションから先にみていこう。 Samba のデフォルトではデータをプライマリのネットワークインタフェースにしか送出しない。これは上記の例だと 192.168.220.100 のサブネットになる。データを複数のネットワークに対して送出したいときは、 interfaces オプションを使って、送信したいインタフェースのリストをきちんと指定する必要がある。 先の例では、別のネットワークインタフェースのアドレス 134.213.233.100 を指定することで、Samba をマシンが持つ両方のサブネット(192.168.220 と 134.213.233)にバインドしていた。コンピュータに複数のインタフェースが存在する場合は、Samba が適切なインタフェースをプライマリのインタフェースとして選択する保証がないため、常にこのオプションを指定すること。

最後の bind interfaces only オプションは nmbd プロセスが、 interfaces オプションで指定したサブネット以外からのブロードキャストを受信するかどうかを設定する。これは hosts allow hosts deny オプションとは異なる。これらのオプションは、マシンがサービスに対して接続を行うことを禁止するものであって、ブロードキャストメッセージを受信することを禁止するものではない。 bind interfaces only オプションを用いることで、Samba サーバの別サブネットからのデータグラムの受信を抑止できる。加えて、このオプションは smbd のプロセスが、 interfaces オプションで指定されたインタフェースのリストにのみバインドされることを指定する。これにより、Samba がサービスを提供するインタフェースを制限できる。

4.6.1 ネットワーキングオプション

ここまでで説明したネットワーキングオプションを 表 4.5に示す。


表 4.5: ネットワーキング設定オプション

オプション

パラメータ

機能

デフォルト

範囲

hosts allow (allow hosts)

文字列(ホスト名のリスト)

Samba に接続可能なマシンを指定する。

なし

共有

hosts deny (deny hosts)

文字列(ホスト名のリスト)

Samba に接続できないマシンを指定する。

なし

共有

interfaces

文字列(IP/netmask の組のリスト)

Samba が応答を返却するネットワークのリストを設定する。Allows correcting defaults.

システム依存

グローバル

bind

interfaces only

真偽値

yesの場合、Samba は interfaces オプションで指定されたインターフェースにのみバインドする。

no

グローバル

socket

address

文字列(IP アドレス)

listen を行う IP アドレスを設定する、複数の仮想インタフェースがサーバ上に存在する場合などに用いる。

なし

グローバル

4.6.1.1 hosts allow

hosts allow オプション ( allow hostsと書かれることもある) は、Samba サーバ上の共有にアクセスする権限を持ったマシンを指定するもので、コンマ、もしくはスペースで区切ったマシンの名前もしくはIPアドレスのリストを既述する。単に LAN のサブネットのアドレスをこのオプションに指定することでも、ほんのわずかではあるがセキュリティが向上する。 ここでは例として以下のように設定した:

hosts allow = 192.168.220. localhost

localhost をサブネットアドレスの後に記述したことに注意。 hosts allow オプションを使おうとしてやってしまう間違いに、Samba サーバが自分自身と通信できないようにしてしまうことがあげられる。 smbpasswd プログラムは、ユーザの暗号化パスワードを変更するため、 Samba サーバにクライアントとして接続することが必要になることがある。またローカルなブラウジングの propagation は、ローカルホストへのアクセスを必要とすることがある。 localhost のアドレスを含まないままこのオプションが有効になっていると、暗号化パスワードの変更を行うためにローカルに生成されたパケットが Samba によって破棄されてしまい、ブラウジングの propagation も正しく動作しないであろう。このような事態を避けるため、明示的にループバックアドレス( localhost 127.0.0.1) を含めること。[3]

[3] Samba 2.0.5 以降では、 localhost は明示的に拒否されない限り、自動的にアクセスを許可される。

このオプションは以下のような形式のどれを用いて指定することもできる:

  • ftp.example.comのようなホスト名。

  • 130.63.9.252のようなIPアドレス。

  • ドメイン名。これはドット(.)から記述をはじめることで、個々のホスト名とは区別される。例えば .ora.com ora.com ドメインに存在する全てのマシンを表す。

  • ネットグループ。これは, @printerhostsのようにアットサイン(@)から始められる。ネットグループは、イエローページ/NIS や NIS+ を使用しているシステムでサポートされているが、それ以外のシステムでは殆んどサポートされていない。 システムでネットグループがサポートされている場合、詳細を記述した netgroups のマニュアルページが存在するはずである。

  • ドットで終わるサブネット。例えば 130.63.9. は、IP アドレスが 130.63.9. から始まる全てのマシンを意味する。

  • ALLというキーワード。これは全てのクライアントからのアクセスを意味する。

  • EXCEPT というキーワード、これには一つ以上の名前、IPアドレス、ドメイン名、ネットグループもしくはサブネットが後に続く。例えば、Samba が 192.168.110 のサブネット以外の全てのホストからのアクセスを許可するようにしたい時は、以下のように hosts allow = ALL EXCEPT 192.168.110. (最後のドットを忘れないように)とする。

ALL というキーワードを用いるのは通常勧められない。それはサーバ名を推測されることで、ネットワーク上の誰でもがファイルにアクセスできてしまうことを意味するからである。

hosts allow 設定オプションにはデフォルト値はなく、どちらのオプションも指定されていなかった場合のデフォルトの動作は、全てのホストからのアクセスを許可するようになっていることに注意。また、このオプションを設定ファイルの [global] セクションに記述することで、共有内で定義された hosts allow オプションを上書きすることが可能である。

4.6.1.2 hosts deny

hosts deny オプション( deny hostsも同様) は、共有にアクセスできないマシンを指定するもので、コンマ、もしくはスペースで区切ったマシンの名前もしくはIPアドレスのリストを既述する。クライアントの指定には前述した hosts allow オプションと同様の形式を用いる。例えば example.com以外の全ての個所からのサーバへのアクセスを禁止する場合、以下のようになる:

hosts deny = ALL EXCEPT .example.com

hosts allowと同様、 hosts deny 設定オプションにもデフォルト値はなく、どちらのオプションも指定されていなかった場合のデフォルトの動作は、全てのホストからのアクセスを許可するようになる。同様に、このオプションを設定ファイルの [global] セクションに記述すると、共有内で定義された hosts deny オプションの設定を上書きする。特定の共有で hosts のアクセスを禁止したいは、 hosts allow hosts deny オプションの両方の記述を設定ファイルの [global] セクションから取り除くこと。

4.6.1.3 interfaces

interfaces オプションは、Samba サーバに認識させ、応答させたいネットワークアドレスを示唆する。このオプションは複数のネットワークサブネットに接しているコンピュータがある場合に有用である。もしこのオプションが設定されていない場合、Samba が起動して初期化する時にサーバのプライマリネットワークインタフェースカード(通常1枚目のイーサネットカード)を探し、そのサブネットに対してのみ機能する。サーバが複数のサブネットに接しており、このオプションが設定されていない場合は、Samba は最初に発見したサブネットに対してしか機能しないということである。ネットワークの他のサブネットに対してもサービスを提供させたい場合、このオプションを用いなければならない。

このオプションの値は、一つ以上のIPアドレス/ネットマスクの組であり、例えば以下のようになる:

interfaces = 192.168.220.100/255.255.255.0 192.168.210.30/255.255.255.0

また、別の方法として、以下のように CIDR 形式のビットマスクで指定することも可能である:

interfaces = 192.168.220.100/24 192.168.210.30/24

ビットマスクの数値は、ネットマスクでセットされるビット数を指定している。例えば、 24 という数字は、(32 個中の)24 個目までのビットがビットマスクで設定されることを示しており、これは255.255.255.0 と同等である。 同様に 16 は 255.255.0.0 と同じであり、8 は 255.0.0.0 と同じである。

このオプションは、DHCP を利用している時はうまく動作しないこともある。

4.6.1.4 bind interfaces only

bind interfaces only オプションは smbd nmbd プロセスが SMB リクエストを受け付けるアドレスを interfaces オプションで指定したアドレスからのみに制限する。 nmbd プロセスは、通常全てのブロードキャストを受信するために、全てのインタフェース(0.0.0.0)のポート 137 と 138 にバインドする。しかし以下のようにすることで、この動作を制限することができる:

bind interfaces only = yes

これにより、両方の Samba のプロセスは、ブロードキャストパケットも含め、送信元アドレスが、 interfaces オプションで指定されたブロードキャストアドレスに合致しないパケットを無視するようになる。 smbdについては、このオプションにより Samba が interfaces オプションでリストしたサブネット以外からのファイル共有の要求を受け付けなくなる。SLIP や PPP で作成されたもののように一時的なネットワーク接続を利用している場合は、このオプションの使用は避けること。このオプションが必要なことは通常はない。このオプションは熟練者のみが利用すべきである。

bind interfaces only yes に設定した場合、 ローカルホストのアドレス(127.0.0.1)を必ず interfaces のリストに追加しておくこと。そうしないと smbpasswd はパスワードを変更するためにデフォルトのモードでサーバに接続することができなくなってしまう。

4.6.1.5 socket address

socket address オプションは、 interfaces パラメータで設定したアドレスのうち、どのアドレスを Samba が接続を listen するアドレスとして用いるべきかを指定する。デフォルトで Samba は全てのアドレスからの接続を受け付ける。 smb.conf ファイル中で利用する場合、このオプションによりSamba は1 つのIPアドレスでのみ listen をする。 以下一例を示す:

interfaces = 192.168.220.100/24 192.168.210.30/24
socket address = 192.168.210.30

このオプションはプログラマーのためのものであり、利用しないことを推奨する。


Previous: 4.5 Disk 共有の設定 目次 Next: 4.7 仮想サーバ
4.5 Disk 共有の設定 書籍索引 4.7 仮想サーバ

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.