LinuxサーバーをADに対して認証することはどれほど実用的ですか?


18

ソフトウェア開発会社でWindowsサーバーとLinuxサーバーの両方を利用しています。

このセットアップの問題点の1つは、シングルサインオンソリューションがないことです。ADに対して認証したいLinuxショップよりもマイクロソフトのショップであること。

オンラインでいくつかの記事を読みましたが、これが可能であることを理解しています。

現在、認証が必要なLinuxで次のサービスを使用しています。
-gitサーバー(SSH経由)
-Sendmail-
現在.htaccessファイルを使用しているApache Webサーバー。
-SAMBAファイル共有

私が知りたいのは、この種のセットアップがどれほど実用的かということです。それは本当に機能しますか、それともエラーを起こしやすいですか?


皆さんのすばらしい回答に感謝します。これにより、実際の世界でこのセットアップがどのようなものであるかをよりよく感じることができます。これは本当に役立ちます。ここで正しい答えを選択することは、全員が質問に答えるので難しいです。
フィリップフォーリー

FreeIPAを確認してください:) freeipa.org
GioMac

回答:


11

難しくはなく、完全に実用的です。

AD認証を使用する数百のデュアルブートデスクトップマシンと、AD認証を使用してWindowsクライアントがユーザーによる明示的な認証なしでSamba共有を使用できるようにするサーバーがいくつかあります。

SFについて、あなたが何をする必要があるかについての別の記事がありました。

基本的に、kerberos、winbind、nss、およびpamを構成する必要があります。

そして、あなたは何kinitnet ads joinし、あなたのアップを。

必要に応じて、認証に複数の方法を使用するようにPAMを構成できます。したがって、機能しない場合は、次の方法にフォールバックします。

通常、Windowsサーバーにファイル共有を提供するサーバーには、winbinddおよびldapというファイルを使用します。

可能であれば、アカウント情報にLDAPを使用し、authにのみwindbindを使用しますが、必要に応じて/etc/ldap.confに属性をマップできると思います。アカウント情報にwinbinddを使用することになった場合、RID(ハッシュ方式)を使用してuid / gidsを生成できますが、他の方法を使用することもできます。1つの大きなファイルサーバーでRIDを使用しましたが、これは非常に苦痛だったため、可能であれば他のオプションの1つを試してみました。この場合、すべてのADユーザーとグループはアップストリームIDMシステムによってLDAPに反映されるため、新しいサーバーのアカウント情報にはLDAPを使用し、認証にはwinbindのみを使用します。


6

Similar Openを使用すると、認証は非常に簡単です。http://www.likewise.com/products/likewise_open/index.php

Similar Openのおかげで、ほぼすべてのLinuxインフラストラクチャで認証とユーザー管理が一元化されています。インストールと実装は驚くほど簡単です。私はそれについておそらく十分に良いと言うことはできません。

注記として、UIDとGIDはハッシュ関数に従って割り当てられるため、インフラストラクチャ全体で同一であるため、NFSマウントは完全に機能します。


1
同様にいくつかのサーバーでopenを使用しますが、うまく機能することがわかりました。Apache / Sendmailが外向きのマシンである場合、追加された遅延/負荷を確認することができます。
カイルブラント

3
リンクは現在壊れている
gogaz

(ウェブサイトの内容による)会社はこの製品をもうやっていません。
アレクセイ・マルティアノフ

4

Windows Services for Unixをインストールし、ADに「Unix Authenticator」というユーザーを追加し、Linuxマシンで次の構成ファイルを変更しました。

/etc/ldap.conf:
host ldap.<foo>.com
base cn=Users,dc=<foo>,dc=com
binddn cn=Unix Authenticator,cn=Users,dc=<foo>,dc=com
bindpw <password>
nss_base_passwd cn=Users,dc=<foo>,dc=com?sub
nss_base_shadow cn=Users,dc=<foo>,dc=com?sub
nss_base_group cn=Users,dc=<foo>,dc=com?sub
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute cn msSFUName
nss_map_attribute uid msSFUName
nss_map_attribute gid gidNumber
nss_map_attribute gecos sAMAccountName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_attribute uniqueMember Member
pam_login_attribute msSFUName
pam_filter objectclass=user
pam_password ad
/etc/ldap.secret:
<password>
/etc/nsswitch.conf:
passwd: compat ldap
shadow: compat ldap
group: compat ldap
/etc/nsswitch.ldap:
host files dns
/etc/pam.d/system-auth:
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_first_pass use_authtok
password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

お役に立てれば。


これは興味深いアプローチです。ありがとうございます。
フィリップフォーリー

