制限付きNISサーバーの設定

制限付きNISサーバーの設定

passwd現在、エクスポートとgroupマッピングのみが「信頼できる」ホストにエクスポートされるようにアクセスが制限されているNISサーバーを設定しようとしています。これを行うには、/etc/netgroup信頼できるホスト名(適切な名前のファイル)を含むネットグループを作成し、次の規則を追加しようとします。

ALL:ALL EXCEPT @nis_netgroup

到着する/etc/hosts.deny。これには2つの利点があります。 NIS マップおよび NFS 共有へのアクセスを制限します。しかし、このアプローチには助けが必要ないくつかの問題があります。

  • ホスト名は簡単になりすまし、安全ではありません。
  • このツールは、私が設定した検索ドメインに関係なく、ypすべてのホストのドメイン名を要求します。したがって、.local同様のドメインを設定して.my.domainNISサーバー名を指定しても、FQDNserverはCPU名server.my.domainです。ypwhichserver.localnetgroup
  • 上記の2つの段階を通過したにもかかわらず、それは動作しません: NIS サーバーシステムは引き続き自己バインドを試みますが、失敗します。

/var/log/syslogこの問題に関連する可能性がある私が見つけた手がかりは次のとおりです。

named[<pid>]: bad zone transfer request 'local/IN'

どういう意味ですか?

/etc/hosts.allowすべてのクライアントが静的IPで構成され、そのIPが単に一覧表示され、他の要求が拒否されたことを除いて、/etc/hosts.deny過去にも同様の設定が管理されました。現在の設定でこの方法が利用できないのは、動的DNSを使用してクライアントにDHCP IPを割り当てるためです。動的に割り当てられたIPを介してホストへのアクセスを制御する方法はありますか?ページhosts_access(5)には、次の文字列を使用して/ファイルからクライアントを指定できることが示されているので、DNSゾーンファイルにその構文を使用する必要があると思いました。喜びはありません!このような場合、NIS サーバーは依然として独自のバインディングに失敗します。これが.localドメインの問題に関連しているかどうかはわかりません(DNSゾーンファイルは明らかに.my.domainドメインを使用しません.local)。

助けが必要ですか?

答え1

質問をたくさんしてくれて答えが難しいようです。最も簡単な方法は私のNIS設定を共有することだと思いました(はい、設定しないように言いましたが、テスト目的でホームLANにNISが1つあります)。

ypservまず、ypbindパッケージをインストールする必要がありますyp-tools。使用しているディストリビューションを指定していないので、CentOS 5.xで設定する手順を案内します。私のNISドメインにUbuntu 12.04クライアントがあるので、必要に応じてこの答えを調整できます。

作業を簡単にするために、構成ファイルのコメントをフィルタリングし、実際に何をする行だけを表示します。もう一度申し上げますが、説明が必要な場合は投稿いたします。

IPサービス

ypservこのファイルは、私が持っているさまざまなNISマップを共有する方法を設定します。以下では、さまざまなマップにアクセスできるIPサブネットを制限します。

# more /etc/ypserv.conf |egrep -v "^#|^$"
dns: no
files: 50
xfr_check_port: yes
192.168.1.  : *       : shadow.byname         : none
192.168.1.  : *       : passwd.adjunct.byname : none
192.168.1.  : *       : passwd.byuid          : none
192.168.1.  : *       : *                     : none
*           : *       : *                     : deny
*           : *       : *                     : none

Sun / Solarisの古い人々からNIS / YPを設定する方法を学んだので、私のアプローチが少し外れた可能性があることに言及したいと思います。実際のパスワードを保存するために常にファイルを使用するので、passwd.adjunctここでも同じことを行います。

NISドメイン名の設定

私のNISドメイン名はnis.bubba.homeです。 Red Hat ディストリビューションでは、通常、次のファイルで NIS ドメインを設定します。これは/etc/sysconfig/network私のものです:

$ more /etc/sysconfig/network
HOSTNAME="flanders.bubba.net"
NETWORKING="yes"
NISDOMAIN=nis.bubba.home

このエントリを使用すると、コマンドを実行するときに次の値をdomainname取得する必要があります。NISDOMAIN

# domainname
nis.bubba.home

多くの人がこの命令を混同しています。ホストのドメイン名(bubba.net)とは無関係で、NISドメインの実際の名前です。よりドメイン名のマニュアルページ詳細については。

/etc/yp.conf

ypbindクライアント()がどのサーバーに接続するかを知るために使用するファイルです。

# more /etc/yp.conf |egrep -v "^#|^$"
domain nis.bubba.home server 192.168.1.101

/etc/nsswitch.conf

このファイルは、NISを使用する施設を制御します。

