## 14.2 NIS Server 端的设定
NIS 服务器端主要在于提供数据库给客户端作为验证之用,虽然 NIS 服务器类型有 Master 与 Slave , 不过鸟哥这里介绍的并不是大型企业环境,因此仅介绍 NIS master 的设定而已啦~那就来设定看看啰!
* * *
### 14.2.1 所需要的软件
由于 NIS 服务器需要使用 RPC 协议,且 NIS 服务器同时也可以当成客户端,因此它需要的软件就有底下这几个:
* yp-tools :提供 NIS 相关的查寻指令功能
* ypbind :提供 NIS Client 端的设定软件
* ypserv :提供 NIS Server 端的设定软件
* rpcbind :就是 RPC 一定需要的数据啊!
如果你是使用 Red Hat 的系统,例如我们的 CentOS 6.x 的话,那你可以利用『 rpm -qa | grep '^yp' 』 来检查是否有安装上述的软件。一般来说 yp-tools, ypbind 都会主动的安装,不过 ypserv 可能就不会安装了。 此时建议你直接使用『 [yum](http://linux.vbird.org/linux_server/0210network-secure.php#update_yum_use) install ypserv 』来安装吧!立刻就装好了。底下立刻来设定啰!
* * *
### 14.2.2 NIS 服务器相关的配置文件
在 NIS 服务器上最重要的就是 ypserv 这个软件了,但是,由于 NIS 设定时还会使用到其他网络参数设定数据, 因此在配置文件方面需要有底下这些数据喔:
* /etc/ypserv.conf:这是最主要的 ypserv 软件所提供的配置文件,可以规范 NIS 客户端是否可登入的权限。
* /etc/hosts:由于 NIS server/client 会用到网络主机名与 IP 的对应,因此这个主机名对应档就显的相当重要!每一部主机名与 IP 都需要记录才行!
* /etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。
* /var/yp/Makefile:前面不是说账号数据要转成数据库文件吗? 这就是与建立数据库有关的动作配置文件;
至于 NIS 服务器提供的主要服务方面有底下两个:
* /usr/sbin/ypserv:就是 NIS 服务器的主要提供服务;
* /usr/sbin/rpc.yppasswdd:提供额外的 NIS 客户端之用户密码修改服务, 透过这个服务, NIS 客户端可以直接修改在 NIS 服务器上的密码。相关的使用程序则是 yppasswd 指令;
与账号密码的数据库有关的指令方面有底下几个:
* /usr/lib64/yp/ypinit:建立数据库的指令,非常常用 (在 32 位的系统下,文件名则是 /usr/lib/yp/ypinit 喔!);
* /usr/bin/yppasswd:与 NIS 客户端有关,主要在让用户修改服务器上的密码。
* * *
### 14.2.3 一个实作案例
如果你有观察过[图 14.1-1](#fig14.1-1) 的话,你会发现到我们的 NIS 需要设定 Master/Slave 及 client 等, 不过我们这里仅介绍 NIS master server 与 NIS client 两个组件而已,如果你有需要额外的 slave 的话, 再请查阅 NIS 官网的介绍啰。底下鸟哥先拟一个简单的案例,做完案例我们再来谈谈实际可能会使用于丛集计算机的案例吧!
* NIS 的域名为 vbirdnis
* 整个内部的信任网域为 192.168.100.0/24
* NIS master server 的 IP 为 192.168.100.254 ,主机名为 www.centos.vbird
* NIS client 的 IP 为 192.168.100.10,主机名为 clientlinux.centos.vbird
底下我们就一个一个来设定吧!
* * *
### 14.2.4 NIS server 的设定与启动
NIS 服务器的设定真是很简单,首先,你必须要在 NIS 服务器上面搞定你的账号与密码相关数据, 这包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! 详细的账号相关资料请参考[基础篇的第十四章账号管理](http://linux.vbird.org/linux_basic/0410accountmanager.php)。 等到搞定之后你就可以继续 NIS 服务器的设定了:
* 1\. 先设定 NIS 的域名 (NIS domain name)
NIS 是会分领域名 (domain name) 来分辨不同的账号密码数据的,因此你必须要在服务器与客户端都指定相同的 NIS 领域名才行。设定这个 NIS 领域名的动作很简单,就直接编辑 /etc/sysconfig/network 即可!如下所示:
```
[root@www ~]# vim /etc/sysconfig/network
# 不要更改其他既有数据,只要加入底下这几行即可:
NISDOMAIN=vbirdnis <==设定 NIS 领域名
YPSERV_ARGS="-p 1011" <==设定 NIS 每次都启动在固定的埠口
```
当然,你也可以使用手动的方式暂时设定好你的 NIS 领域名,透过的方法就是 nisdomainname 这个指令。 (其实 nisdomainname 与 ypdomainname 及 domainname 都是一模一样的指令啦!你只要记住一个指令名称即可。请自行 man domainname 吧!)不过,这个指令现在大概只用来检查设定是否正确,因为启动 NIS 服务器时,服务器去捉取的数据就是从 network 这个档案里面捉取的!所以只要改这个配置文件即可啊!
另外,由于未来想使用 iptables 直接管理 NIS 的使用,因此我们想要控制 NIS 启动在固定的埠口上。此时, 就使用『YPSERV_ARGS="-p 1011"』这个设定值来固定埠口在 1011 吧!
* 2\. 主要配置文件 /etc/ypserv.conf
这个配置文件就是 NIS 服务器最主要的配置文件啦!内容其实很简单,你可以保留默认值即可。不过,也可以作一些更动啦!
```
[root@www ~]# vim /etc/ypserv.conf
dns: no
# NIS 服务器大多使用于内部局域网络,只要有 /etc/hosts 即可,不用 DNS 啦
files: 30
# 预设会有 30 个数据库被读入内存当中,其实我们的账号档案并不多,30 个够用了。
xfr_check_port: yes
# 与 master/slave 有关,将同步更新的数据库比对所使用的端口,放置于 <1024 内。
# 底下则是设定限制客户端或 slave server 查询的权限,利用冒号隔成四部分:
# **[主机名/IP] : [NIS域名] : [可用数据库名称] : [安全限制]**
# [主机名/IP] :可以使用 network/netmask 如 192.168.100.0/255.255.255.0
# [NIS域名] :例如本案例中的 vbirdnis
# [可用数据库名称]:就是由 NIS 制作出来的数据库名称;
# [安全限制] :包括没有限制 (none)、仅能使用 <1024 (port) 及拒绝 (deny)
# 一般来说,你可以依照我们的网域来设定成为底下的模样:
127.0.0.0/255.255.255.0 : * : * : none
192.168.100.0/255.255.255.0 : * : * : none
* : * : * : deny
# 星号 (*) 代表任何数据都接受的意思。上面三行的意思是,开放 lo 内部接口、
# 开放内部 LAN 网域,且杜绝所有其他来源的 NIS 要求的意思。
# 还有一个简单作法,你可以先将上面三行批注,然后加入底下这一行即可:
* : * : * : none
```
由于鸟哥习惯在内部网域并不设定比较严格的限制,因此通常鸟哥都是选择使用『 * : * : * : none 』那个设定值! 然后透过 iptables 来管控可使用的来源就是了。当然,你可以依据你的需求来设定啦!
* 3\. 设定主机名与 IP 的对应 (/etc/hosts)
在 /etc/ypserv.conf 的设定当中我们谈到 NIS 大部分是给局域网络内的主机使用的,所以当然就不需要 DNS 的设定了。不过,由于 NIS 使用到很多的主机名,但是网络联机透过的是 IP 啊!所以你一定要设定好 /etc/hosts 里面的主机名与 IP 的对应,否则会无法成功联机 NIS !这个很重要,绝大部分的朋友无法达成 NIS server/client 的联机都是这里出问题而已。 依据[本案例的设定值](#nis_server_case),你应该这样做:
```
[root@www ~]# vim /etc/hosts
# 原本就有的 localhost 与 127.0.0.1 之类的设定都不要更动,只要新增数据:
<u>192.168.100.254 www.centos.vbird</u>
192.168.100.10 clientlinux.centos.vbird
[root@www ~]# hostname
www.centos.vbird
# 再做个确认,确定输出的主机名与本机 IP 确实有写入 /etc/hosts 喔!
```
注意!如果你的主机名 (hostname) 与 NIS 的主机名不一样,那么在这个档案当中还是需要将你的主机名给他设定进来! 否则在后面数据库的设定时,肯定会发生问题。当然啦,你也可以直接在 /etc/sysconfig/network 当中直接重新设定主机名,然后重新启动,或者是利用 hostname 这个指令重新设定你的主机名也可以。
* 4\. 启动与观察所有相关的服务
接下来当然是先启动所有相关的服务啰,这包括 RPC, ypserv 以及 yppasswdd 啰!不过,如果你的 RPC 本来就已经启动的话,那就不要重新启动 rpcbind 了!此外,为了也让 yppasswdd 启动在固定的埠口,方便防火墙的管理, 因此,我们也建议你可以设定一下 /etc/sysconfig/yppasswdd 喔!
```
[root@www ~]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012" <==找到这个设定值,修改一下内容成这样!
[root@www ~]# /etc/init.d/ypserv start
[root@www ~]# /etc/init.d/yppasswdd start
[root@www ~]# chkconfig ypserv on
[root@www ~]# chkconfig yppasswdd on
```
注意,主要的 NIS 服务是 ypserv ,不过,如果要提供 NIS 客户端的密码修改功能的话, 最好还是得要启动 yppasswdd 这个服务才好。在启动完毕后,我们可以利用 rpcinfo 来检查看看:
```
[root@www ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 4 udp 111 portmapper
100004 2 udp 1011 ypserv
100004 1 udp 1011 ypserv
100004 2 tcp 1011 ypserv
100004 1 tcp 1011 ypserv
100009 1 udp 1012 yppasswdd
# 其他不相干的 RPC 鸟哥将它拿掉了,与 NIS 有关的至少要有上面这几个!要仔细看,
# 看看埠口是否为我们规定的 1011, 1012 ,若不是的话,得要修改一下配置文件。
[root@www ~]# rpcinfo -u localhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
```
很多时候,很多朋友在设定完 NIS 后又回去设定 NFS 了,结果看了前一章的介绍,竟然又重新启动 rpcbind , 这将导致 ypserv 的注册数据被注销掉。因此,使用上述的动作来检查看看服务有没有在等待中, 要看到如上的『就绪并等待服务』才会是正常的呦!
* 5\. 处理账号并建立数据库
在完成了上面的所有步骤后,接下来我们得要开始将主机上面的账号档案转成数据库档案啦! 不过,因为担心与 NIS 客户端的账号有冲突,加上之前我们已经建立过一些账号了。所以,这里我们建立三个新账号, 分别是 nisuser1, nisuser2, nisuser3 。不过账号主要是依据 UID 来判断的啊!因此,我们使用大于 1000 的 UID 来建立这三个账号喔!
```
[root@www ~]# useradd -u 1001 nisuser1
[root@www ~]# useradd -u 1002 nisuser2
[root@www ~]# useradd -u 1003 nisuser3
[root@www ~]# echo password | passwd --stdin nisuser1
[root@www ~]# echo password | passwd --stdin nisuser2
[root@www ~]# echo password | passwd --stdin nisuser3
```
接下来,将建立的帐密数据转成数据库吧!转换的动作直接透过 /usr/lib64/yp/ypinit 这个指令来处理即可!整个步骤是这样做的:
```
[root@www ~]# /usr/lib64/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. www.centos.vbird 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: www.centos.vbird <==系统根据主机名自动捉取
next host to add: <==这个地方按下 [crtl]-d
The current list of NIS servers looks like this:
www.centos.vbird
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/vbirdnis/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/vbirdnis'
Updating passwd.byname...
Updating passwd.byuid...
....(中间省略)....
gmake[1]: Leaving directory `/var/yp/vbirdnis'
www.centos.vbird has been set up as a NIS master server.
Now you can run ypinit -s www.centos.vbird on all slave server.
```
要注意出现的信息当中,在告知你可以直接输入 [ctrl]-d 以结束的那个地方, 你的主机名会主动的被捉出来,注意!这个主机名务必需要在 /etc/hosts 可以被找到 IP 的对应, 否则会出现问题。另外,万一在执行 ypinit -m 时,出现如下的错误,那肯定就是有些数据没有被建立了!
```
gmake[1]: *** No rule to make target `/etc/aliases', needed by `mail.aliases'. Stop.
gmake[1]: Leaving directory `/var/yp/vbirdnis'
make: *** [target] Error 2
Error running Makefile.
Please try it by hand.
[root@www ~]# touch /etc/aliases
# 解决方法很简单吶!缺少什么档案,就 touch 他就是了!
[root@www ~]# /usr/lib64/yp/ypinit -m
# 然后再重新执行一次即可!
```
如果是如下的错误,那可能是因为:
* 你的 ypserv 服务没有顺利启动,请利用 rpcinfo 检查看看;
* 你的主机名与 IP 没有对应好,请检查 /etc/hosts
```
gmake[1]: Entering directory `/var/yp/vbirdnis'
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
....(底下省略)....
```
要注意啊,如果你的用户密码有变动过,那么你就得要重新制作数据库,重新启动 ypserv 及 yppasswdd 喔! 注意注意啊!整个 NIS 服务器这样就给搞定了,有没有很简单啊!
* * *
### 14.2.5 防火墙设置
又来到了防火墙的规划了!要注意的是,我们的 NIS 与 NFS 都是使用 RPC Server 的,所以啰,除了上述谈到的固定埠口之外, 你还得要开放 port 111 才行。假设你已经看过前一章,而且是使用鸟哥的 iptables.rule 脚本来处理你的防火墙, 那么你可以修改该档案的内容,新增几条规则去:
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -p tcp -s 192.168.100.0/24 --dport 1011 -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp -s 192.168.100.0/24 -m multiport \
--dport 1011,1012 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
# 千万记得要重新建置防火墙规则啊!
```
* * *
- 鸟哥的Linux私房菜:服务器架设篇 第三版
- 第一部份:架站前的进修专区
- 作者序
- 第一章、架设服务器前的准备工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架设服务器流程
- 1.3 自我评估是否已经具有架站的能力
- 1.4 本章习题
- 第二章、基础网络概念
- 2.1 网络是个什么玩意儿
- 2.2 TCP/IP 的链结层相关协议
- 2.3 TCP/IP 的网络层相关封包与数据
- 2.4 TCP/IP 的传输层相关封包与数据
- 2.5 连上 Internet 前的准备事项
- 2.6 重点回顾:
- 2.7 本章习题
- 2.8 参考数据与延伸阅读
- 第三章、局域网络架构简介
- 3.1 局域网络的联机
- 3.2 本书使用的内部联机网络参数与通讯协议
- 第四章、连上 Internet
- 4.1 Linux 连上 Internet 前的注意事项
- 4.2 连上 Internet 的设定方法
- 4.3 无线网络--以笔记本电脑为例
- 4.4 常见问题说明
- 4.5 重点回顾
- 4.6 本章习题
- 4.7 参考数据与延伸阅读
- 第五章、 Linux 常用网络指令
- 5.1 网络参数设定使用的指令
- 5.2 网络侦错与观察指令
- 5.3 远程联机指令与实时通讯软件
- 5.4 文字接口网页浏览
- 5.5 封包撷取功能
- 5.6 重点回顾
- 5.7 本章习题
- 5.8 参考数据与延伸阅读
- 第六章、 Linux 网络侦错
- 6.1 无法联机原因分析
- 6.2 处理流程
- 6.3 本章习题
- 6.4 参考数据与延伸阅读
- 第二部分:主机的简易资安防护措施
- 第七章、网络安全与主机基本防护:限制端口, 网络升级与 SELinux
- 7.1 网络封包联机进入主机的流程
- 7.2 网络自动升级软件
- 7.3 限制联机埠口 (port)
- 7.4 SELinux 管理原则
- 7.5 被攻击后的主机修复工作
- 7.6 重点回顾
- 7.7 课后练习
- 7.8 参考数据与延伸阅读
- 第八章、路由观念与路由器设定
- 8.1 路由
- 8.2 路由器架设
- 8.3 动态路由器架设:quagga (zebra + ripd)
- 8.4 特殊状况:路由器两边界面是同一个 IP 网段: ARP Proxy
- 8.5 重点回顾
- 8.6 本章习题
- 8.7 参考数据与延伸阅读
- 第九章、防火墙与 NAT 服务器
- 9.1 认识防火墙
- 9.2 TCP Wrappers
- 9.3 Linux 的封包过滤软件:iptables
- 9.4 单机防火墙的一个实例
- 9.5 NAT 服务器的设定
- 9.6 重点回顾
- 9.7 本章习题
- 9.8 参考数据与延伸阅读
- 第十章、申请合法的主机名
- 10.1 为何需要主机名
- 10.2 注册一个合法的主机名
- 10.3 重点回顾
- 10.4 本章习题
- 10.5 参考数据与延伸阅读
- 第三部分:局域网络内常见的服务器架设
- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
- 11.1 远程联机服务器
- 11.2 文字接口联机服务器: SSH 服务器
- 11.3 最原始图形接口: Xdmcp 服务的启用
- 11.4 华丽的图形接口: VNC 服务器
- 11.5 仿真的远程桌面系统: XRDP 服务器
- 11.6 SSH 服务器的进阶应用
- 11.7 重点回顾
- 11.8 本章习题
- 11.9 参考数据与延伸阅读
- 第十二章、网络参数控管者: DHCP 服务器
- 12.1 DHCP 运作的原理
- 12.2 DHCP 服务器端的设定
- 12.3 DHCP 客户端的设定
- 12.4 DHCP 服务器端进阶观察与使用
- 12.5 重点回顾
- 12.6 本章习题
- 12.7 参考数据与延伸阅读
- 第十三章、文件服务器之一:NFS 服务器
- 13.1 NFS 的由来与其功能
- 13.2 NFS Server 端的设定
- 13.3 NFS 客户端的设定
- 13.4 案例演练
- 13.5 重点回顾
- 13.6 本章习题
- 13.7 参考数据与延伸阅读
- 第十四章、账号控管: NIS 服务器
- 14.1 NIS 的由来与功能
- 14.2 NIS Server 端的设定
- 14.3 NIS Client 端的设定
- 14.4 NIS 搭配 NFS 的设定在丛集计算机上的应用
- 14.5 重点回顾
- 14.6 本章习题
- 14.7 参考数据与延伸阅读
- 第十五章、时间服务器: NTP 服务器
- 15.1 关于时区与网络校时的通讯协议
- 15.2 NTP 服务器的安装与设定
- 15.3 客户端的时间更新方式
- 15.4 重点回顾
- 15.5 本章习题
- 15.6 参考数据与延伸阅读
- 第十六章、文件服务器之二: SAMBA 服务器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服务器的基础设定
- 16.3 Samba 客户端软件功能
- 16.4 以 PDC 服务器提供账号管理
- 16.5 服务器简单维护与管理
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考数据与延伸阅读
- 第十七章、区网控制者: Proxy 服务器
- 17.1 什么是代理服务器 (Proxy)
- 17.2 Proxy 服务器的基础设定
- 17.3 客户端的使用与测试
- 17.4 服务器的其他应用设定
- 17.5 重点回顾
- 17.6 本章习题
- 17.7 参考数据与延伸阅读
- 第十八章、网络驱动器装置: iSCSI 服务器
- 18.1 网络文件系统还是网络驱动器
- 18.2 iSCSI target 的设定
- 18.3 iSCSI initiator 的设定
- 18.4 重点回顾
- 18.5 本章习题
- 18.6 参考数据与延伸阅读
- 第四部分:常见因特网服务器架设
- 第十九章、主机名控制者: DNS 服务器
- 19.1 什么是 DNS
- 19.2 Client 端的设定
- 19.3 DNS 服务器的软件、种类与 cache only DNS 服务器设定
- 19.4 DNS 服务器的详细设定
- 19.5 协同工作的 DNS: Slave DNS 及子域授权设定
- 19.6 DNS 服务器的进阶设定
- 19.7 重点回顾
- 19.8 本章习题
- 19.9 参考数据与延伸阅读
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服务器之三: FTP 服务器
- 21.1 FTP 的数据链路原理
- 21.2 vsftpd 服务器基础设定
- 21.3 客户端的图形接口 FTP 联机软件
- 21.4 让 vsftpd 增加 SSL 的加密功能
- 21.5 重点回顾
- 21.6 本章习题
- 21.7 参考数据与延伸阅读
- 第二十二章、邮件服务器: Postfix
- 22.1 邮件服务器的功能与运作原理
- 22.2 MTA 服务器: Postfix 基础设定
- 22.3 MRA 服务器: dovecot 设定
- 22.4 MUA 软件:客户端的收发信软件
- 22.5 邮件服务器的进阶设定
- 22.6 重点回顾
- 22.7 本章习题
- 22.8 参考数据与延伸阅读