LDAP+Kerberos+NFS Secure

合集下载

LDAP和Kerberos在统一身份认证中的应用

LDAP和Kerberos在统一身份认证中的应用

第 2期
宫恩辉 , 朱巧明 , 李培峰 , : D 等 L AP和 Kebrs reo 在统一身份认证 中的应用
5 3
制, 这种 同步机 制很 难直 接推 广 到其 它服务 器 上 , 因此通 用 性较 差 .
13 使用 数据 库来 记 录 当前 的用户 登 录信 息 (P+机器 名 等 ) . I 当某 个 系统要 获取 当前 用 户是否 登 入 的信息 时先 判断 该子 系统 的登入 信息 是否 存在 , 如果 不 存在 , 再 则 判断 状态 数据 库 中是 否存 在 当前 客 户端 的在 线信 息 L’ . 3j 4 效率 : 个方 法效 率是 比较 高 的 , 以使 用 于所有 的多 系统情 况 , 以跨 平 台 , 服 务器 . 这 可 可 跨 缺点 : 深人 修 改各 个程 序 的代码 , 大量用 户 并发 问题 没有 解决 . 要 对 以上几 种解决 方 案都 存在 明显 的缺 点 , 有解 决 大量 用 户 并 发 的 问题 . 文 综 合 以上 几 种 方 案 的优 缺 没 本 点 , 出 了一种有 效 的解决 方 案— —采 用 L A 提 D P和 Kebrs 术 , reo 技 实现一 个 高效 、 全 的 S O 系统 . 安 S
的实 现带 来 了一 系列 的 问题 , 由于应 用 系统在 不 同时 间 由不 同人 群研 发完 成 , 乏 全局 的 系统 规 划 , 如 缺 出现
众 多分散 的 、 异构 的 、 相互 封 闭 的信 息 资源 系统 等 . 针对 这些 问题 , 据 数字 校 园 的 目标 , 根 分析 并 设 计 了一 个 统一 身份 认证 系统 .
1 2 采用 J AS模 型 实现 S 0 . A S
此方法使用 SO 网关 , S 当用户访问资源时候未经过认证 , 则转 向 SO 网关要求用户输人身份信 息进行 S

Kerberos-LDAP-NFSv4 HOWTO

Kerberos-LDAP-NFSv4 HOWTO

