Autentisering via LDAP och Kerberos i FreeBSD 10: Difference between revisions

From Peters wiki
Jump to navigation Jump to search
mNo edit summary
 
(33 intermediate revisions by the same user not shown)
Line 1: Line 1:
Denna guide är under utveckling.
__NOTOC__
Denna guide visar hur man sätter upp autentisering via LDAP/Kerberos i FreeBSD 10. Vi kommer använda SSSD och i guiden heter Kerberos realm EXAMPLE.COM och servern med Kerberos och LDAP heter ns.example.com. Klienten vi sätter upp heter client.example.com.
__TOC__


Denna guide visar hur man sätter upp en FreeBSD 10 maskin att autentisera användare via Kerberos och hämta användarinformation från LDAP.
== Installera SSSD ==
 
Installera följande:
{{RootCmd|portmaster security/cyrus-sasl2-gssapi}}
Välj Heimdal från systemetet, dvs BASE.
{{RootCmd|portmaster net/openldap24-sasl-client}}
Välj GSSAPI. Slutligen installera SSSD:
{{RootCmd|portmaster security/sssd}}


== Kerberos ==
== Kerberos ==


Installera följande:
Editera /etc/krb5.conf:
{{RootCmd|portmaster security/pam_krb5}}
Välj att länka mot Heimdal Kerberos. Editera /etc/krb5.conf:
{{bc|1=
{{bc|1=
[libdefaults]
[libdefaults]
Line 14: Line 21:
[realms]
[realms]
     EXAMPLE.COM = {
     EXAMPLE.COM = {
         kdc = kdc.example.com
         kdc = ns.example.com
admin_server = kdc.example.com
        admin_server = ns.example.com
default_domain = example.com
        default_domain = example.com
     }
     }


Line 24: Line 31:
}}
}}


Skapa en Kerberos principal för host/<host>.example.com och kopiera nycklarna till /etc/krb5.keytab.
Skapa en keytab fil för klienten. Logga in mot din KDC med admin-konto som har rättighet att skapa Kerberos principals:
{{RootCmd|/usr/local/bin/kadmin -p kadmin/admin}}
Kör kadmin kommandot:
{{bc|kadmin: addprinc -randkey host/client.example.com@EXAMPLE.COM}}
Spara sen nycklarna i filen /etc/krb5.keytab:
{{bc|kadmin: ktadd -k /etc/krb5.keytab host/client.example.com@EXAMPLE.COM}}
Logga ut från kadmin.


Editera /etc/pam.d/sshd och lägg till 3 st Kerberos rader:
=== PAM ===
 
Editera /etc/pam.d/system:
{{bc|1=
{{bc|1=
# auth
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth           sufficient     pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth           requisite       pam_opieaccess.so no_warn allow_local
'''auth sufficient /usr/local/lib/security/pam_krb5.so try_first_pass minimum_uid=5000'''
'''auth           sufficient     /usr/local/lib/pam_sss.so forward_pass'''
...
#auth          sufficient      pam_krb5.so no_warn try_first_pass
#auth          sufficient      pam_ssh.so no_warn try_first_pass
auth            required        pam_unix.so no_warn try_first_pass nullok
 
# account
# account
account required pam_nologin.so
'''account         required       /usr/local/lib/pam_sss.so ignore_unknown_user ignore_authinfo_unavail'''
'''account required /usr/local/lib/security/pam_krb5.so minimum_uid=5000'''
#account        required        pam_krb5.so
...
account        required        pam_login_access.so
account        required        pam_unix.so
 
# session
#session        optional        pam_ssh.so want_agent
session        required        pam_lastlog.so no_fail
 
# password
# password
'''password sufficient /usr/local/lib/security/pam_krb5.so try_first_pass minimum_uid=5000'''
'''password       sufficient     /usr/local/lib/pam_sss.so use_authtok'''
password required pam_unix.so no_warn try_first_pass
#password      sufficient      pam_krb5.so no_warn try_first_pass
password       required       pam_unix.so no_warn try_first_pass
}}
}}