1
(/etc/pam.d/system-authにある)認証にpam_ldapをそのまま使用しないでください。パスワードは平文で送信されます。LDAP経由で認証する場合は、LDAPSまたはGSSAPIを使用する必要があります。NSSにはLDAPを使用し、認証にはKerberosを安全に使用したい場合(以下を参照)
TheFiddlerWins

2

WindowsユーザーがADに対して認証を取得しましたが、ほとんどのサーバー(パブリックドライブなど)はLinuxであり、ドメインの一部です。Windows PoVから誰も気付かない。私の側から見ると、それは私のWindowsユーザー名で少しフルーティーな感じがしますが、それはそれくらいの大きさです。

普通の古いサンバを使用してください。


2

Sambaを使用する必要はありません。ADはKerberosとLDAPを直接サポートします。ほとんどのディストリビューションで外部ソフトウェアを使用する理由はありません。

Debian / Ubuntuの場合、libnss-ldapおよびlibpam-krb5を使用して実行できます。100%にするためのコツがいくつかあります。これは、Linuxユーザーに「unixHomeDirectory」が入力され、LinuxボックスがWindowsシステムに共通のNTPを使用し(Kerberosで必要)、プレーンテキストNSSルックアップ(パスワードではなくグループメンバーシップ情報など)で問題ないことを前提としています。 TLSを使用しますが、セットアップはより複雑です)。TLSを使用するように設定されていない限り、PAMのパスワードまたは認証ソースとしてpam_ldapを使用しないでください。

/etc/ldap.conf

# LDAP Configuration for libnss-ldap and libpam-ldap.
# Permit host to continue boot process with out contacting LDAP server
bind_policy soft
# Define LDAP servers to use for queries, these must be Global Catalog servers
uri ldap://ldap.site.company.local
# Define root search location for queries
base dc=company,dc=local
#debug 1
# LDAP version, almost always going to be v3, it is quite mature
ldap_version 3
# Username used to proxy authentication. You can have this in a separate file owned by root for security OR use TLS/SSL (see man page)
# Do NOT use LDAP for authentication if you are using plain text binds, use Kerberos instead (and LDAP for authorization only). See libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Password for proxy acct
bindpw SooperSekeretPazzwerd
#  TCP port to perform queries on, 3268 is a Global Catalog port which will reply for all users in *.company.local
port 3268
# Search range scope (sub = all)
scope sub
# Tell the client to close TCP connctions after 30 seconds, Windows will do this on the server side anyways, this will prevent errors from showing up in the logs.
 idle_timelimit 30
# Expect queries for group membership to return DN for group members instead of usernames (lets you use MSAD group membership seamlessly)
nss_schema rfc2307bis
# Filters - User accounts must have a UID >= 2000 to be recognized in this configuration and must have a unixHomeDirectory defined.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Object Class mappings.  You may want to have the posixAccount to map to "mail" and have users login with their email addresses, i.e.  "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Attribute mappings.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Attribute in LDAP to query to match the username used by PAM for authentication
pam_login_attribute sAMAccountName
# Filter for objects which are allowed to login via PAM
pam_filter objectclass=User

LinuxボックスがADを知っているDNSサーバーを使用していると仮定して、/ etc / krb5.confを編集する必要はありません(適切なSRVレコードを持つ_msdcsゾーンは解決可能です)

/etc/nsswitch.confには、ユーザー、グループ、シャドウの「ファイルldap」が必要です。

SSSDを使用するRed Hatの場合:

/etc/sssd/sssd.conf

[domain/AD]
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldap://ldap.company.local:3268/
ldap_search_base = dc=company,dc=com
ldap_default_bind_dn = cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
ldap_default_authtok = SooperSekeretPazzwerd
ldap_schema = rfc2307bis
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts

ldap_id_use_start_tls = False
cache_credentials = True
krb5_realm = SITE.COMPANY.COM
case_sensitive = false
[sssd]
services = nss, pam
config_file_version = 2

domains = AD
[nss]
filter_users = root,named,avahi,nscd

このシナリオでは、AD側で何か変更する必要がありますか?SAMBAを使用するときに、「Windows用のUNIXツール」をインストールする必要があるのを見たことを覚えていますか?
マーティンニールセン

このソリューションはSAMBAに依存せず、ネイティブのLDAP / Kerberosを使用しています。Unixツールを使用する唯一の理由は、GUIを使用してPOSIXユーザー/グループ属性を編集することです。SSSDを使用している場合でも、それは必要ありません。SAMBA(Winbind)を使用すると、システムにWindowsクライアントをエミュレートさせるソフトウェアをインストールできます。上記のセットアップでは、標準のLDAP / Kerberosを使用しています。
-TheFiddlerWins

なんてこった、私は何が起こったのか分からない「ldap / kerberos」を書きたかった。私のせい。しかし、AD用のUnixツールは、実際にはLDAP / Kerberosには必要ありませんか?
マーティンニールセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.