Kerberos/LDAP/NFSv4 HOWTOThese instructions are specific to Redhat Enterprise Linux (RHEL), Version 4. A combination of RHEL AS (for servers) and RHEL WS (for workstations) were used. Interoperability with other clients is possible, but is not addressed here (but refer to the references below for links that may be helpfull).The goal of this document is to describe how to setup a network so that the following are attained.∙User authentication is done using a central Kerberos server.∙User information (UID/GID/home directories) are stored in an LDAP directory.∙Store NFS automount information in LDAP.∙NFSv4 authentication using Kerberos is possible with support for legacy NFSv3 mounts.This document will not explain why kerberos, ldap or NFSv4 are good things. If you aren’t convinced, then read up on the subject. If you are convinced, then read on.PrerequisitesTime SynchronizationAll machines that will participate in kerberos authentication must have a reliable, synchronized time source. Most large orgainization offer their own time sources. You can use the RHEL configuration toolsystem-config-time to set this up.If the different in time between systems varies by more than a small amount (usually five minutes), systems will not be able to authenticate.Host NamesAll hosts must have their hostname set to the fully qualified hostname as reported by DNS. Both forward and reverse mapping must work properly.[root@phoenix ~]# hostnamephoenix.physik.unizh.ch[root@phoenix ~]# dig phoenix.physik.unizh.ch +short130.60.164.29[root@phoenix ~]# dig -x 130.60.164.29 +shortphoenix.physik.unizh.ch.The host may be referenced by a CNAME, but the official host name (as reported by hostname) must be an ‘A’ record. This is important; if youdon’t have this setup properly then some things will work, while other things will fail mysteriously.If the host name does not match the reverse DNS lookup, Kerberos authentication will fail.PackagesBefore starting, verify that the necessary RPM packages are installed. The packages required are different for a client or a server.SPECIAL NOTE: Red Hat Enterprise Linux 4 installed on a 64-bit processor can sometimes install the 32 bit version of packages. When verifying that the packages are correctly installed, make sure that the 64 bit version is there if you are on a 64 bit architecture. I had endless grief getting ldap to work until I realized that the Red Hat installer had installed the 32 bit version of cyrus-sasl-gssapi on our 64 bit machine. All of the other packages were correct, or both were installed. To verify a package, use the following command.[root@coma ~]# rpm -q --queryformat="%{n}-%{v}-%{r}.%{arch}\n"cyrus-sasl-gssapicyrus-sasl-gssapi-2.1.19-5.EL4.i386[root@coma ~]# up2date --arch=x86_64 cyrus-sasl-gssapiFetching Obsoletes list for channel: rhel-x86_64-as-4...Fetching rpm headers...Installing...1:cyrus-sasl-gssapi ########################################### [100%][root@coma ~]# rpm -q --queryformat="%{n}-%{v}-%{r}.%{arch}\n"cyrus-sasl-gssapicyrus-sasl-gssapi-2.1.19-5.EL4.i386cyrus-sasl-gssapi-2.1.19-5.EL4.x86_64If you are on a 32 bit architecture, then this is something that you don’t need to worry about.Client Packages∙krb5-libs∙krb5-workstation∙pam_krb5∙cyrus-sasl-gssapi∙openldap-clientsServer Packages (KDC and LDAP)The server will need all of the client package in addition to the following.∙krb5-server∙openldap-serversWhat's in a Name?At this point, you should have all of your machines registered in DNS under one (or more) domains. In our case, our machines are in the physik.unizh.ch domain. We also authenticate our supercomputers which are in the zbox.physik.unizh.ch domain.You need to choose a kerberos realm. A kerberos realm is completely different from a DNS domain, but in most cases you will want to use the same name. By convention, kerberos realms are all upper case. Our kerberos realm is PHYSIK.UNIZH.CH. This realm serves both the physik.unizh.ch and the zbox.physik.unizh.ch DNS domains.There is also a distinction between a unix username and a kerberos principal. You will be creating a kerberos principal for every unix username for which you want to use kerberos authentication. In addition, you will be creating additional kerberos principals for additional purposes (more on this later).In this document, when I say domain, I mean an DNS domain. When I say realm, I mean a kerberos realm. When I say username, I mean a unix user and when I say principal, I mean a kerberos principal.KerberosKerberos Server (KDC)The first step is to setup a kerberos server (or KDC).File ModificationsThere are a number of files that have to be manually edited on the server.Edit /etc/krb5.confThe stock version of this file will have or everwhere you want to put your own realm or domain name. The two sections in question are libdefaults and domain_realm. The other sections do not need to be changed. In libdefaults, enter your own kerberos realm name. You may want to set the clock skew to a lower value (provided you are synchronizing time with ntp).[libdefaults]default_realm = PHYSIK.UNIZH.CHdns_lookup_realm = falsedns_lookup_kdc = falseclockskew = 120The realms section contains the settings for each realm. We have only one realm so it would look like the following. Note that you enter a kdc line for each Kerberos Domain Controller. You should have at least two.[realms]PHYSIK.UNIZH.CH = {kdc = coma.physik.unizh.ch:88kdc = second.physik.unizh.ch:88admin_server = coma.physik.unizh.ch:749default_domain = physik.unizh.ch}In domain_realm, enter the mapping between DNS domains and your kerberos realm. If you are serving multiple DNS domains, you need to put them all here.[domain_realm].zbox.physik.unizh.ch = PHYSIK.UNIZH.CHzbox.physik.unizh.ch = PHYSIK.UNIZH.CH.physik.unizh.ch = PHYSIK.UNIZH.CHphysik.unizh.ch = PHYSIK.UNIZH.CHFinally, you may want to tweak the application defaults, for example to change the renew lifetime.[appdefaults]pam = {debug = falseticket_lifetime = 36000renew_lifetime = 36000forwardable = truekrb4_convert = false}kinit = {ticket_lifetime = 36000renew_lifetime = 36000forwardable = true}Edit /var/kerberos/krb5kdc/kdc.confIn this file, only the realms section needs to be modified. According to this FAQ, it is important to change the key types as well. I can confirm that the setting below work perfectly in our environment. You may want to decide on appropriate values for the maximum life of each ticket, and for how long each ticket can be renewed. Reasonable values are 1 day and 1 week but your needs will vary. The values here are the absolute maximum that the KDC will issue. Each principal has its own maximum as well.[realms]PHYSIK.UNIZH.CH = {master_key_type = des3-hmac-sha1supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normalmax_life = 25hmax_renewable_life = 4w}Edit /var/kerberos/krb5kdc/kadm5.aclThis file determines who can modify the kerberos database. You need to change the realm.*/admin@PHYSIK.UNIZH.CH *A brief note on kerberos users (called principles) is in order at this point. All standard users will be of the form username@REALM. When one tries to run the administration tool, it takes the current username, appends ‘/admin’ and uses that as the principle. If there is no username/admin@REALM principle, then that user cannot modify the database.Change /etc/gssapi_mech.confThere is a problem with this file on 64-bit architectures. It specifies the “lib” library path instead of the “lib64” path. You can just remove the path altogether and it will work on either. This is more important on a kerberos client, but a server can be a client as well, so you may as well change it on all machines.# library initialization function# ================================ ==========================# The MIT K5 gssapi library, use special function for initialization. libgssapi_krb5.so mechglue_internal_krb5_initCreate the Kerberos databaseCreate the database with the following command.[root@coma ~] kdb5_util create -sThis will prompt you for a password. You will only have to enter this password when you initially configure a slave KDC, so choose something large and random and store it in a secure place. Really, you may only have to enter this once more, so make it secure.Add the first Administrative UserI do administration as root, so the first user I add is root/admin. The default realm is appended automatically, so the command to use is as follows.[root@coma ~] kadmin.local -q "addprinc root/admin"Enter a password when prompted. You will need this password every time you administer the database.Starting the ServicesAt this point it is necessary to enable and start the kerberos services.[root@coma ~] chkconfig kadmin on[root@coma ~] service kadmin start[root@coma ~] chkconfig krb5kdc on[root@coma ~] service krb5kdc startTo test if everything is working, run kadmin. By default, the current user appended with ‘/admin’ is used as the principle.[root@coma ~] kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: listprincsK/M@PHYSIK.UNIZH.CHkadmin/admin@PHYSIK.UNIZH.CHkadmin/changepw@PHYSIK.UNIZH.CHkadmin/history@PHYSIK.UNIZH.CHkrbtgt/PHYSIK.UNIZH.CH@PHYSIK.UNIZH.CHroot/admin@PHYSIK.UNIZH.CHThe additional principles have been created by the tool. They are required so leave them be.Create a Host Principal for the KDCNow you will want to create a host principal for the KDC. This is required for replication (see below). You also need to add this principal to the local key table.[root@coma ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: addprinc -randkey host/coma.physik.unizh.chNOTICE: no policy specified forhost/coma.physik.unizh.ch@PHYSIK.UNIZH.CH; assigning "default"Principal "host/coma.physik.unizh.ch@PHYSIK.UNIZH.CH" created.kadmin: ktadd host/coma.physik.unizh.chSetup the default PolicyYou will want to create the default password policy at this point. All new accounts will have this policy enforced.[root@coma ~] kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: add_policy -maxlife 180days -minlife 2days -minlength 8-minclasses 3 -history 10 defaultYou can also add other policies and apply different policies to different principles. The different flags and their meaning are as follows.Flag Description-maxlife The is the maximum period before the password must be changed.-minlife This is the minimum time after a password change before itcan be changed again. Without a minimum time, users can change their password multiple times and overflow the history (seebelow) and end up back with the same password.-minclasses This is the number of distinct character classes that mustappear in the password. Character classes are uppercaseletters, lowercase letters, number and symbols. Setting thisto 2 for example would mean a password with at least onelowercase letter and a number would be valid.-historyThis is the number of previous passwords to keep. A password may not duplicate a prior password.Changing the Maximum Renewal TimeEach principal has its own maximum renewal life. On RHEL4, new principals are created with a maximum renewal time of zero. This means you can get a renewable ticket, but they can never be renewed. Each principal must be manually changed to the desired maximum renewal time. In addition, the special principal krbtgt/REALM@REALM must be changed to reflect the maximum renewal time that any principal will have.[root@coma ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: modprinc -maxrenewlife 2weekskrbtgt/PHYSIK.UNIZH.CH@PHYSIK.UNIZH.CHPrincipal "krbtgt/PHYSIK.UNIZH.CH@PHYSIK.UNIZH.CH" modified. Adding Principals[root@coma ~] kadminuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: addprinc -maxrenewlife 7days dougThe various options allow you to tune your password policy.Slave KDC (Backup KDC)At this point, you will want to setup a backup or “slave” KDC.Host PrincipalFirst, add a host principal for each slave KDC. If you followed the instructions above for the primary KDC, then you will already have a host principal for the primary.[root@coma ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: addprinc -randkey host/second.physik.unizh.chNOTICE: no policy specified forhost/second.physik.unizh.ch@PHYSIK.UNIZH.CH; assigning "default"Principal "host/second.physik.unizh.ch@PHYSIK.UNIZH.CH" created. Copy Configuration FilesCopy the following files from the primary KDC to each of the slave KDCs.∙/etc/krb5.conf∙/var/kerberos/krb5kdc/kdc.conf∙/var/kerberos/krb5kdc/kadm5.acl∙/etc/gssapi_mech.confCreate kpropd.aclCreate an ACL file with all of the KDCs listed (both primary and backups). This file is /var/kerberos/krb5kdc/kpropd.acl and should look something like this.host/coma.physik.unizh.ch@PHYSIK.UNIZH.CHhost/second.physik.unizh.ch@PHYSIK.UNIZH.CHDon’t put this file on the primary KD C or kadmin will not start. Add Host Principal to Slave Key TableOn each slave KDC, add the host principal to the local key table.[root@second ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: ktadd host/second.physik.unizh.chStart the Kerberos Propagation DaemonOn RHEL4 it is not necessary to create the database on the slave prior to starting the daemon. It was reported (thanks Louis) that on Fedora and perhaps Centos it is required. If the kprop daemon doesn’t start, you may need to create the database with the “kdb5_util create -s” command before starting it.On each slave KDC, use the following command to enable the receipt of the kerberos database.[root@second ~]# chkconfig kprop on[root@second ~]# service kprop startStarting Kerberos 5 Propagation Server: [ OK ] Propagate the DatabaseThe next step is to propagate the database (manually) to each slave KDC. This is a two step process. First, dump the database to a file. Next, propogate the dumped file to each slave KDC.[root@coma ~]# kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans [root@coma ~]# kprop -f /var/kerberos/krb5kdc/slave_datatrans second.physik.unizh.chDatabase propagation to second.physik.unizh.ch: SUCCEEDEDCreate a Stash FileOn each KDC you need to create a stash file. You will need the (really long and random) master key that you entered when you initially created the kerberos database.[root@second ~]# kdb5_util stashkdb5_util: Cannot find/read stored master key while reading master key kdb5_util: Warning: proceeding without master keyEnter KDC database master key:Start the Kerberos 5 KDC on each SlaveNow that the database is there, and you have created the stash file, you are ready to start the KDC Daemon.[root@second ~]# chkconfig krb5kdc on[root@second ~]# service krb5kdc startStarting Kerberos 5 KDC: [ OK ]Do not start the Administration Daemon (kadmin) on the slaves. The Administration Daemon is used to add/remove/modify principals and to change passwords. When the database is replicated to the slaves, any changes that were made on the slaves would be lost. This also means that if the primary KDC goes down, it is not possible to make changes, or for users to modify their password.If the primary KDC will be down for an extended period, you can make any slave the primary, but you will have to replicate the database back to the old primary when it becomes available. This requires manual intervention.Setup Periodic ReplicationReplication from the Master KDC to the slaves is not automatic. You need to set up a cron job. Create a script similar to the following and place it into /etc/cron.hourly.#!/bin/shKDCS="second.physik.unizh.ch"/usr/kerberos/sbin/kdb5_util dump/var/kerberos/krb5kdc/slave_datatransfor KDC in $KDCS ; do/usr/kerberos/sbin/kprop -f /var/kerberos/krb5kdc/slave_datatrans $KDC \| grep -v SUCCEEDEDdoneYou can change how often replication is performed to suit your needs. If you makes changes to the database, you can manually run the script to propagate them. If the primary KDC goes down, then any changes since thelast propogate will not be reflected (hence if a user password has changed, the old password will be valid, not the new one).Firewall ConfigurationIt is highly recommended that a firewall (for example iptables) be used to restrict access. For kerberos to work, the following ports must be opened.∙Clients must be able to reach all KDCs on UDP port 88 (for authentication).∙Clients must be able to reach the primary KDC on TCP port 749 (for password management).∙The primary KDC must be able to reach the secondary KDCs on TCP port 754 (for replication).LDAPPlease read the section below on crash recovery. If the LDAP server (slapd) is not shutdown properly (e.g., your machine crashes) then your LDAP database will be trashed. The LDAP server will start and answer requests but won’t produce any fruitfull result s. Nobody will be able to log in!KerberosYour LDAP server must be configured to use kerberos. If you are running your LDAP server on the same machine as your kerberos KDC, then everything is setup, otherwise see the client section below.You will need to create a kerberos principal for each LDAP server. The special principal, ldap/hostname must be extracted to a key table to which the LDAP server (slapd) has access.[root@coma ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: addprinc -randkey ldap/coma.physik.unizh.chkadmin: ktadd -k /etc/openldap/ldap.keytabldap/coma.physik.unizh.chkadmin: exit[root@coma ~]# chgrp ldap /etc/openldap/ldap.keytab[root@coma ~]# chmod 640 /etc/openldap/ldap.keytabYou need to repeat this process on each LDAP server (of which there should be at least two).You have to tell slapd to use this key table by editing /etc/sysconfig/ldap. It should look like this.export KRB5_KTNAME=/etc/openldap/ldap.keytabSSL CertificateThe LDAP server will require an SSL certificate. Of course, you can purchase one, but this isn’t necessary. Unlike web or mail servers, the certificate authority can be easily distributed to the clients during configuration. The openssl package provides the necessary scripts.See Certificates HOWTO for details on creating a certificate.If you plan to use an alias for your ldap server, then the certificate must contain all of the aliases. For example, let’s suppose you will have to ldap servers called host1.domain and host2.domain. You plan to have an alias called ldap.domain that will round robin. Further, a different domain will also reference the servers as ldap.otherdomain. You need to add the following line to openssl.conf before generating the certificates (in the usr_cert section).subjectAltName=DNS:ldap.domain,DNS:ldap.otherdomainName each server normally (host1.domain and host2.domain). slapd.confNow edit /etc/openldap/slapd.conf and make the following changes.TLSCACertificateFile /etc/openldap/cacerts/cacert.pem TLSCertificateFile /etc/openldap/slapd.pemTLSCertificateKeyFile /etc/openldap/slapd.keyThere are some additional changes that need to be made to this file, so we might as well do them now.Add an idle timeout.idletimeout 3600Failure to add this idle timeout will result in LDAP failing after a period of time. The number of TCP connections is limited internally. If connections are not released, the LDAP daemon (slapd) will be unable to open files. This will cause slapd to return an error to all queries. At this point nobody will be able to logon or do much of anything. If this value is too high (or disabled), then slapd will run out of file handles. If this value is set too low, then your system log will be filled with messages about reconnecting to the LDAP server. On our system, the value 3600 (1 hour) works well.You need to change the suffix and rootdn to match your domain. Here is an example.suffix "dc=physik,dc=unizh,dc=ch"rootdn "cn=Manager,dc=physik,dc=unizh,dc=ch"You also need to add a a temporary manager account for the initial load. The best thing to do here is to add an encrypted password. First run slappasswd to encrypt a password.[root@coma ~]# slappasswdNew password:Re-enter new password:{SSHA}ISM1CdMvg6jOMNjASCKZvOWxXy6F8jY4Now change the rootpw section.rootpw {SSHA}ISM1CdMvg6jOMNjASCKZvOWxXy6F8jY4Change the access control section as follows.# This is a bit of a hack to restrict the SASL mechanisms that the# server advertises to just GSSAPI. Otherwise it also advertises# DIGEST-MD5, which the clients prefer. Then you have to add "-Y# GSSAPI" to all of your ldapsearch/ldapmodify/etc. command lines, which # is annoying. The default for this is noanonymous,noplain so the# addition of noactive is what makes DIGEST-MD5 and the others go away. sasl-secprops noanonymous,noplain,noactive# Map SASL authentication DNs to LDAP DNs# This leaves "username/admin" principals untouchedsasl-regexp uid=([^/]*),cn=GSSAPI,cn=authuid=$1,ou=people,dc=physik,dc=unizh,dc=ch# This should be a ^ plus, not a star, but slapd won't accept it# Users can change their shell, anyone else can see itaccess to attr=loginShellby dn.regex="uid=.*/admin,cn=GSSAPI,cn=auth" writeby self writeby * read# Only the user can see their employeeNumberaccess to attr=employeeNumberby dn.regex="uid=.*/admin,cn=GSSAPI,cn=auth" writeby self readby * none# Default read access for everything elseaccess to *by dn.regex="uid=.*/admin,cn=GSSAPI,cn=auth" writeby * readldap.confThis file needs to be propagated to each host, including the ldap servers. Only the following three lines need to be present.BASE dc=physik,dc=unizh,dc=chURI ldaps://coma.physik.unizh.ch ldaps://second.physik.unizh.ch TLS_CACERT /etc/openldap/cacerts/cacert.pemCrash RecoveryIf your LDAP server is not shutdown gracefully, then the database will become corrupt. There may be a solution to this problem, but I have yet to find it.For this reason, it is a good idea to use a reliable machine for your LDAP servers, and to put said machines on a UPS.BackupFurther, you must make regular exports of the LDAP database so that you can easily reimport them if there is a problem. The following script (or something like it) can be added to /etc/cron.hourly or /etc/cron.daily/ as you see fit. It uses slapcat to export the database on a regular schedule.#!/bin/bashBACKUPDIR=/root/ldap.backupKEEPDAYS=30# Make sure that the directory existsmkdir -p $BACKUPDIR# Create a new backup (and compress it). Choose one of the following FILENAME# patterns (or create your own). The first has the hour and minute while the# second has only the date. You can run the second hourly to keep only one# copy per day, but have it saved hourly.#FILENAME=$BACKUPDIR/ldap.backup.$(date +%Y%m%d%H%M)FILENAME=$BACKUPDIR/ldap.backup.$(date +%Y%m%d)/usr/sbin/slapcat | gzip --best >${FILENAME}.new.gzmv -f ${FILENAME}.new.gz ${FILENAME}.gz# Delete old copiesOLD=$(find $BACKUPDIR/ -ctime +$KEEPDAYS -and -name 'ldap.backup.*') [ -n "$OLD" ] && rm -f $OLDRestoreTo restore your database from the backup, you need to perform the following steps.∙Stop the LDAP serverservice ldap stop∙Remove the old database (you may want to make a copy “just in case”)rm /var/lib/ldap/*∙Import the latest backup (unzip it first if required). Be patient as this takes a little while.cd /root/ldap.backup/gunzip ldap.backup.20060101.gzslapadd -l ldap.backup.20060101∙Change the ownership of the files.chown ldap.ldap /var/lib/ldap/*∙Restart the serverservice ldap startClient SetupCopy FilesCopy the following files from the KDC or LDAP server.∙/etc/krb5.conf∙/etc/ldap.conf∙/etc/openldap/ldap.conf∙/etc/openldap/cacerts/cacert.pemCreate Kerberos PrincipalsRun kadmin on the server and create the following principals. Replace phoenix.physik.unizh.ch with the fully qualified name of the client machine. If you don’t plan to use NFS, then don’t add the second principal. You can always add it now, even if you aren’t planning on using NFSv4 at the mom ent; it won’t hurt anything.[root@coma misc]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: addprinc -randkey host/phoenix.physik.unizh.chkadmin: addprinc -randkey nfs/phoenix.physik.unizh.chNow run kadmin on the client. Add the above two principals to the keytab file as follows. Note the special way in which the NFS principal is added. This is important or again things will fail in mysterious ways.[root@phoenix ~]# kadminAuthenticating as principal root/admin@PHYSIK.UNIZH.CH with password. Password for root/admin@PHYSIK.UNIZH.CH:kadmin: ktadd host/phoenix.physik.unizh.chkadmin: ktadd -e des-cbc-crc:normal nfs/phoenix.physik.unizh.ch Enable AuthenticationRun the configuration tool by typing authconfig at the shell prompt. You will need to check ‘Use LDAP’ under ‘User Information’ and ‘Use Kerberos’ under ‘Authentication’.NFSv4NFSv4 using Kerberos authentication in RHEL4 seems to be broken with the latest patch level. When I find a solution it will be posted here. LDAP and Kerberos for authentication of users works fine.Create the necessary entries in /etc/exports. First, create an NFSv4 mount point. I would suggest /export. Next bind the real path to the NFSv4 mount point. In this example, we want to export the /data directory. We create /export/data for NFSv4 and mount /data there.mkdir -m 1777 /exportmkdir /export/datamount -n --bind /data /export/dataYou will need to add the mount command to /etc/rc.d/rc.local so that it is remounted after each boot.# NFSv4 Mounts/exportgss/krb5(sync,rw,fsid=0,insecure,no_subtree_check,anonuid=65534,anong id=65534)/export/datagss/krb5(sync,rw,nohide,insecure,no_subtree_check,anonuid=65534,anong id=65534)# Legacy mounts/datacoma(sync,rw,nohide,insecure,no_subtree_check,anonuid=65534,anongid=6 5534,no_root_squash)Modify /etc/idmapd.confYou must change the domain to your current domain. Also, The user mapping for nobody should be updated.[General]Verbosity = 0Pipefs-Directory = /var/lib/nfs/rpc_pipefsDomain = physik.unizh.ch[Mapping]Nobody-User = nfsnobodyNobody-Group = nfsnobody[Translation]Method = nsswitchModify /etc/sysconfig/nfsTo enable secure NFS, you must add the following line to/etc/sysconfig/nfsSECURE_NFS=yesIf you are still using NFSv3 and a firewall, you may want to add the following definitions as well. Choose ports that are appropriate to your environment, although the listed values work well for us.STATD_PORT=4000LOCKD_TCPPORT=4001LOCKD_UDPPORT=4001MOUNTD_PORT=4002。

