环境介绍:
2台机器,一台做为服务器,主机名为station1.example.com,一台作为测试用客户端,主机名为station2.example.com,ip地址分别为172.16.0.1和172.16.0.2。station1上将运行NIS,kerberos服务,station2将使用station2提供的NIS和kerberos用户信息进行登录。并最终在所有nis和kerberos域里实现单点登录(既:只需要在第一次登录系统的时候输入密码)
NIS服务器的配置
station1配置
修改/etc/sysconfig/network绑定NIS服务器的端口(可选,这么做是为了方便防火墙配置)
YPSERV_ARGS="-P841"
修改/etc/sysconfig/yppasswdd绑定yppasswdd的端口(可选,这么做是为了方便防火墙配置)
YPPASSWDD_ARGS="--Port842"
修改/var/yp/securenets加入允许查看NIS信息的服务器的网段(可选,增强安全性)
255.255.255.0 172.16.0.0
修改/etc/sysconfig/network(设置NIS的域名)
NISDOMAIN=station1
修改/var/yp/Makefile将(配置automount实现当station2或者其他客户端登录自己的服务器时,自动将station1上用户的home挂接到本地)
all: passwd group hostsrpc services netid protocols mail
修改为
all: passwd group hostsrpc services netid protocols mail auto.master auto.home
执行system-config-authentication-->启用NIS支持-->配置NIS-->输入NIS域 station1 NIS服务器:172.16.0.1-->确定保存
执行chkconfig ypserv on;/etc/init.d/ypserv start
初始化NIS数据库
/usr/lib/yp/ypinit -m
配置automount
touch /etc/auto.home
cd /var/yp
make
配置NFS,将home目录共享给客户端
vi /etc/exports加入
/home 172.16.0.0/24(rw)
chkconfig nfson;/etc/init.d/nfs start
修改/etc/auto.master,注释掉所有以前的配置,加入
/home auto.home
(切不可启动autofs,这个工作交给ypserver来做的)
创建/etc/auto.home文件,其中的station1换成你自己的主机名
* -rw,syncstation1:/home/&
执行下面的命令
# cd /var/yp
# make
# /etc/init.d/ypservrestart
客户端station2配置
修改/etc/auto.master注释掉其他配置,并加入
+auto.master
执行system-config-authentication.选择Enable NIS然后点Configure按照我们刚才的设置填入NIS 域和NIS服务器的地址然后点OK确定,并退出
重启ypbind服务
# /etc/init.d/ypbindrestart
# chkconfig ypbind on
重启autofs
# /etc/init.d/autofsrestart
# chkconfig autofs on
测试
在station1上创建测试用户
#useradd lief
# passwd lief
重新编译nis数据库
# make -C /var/yp
从station2用lief登录station2,密码是在station1上分配的密码,应该可以登录系统,并且拥有自己的home目录,其home目录来自于station1的共享
还是上面的环境,在接下来的配置中,我们要通过配置kerberos将原来的系统用户全部存储到kerberos数据库里,并实现所有域服务器中的节点单点登录
首先配置服务器节点station1:
修改/etc/krb5.conf
将[libdefaults]中的default_realm改为 STATION1.EXAMPLE.COM
将[realms]中的EXAMPLE.COM改为STATION1.EXAMPLE.COM, kdc = station1.example.com:88以及 admin_server =station1.example.com:749
将[domain_realm]中的记录改为
station1.example.com =STATION1.EXAMPLE.COM
station2.example.com =STATION1.EXAMPLE.COM
如果还有更多的客户端节点,都需要在上面列出
在[appdefaults]中加入
validate=true
保存退出
修改 /var/kerberos/krb5kdc/中的kdc.conf为
[kdcdefaults]
acl_file =/var/kerberos/krb5kdc/kadm5.acl
dict_file =/usr/share/dict/words
admin_keytab =/var/kerberos/krb5kdc/kadm5.keytab
v4_mode = nopreauth
[realms]
STATION3.EXAMPLE.COM = {
master_key_type =des3-hmac-sha1
default_principal_flags =+preauth
supported_enctypes =des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normaldes-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
}
修改/var/kerberos/krb5kdc/kadm5.acl文件为
初始化kerberos数据库
kdb5_util create -rstation1.example.com -s
配置数据库
执行kadmin.local
kadmin.local: addprincroot/admin (设置管理密码)
kadmin.local: addprinclief (创建kerberos用户lief,如果系统里还有其他需要登录的用户,都用addprinc命令创建,用户名要和系统用户名一致,密码随便配置)
kadmin.local: listprinclief(获取用户信息)
kadmin.local: ktadd -k/var/kerberos/krb5kdc/kadm5.keytab kadmin/admin
kadmin.local: ktadd -k/var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw
(以上命令创建kadmind的keytab文件)
kadmin.local: addprinc-randkey host/station1.example.com
kadmin.local: ktadd -k/etc/krb5.keytab host/station1.example.com(创建本地的keytab文件)
启动服务
chkconfig krb5kdc on;/etc/init.d/krb5kdc start
chkconfig kadminon;/etc/init.d/kadmin start
配置客户端节点station2,如果有多个节点都需要这么配置
复制station1上的/etc/krb5.conf到本地/etc目录
执行kadmin -p root/admin
kadmin: addprinc -randkeyhost/station2.example.com
kadmin: ktadd -k/etc/krb5.keytab host/station2.example.com
去掉原先系统用户的密码,在station1上
usermod -p '!!' lief(如果有多个普通用户,需要如法炮制)
cd /var/yp;make
修改每个节点上的/etc/ssh/ssh_config文件加入
GSSAPIDelegateCredentialsyes
开启信任转发
在station1和station2上执行system-config-authentication-->验证-->启用Kerberos支持-->配置Kerberos-->确认域 KDC和管理服务器的配置和/etc/krb5.conf中的一致,点确定保存
测试
从station1上用lief 采用ssh登录station2
ssh lief@station2
登录成功后再执行
ssh lief@station1
这时候应该是不需要密码了
配置结束