Centos7/Active Directory authentication using nss-pam-ldapd

来源:https://www.cnblogs.com/oldghost/archive/2018/02/08/8426932.html
-Advertisement-
Play Games

Centos使用AD賬戶進行驗證,網上查有很多種,包括samba+winbind,sssd,nss-pam-ldapd等多種方式。今天介紹通過nss-pam-ldap驗證AD賬號。 一.實驗環境: 兩台主機:一臺windows server2012 R2 域控,一臺centos7.2客戶端使用AD賬 ...


Centos使用AD賬戶進行驗證,網上查有很多種,包括samba+winbind,sssd,nss-pam-ldapd等多種方式。今天介紹通過nss-pam-ldap驗證AD賬號。

一.實驗環境:

兩台主機:一臺windows server2012 R2 域控,一臺centos7.2客戶端使用AD賬號驗證

1.windows os:Active Directory 2012 R2 

IP:10.10.1.1

hostname: ad

Domain ghost.com

2.linux os: centos 7.2 1511

IP:10.10.1.10

hostname:server1.ghost.com

二.實驗步驟:

AD域控:

hostname:ad

IP:10.10.1.1

1.Create AD and DNS Server:Server Manager---->Add roles and features---->Active Directory Domain Services+DNS Server 在此不詳細敘述具體步驟(大家都懂的^_^)

2.因為windows 2012 R2沒有Identity Management for UNIX Component需要啟用該組件,windows2016就不需要安裝此組件。命令如下:

Dism.exe /online /enable-feature /featurename:adminui 

Dism.exe /online /enable-feature /featurename:nis

Dism.exe /online /enable-feature /featurename:psync

同時可以參照以下鏈接:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731178(v=ws.11)

啟用此組件後,賬號屬性中會增加UNIX Attributes下拉框,在AD users and Computers 視圖中啟用高級功能會看到Attribute Editor.

 

3. 關閉windows防火牆,在DNS添加server1的A紀錄:10.10.1.10解析功能變數名稱。

4.創建OU GHOST和用戶zhangsan,linux_ad用於驗證,如果linux_ad提示驗證有問題可以嘗試用administrator賬號試試,如上圖。

四.上面有點啰嗦啦!接下來說的是大家感興趣的事情,linux的相關設置。

1.系統安裝完畢,關閉selinux,firewalld.

2.設置IP和DNS

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.10.1.10
NETMASK=255.255.0.0
DNS=10.10.1.1
[root@server1 ~]# cat /etc/resolv.conf
search localdomain ghost.com
nameserver 10.10.1.1
[root@server1 ~]#yum -y install nss-pam-ldapd openldap-clients telnet
通過nss-pam-ldapd驗證需要配置以下幾個文件,其中system-auth-ac和password-auth-ac修改是一樣的。

[root@server1 ~]# cat /etc/nslcd.conf

uid nslcd
gid ldap
uri ldap://ad.ghost.com:389 #
base ou=GHOST,dc=ghost,dc=com #OU, DC一定要對應,管理組最好也建立在這個OU下
binddn cn=linux_ad,cn=users,dc=ghost,dc=com #cn,dn的信息可以通過AD中賬號Aittribute Editor中distinguishedName的值進行查看。
bindpw linux_ad
scope group sub
scope hosts sub
bind_timelimit 3
timelimit 3
pagesize 1000
referrals off
filter passwd (&(objectClass=user)(!(objectClass=computer))(unixHomeDirectory=*))
map    passwd homeDirectory    unixHomeDirectory
filter shadow (&(objectClass=user)(!(objectClass=computer))(unixHomeDirectory=*))
map    shadow shadowLastChange pwdLastSet
filter group  (objectClass=group)
scope sub
ssl off
tls_reqcert never

 

[root@server1 ~]# cat /etc/nsswitch.conf
passwd:     files  ldap #添加ldap驗證方式
shadow:     files  ldap
group:      files  ldap
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files ldap
netgroup:   files  ldap
publickey:  nisplus
automount:  files ldap
aliases:    files nisplus

 

[root@server1 ~]# cat /etc/pam.d/system-auth-ac
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_ldap.so use_first_pass #添加ldap驗證方式
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so #添加ldap驗證方式
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok #添加ldap驗證方式
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so #添加ldap驗證方式

 

測試AD 389埠是否正常 

[root@server1 ~]# telnet 10.10.1.1 389
Trying 10.10.1.1...
Connected to 10.10.1.1.
Escape character is '^]'.
 

啟動nslcd服務

[root@server1 ~]# systemctl start nslcd