hadoop的认证类型

hadoop的认证类型

hadoop的认证类型Hadoop的认证类型Hadoop是一个开源的分布式计算框架,用于处理大规模数据集(大小从千字节到千字节)的计算。

它是一个高效且可靠的工具,可以在大规模的计算机集群上并行运行,以实现快速、高效地处理数据的能力。

在Hadoop 中,认证是确保系统安全性的一个重要组成部分。

本文将逐步介绍Hadoop中的认证类型及其实现方式。

一、Kerberos认证Kerberos是一个网络认证协议,旨在提供强大的身份验证和数据传输的保护。

在Hadoop中,Kerberos是一种被广泛采用的认证类型,用于确保用户和服务之间的安全通信。

Kerberos使用票据(Ticket)和密钥(Key)来验证用户的身份,并允许他们获得访问受保护资源的权限。

在Hadoop中,Kerberos认证通过以下步骤实现:1. 安装和配置Kerberos服务器:首先,需要在Hadoop集群中安装和配置Kerberos服务器。

这个服务器将负责颁发票据和管理用户和服务的密钥。

2. 创建主体和密钥:在Kerberos服务器中,需要创建用户和服务的主体(Principal)和密钥。

主体是用户或服务的唯一标识符,密钥是用于验证主体身份的加密密钥。

