简易NIS——搭建一个客户端/服务器模式的网络认证环境

背景知识

NIS(Network Information Service网络信息系统)是美国Sun公司开发的一套开源的网上身份认证系统。NIS基于RPC,是由一个服务器、一个客户端库以及几个管理工具组成。起初,NIS被称作黄页(Yellow Pages),或YP,现在仍然使用这个名称来非正式地指这项服务。另一方面,Yellow Pages是英国电信的商标,英国电信一直要求Sun更换这个名字。随着事态的发展,某些名称已与人们分不开了,所以YP一直以与NIS相关命令的前缀形式继续存在着,比如ypserv、ypbind等等。

环境

两台联网且安装了Ubuntu的主机,通过安装和配置NIS服务,一台作Master Server,一台作Client。

工作原理

(1)网络环境下用户身份认证的过程

①    NIS客户机与服务器所需完成的任务

客户机:需提供登入界面,将用户输入的账户信息和口令信息打包为一个身份认证请求,发给服务器;接收服务器发过来的认证结果并显示给用户。

服务器:登录服务程序是一直运行的,不断响应不同客户机发出的身份认证请求:接收客户机发过来的身份认证请求,把用户的账户信息和口令信息从数据包中解析出来,和身份认证信息库进行比对,判断是否通过了身份认证,把判断结果打包,发给客户机。

②    网络环境下用户身份认证的过程

用于身份认证的信息存储在服务器的身份认证信息库中,用户在客户机输入账户信息和口令,客户机将它们打包为一个身份认证请求,发给服务器。服务器接收客户机发过来的身份认证请求,把用户的账户信息和口令从数据包中解析出来,和身份认证信息库进行比对,判断是否通过了身份认证,把判断结果打包,发给客户机。客户机接收认证结果并显示给用户。如果通过认证,则登录成功,如果没有通过认证,则要求重新输入账户信息和口令。

③    优缺点

优点:NIS简化了客户机的用户管理工作,客户端可以使用中心服务器的管理文件,而无需在每个客户机为每个用户建立/etc/passwd,节约了存储空间也降低了安全风险;用户的信息都存储在中心服务器中,利于实现用户的集中管理。

缺点:在没有网络的情况下,因为无法连接服务器,用户将无法登入客户机的系统;客户机与服务器间传输的信息是明文,一旦被嗅探将造成用户信息的泄露;用户的账户信息和口令均存在服务器的信息库中,一旦服务器被攻击,将造成用户信息的泄露。

(2)NIS基本概念和工作原理

①    为什么要使用NIS?它的主要功能是什么?

使用NIS的原因(必要性):如果没有NIS,在一个网域中有多台客户机和多个用户,为了使每个用户都可以登录所有的客户机,需要在每台客户机为每个用户都建立/etc/passwd文件。而一旦一个用户的信息发生改变(或者是要增加/删除一个用户),需要修改每台客户机的/etc/passwd文件,非常不方便,且增大了用户信息泄露的概率。所以需要使用NIS来实现用户的集中管理。

NIS的主要功能:实现用户的集中管理。将所有用户的账户信息和口令信息都存储在中心服务器的身份认证信息库中,当用户信息发生改变时(或者是要增加/删除一个用户),只需在服务器信息库进行修改即可。用户需要登录某一台客户机时,与服务器连接进行身份认证即可。

②    NIS服务器相关配置文件及作用

配置文件

作用

/etc/passwd

提供用户账号、UID、GID、目录、Shell 等等

/etc/group

提供群组数据以及 GID 的对应,还有该群组的加入人员

/etc/hosts

主机名与 IP 的对应

/etc/services

每一种服务所对应的端口

/etc/protocols

基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等

/etc/rpc

每种 RPC 服务器所对应的程序号码

/etc/ypserv.conf

关键配置文件,规范NIS客户端登录权限等

/etc/netgroup

设定信任主机组

/var/yp/Makefile

与建立资料库有关的配置文件

                                                                     表1(NIS服务器相关配置文件及作用)

③    NIS系统架构和工作流程

https://img-blog.csdn.net/20161103084736356?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

                                  图1(NIS系统架构)

服务器端:

NIS Server包括Master和Slave两类服务器,Nis Master Server将文件建成数据库,并提供给Slave Server来更新;Nis Slave Server以Master Server的数据库作为本身的数据库来源。

流程如下:

Nis Master先将帐号密码相关文件制作成数据库文件,然后Nis Master主动告诉Nis Slave来更新或者Nis Slave主动前往Nis Master取得更新。若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。身份认证信息库更新完成后,即可接收客户机数据包并返回认证结果。

客户机端:

NIS Client向Master/Slave请求登陆者的验证数据。

流程如下:

NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案,若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询; 每个 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』。

*身份认证具体流程见(1)②

搭建环境

(1)安装并配置NIS服务,搭建一个客户端/服务器模式的网络认证环境