== LDAP ==
Editera /etc/pam.d/sshd:
Installera net/nss-pam-ldapd utan pam_ldap stödet. Vi ska ju inte autentisera mot LDAP:
{{bc|1=
{{RootCmd|portmaster net/nss-pam-ldapd}}
# auth
auth            sufficient pam_opie.so no_warn no_fake_prompts
auth            requisite pam_opieaccess.so no_warn allow_local
'''auth            sufficient      /usr/local/lib/pam_sss.so forward_pass'''
#auth          sufficient pam_krb5.so no_warn try_first_pass
auth            sufficient pam_ssh.so no_warn try_first_pass
auth            required pam_unix.so no_warn try_first_pass
 
# account
account        required pam_nologin.so
'''account        required        /usr/local/lib/pam_sss.so ignore_unknown_user ignore_authinfo_unavail'''
#account        required pam_krb5.so
account        required pam_login_access.so
account        required pam_unix.so


Editera /usr/local/etc/nslcd.conf:
# session
{{bc|1=
#session        optional pam_ssh.so want_agent
uid nslcd
session        required pam_permit.so
gid nslcd
 
uri ldap://ldap.example.com/
# password
base dc=example,dc=com
'''password        sufficient      /usr/local/lib/pam_sss.so use_authtok'''
ssl start_tls
#password      sufficient pam_krb5.so no_warn try_first_pass
tls_cacertfile /etc/ssl/cert.pem
password        required pam_unix.so no_warn try_first_pass
}}
}}
== NSS ==


Editera /etc/nsswitch.conf:
Editera /etc/nsswitch.conf:
{{bc|
{{bc|
group: files ldap
group: files sss
passwd: files ldap
passwd: files sss
}}
}}


Radera länken /etc/ssl/cert.pem och ersätt med ditt egna CA certifikat.
Radera länken /etc/ssl/cert.pem och ersätt med ditt egna CA certifikat.
=== SSSD ===
Editera /usr/local/etc/sssd/sssd.conf:
{{bc|1=
[sssd]
config_file_version = 2
services = nss, pam
domains = LOCAL, EXAMPLE.COM
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
#override_shell = /usr/local/bin/bash
#override_homedir = /usr/home/%u
[pam]
reconnection_retries = 3
[domain/LOCAL]
id_provider = local
auth_provider = local
access_provider = permit
[domain/EXAMPLE.COM]
debug_level = 0
min_id = 5000
cache_credentials = true
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = simple
sudo_provider = none
ldap_uri = ldap://ns.example.com
ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls = true
ldap_tls_cacert = /etc/ssl/cert.pem
krb5_realm = EXAMPLE.COM
krb5_server = ns.example.com
krb5_kpasswd = ns.example.com
}}
Skydda filen:
{{RootCmd|chmod 600 /usr/local/etc/sssd/sssd.conf}}


Editera /etc/rc.conf:
Editera /etc/rc.conf:
{{bc|1=
{{bc|1=
nscd=_enable="YES"
sssd_enable="YES"
nslcd_enable="YES"
}}
}}


Starta nscd och nslcd:
Starta sssd:
{{RootCmd|service nscd start
{{RootCmd|service sssd start
|service nslcd start
}}
}}


Verifiera med kommandona:
Verifiera med kommandona:
{{RootCmd|getent passwd
{{RootCmd|getent passwd <username>
|getent group
|getent group <groupname>
}}
}}


== SSH ==
== SSH ==
Editera filen /etc/ssh/sshd_config och lägg till följande:
För att kunna logga in med Kerberos ticket, editera filen /etc/ssh/sshd_config och ändra följande rad till:
{{bc|KerberosAuthentication yes}}
{{bc|GSSAPIAuthentication yes}}
Starta om sshd med kommandot:
Starta om sshd med kommandot:
{{RootCmd|service sshd restart}}
{{RootCmd|service sshd restart}}


[[Category:Guide]]
[[Category:GammalGuide]]

Latest revision as of 19:46, 12 August 2023

Denna guide visar hur man sätter upp autentisering via LDAP/Kerberos i FreeBSD 10. Vi kommer använda SSSD och i guiden heter Kerberos realm EXAMPLE.COM och servern med Kerberos och LDAP heter ns.example.com. Klienten vi sätter upp heter client.example.com.

Installera SSSD

Installera följande:

root # portmaster security/cyrus-sasl2-gssapi

Välj Heimdal från systemetet, dvs BASE.

root # portmaster net/openldap24-sasl-client