3. 生成票据:当用户或服务请求访问被保护的资源时,Kerberos服务器会根据主体和密钥生成一个票据。

这个票据将随请求一起发送到Hadoop 集群。

4. 验证票据:Hadoop集群的各个节点通过与Kerberos服务器通信来验证票据的有效性。

节点将票据的加密部分与其本地存储的密钥进行比较,以确保它是有效的。

5. 授权访问:一旦票据被验证为有效,Hadoop集群将授权用户或服务访问受保护的资源。

这可以通过访问控制列表(ACL)或其他授权机制来实现。

二、SPNEGO认证SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism)是一种基于GSSAPI(Generic Security Service Application Program Interface)的认证机制,用于在Hadoop中实现单点登录(SSO)功能。

LDAP安全协议

LDAP安全协议

LDAP安全协议LDAP(轻量级目录访问协议)是一种应用层协议,它允许客户端从目录服务中查询、添加、修改和删除记录。

在数据交换过程中,保障LDAP通信的安全性是至关重要的。

为了确保LDAP通信的机密性、完整性和身份验证,使用LDAP安全协议成为必要的选择。

一、LDAP安全协议简介LDAP安全协议是为了满足LDAP通信中的安全需求而设计的协议。

主要包括以下几个方面的内容:1. 机密性(Confidentiality):保护LDAP通信内容不被窃听或截取。

2. 完整性(Integrity):保护LDAP通信内容不被篡改或损坏。

3. 身份验证(Authentication):确保LDAP通信双方的身份合法和真实。

二、LDAP安全协议的实现方式LDAP安全协议可以通过以下方式来实现:1. SSL/TLS(Secure Sockets Layer/Transport Layer Security):使用SSL或TLS协议对LDAP通信进行加密和身份验证。

SSL和TLS协议可以保障通信的机密性、完整性和身份验证,是LDAP通信中常用的安全手段。

2. SASL(Simple Authentication and Security Layer):通过在LDAP通信中插入SASL层,实现对LDAP通信进行身份验证的功能。

SASL支持多种身份验证机制,如基于用户名、密码的验证机制,或者使用基于令牌的验证机制。

三、使用SSL/TLS实现LDAP安全协议使用SSL/TLS实现LDAP安全协议可以保障通信的机密性、完整性和身份验证。

下面是一个简单的示例:1. 生成自签名证书:使用openssl等工具自动生成LDAP服务器的自签名证书。

2. 配置LDAP服务器:将生成的证书配置到LDAP服务器上,并启用SSL/TLS。

3. 配置LDAP客户端:将LDAP客户端的配置文件中的连接参数修改为使用SSL/TLS连接,并导入服务器端的证书以进行身份验证。

ldap认证流程

ldap认证流程

ldap认证流程LDAP认证流程全称是“轻量目录访问协议”(LightweightDirectoryAccessProtocol,LDAP)认证流程。

它是一种基于客户端/服务器的、基于 TCP/IP应用协议,通过使用安全的认证机制来访问、管理和搜索分布式目录服务器上存储的信息。

LDAP认证流程一般包括以下5步:第一步:客户端连接LDAP服务器。

客户端连接LDAP服务器时,首先会向服务器发送连接请求,然后服务器会接受该请求并启动安全会话。

第二步:客户端发送身份验证请求。

客户端必须发送一个身份验证请求给LDAP服务器,提供一个认证的名字,一般是用户名。

第三步:服务器处理身份验证请求。

LDAP服务器会根据客户端发送的用户名,查找到该用户名所关联的密码,再和客户端发送的密码进行比对,如果两者相同,则LDAP服务器会认可客户端的请求。

第四步:身份验证成功,服务器返回绑定信息。

如果客户端的身份验证请求被LDAP服务器认可,那么LDAP服务器就会发送一个绑定信息给客户端,以表示客户端已经被认可为该LDAP服务器的合法用户。

第五步:客户端获取服务器上的信息。

当客户端获取到所需要的绑定信息之后,就可以向LDAP服务器发送请求,请求获取服务器上存放的信息了。

LDAP服务器接收到客户端的请求之后,就会根据客户端的要求返回所需要的信息。

LDAP认证流程一般用于某些网络资源的认证和授权,例如某些安全性比较高的服务器上的文件共享等,通常会使用LDAP进行认证和授权操作。

传统上,LDAP认证流程是运行在企业网络内部的,只有本地用户可以访问资源,但是随着网络的发展,现在企业的外部用户也可以使用LDAP认证流程进行认证和授权。

LDAP认证流程具有很多优势,例如,可以实现网络信息搜索,提供两步认证,具有安全性等。

