240px-Diamond warning sign (Vienna Convention style).svg.png Content of this wiki is DEPRECATED 240px-Diamond warning sign (Vienna Convention style).svg.png

LDAP

Z old-wiki.siliconhill.cz
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(PAM)
 
(Není zobrazeno 44 mezilehlých verzí od 10 uživatelů.)
Řádka 1: Řádka 1:
 +
'''!!!POZOR!!! PŘÍSTUP K LDAPU JDE NYNÍ JEN Z WHITELISTOVANÉ ADRESY A POUŽÍVÁ SE JEN PRO INTERNÍ UŽITÍ KLUBOVÝCH SLUŽEB!'''
  
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.
+
'''LDAP''' je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.
 
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]
 
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]
  
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.
+
Klub Silicon Hill v rámci [[IS|ISu]] provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.
  
 
= Informace o serveru =
 
= Informace o serveru =
Řádka 10: Řádka 11:
 
* Port: 636
 
* Port: 636
 
* Používá SSL (ldaps://)
 
* Používá SSL (ldaps://)
* Správce: [[Tomáš Srna]]
+
* Správce: [[Vladimír Kincl]]
 
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz
 
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz
 
* Atribút uživateľského mena: uid
 
* Atribút uživateľského mena: uid
Řádka 17: Řádka 18:
 
* Overenie cez userPassword, SSHA hash
 
* Overenie cez userPassword, SSHA hash
 
* Vo výnimočných prípadoch možnosť NTLM overenia
 
* Vo výnimočných prípadoch možnosť NTLM overenia
 +
* Důležité atributy uživatelů:
 +
** uid:  username
 +
** givenName: křestní jméno
 +
** sn: příjmení
 +
** cn: celé jméno
 +
** mail: ______@sh.cvut.cz
 +
** SHservice: zaklad - Pro každou službu, kterou má uživatel aktivní, obsahuje Alias služby z ISu
 +
** SHadmin: is1 - Pro každý server, kterého je uživatel správce
 +
** SHmailExternal: _____@____.__ - Pro každý externí email, který si uživatel autorizoval pro odesílání
 +
** SHrole: SHrole: nazev_role:rozsah | nazev_role - Pro každou roli / oprávnění v ISu existuje záznam SHrole, pokud není uvedena : jedná se o neomezené oprávnění, Příklady:
 +
*** SHrole: registrator:wifi - Registrátor WiFi
 +
*** SHrole: admin:10 - Admin B10
 +
*** SHrole: admin - Admin neomezený
 +
*** SHrole: service_admin:zimbra - Správce služby Zimbra
 +
*** SHrole: mail_admin:su.cvut.cz - Správce mailů domény su.cvut.cz
 +
*** Platné názvy rolí: registrator, tags_admin, cameras_admin, student_representative, extended_member, payments_admin, netadmin, dns_admin, service_admin, mail_admin, superuser, admin, secretary, roles_admin, card_readers_admin
 +
*** Dokumentace k rolím: https://is.sh.cvut.cz/users/20288/user_roles
  
 
== Autentizačné módy ==
 
== Autentizačné módy ==
Řádka 65: Řádka 83:
 
= Příklady použití / nastavení =
 
= Příklady použití / nastavení =
  
== LDAP Kontakty v Telefonu ==
 
 
'''iPhone'''
 
Nastavení -> Pošta, Kontakty, Kalendáře -> Přidat účet -> Jiný -> "Přidat účet LDAP"
 
* Server: ldap.sh.cvut.cz
 
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz
 
* Heslo: Tvé heslo do ISu
 
* Popis: ldap.sh.cvut.cz
 
* Použít SSL: Ano
 
* Kritéria hledání: dc=sh,dc=cvut,dc=cz
 
  
 
== LDAP z příkazové řádky - ldapsearch ==
 
== LDAP z příkazové řádky - ldapsearch ==
Řádka 179: Řádka 187:
 
         }
 
         }
 
  }
 
  }
 +
 +
== Apache HTTP auth ==
 +
 +