# more /etc/nsswitch.conf |grep nis |egrep -v "^#|^$"
passwd:     files nis
shadow:     files nis
group:      files nis
hosts:      files nis dns
networks:   files nis
protocols:  files nis
services:   files nis
netgroup:   files nis
automount:  files nis
aliases:    files nis

/etc/yp

できるだけスムーズに作業を進めるために、このディレクトリを設定し、最終的にNISマップを構築するファイルで埋めました。これは完全なリストではありませんが、このディレクトリにあるいくつかのファイルは次のとおりです。

auto.master、グループ、passwd、passwd.adjunct、およびシャドウ

# shadow
rhays:##rhays:11304::99999::::135545092
tracy:##tracy:12390:0:99999:7:::
tuber:##tuber:12390:0:99999:7:::

passwd.adjunctを使用すると、パスワードがファイルに保存され、passwd.adjunct特定のユーザーに対応する行への参照(上記の参照、##rhays)があります。

# passwd.adjunct
rhays:ZNiFOTwsw313B:11299:0:99999:7:::

/var/yp

このディレクトリは、NISサーバーypservの共有データがある場所です。Makefile編集するとき/etc/yp

ディレクトリは次のとおりです。

# ls | column
binding     Makefile.orig    nicknames       RCS          ypservers
Makefile    Makefile.rpmnew  nis.bubba.home  securenets

これについて学ぶ前に、Makefile私たちが興味を持っている他のファイルはこのsecurenetsファイルです。これは、サーバーに接続できるIPアドレスとサブネットを制御します。これは私のバージョンのファイルです。

# securenets
host 127.0.0.1
255.255.255.0   192.168.1.0

ファイルの生成

Makefile以下は、状況がどのように結合されるかを示すのに役立ついくつかの抜粋です。まず、この変数は私のマップファイルを指します。

YPSRCDIR = /etc/yp
YPPWDDIR = /etc/yp
YPBINDIR = /usr/lib/yp
YPSBINDIR = /usr/sbin
YPDIR = /var/yp
YPMAPDIR = $(YPDIR)/$(DOMAIN)
...
GROUP       = $(YPPWDDIR)/group
PASSWD      = $(YPPWDDIR)/passwd
SHADOW      = $(YPPWDDIR)/shadow
ADJUNCT     = $(YPPWDDIR)/passwd.adjunct
...
all: passwd group hosts rpc services netid protocols mail \
    netgrp auto.master auto.home auto.packages auto.data1 auto.data2 \
    auto.proj auto.vz_backups passwd.adjunct networks printcap

Makefile特定の環境に含まれるマップファイルによっては、追加の変更が必要になる場合があります。

みんな一緒に持ってきてください

したがって、マップファイル、構成ファイル、および必要なすべてのパッケージをインストールしたら、次の手順を実行する必要があります。

$ cd /var/yp && make
$ /etc/init.d/ypserv start
$ /etc/init.d/ypbind start

# who's my domain master?
$ ypwhich 
flanders.bubba.net

# what maps are available?
$ ypwhich -m
passwd.byname flanders.bubba.net
passwd.adjunct.byname flanders.bubba.net
hosts.byaddr flanders.bubba.net
...

それでは、NISを実行する必要がありますか?

私はまだ拒否しました。これは古代の技術であり、セキュリティが脆弱で非常に複雑です。私はこのチュートリアルを公開して、このチュートリアルを使用することをお勧めするのではなく、なぜ使用しないのかを示すために投稿しています。

NISの詳細を学ぶのに時間を費やす場合は、LDAPの展開方法を学ぶことをお勧めします。

答え2

とにかく私は別のことをしました。少し時間がかかったので、NISをもう一度試してみることにしました。私はネットグループのアプローチを放棄し、単純にhosts_access(5)次のように設定しました。

/etc/hosts.allow

ALL: localhost,.my.domain

#Don't lock yourself out:
sshd: ALL 

/etc/hosts.deny

ALL: ALL

NFSマウントにアクセスできる人を次のように制御します/etc/exports

/my/nfs/share -rw *.my.domain

修正を追加するだけです/etc/nsswitch.conf

hosts: files dns

つまり、bind9私のローカルサーバーが認識していないホストをmDnsが認識していたので削除しました。

DHCPサーバーは既知のMACアドレスを持つクライアントにのみIPを割り当て、bind9サーバーレコードを更新します。したがって、DNSは(DHCPによって割り当てられた場合)で終わるホストのみを確認するため、.my.domain信頼できるホストのみがNISマップを表示したり、NFS共有をマウントしたりします。

これはMACアドレスのなりすましによってだまされるかもしれませんが、LDAPをアップグレードする時間がないので、これは私が見つけることができる最高のソリューションです。

関連情報