此外,LDAP还支持其他认证系统,比如Kerberos认证系统,可以同时使用两套认证机制,以更好地保护服务器上存储的信息。

11_Hadoop基础技术-KerberosLDAP

11_Hadoop基础技术-KerberosLDAP

密码太多的烦恼
聊天工具 游戏
看漫画
邮箱 微博
听音乐 追剧追番
各种登录。。。 账号密码记不住呀!!!
统一身份认证
统一身份认证就类似于游乐园的通行规则一样,游客可以 通过一个通行证(秘钥)来畅玩授权过的游乐项目。
在开源大数据平台中,用户可能需要同时使用很多开源组 件,因此会涉及到每个组件的身份认证和访问权限等问题。 利用统一的认证服务能够更好的管理用户的身份认证及会 话管理等。
单点登录的特点如下:
为用户提供便捷服务 提高运维和管理效率 简化应用系统的开发
实现单点登录的主流技术
对于单点登录的实现,主要有如下六种技术:
cookies技术
Broker-based技术
Agent-based技术
Agent and Broker-based技术
Gateway-based技术
Ldap 服务器
身份认证功能设计
LdapServer通过使用Group(组)和Role(角色)的身份认证方式来管理用户,从而更好地管理 不同组织下的用户的属性和权限。
LdapServer的Group(组)是对用户进行统一的组管理,如果用户添加到该组中,该组的 member属性中就会添加成员的dn记录。
LdapServer作为目录服务系统是由目录数据库和一套访问协议组成的系统:
LdapServer基于OpenLDAP开源技术实现。 LdapServer以Berkeley DB作为默认的后端数据库。 LdapServer是基于LDAP标准协议的一种具体开源实现。
LdapServer组织模型
例:左下方节点dn为:
cn=stu_George,uid=001, ou=Primary school, dc=CN,dc=edu

Kerberos概述

Kerberos概述

Kerberos概述Kerberos 是一种计算机网络授权协议,是一套应用对称密钥的管理系统,并需要一个值得信赖的第三方, 它使用一个由两个独立的逻辑部分:认证服务器AS和票据授权服务器TGS组成的可信赖第三方KDC,KDC持有所有的无论是客户还是服务器共享的一套只有实体本身和KDC知道的密钥,密钥用于证实实体身份,KDC会在实体间交互信息中产生一个会话密钥来加密这些交互信息。

在win server 2003中它扮演的是一个安全支持提供方的角色(ssp),可用于在非安全网络中对客户端和服务器端进行身份验证的一个机制,也就是说为互相不认识的通讯双方提供安全认证工作,并且可以相互认证,即客户端和服务端,客户和客户间或服务端与服务端之间,当有N个用户在使用该系统时,任意两人间的对话都有共享密码,所以所需的最少会话密钥数为N*(N-1) /2个。

它对防止窃听,replay攻击,和保护数据的完整性提供保护。

Kerberos V5中还有许多新特性。

用户可以在另一个网络中安全的提交他们的票;并且,用户可以把他们的一部分认证权转给服务器,这样服务器就可以作为用户的代理proxy。

其它的新特性包括:用更好的加密算法替换了DES加密算法,三重DES-CBC-MD5加密。

Kerberos交互流程第一步 kerberos认证服务请求:用户登陆后,发送票据请求到KDC请求一个短周期票据叫做TGT(包含用户身份信息)。

第二步 Kerberos认证服务响应:AS构造TGT并创建一个会话密钥用于加密客户和TGS通讯。

TGT的生命周期是有限的。

当客户收到TGT时,他还没有被授予使用任何资源,哪怕是本地计算机上的资源。

为何要使用一个TGT,可以让AS直接发布票据给目标服务器吗?是可以,但是如果AS直接发布票据,那用户每请求新服务或者服务器的时候需要输入一次登陆密码。

发布一个短周期的(10hours)TGT给予用户一个有效的票据用于票据授予服务TGS,可以依次发布目标服务器的票据。

LDAPS协议安全的LDAP通信协议

LDAPS协议安全的LDAP通信协议

LDAPS协议安全的LDAP通信协议LDAP(轻量级目录访问协议)是一种用于访问和维护分布式目录服务信息的协议。

然而,传统的LDAP通信协议存在安全性方面的隐患,为了解决这个问题,一种更加安全的协议被提出,即LDAPS (LDAP over Secure Socket Layer)。

本文将介绍LDAPS协议的特点和实现原理,以及它为LDAP通信提供的安全保障。

一、LDAPS协议的特点LDAPS协议是LDAP协议在传输层上通过SSL或TLS进行加密和认证的扩展。

与传统LDAP通信协议相比,LDAPS协议具有以下几个特点:1. 数据加密:LDAPS使用SSL/TLS协议对通信数据进行加密,确保数据在传输过程中不被篡改或窃取。

这种加密机制防止了中间人攻击和监听等安全威胁。

2. 服务器验证:LDAPS协议要求客户端验证LDAP服务器的身份。

通过使用数字证书,客户端可以确认服务器的真实性,避免了受到伪造服务器的攻击。

3. 客户端身份认证:在LDAP通信过程中,客户端需要发送自己的证书进行身份验证。

这一步骤保证了服务器只与合法的客户端进行通信,提高了通信的安全性。

4. 端口号变更:LDAPS使用加密连接的标准端口号(636),而不是传统LDAP协议的默认端口号(389)。

这个改变确保了通信链路的安全,减少了被攻击的风险。

二、LDAPS协议的实现原理LDAPS协议的实现涉及到SSL或TLS协议的使用。

SSL(Secure Socket Layer)和TLS(Transport Layer Security)是加密通信的常用协议,LDAPS借助它们提供了数据的安全传输。

LDAP通信过程中,当客户端连接到LDAP服务器时,首先会建立一个标准的TCP连接。

然后,在协商阶段,客户端和服务器之间执行以下步骤:1. 客户端向服务器发送启用SSL的请求。

2. 服务器接收到请求后,将响应转换为SSL模式,并生成非对称加密算法所需的数字证书。

LDAP协议的身份认证机制

LDAP协议的身份认证机制

LDAP协议的身份认证机制随着互联网的快速发展和信息化进程的推进,用户需要频繁地使用不同的应用系统和网络资源。

为了保证信息安全和用户权限的有效管理,身份认证机制成为网络应用中不可或缺的一环。

LDAP (Lightweight Directory Access Protocol)协议作为一种目录服务协议,提供了一种高效、安全的身份认证机制。

一、LDAP协议概述LDAP协议是一种基于TCP/IP协议的应用层协议,用于访问分布式的目录信息,它提供了对目录信息的读和写操作。

LDAP协议通过客户端-服务器的方式,将目录服务器的信息组织成树状结构的目录树,用户可以通过LDAP协议进行身份认证和授权管理。

二、LDAP协议的身份认证机制LDAP协议的身份认证机制主要包括基本绑定认证和SASL (Simple Authentication and Security Layer)认证两种。

1. 基本绑定认证基本绑定认证是LDAP协议中最简单的身份认证机制。

客户端向服务器发送一个BIND请求,包含用户的DN(Distinguished Name)和密码。

服务器收到BIND请求后,验证用户的DN和密码是否匹配。

如果匹配成功,绑定成功;否则,认证失败。

2. SASL认证SASL认证是一种更加灵活和安全的身份认证机制。

它支持多种认证机制,包括基于口令、公钥和票据等。

SASL认证采用挑战-响应的方式进行身份认证,客户端和服务器之间交互多次,直到认证过程完成。

三、LDAP协议的身份认证策略在使用LDAP协议进行身份认证时,通常还需要考虑一些身份认证策略,以提高系统的安全性。

1. 密码策略密码策略是LDAP中常用的身份认证策略之一。

通过设定密码复杂度要求、密码过期时间、账号锁定等机制,可以有效增强系统的安全性,保护用户的信息和资源。

2. 双因素认证双因素认证是一种更加安全和可靠的身份认证策略。

通过结合密码和其他因素,如指纹、刷卡等,进行身份认证,可以大幅度降低被攻击的风险,提高系统的安全性。

Kerberos与LDAP集成认证协议详解

Kerberos与LDAP集成认证协议详解