Välj GSSAPI. Slutligen installera SSSD:

root # portmaster security/sssd

Kerberos

Editera /etc/krb5.conf:

[libdefaults]
    default_realm = EXAMPLE.COM

[realms]
    EXAMPLE.COM = {
        kdc = ns.example.com
        admin_server = ns.example.com
        default_domain = example.com
    }

[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM

Skapa en keytab fil för klienten. Logga in mot din KDC med admin-konto som har rättighet att skapa Kerberos principals:

root # /usr/local/bin/kadmin -p kadmin/admin

Kör kadmin kommandot:

kadmin: addprinc -randkey host/client.example.com@EXAMPLE.COM

Spara sen nycklarna i filen /etc/krb5.keytab:

kadmin: ktadd -k /etc/krb5.keytab host/client.example.com@EXAMPLE.COM

Logga ut från kadmin.

PAM

Editera /etc/pam.d/system:

# auth
auth            sufficient      pam_opie.so		no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so	no_warn allow_local
auth            sufficient      /usr/local/lib/pam_sss.so forward_pass
#auth           sufficient      pam_krb5.so		no_warn try_first_pass
#auth           sufficient      pam_ssh.so		no_warn try_first_pass
auth            required        pam_unix.so		no_warn try_first_pass nullok

# account
account         required        /usr/local/lib/pam_sss.so ignore_unknown_user ignore_authinfo_unavail
#account        required        pam_krb5.so
account         required        pam_login_access.so
account         required        pam_unix.so

# session
#session        optional        pam_ssh.so		want_agent
session         required        pam_lastlog.so		no_fail

# password
password        sufficient      /usr/local/lib/pam_sss.so use_authtok
#password       sufficient      pam_krb5.so		no_warn try_first_pass
password        required        pam_unix.so		no_warn try_first_pass

Editera /etc/pam.d/sshd:

# auth
auth            sufficient	pam_opie.so		no_warn no_fake_prompts
auth            requisite	pam_opieaccess.so	no_warn allow_local
auth            sufficient      /usr/local/lib/pam_sss.so forward_pass
#auth           sufficient	pam_krb5.so		no_warn try_first_pass
auth            sufficient	pam_ssh.so		no_warn try_first_pass
auth            required	pam_unix.so		no_warn try_first_pass

# account
account         required	pam_nologin.so
account         required        /usr/local/lib/pam_sss.so ignore_unknown_user ignore_authinfo_unavail
#account        required	pam_krb5.so
account         required	pam_login_access.so
account         required	pam_unix.so

# session
#session        optional	pam_ssh.so		want_agent
session         required	pam_permit.so

# password
password        sufficient      /usr/local/lib/pam_sss.so use_authtok
#password       sufficient	pam_krb5.so		no_warn try_first_pass
password        required	pam_unix.so		no_warn try_first_pass

NSS

Editera /etc/nsswitch.conf:

group: files sss
passwd: files sss

Radera länken /etc/ssl/cert.pem och ersätt med ditt egna CA certifikat.

SSSD

Editera /usr/local/etc/sssd/sssd.conf:

[sssd]
config_file_version = 2
services = nss, pam
domains = LOCAL, EXAMPLE.COM

[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
#override_shell = /usr/local/bin/bash
#override_homedir = /usr/home/%u

[pam]
reconnection_retries = 3

[domain/LOCAL]
id_provider = local
auth_provider = local
access_provider = permit

[domain/EXAMPLE.COM]
debug_level = 0
min_id = 5000
cache_credentials = true

id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = simple
sudo_provider = none

ldap_uri = ldap://ns.example.com
ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls = true
ldap_tls_cacert = /etc/ssl/cert.pem

krb5_realm = EXAMPLE.COM
krb5_server = ns.example.com
krb5_kpasswd = ns.example.com

Skydda filen:

root # chmod 600 /usr/local/etc/sssd/sssd.conf

Editera /etc/rc.conf:

sssd_enable="YES"

Starta sssd:

root # service sssd start

Verifiera med kommandona:

root # getent passwd <username>
root #
getent group <groupname>

SSH

För att kunna logga in med Kerberos ticket, editera filen /etc/ssh/sshd_config och ändra följande rad till:

GSSAPIAuthentication yes

Starta om sshd med kommandot:

root # service sshd restart