KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

NISサーバ・クライアントの構築手順メモ

登録日 :2024/02/28 04:42
カテゴリ :Linux

RockyLinux8にて、NISサービスによるユーザ認証環境の構築をおこなった手順をメモします。以下の手順で簡単に構築することができました。
前提条件として、NISサーバになるノードの/homeは、NISクライアントになるノードからマウントしておく方がいいと思います。

1 NISサーバの構築手順

ソフトウェアのインストール

[root@manage ~]# dnf -y install ypserv rpcbind

2 NIS ドメイン設定

[root@manage ~]# ypdomainname mydomain
[root@manage ~]# echo "NISDOMAIN=mydomain" >> /etc/sysconfig/network

3 アクセス許可する NIS クライアントの範囲を指定
ファイルを新規作成して、IPアドレスの範囲を記述します。

[root@manage ~]# vi /var/yp/securenets
255.0.0.0       127.0.0.0
255.255.255.0   10.0.0.0

4 NIS ドメインに属するホストを登録 (サーバー/クライアント)
※Linuxの/etc/hostsに管理サーバとクライアントノードの名前解決を定義するだけです。

[root@manage ~]# vi /etc/hosts
10.0.0.30   manage
10.0.0.51   node01
.....

5 NIS関連サービスが自動起動するようにenableとする。

[root@dlp ~]# systemctl enable --now rpcbind ypserv ypxfrd yppasswdd nis-domainname

6 NIS データベース更新

[root@manage ~]# /usr/lib64/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers.  manage is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.
        next host to add:  manage
        next host to add:  # Ctrl + D キー
The current list of NIS servers looks like this:

manage

Is this correct?  [y/n: y]  y
We need a few minutes to build the databases...
Building /var/yp/srv.world/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory '/var/yp/mydomain'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: Leaving directory '/var/yp/mydomain'

manage has been set up as a NIS master server.

Now you can run ypinit -s manage on all slave server.

7 設定の確認

[root@manage ~]# cd /etc/sysconfig/
[root@manage sysconfig]# cat network
# Created by anaconda
NISDOMAIN=mydomain

8 サービスの起動を確認する

9 必要に応じてSecurity設定(SELinux, Firewall)
SELinuxの設定

sudo setsebool -P allow_ypbind 1
sudo setsebool -P nis_enabled 1

Firewallの設定

sudo firewall-cmd --permanent --add-service=rpc-bind

sudo firewall-cmd --permanent --add-port=834/udp
sudo firewall-cmd --permanent --add-port=834/tcp
sudo firewall-cmd --permanent --add-port=835/udp
sudo firewall-cmd --permanent --add-port=835/tcp

sudo firewall-cmd --reload

[root@nis2 ~]# sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources:
  services: cockpit dhcpv6-client rpc-bind ssh
  ports: 834/udp 834/tcp 835/udp 835/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@nis2 ~]# sudo systemctl restart rpcbind ypserv

チェックしたところ、上記のFirewall設定ではNISクライアントからNISサーバに接続できないことがわかった。そのため、今のところNISサーバ側のfirewalldを無効化しておく必要がある。

2 NISクライアントの構築手順

1 ソフトウェアのインストール

[root@newhead ~]# dnf -y install ypbind rpcbind oddjob-mkhomedir
メタデータの期限切れの最終確認: 0:03:07 前の 2024年02月27日 05時29分08秒 に実施 しました
パッケージ ypbind-3:2.5-2.el8.x86_64 は既にインストールされています
パッケージ rpcbind-1.2.5-10.el8.x86_64 は既にインストールされています
パッケージ oddjob-mkhomedir-0.34.7-3.el8.x86_64 は既にインストールされています
依存関係が解決しました
行うべきことはありません
完了しました!

2 NISクライアントの設定
NISサーバで設定したドメインなどの設定を行う

[root@newhead ~]# ypdomainname mydomain
[root@newhead ~]# echo "NISDOMAIN=mydomain" >> /etc/sysconfig/network

/etc/yp.confの最終行に追記
domain (NIS ドメイン) server (NIS サーバー)]

[root@newhead ~]# vi /etc/yp.conf
domain mydomain server manage
domain your_nis_domain server your_nis_server_ip

NISクライアントの有効

[root@newhead ~]# authselect select nis --force
バックアップは /var/lib/authselect/backups/2024-02-26-20-36-28.vnL6xx に保存されました
プロファイル "nis" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- aliases
- automount
- ethers
- group
- hosts
- initgroups
- netgroup
- networks
- passwd
- protocols
- publickey
- rpc
- services
- shadow

Make sure that NIS service is configured and enabled. See NIS documentation for more information.

3 各サービスの自動起動設定

[root@newhead ~]# systemctl enable --now rpcbind ypbind nis-domainname oddjobd
Created symlink /etc/systemd/system/multi-user.target.wants/ypbind.service  /usr/lib/systemd/system/ypbind.service.
Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service  /usr/lib/systemd/system/oddjobd.service.
[root@newhead ~]#

4 NISサーバの参照先の確認
[root@newhead ~]# ypwhich
manage

5 サービスが起動していることを確認

3 NISユーザの登録手順

1 管理サーバでユーザを作成します。

[root@manage sysconfig]# useradd user02
[root@manage sysconfig]# passwd user02
ユーザー user02 のパスワードを変更
新しいパスワード:
よくないパスワード: このパスワードは辞書チェックに失敗しました - 単純/系統的すぎます
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました

2 NISデータベースに登録します

[root@manage sysconfig]# cd /var/yp/
[root@manage yp]# make
gmake[1]: ディレクトリ '/var/yp/mydomain' に入ります
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating netid.byname...
gmake[1]: ディレクトリ '/var/yp/mydomain' から出ます
[root@manage yp]#

3 クライアントのノードから、NISサーバで登録したユーザでログインできることを確認します。
TeraTermなどをつかってログインしてみること。

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Feb 27 11:07:45 2024 from 192.168.56.1
[user02@newhead ~]$

4 クライアントでNIS パスワード変更

[rocky@node01 ~]$ yppasswd
Changing NIS account information for rocky on manage.
Please enter old password:     # 現在のパスワード
Changing NIS password for rocky on manage.
Please enter new password:     # 新しいパスワード
Please retype new password:

The NIS password has been changed on manage.

新しいパスワードでログインできるかを確認して完了です。

5 必要に応じてSecurity設定(SELinux, Firewall)
SELinuxの設定

sudo setsebool -P allow_ypbind 1
sudo setsebool -P nis_enabled 1

SELinxuの設定確認

getsebool -a | grep nis

Firewallの設定

sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=ypbind
sudo firewall-cmd --reload

Appendix 参考サイト

以下のサイト情報を参考にさせていただきました。
NISサーバの構築
NISクライアント