Kerberos与LDAP集成认证协议详解在网络安全领域,认证协议是保障用户身份信息安全的重要组成部分。

Kerberos和LDAP是两种常见的认证协议,它们可以相互集成以提供更强大的身份认证和访问控制功能。

本文将详细介绍Kerberos与LDAP集成认证协议的原理和应用。

一、Kerberos认证协议简介Kerberos是一种网络认证协议,用于验证用户身份并保证用户在网络中进行安全的通信。

其主要目标是提供单点登录和强大的身份验证机制。

Kerberos采用基于密钥的认证方案,并使用票据作为身份凭证。

1. Kerberos工作原理Kerberos涉及三个主要实体:客户端(C)、认证服务器(AS)和票据授予服务器(TGS)。

其工作流程如下:- 客户端发送身份请求给AS,并使用自己的密码生成密钥。

- AS验证用户身份,并返回一个票据,票据包含客户端和TGS之间的密钥和有效期限。

- 客户端接收到票据后,向TGS发送服务请求并附上票据。

- TGS验证票据的有效性,并为客户端生成一个用于访问特定服务的票据和会话密钥。

- 客户端将会话密钥发送给服务服务器,以便进行后续通信。

Kerberos有以下几个显著的优势:- 单点登录:用户只需一次身份验证,即可在整个网络中访问多个服务,避免了频繁输入密码的繁琐。

- 安全性:Kerberos使用密钥进行身份验证,减少了密码在网络传输中的风险,并且票据有有效期限,提高了安全性。

- 集成性:Kerberos可以与其他认证协议(如LDAP)进行集成,提供更灵活、安全的认证机制。

二、LDAP认证协议简介LDAP(Lightweight Directory Access Protocol)是一种应用层协议,用于访问和维护分布式网络目录。

LDAP目录通常用于存储和组织用户身份信息,比如用户名、密码和访问权限等。

1. LDAP工作原理LDAP的工作原理如下:- 客户端发送LDAP查询请求给LDAP服务器,查询请求可以是身份认证、搜索用户信息等。

LDAP协议

LDAP协议

1.介绍LDAP协议的背景和起源Lightweight Directory Access Protocol(LDAP)是一种用于访问和维护分布式目录服务的开放标准协议。

它起源于X.500目录服务,但在设计时去除了复杂性,使得LDAP成为一种轻量级的协议,并且更易于实现和部署。

在计算机网络的发展过程中,管理和访问大量用户和资源信息的需求变得越来越重要。

传统的分布式目录服务如X.500存在着复杂的数据模型和高昂的实现成本,因此需要一种更简单、更高效的解决方案。

LDAP协议于1993年首次发布,旨在提供一种基于TCP/IP的轻量级目录访问协议。

LDAP最初的目标是解决Internet上的目录服务需求,但随后被广泛应用于企业内部的用户身份验证、访问控制、电子邮件系统和其他网络应用中。

LDAP协议建立在客户端‑服务器体系结构上,客户端通过发送请求消息到服务器来执行各种目录操作,如搜索、添加、修改和删除条目。

LDAP的目录结构采用层次化的树状结构,使用基于Distinguished Name(DN)的唯一标识来标识和定位目录条目。

LDAP协议在互联网应用和企业网络中发挥着重要作用,它提供了一种标准化的方式来管理和访问目录信息,使得不同系统和应用能够共享和集成用户和资源的信息。

随着云计算、移动设备和身份管理的快速发展,LDAP协议仍然在现代网络环境中扮演着关键角色,并且不断演化以适应新的需求和技术。

2.解释LDAP协议的基本原理和工作方式LDAP协议(Lightweight Directory Access Protocol)的基本原理和工作方式是通过客户端‑服务器模型实现目录服务的访问和管理。

下面将详细介绍LDAP协议的基本原理和工作方式。

客户端‑服务器模型LDAP采用客户端‑服务器(Client‑Server)模型,其中客户端是发起请求的实体,而服务器是提供目录服务的实体。

客户端通过LDAP协议与服务器进行通信,并发送各种请求来执行目录操作。

电脑65535个端口全注释及应用

电脑65535个端口全注释及应用
服务:mountd
说明:Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住mountd可运行于任何端口(到底是哪个端口,需要在端口111做portmap查询),只是Linux默认端口是635,就像NFS通常运行于 2049端口。
端口:1025、1033
服务:1025:network blackjack 1033:[NULL]
说明:木马netspy开放这2个端口。
端口:1080
服务:SOCKS
说明:这一协议以通道方式穿过_blank"> 防火墙,允许_blank"> 防火墙后面的人通过一个IP地址访问INTERNET。理论上它应该只允许内部的通信向外到达INTERNET。但是由于错误的配置,它会允许位于_blank"> 防火墙外部的攻击穿过 _blank"> 防火墙。WinGate常会发生这种错误,在加入IRC聊天室时常会看到这种情况。
端口:636
服务:LDAP
说明:SSL(Secure Sockets layer)
端口:666
服务:Doom Id Software
说明:木马Attack FTP、Satanz Backdoor开放此端口
端口:993
服务:IMAP
说明:SSL(Secure Sockets layer)
端口:25
服务:SMTP
说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E- MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。

常用应用服务对应的端口号

常用应用服务对应的端口号

端口:0服务:Reserved说明:通常用于分析操作系统。

这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。

一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

端口:1服务:tcpmux说明:这显示有人在寻找SGI Irix机器。

Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开。

Irix机器在发布是含有几个默认的无密码的帐户,如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。

许多管理员在安装后忘记删除这些帐户。

因此HACKER在INTERNET上搜索tcpmux并利用这些帐户。

端口:7服务:Echo说明:能看到许多人搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息。

端口:19服务:Character Generator说明:这是一种仅仅发送字符的服务。

UDP版本将会在收到UDP包后回应含有垃圾字符的包。

TCP连接时会发送含有垃圾字符的数据流直到连接关闭。

HACKER利用IP欺骗可以发动DoS攻击。

伪造两个chargen服务器之间的UDP 包。

同样Fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP 的数据包,受害者为了回应这些数据而过载。

端口:21服务:FTP说明:FTP服务器所开放的端口,用于上传、下载。

最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。

这些服务器带有可读写的目录。

木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口。

端口:22服务:Ssh说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。

这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。

LDAP安全访问协议

LDAP安全访问协议

LDAP安全访问协议LDAP(Lightweight Directory Access Protocol)是一种应用层协议,常用于访问和维护分布式目录服务。

它是基于TCP/IP协议栈的协议,可以用于在网络上的目录服务器间访问和搜索资源。

LDAP安全访问协议是在LDAP协议的基础上增加了安全性的扩展协议,用于保护LDAP通信的机密性和完整性。

一、LDAP基本概念LDAP是一个客户-服务器模型的协议,它定义了客户端如何与目录服务器进行通信。

在LDAP中,目录是由条目(Entry)组成的,每个条目包含了一组属性(Attribute),这些属性用来描述条目的特征。

LDAP使用者可以通过LDAP协议在目录服务器上进行搜索、添加、删除、修改等操作,以实现对目录中信息的管理。

二、LDAP安全访问的需求随着互联网的快速发展,网络安全问题也日渐突出。

在LDAP通信中的安全问题主要包括以下几个方面:1. 机密性:保护通信过程中的数据不被未经授权的人员访问和窃取;2. 完整性:防止数据在传输过程中被篡改或伪造;3. 鉴别:确保通信的双方是合法的,并防止伪造身份进行恶意访问或冒充操作。

三、LDAP安全访问的实现1. Transport Layer Security (TLS):TLS是一种提供通信安全的协议,它可以在TLS/SSL协议基础上为LDAP提供加密和认证服务。

通过使用TLS,客户端和服务器之间的通信可以通过加密来保护数据的机密性和完整性,同时也可以确保通信的双方的身份验证。

2. Secure Sockets Layer (SSL):SSL是一种常用的安全协议,可以在客户端和服务器之间建立安全通信。

LDAP可以通过在TCP/IP连接上建立SSL连接来实现安全访问,从而确保通信中数据的机密性和完整性。

SSL通信需要使用数字证书对通信双方进行身份验证。

3. SASL(Simple Authentication and Security Layer):SASL是一种用于应用层认证和安全通信的框架。