[root@server1 ~]# systemctl status nslcd
● nslcd.service - Naming services LDAP client daemon.
   Loaded: loaded (/usr/lib/systemd/system/nslcd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-02-07 16:29:57 CST; 13s ago
  Process: 6904 ExecStart=/usr/sbin/nslcd (code=exited, status=0/SUCCESS)
 Main PID: 6905 (nslcd)
   CGroup: /system.slice/nslcd.service
           └─6905 /usr/sbin/nslcd

Feb 07 16:29:57 server1.ghost.com systemd[1]: Starting Naming services LDAP client daemon....
Feb 07 16:29:57 server1.ghost.com systemd[1]: PID file /var/run/nslcd/nslcd.pid not readable (yet?) after start.
Feb 07 16:29:57 server1.ghost.com nslcd[6905]: version 0.8.13 starting
Feb 07 16:29:57 server1.ghost.com nslcd[6905]: accepting connections
Feb 07 16:29:57 server1.ghost.com systemd[1]: Started Naming services LDAP client daemon..
Feb 07 16:30:06 server1.ghost.com systemd[1]: Started Naming services LDAP client daemon.. 

 

使用ldapsearch命令測試是否驗證成功。

ldapsearch -h ad.ghost.com -b dc=ghost,dc=com -D cn=linux_ad,cn=users,dc=ghost,dc=com -W -p 389

 

查看linux系統中是否存在zhangsan

[root@server1 ~]# id zhangsan

uid=10001(zhangsan) gid=10000 groups=10000

到此Centos 通過AD賬號驗證已經成功啦!!!

 

 

CentOS 6相關配置
yum install nss-pam-ldapd -y
yum install pam_ldap -y
[root@server2 ~]vim /etc/nslcd.conf uid nslcd
gid ldap
base ou=Basers,dc=ad,dc=your_domain,dc=com
uri ldap://ad.your_domain.com:389/
binddn cn=linux_ad,cn=users,dc=ad,dc=your_domain,dc=com
bindpw linux_ad
scope  group  sub
scope  hosts  sub
pagesize 1000
referrals off
filter passwd (&(objectClass=user)(!(objectClass=computer))(unixHomeDirectory=*))
map    passwd homeDirectory    unixHomeDirectory
filter shadow (&(objectClass=user)(!(objectClass=computer))(unixHomeDirectory=*))
map    shadow shadowLastChange pwdLastSet
filter group  (&(objectClass=group)(gidNumber=*))
map    group  uniqueMember     member
bind_timelimit 3
timelimit 3
scope sub
ssl no
tls_reqcert never

[root@server2 ~]vim /etc/nsswitch.confReplace passwd/shadow/group lines with:
passwd:     files ldap [NOTFOUND=return UNAVAIL=return]
shadow:     files ldap [NOTFOUND=return UNAVAIL=return]
group:      files ldap [NOTFOUND=return UNAVAIL=return]
sudoers:    files ldap [NOTFOUND=return UNAVAIL=return]

[root@server2 ~]cat /etc/pam.d/system-auth-ac and cat /etc/pam.d/password-auth-ac auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so
 
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

[root@server2 ~]vim /etc/pam_ldap.conf base ou=Basers,dc=ad,dc=your_domain,dc=com
binddn cn=linux_ad,cn=users,dc=ad,dc=your_domain,dc=com
bindpw linux_ad
uri ldap://ad.your_domain.com
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • inux中增加swap分區文件的步驟方法: 1、檢查當前的swap情況(使用free -h或cat /proc/swaps或swapon -s ): 2、查看硬碟使用情況(df -hal): 3、使用dd命令創建名為swapfile 的swap交換文件(文件名和目錄任意): 科普:if(即輸入文件, ...
  • 當我們在 Linux 系統中進行進程間通信時,例如信號量,消息隊列,共用記憶體等方式,會發現有System V以及POSIX兩種類型。今天我們就來簡單介紹下它們。 POSIX: POSIX(Portable Operating System Interface for Computing System ...
  • 1、set -e "Exit immediately if a simple command exits with a non-zero status." 在“set -e”之後出現的代碼,一旦出現返回值非零,整個腳本就會立即退出。 2、set -o pipefail "If set, the re ...
  • 參考博文:http://www.cnblogs.com/huxiao-tee/p/4660352.html x86平臺下linux進程虛擬地址空間分佈(2.6.7以前版本) mmap區域與棧區域相對增長,只有1GB連續的虛擬地址空間可用。 x86平臺下linux進程虛擬地址空間分佈(2.6.7以後版 ...
  • 1.常用函數改動 1)device_create() 作用: 創建設備節點 頭文件: #include <linux/device.h> 替代了2.6內核里的class_device_create()函數 2)device_destroy() 作用:卸載設備節點 頭文件:#include <linu ...
  • 安裝軟體時提示說需要Autoconf 2.64或更高的版本: 查詢當前版本: 卸載當前版本: 安裝最新版本: 查看當前版本: 至此,autoconf已升級到2.69 ...
  • 前言: 親身用了大半年,沒出過重大毛病,也就是服務掛了,跟伺服器也沒啥關係。如果想更深入學習cloudstack可以試試高級網路,我是一直用的簡單網路(扁平網路)。由來:CloudStack的前身是Cloud com,後被思傑收購。英特爾、阿爾卡特-朗迅、瞻博網路、博科等都已宣佈支持CloudSta ...
  • root@test:/# dpkg -l | grep cobbler root@test:/# sudo dpkg --purge cobbler ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...