在大型环境中才会使用到复杂的 NIS master/slave 架构。本文只完成最简单的NIS master server 与 NIS client 两个组件安装。

①    安装和配置NIS服务器端

  • 输入sudo apt-get install nis rpcbind,选择yes,安装过程中设定自己的NIS域名(不要和主机名相同)并记住它。博主设置域名为Irene。

                                                                                    图2(安装rpcbind)

  • 输入sudo vi /etc/hosts.allow,加上如下四行:(下面四行的域名需与你的ip对应,这里假设博主的ip是192.168.80.cde)

ALL: 192.168.80.       

portmap ypserver ypbind: 192.168.80.

sshd: 192.168.80.

mountd: 192.168.80.

                                                                              图3(修改hosts.allow文件)

  • 输入sudo vi /etc/default/nis,将NISSERVER=false改为=master。

                                                                                      图4(修改nis文件)

输入sudo vi /etc/yp.conf,添加domain Irene server 192.168.80.cde(这里的Irene要改为你自己之前设置的域名噢~ip也要与你的ip对应!)

                                                     图5(修改yp.conf文件)

输入sudo vi /etc/ypserv.securenets,修改为255.255.255.0     192.168.80.0。(这里的ip要与你自己的ip对应噢~)

                                                                             图6(修改ypserv.securenets文件)

输入sudo /usr/lib/yp/ypinit -m,初始化数据库。

                                                                                 图7(初始化数据库)

输入sudo service ypserv restart和sudo make -C /var/yp,重启nis服务。

                                                            图8(重启nis服务)

②    安装和配置NIS客户端

输入sudo apt-get install nis rpcbind,选择yes,安装过程中设定NIS域名为之前设置的服务器的域名。(博主的域名是Irene)

                                                  图9(安装过程中设定NIS域名)

输入sudo vi /etc/hosts.allow,添加portmap:192.168.80.cde。(这里的ip要与你自己的域名对应噢~)

                                                          图10(修改hosts.allow文件)

输入sudo vi /etc/passwd,添加+::::::。

                                                           图11(修改passwd文件)

输入sudo vi /etc/group,添加+:::。

                                          图12(修改group文件)

输入sudo vi /etc/shadow,添加+::::::::。

                                        图13(修改shadow文件)

输入sudo vi /etc/nsswitch.conf

添加如下三行:

passwd:     nis compat

group:      nis compat

shadow:     nis compat

                                               图14(修改nsswitch.conf文件)

输入sudo vi /etc/yp.conf,添加domain Irene server 192.168.80.cde。(again...域名和ip与你自己对应~)

                                                      图15(修改yp.conf文件)

输入sudo service ypserv restart和sudo make -C /var/yp重启nis服务。

                                                                   图16(重启nis服务)

③    NIS 客户端的检验

A. yptest检验数据库测试

在客户端输入yptest检验数据库测试,结果如下:

                                        图17(客户端yptest)

由test 9显示的内容列出了NIS server 上的所有帐户信息,可见设置成功。

【注:比较有问题的是第三步骤,他会出现在 passwd.byname 当中找不到 nobody 的字样。这是因为早期的 nobody 之 UID 都设定在 65534 ,但 CentOS 则将 nobody 设定为系统账号的 99 ,所以当然不会被记录,也就出现这一个警告。】

B. ypwhich -x检验数据库数量

由客户端输入ypwhich -x,显示NIS Client 与 Server 之间沟通的数据库有哪些:

                           图18(客户端ypwhich -x)

C. ypcat读取数据库内容

由客户端输入ypcat passwd.byname即可查看该数据库内容,如下图:

                                  图19(客户端ypcat)

每一行的格式为:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

各个字段代表的意义如表2所示:

用户名

代表用户账号的字符串。

 

 

口令

一些系统中,存放着加密后的用户口令字。但现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

 

用户

标识号

系统内部用它来标识用户。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

组标识号

用户所属的用户组。

注释性

描述

用户的一些个人情况,例如用户的真实姓名、电话、地址等。

 

主目录

用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。

 

登录

Shell

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

                                                                                表2(每一字段的意义)

图19中,用户名是xiuxiu,x用来代替口令,第一个1000是用户xiuxiu的id,第二个1000是用户xiuxiu所属的用户组id,“xiuxiu,,,”是注释性描述,主目录为/home/xiuxiu即用户xiuxiu登陆到系统后所处的目录,登录shell为/bin/bash,是用户xiuxiu登陆到系统后默认启动的进程。

④    使用NIS服务

以修改密码为例:在客户端输入yppasswd,分别输入旧密码和新密码即可更改密码。

                                           图20(客户端修改密码)

 

当当!完成!

*参考资料

http://cn.linux.vbird.org/linux_server/0430nis.php#nis_client_check

https://blog.csdn.net/younger_china/article/details/53010366

https://blog.csdn.net/yilovexing/article/details/50636068

 

 

猜你喜欢

转载自blog.csdn.net/agjirowjtg/article/details/84070789