红帽-rhce认证考试题库

红帽-rhce认证考试题库

红帽-r h c e认证考试题库(总25页) --本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--不用破解system1,system2密码注意看网络信息考前题目1.配置 SELinuxSELinux 必须在两个系统 system1 和 system2 中运行于 Enforcing 模式-------------------------------------------------------------------------------------1)getenforce2)[root@system1 ~]# getenforceEnforcing3)setenforce 1[root@system1 ~]# setenforce --helpusage: setenforce [ Enforcing | Permissive | 1 | 0 ][root@system1 ~]# setenforce 14)vi /etc/selinux/config将SELINUX=permissive 改成SELINUX=enforcing同样地在system2上执行同样操作。

2.配置 SSH 访问按以下要求配置 SSH 访问:用户能够从域内的客户端通过 SSH 远程访问您的两个虚拟机系统在域内的客户端不能访问您的两个虚拟机系统-----------------------------------------------------------------------------------------1) 查看当前域的网段:[root@system1 ~]# host has address 可知网段为vi /etc/添加如下内容:##sshd : vi /etc/#sshd : .4) scp /etc/ /etc/ 自定义用户环境在系统 system1 和 system2 上创建自定义命令名为 qstat 此自定义命令将执行以下命令:/bin/ps -Ao pid,tt,user,fname,rsz此命令对系统中所有用户有效。

ldap的校验方法

ldap的校验方法

ldap的校验方法LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录服务的协议。

在网络系统中,用户的身份验证和权限控制是非常重要的,而LDAP的校验方法正是用来实现这一目的的。

本文将介绍LDAP的校验方法,包括用户身份验证、密码策略和权限控制等方面的内容。

一、用户身份验证用户身份验证是指通过校验用户提供的凭证(如用户名和密码)来确认用户的身份。

在LDAP中,身份验证是通过比对用户提供的凭证和存储在LDAP目录中的凭证来实现的。

1.1 简单绑定简单绑定是LDAP中最基本的身份验证方法。

用户提交自己的DN (Distinguished Name)和密码,LDAP服务器根据这些信息进行身份验证。

如果用户提供的凭证与LDAP目录中存储的凭证匹配,认证成功,否则认证失败。

1.2 SASL绑定SASL(Simple Authentication and Security Layer)绑定是一种扩展的身份验证方法。

它允许LDAP客户端和服务器之间使用不同的身份验证机制进行通信,如Kerberos、Digest-MD5等。

SASL 绑定提供了更高级的安全性和灵活性。

二、密码策略密码策略是指对用户密码的复杂性、有效期限、重复使用等方面进行限制和管理,以提高系统的安全性。

在LDAP中,密码策略是通过在LDAP目录中定义密码策略对象来实现的。

2.1 密码复杂性密码复杂性是指密码中包含的字符类型和长度等方面的要求。

LDAP 服务器可以通过密码策略对象中的配置来限制用户密码的复杂度,如要求密码包含大小写字母、数字和特殊字符,并且长度不少于一定值。

2.2 密码有效期限密码有效期限是指用户密码在一定时间段内有效,超过该时间段后需要用户重新更改密码。

LDAP服务器可以通过密码策略对象中的配置来限制用户密码的有效期限,如设置密码的最长使用期限和密码的最短更改时间间隔。

LDAP协议

LDAP协议

介绍LDAP协议的背景和作用LDAP(轻量级目录访问协议)是一种开放的标准协议,用于访问和维护分布式目录服务。

它最初在1993年由大量厂商和开发者共同开发,旨在提供一种统一的方式来访问各种目录服务,如企业内部的用户信息、组织结构和网络资源等。

LDAP协议的背景可以追溯到X.500目录服务标准,而LDAP则是在X.500的基础上发展而来。

与X.500相比,LDAP 更加轻量级且易于实现和部署。

它采用了客户端‑服务器模型,通过TCP/IP协议进行通信,使得LDAP在互联网环境下具有良好的可扩展性和跨平台性。

LDAP协议的主要作用是提供一种标准化的方式来搜索、浏览和修改目录数据。

它允许客户端应用程序通过LDAP协议与目录服务器进行通信,以获取或更新目录中存储的信息。

LDAP协议不仅仅局限于用户身份认证和访问控制,还可以用于存储和检索各种类型的数据,如电子邮件地址、电话号码、组织结构等。

LDAP协议的优势在于其简单性和灵活性。

它使用基于文本的格式进行数据交换,易于理解和调试。

同时,LDAP协议支持多种搜索和过滤选项,使得用户可以根据各种条件和属性来精确地检索所需的数据。

此外,LDAP还提供了高效的缓存和复制机制,以提高目录数据的访问速度和可用性。

总而言之,LDAP协议的背景和作用是为了提供一种统一的、轻量级的方式来访问和管理分布式目录服务。

它在企业内部和互联网环境中广泛应用,为用户身份认证、信息检索和网络资源管理等方面提供了可靠的解决方案。

解释LDAP协议的基本原理和工作流程LDAP(轻量级目录访问协议)基于客户端‑服务器模型,通过TCP/IP协议进行通信,用于访问和维护分布式目录服务。

理解LDAP协议的基本原理和工作流程可以帮助我们更好地理解其工作方式和应用场景。

基本原理LDAP协议的基本原理是将目录数据组织为层次结构,类似于树状结构。

目录树的顶部是根节点,而下面的节点包含了各种目录项。

每个目录项由一个唯一的标识符(通常是一个称为Distinguished Name的字符串)来标识,用于在树状结构中唯一定位该节点。

kerberos使用总结

kerberos使用总结

kerberos使用总结一、Kerberos简介Kerberos是一个网络身份验证协议,旨在提供安全的身份验证服务。

它最初由麻省理工学院开发,现已成为标准的身份验证协议之一。

Kerberos可以用于保护各种类型的网络应用程序,包括Web应用程序、电子邮件、文件共享等。

二、Kerberos的工作原理1.认证过程当用户登录系统时,系统会向Kerberos服务器发送请求,以获取一个票据。

该请求包含用户的身份信息和密码。

Kerberos服务器会对用户进行身份验证,并向用户颁发一个票据。

2.票据传递过程当用户访问受保护资源时,系统会向Kerberos服务器发送请求,以获取一个服务票据。

该请求包含用户的身份信息和所需服务的信息。

Kerberos服务器会对用户进行身份验证,并向其颁发一个服务票据。

3.使用服务票据访问资源当用户拥有了服务票据后,就可以使用该票据访问受保护资源了。

系统会将该票据发送给资源服务器进行验证,并授权用户访问资源。

三、Kerberos的优点1.安全性高: Kerberos使用加密技术来保护网络通信和存储在网络上的数据。

2.可扩展性好: Kerberos可以轻松地集成到现有的网络架构中,并支持多种操作系统和应用程序。

3.易于管理: Kerberos提供了一套完整的管理工具,使管理员可以轻松地管理用户、服务和票据。

四、Kerberos的缺点1.复杂性高: Kerberos的配置和维护需要一定的技术知识和经验。

2.单点故障:如果Kerberos服务器发生故障,整个系统将无法正常工作。

3.性能影响: Kerberos需要进行加密和解密操作,这可能会影响系统的性能。

五、Kerberos的应用场景1.Web应用程序: Kerberos可以用于保护Web应用程序中的身份验证信息和数据。

2.电子邮件: Kerberos可以用于保护电子邮件系统中的身份验证信息和数据。

3.文件共享: Kerberos可以用于保护文件共享系统中的身份验证信息和数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

服务器环境:三台服务器,分别是LDAP+Kerberos服务器、NFS Secure服务器、客户机。

本文档重点是如何配置以上这些服务,理论知识另需补脑。

硬件环境:VMware Workstation 上运行2个KVM,vmware作为LDAP服务器,2个KVM分别作为NFS和客户机。

主机名分别为、、。

软件环境:三台机器的OS版本是RHEL7.0,kerberos关闭slinux和firewalld,server0和desktop0上开启selinux和firewalld。

一、在kerberos机器上配置Kerberos服务1. 安装软件:yum install -y krb5-libs krb5-server krb5-workstation pam_krb5/var/kerberos/krb5kdc/kadm5.acl这个文件里的域要和上面文件[realms]中定义的要一致。