Je nutne splnit prerekvizitu - viz. obsah wiki stranky.
 +
 +
<pre>
 +
 +
<Directory /var/www/*>
 +
      Options Indexes FollowSymLinks MultiViews
 +
 +
      Order allow,deny
 +
      Deny from all
 +
 +
      AuthType Basic
 +
      AuthBasicProvider ldap
 +
      AuthName "ldap auth"
 +
      AuthLDAPURL "ldaps://ldap.sh.cvut.cz:636/dc=sh,dc=cvut,dc=cz"
 +
 +
      AuthzLDAPAuthoritative On
 +
      AuthLDAPBindAuthoritative On
 +
      AuthLDAPBindDN "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz"
 +
      AuthLDAPBindPassword "****************"
 +
 +
      Require ldap-filter &(SHrole=netadmin)
 +
      Satisfy Any
 +
 +
</Directory>
 +
 +
</pre>
  
 
== Microsoft Visual C# ==
 
== Microsoft Visual C# ==
Řádka 339: Řádka 376:
 
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.
 
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.
  
==== Automaticke vytvaranie home ===
+
==== Automaticke vytvaranie home ====
 +
 
 +
Upravime /etc/pam.d/common-session, pridame na koniec suboru
 +
<pre>
 +
session    required      pam_mkhomedir.so skel=/etc/skel umask=0022
 +
</pre>
 +
 
 +
==== Filtrovanie uzivatelov ====
 +
 
 +
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)
 +
<pre>
 +
filter passwd (SHservice=shell)
 +
filter shadow (SHservice=shell)
 +
</pre>
 +
 
 +
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela
 +
<pre>
 +
(|(&(SHservice=shell)(SHservice=net))(SHservice=sport))
 +
(|(uid=tomassrna)(uid=robenek))
 +
(uid=tomassrna)
 +
(SHadmin=git)
 +
</pre>
  
 
= Seznam služeb a jejich správců, které LDAP používají =
 
= Seznam služeb a jejich správců, které LDAP používají =
* finance.sh [[Bronislav Robenek]]
+
 
* imap.sh [[Radim Roška]]
+
Autentizaci pomoci LDAP by mely pouzivat pouze sluby, ktere nemohou jinak. V zadnem pripade by na seznamu nemela byt webova aplikace, pro ty je urcene overovani pomoci OAuth ISu https://is.sh.cvut.cz/oauth_api. V pripade, ze spravce sluzby neni schopen/odmita migrovat, tak je treba, aby si pro sluzby vyrobil lokalni ucty.
* zimbra.sh [[Radim Roška]]
+
 
* msdnaa.sh [[Michal Naiman]]
+
Fastbind a sdileny auth-user budou k 1.1.2014 vypnuty. Pro sluzby, ktere vyzaduji LDAP i presto je nutne vytvorit vlastniho auth-usera.
* git.sh [[Tomáš Srna]]
+
 
* news.sh [[Dominik Mališ]]
+
* tacacs [[Vladimír Kincl]] a [[Dalibor Šicner]]
 +
* radius
 
* shell.sh [[Václav Mach]]
 
* shell.sh [[Václav Mach]]
* siliconhill.cz [[Dominik Mališ]]
+
* vpn.sh (ASA) [[Viktor Bohuslav Bohdal]]
 +
 
 +
Potreba prebrat / zmigrovat na OAuth:
 +
* mbox.sh [[Václav Mach]] HTTPS, prevedeno na vlastniho auth-usera
 +
* icinga ?
 +
* hudebny.sh.cvut.cz ? (HTTP aplikace bez certifikátu! - BUDE ZABLOKOVÁNA)
 +
* observium [[Uživatel:Gregy | Petr Gregor - Gregy]] HTTPS, prevedeno na vlastniho auth-usera
 +
* cloudadmin [[Uživatel:Gregy | Petr Gregor - Gregy]] HTTPS, prevedeno na vlastniho auth-usera
 +
 
 +
[[category:servery]]

Aktuální verze z 27. 7. 2014, 18:30

!!!POZOR!!! PŘÍSTUP K LDAPU JDE NYNÍ JEN Z WHITELISTOVANÉ ADRESY A POUŽÍVÁ SE JEN PRO INTERNÍ UŽITÍ KLUBOVÝCH SLUŽEB!

LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací. LDAP na wikipedii

Klub Silicon Hill v rámci ISu provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.

Obsah

[editovat] Informace o serveru

  • Adresa: ldap.sh.cvut.cz
  • Port: 636
  • Používá SSL (ldaps://)
  • Správce: Vladimír Kincl
  • Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz
  • Atribút uživateľského mena: uid
  • Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz
  • Heslo na vyžádání u správce
  • Overenie cez userPassword, SSHA hash
  • Vo výnimočných prípadoch možnosť NTLM overenia
  • Důležité atributy uživatelů:
    • uid: username
    • givenName: křestní jméno
    • sn: příjmení
    • cn: celé jméno
    • mail: ______@sh.cvut.cz
    • SHservice: zaklad - Pro každou službu, kterou má uživatel aktivní, obsahuje Alias služby z ISu
    • SHadmin: is1 - Pro každý server, kterého je uživatel správce
    • SHmailExternal: _____@____.__ - Pro každý externí email, který si uživatel autorizoval pro odesílání
    • SHrole: SHrole: nazev_role:rozsah | nazev_role - Pro každou roli / oprávnění v ISu existuje záznam SHrole, pokud není uvedena : jedná se o neomezené oprávnění, Příklady:
      • SHrole: registrator:wifi - Registrátor WiFi
      • SHrole: admin:10 - Admin B10
      • SHrole: admin - Admin neomezený
      • SHrole: service_admin:zimbra - Správce služby Zimbra
      • SHrole: mail_admin:su.cvut.cz - Správce mailů domény su.cvut.cz
      • Platné názvy rolí: registrator, tags_admin, cameras_admin, student_representative, extended_member, payments_admin, netadmin, dns_admin, service_admin, mail_admin, superuser, admin, secretary, roles_admin, card_readers_admin
      • Dokumentace k rolím: https://is.sh.cvut.cz/users/20288/user_roles

[editovat] Autentizačné módy

  • FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient
 * uid={username},ou=People,dc=sh,dc=cvut,dc=cz
 * {password}
  • Bind cez auth-user
 * Horeuvedené údaje
 * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.

[editovat] Prerekvizita SSL

Dôležité! Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.

Postup je nasledovný:

  • V /etc/ldap/ldap.conf pridáme riadok
TLS_CACERT      /etc/ssl/certs/ldap.pem
  • Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----

[editovat] Příklady použití / nastavení

[editovat] LDAP z příkazové řádky - ldapsearch

# Balíček
aptitude install ldap-utils

# ~ Fastbind (zepta se na heslo pro username)
ldapsearch -h ldap.sh.cvut.cz -b "dc=sh,dc=cvut,dc=cz" -D "uid=username,ou=People,dc=sh,dc=cvut,dc=cz" -W uid=username

# ~ Bind (se systémovým účtem)
ldapsearch -h ldap.sh.cvut.cz -b "dc=sh,dc=cvut,dc=cz" -D "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz" -w *heslo_auth_usera* uid=username

[editovat] Zend_Auth_Adapter_Ldap

application.ini

ldap.is.host = ldap.sh.cvut.cz
ldap.is.port = 636
ldap.is.useSsl = true
ldap.is.useStartTls = true

ldap.is.bindRequiresDn = true
ldap.is.baseDn = "ou=People,dc=sh,dc=cvut,dc=cz"
ldap.is.accountCanonicalForm = 2

ldap.is.username = "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz"
ldap.is.password = "********"


Přiklad přihlášení v kontextu Zend_Controller_Action, Více v dokumentaci

$auth=new Zend_Auth();

$username=$this->_getParam("username");
$password=$this->_getParam("password");

$bootstrap = $this->getInvokeArg('bootstrap');
$config=$bootstrap->getOptions();
$options = $config["ldap"];

$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);

$result=$auth->authenticate($authAdapter);

if($result->isValid()) {
  $ldap=$authAdapter->getLdap();
  $user = $ldap->getEntry("uid=".$username.",".$options["is"]["baseDn"]);
  echo "Uzivatel prihlasen";
  print_r($user);
}
else {
  echo "Spatne jmeno nebo heslo";
}

[editovat] Ruby - FastBind

require 'rubygems'
require 'net/ldap'
require 'io/console'

puts "Username:"
username = gets
puts "Password:"
password = STDIN.noecho(&:gets)

ldap = Net::LDAP.new(:encryption => :simple_tls)
ldap.host = "ldap.sh.cvut.cz"
ldap.port = 636
ldap.base = "ou=People,dc=sh,dc=cvut,dc=cz"
ldap.auth "uid=#{username.strip},"+ldap.base, password.strip
if ldap.bind
  puts "authentication succeeded"
  p ldap.search(
    base:         "ou=People,dc=sh,dc=cvut,dc=cz",
    filter:       Net::LDAP::Filter.eq("uid", username.strip),
    attributes:   %w[ givenName sn email SHservice ],
    return_result:true
  ).inspect
else
  puts "authentication failed"
end

[editovat] PHP - bez frameworku

<?php
$user = "tomassrna";
$pass = "...";
$ldapConn = ldap_connect("ldaps://ldap.sh.cvut.cz", 636);
if($ldapConn)
{
       $ldapBind = ldap_bind($ldapConn, "uid=".$user.",ou=People,dc=sh,dc=cvut,dc=cz", $pass);
       if($ldapBind)
               echo "SUCCESS\n";
       else
       {
               echo "FAILED: ";
               echo ldap_error($ldapConn)."\n";
       }
}

[editovat] Apache HTTP auth

Je nutne splnit prerekvizitu - viz. obsah wiki stranky.


<Directory /var/www/*>
       Options Indexes FollowSymLinks MultiViews

       Order allow,deny
       Deny from all

       AuthType Basic
       AuthBasicProvider ldap
       AuthName "ldap auth"
       AuthLDAPURL "ldaps://ldap.sh.cvut.cz:636/dc=sh,dc=cvut,dc=cz"

       AuthzLDAPAuthoritative On
       AuthLDAPBindAuthoritative On
       AuthLDAPBindDN "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz"
       AuthLDAPBindPassword "****************"

       Require ldap-filter &(SHrole=netadmin)
       Satisfy Any

</Directory>

[editovat] Microsoft Visual C#

Tak toto bol tazky boj...

  • Pridame reference System.DirectoryServices
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.DirectoryServices;
using System.Collections;

namespace LDAP
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, string[]> attrs;
            if ((attrs = shLdap("tomassrna", "xxxxxx",
                new[] { "mail", "uid", "SHservice", "SHadmin" }, "(&(uid=tomassrna)(SHservice=net))")) != null)
            {
                Console.WriteLine("Auth success!");
                // Priklad vypisu vsetkych atributov
                foreach(KeyValuePair<string, string[]> kv in attrs)
                {
                    string k = kv.Key;
                    foreach (string v in kv.Value)
                    {
                        Console.WriteLine(k + "=" + v);
                    }
                }
                // Priklad ziskania single value
                Console.WriteLine("E-mail: " + attrs["mail"][0]);
                // Priklad ziskania multi value
                Console.WriteLine("Spravovane servery: ");
                foreach (string s in attrs["shadmin"])
                {
                    Console.WriteLine(s);
                }
            }
            else
                Console.WriteLine("Auth failed!");

            Console.Read();
        }
        static Dictionary<string, string[]> shLdap(string username, string password, string[] attrs, string filter = "")
        {
            try
            {
                DirectoryEntry de = new DirectoryEntry("LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz",
                    "uid=" + username + ",ou=People,dc=sh,dc=cvut,dc=cz", password, 
                    AuthenticationTypes.SecureSocketsLayer);
                DirectorySearcher ds = new DirectorySearcher(de);
                if (filter == "")
                    ds.Filter = "(uid=" + username + ")";
                else
                    ds.Filter = filter;
                foreach (string attr in attrs)
                    ds.PropertiesToLoad.Add(attr);
                SearchResult sr = ds.FindOne();

                Dictionary<string, string[]> res = new Dictionary<string, string[]>();
                foreach (string prop in sr.Properties.PropertyNames)
                {
                    var ar = new List<string>();
                    foreach (object oval in sr.Properties[prop])
                    {
                        string val = "";
                        if (oval is string)
                            val = (string)oval;
                        else if(oval is Byte[])
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);
                        ar.Add(val);
                    }
                    res[prop] = (string[])ar.ToArray();
                }
                return res;
            }
            catch (Exception)
            {
                return null;
            }
        }
    }
}

[editovat] Linux - prihlasovanie uzivatelov

Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv. Podme si ukazat sposob, ktory je jednoduchy a funguje.

Hned na zaciatku by som podotkol, ze
getent passwd
nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany auth-user nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.

Pre debug pouzivaj

id tomassrna

Poznamka: Vsetko je testovane na cistej instalacii Debian Squeeze

[editovat] Prerekvizita

#Prerekvizita SSL

[editovat] NSS

NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.

Nainstalujeme balik libnss-ldapd (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)

aptitude install libnss-ldapd

Pocas instalacie sa nas modra obrazovka spyta na:

  • Name services to configure: group, passwd, shadow
  • Meno LDAP servera: ldaps://ldap.sh.cvut.cz
  • Base: dc=sh,dc=cvut,dc=cz

Doladime /etc/nslcd.conf

uri ldaps://ldap.sh.cvut.cz
base dc=sh,dc=cvut,dc=cz
ldap_version 3
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz
bindpw <heslo na vyziadanie od admina LDAP>
ssl on
tls_reqcert allow

Skontrolujeme, ze /etc/nsswitch.conf obsahuje:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Otestujeme

root@test:~# id tomassrna
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)

Ak nefunguje, tak:

root@test:~# /etc/init.d/nscd restart
Restarting Name Service Cache Daemon: nscd.
root@test:~# /etc/init.d/nslcd restart
Restarting LDAP connection daemon: nslcd.

[editovat] PAM

PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)

PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.

[editovat] Automaticke vytvaranie home

Upravime /etc/pam.d/common-session, pridame na koniec suboru

session     required      pam_mkhomedir.so skel=/etc/skel umask=0022

[editovat] Filtrovanie uzivatelov

Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)

filter passwd (SHservice=shell)
filter shadow (SHservice=shell)

Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela

(|(&(SHservice=shell)(SHservice=net))(SHservice=sport))
(|(uid=tomassrna)(uid=robenek))
(uid=tomassrna)
(SHadmin=git)

[editovat] Seznam služeb a jejich správců, které LDAP používají

Autentizaci pomoci LDAP by mely pouzivat pouze sluby, ktere nemohou jinak. V zadnem pripade by na seznamu nemela byt webova aplikace, pro ty je urcene overovani pomoci OAuth ISu https://is.sh.cvut.cz/oauth_api. V pripade, ze spravce sluzby neni schopen/odmita migrovat, tak je treba, aby si pro sluzby vyrobil lokalni ucty.

Fastbind a sdileny auth-user budou k 1.1.2014 vypnuty. Pro sluzby, ktere vyzaduji LDAP i presto je nutne vytvorit vlastniho auth-usera.

Potreba prebrat / zmigrovat na OAuth:

  • mbox.sh Václav Mach HTTPS, prevedeno na vlastniho auth-usera
  • icinga ?
  • hudebny.sh.cvut.cz ? (HTTP aplikace bez certifikátu! - BUDE ZABLOKOVÁNA)
  • observium Petr Gregor - Gregy HTTPS, prevedeno na vlastniho auth-usera
  • cloudadmin Petr Gregor - Gregy HTTPS, prevedeno na vlastniho auth-usera
Jmenné prostory

Varianty
Akce