passwd
現在、エクスポートとgroup
マッピングのみが「信頼できる」ホストにエクスポートされるようにアクセスが制限されているNISサーバーを設定しようとしています。これを行うには、/etc/netgroup
信頼できるホスト名(適切な名前のファイル)を含むネットグループを作成し、次の規則を追加しようとします。
ALL:ALL EXCEPT @nis_netgroup
到着する/etc/hosts.deny
。これには2つの利点があります。 NIS マップおよび NFS 共有へのアクセスを制限します。しかし、このアプローチには助けが必要ないくつかの問題があります。
- ホスト名は簡単になりすまし、安全ではありません。
- このツールは、私が設定した検索ドメインに関係なく、
yp
すべてのホストのドメイン名を要求します。したがって、.local
同様のドメインを設定して.my.domain
NISサーバー名を指定しても、FQDNserver
はCPU名server.my.domain
です。ypwhich
server.local
netgroup
- 上記の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をアップグレードする時間がないので、これは私が見つけることができる最高のソリューションです。