kdb5_util create -s -r 提示输入密码为:kerberos注意与kdc.conf定义的要一致。

这个过程时间比较长。

5. 启动服务systemctl status krb5kdc.servicesystemctl enable krb5kdc.servicesystemctl start kadmin.servicesystemctl enable kadmin.servicefirewall-cmd --permanent --add-service=kerberosfirewall-cmd --reload6. 创建认证的唯一IDKerberos认证的唯一ID叫principal,由primary、instance、realm三部分组成,格式为primary/instance@realm 。

principal有3种类型:user、service、host。

2)创建host和service类型的principalkadminAuthenticatingasprincipalroot/*****************************.Passwordforroot/*****************:kadmin: addprinc -randkey host/WARNING: no policy specified for host/*******************************;defaulting to no policyPrincipal"host/*******************************"created.kadmin: addprinc -randkey host/WARNING: no policy specified for host/********************************;defaulting to no policyPrincipal"host/********************************"created.kadmin: addprinc -randkey nfs/WARNING:nopolicyspecifiedfornfs/*******************************;defaulting to no policyPrincipal"nfs/*******************************"created.kadmin: addprinc timWARNING:***********************************;defaultingtonopolicyEnterpasswordforprincipal"***************":Re-enterpasswordforprincipal"***************":Principal"***************"created.kadmin: q给tim用户的kerberos认证密码,密码为:tim。

useradd -u 1001 tim7. 把key从KDC里导出来创建了principal之后,KDC知道所有principal的key,通常导出为.keytab密钥串文件。

8. 把秘钥串放到web上,提供给kerberos的客户端(server0和desktop0)cp nfs_client.keytab nfs_server.keytab /var/www/html/二、在server0上配置nfs-server为了测试kerberos,配置两个nfs共享,分别是/public作为标准共享给域,只读方式,另一个/protected作为安全共享,读写方式。

访问/protected 需要通过Kerberos 安全加密,使用KDC服务器提供的密钥。

目录/protected 里面有子目录名为secret ,所有人为tim,用户tim 能以读写方式访问/protected/secret目录。

用户tim在三台服务器里存在。

1. 安装软件,分别在server0和desktop0上首先把kerberos服务器上的serve0和desktop0上:scp /etc/krb5.conf server0:/etcscp /etc/krb5.conf desktop0:/etcyum install krb5-workstationyum install nfs-utils2. 配置nfsmkdir -p /protected/secretmkdir /publiccat /etc/exports/public 192.168.3.0/24(ro)/protected 192.168.3.0/24(rw,sec=krb5p,no_root_squash)注意:以上共享给客户端一定要写成ip地址的形式,写成域名(*)挂载不上安全的nfs,报错信息:mount.nfs: Operation not permitted。

没找到原因。

编辑/etc/sysconfig/nfs 配置文件,修改RPCNFSDARGS 变量的值:RPCNFSDARGS="-V 4.2"3. 启动nfs1)启动标准NFS服务systemctl start nfs-serversystemctl enable nfs-server2)下载秘钥串wget -O /etc/krb5.keytab /nfs_server.keytab3)启动NFS Secure服务systemctl start nfs-secure-server.serviceshowmount -eExport list for :/protected 192.168.3.0/24/public 192.168.3.0/244)设置防火墙firewall-cmd --permanent --add-service=nfsfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --permanent --add-service=mountdfirewall-cmd --reload5)创建用户tim,与kerberos服务器上uid一致useradd -u 1001 timchown tim.tim /protected/secret三、客户机desktop0上配置1. 创建挂载点mkdir /mnt/nfsmountmkdir /mnt/nfssecureshowmout -e 192.168.3.312. 普通挂载1)标准挂载mount 192.168.3.31:/public /mnt/nfsmount/这个是可以挂载的。

2)安装NFS挂载mount -o sec=krb5p,v4.2 192.168.3.31:/protected /mnt/nfssecure/mount.nfs: an incorrect mount option was specified这个时候挂载不上,需要下载秘钥串。

wget -O /etc/krb5.keytab /nfs_client.keytab查看秘钥串:klist -k /etc/krb5.keytab3)启动nfs-securesystemctl restart nfs-secure再挂载mount -o sec=krb5p,v4.2 192.168.3.31:/protected /mnt/nfssecure就可以了。

[root@desktop0 ~]# su - tim[tim@desktop0 ~]$ dfdf: ‘/mnt/nfssecure’: Permission denied用户tim需要通过kinit获取Kerberos票据才能看到/mnt/nfssecure/这个目录的内容。

[tim@desktop0 ~]$ kinit**************************:执行df命令查看已经显示了/mnt/nfssecure/这个挂载点如果文件权限显示的是4294967294,需要在服务器端和客户端启动rpcidmapd服务:systemctl start rpcidmapdsystemctl enable nfs-idmap.service用户tim在/mnt/nfssecure/secret可以创建文件,文件所有者为tim。

klist查看票据。

以上环境每个主机的/etc/hosts和/etc/krb5.conf文件一致。

四、在kerberos服务器上安装LDAP环境说明:所有主机对应的FQDN域为,kerberos域(realm)为。

kerberos+ldap服务器:nfs服务器:client:涉及到的文件内容分别如下:krb5.confcat /etc/krb5.conf[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]dns_lookup_realm = falseticket_lifetime = 12hrenew_lifetime = 7dforwardable = truerdns = falsedefault_realm = default_ccache_name = KEYRING:persistent:%{uid}[realms] = {kdc = admin_server = 1. 安装软件yum install openldap-servers openldap-clients2. 修改配置文件模板cp /usr/share/openldap-servers/slapd.ldif .1)证书文件位置olcTLSCACertificatePath: /etc/openldap/certs //服务器证书存放的位置olcTLSCertificateFile: /etc/openldap/certs/ldap.crt //服务器证书文件olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key //服务器私钥文件2)添加schemainclude: file:///etc/openldap/schema/corba.ldifinclude: file:///etc/openldap/schema/core.ldifinclude: file:///etc/openldap/schema/cosine.ldifinclude: file:///etc/openldap/schema/duaconf.ldifinclude: file:///etc/openldap/schema/dyngroup.ldifinclude: file:///etc/openldap/schema/inetorgperson.ldifinclude: file:///etc/openldap/schema/java.ldifinclude: file:///etc/openldap/schema/misc.ldifinclude: file:///etc/openldap/schema/nis.ldifinclude: file:///etc/openldap/schema/openldap.ldifinclude: file:///etc/openldap/schema/ppolicy.ldifinclude: file:///etc/openldap/schema/collective.ldif3)数据类型为bdb格式dn: olcDatabase=bdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olc Bdb ConfigolcDatabase: bdb4)设置RootDN及RootPWolcSuffix: dc=abc,dc=comolcRootDN: cn=Manager,dc=abc,dc=comolcRootPW: 1233. 生成配置文件rm -rfv /etc/openldap/slapd.d/*slapadd -F /etc/openldap/slapd.d -n 0 -l /root/slapd.ldif 测试配置文件是否正确:slaptest -u -F /etc/openldap/slapd.d4. 启动slapd服务chown ldap.ldap slapd.d/* -Rcp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap.ldap /var/lib/ldap/DB_CONFIGsystemctl start slapdsystemctl enable slapd5. 迁移用户信息到ldapyum install migrationtools1)生成基准DN的ldif文件cd /usr/share/migrationtools/修改vim migrate_common.ph,改成域71 $DEFAULT_MAIL_DOMAIN = "";74 $DEFAULT_BASE = "dc=abc,dc=com";然后生成ldif文件./migrate_base.pl > /root/abc.ldif2)创建用户mkdir /rhomeuseradd -d /rhome/ldap1 ldap1useradd -d /rhome/ldap2 ldap2echo 123 | passwd --stdin ldap1echo 123 | passwd --stdin ldap2tail -2 /etc/passwd > /root/users.txttail -2 /etc/group > /root/groups.txt./migrate_passwd.pl /root/users.txt > /root/users.ldif./migrate_group.pl /root/groups.txt > /root/groups.ldif最终有了abc.ldif、users.ldif、group.ldif三个ldif格式的文件,我们要把它们导入到ldap 数据库里。

相关文档
最新文档