Victores certationis internationalis SSH et sudo iterum in scaena sunt. Ductus ab Distinguished Active Directory Conductor

Historice, permissiones sudo a contentis in documentis reguntur /etc/sudoers.d и visudo, et auctoritate clavis adhibita ~/.ssh/authorized_keys. Tamen, sicut infrastructura crescit, desiderium horum iurium centraliter administrandi. Hodie plures optiones solutionis esse possunt:

  • Configurationis Management System - caput, PUPUS, Ansible, salis
  • Active Directory + ssd *
  • Variae perversiones in forma scriptorum et fasciculi manuales emendo

In mea sententia subiectiva, optima optio pro administratione centrali adhuc coniunctio est Active Directory + ssd *. Aditus commoda sunt:

  • Vere unus directorium usoris centralised.
  • Distributio iurium sudo descendit ad user addendo ad coetus specificae securitatis.
  • In variis systematibus Linux, necesse est ut additamenta inducantur ad OS determinare cum systemata configurationis utens.

Hodierna synthesis speciatim ad nexum dedicabitur Active Directory + ssd * ad iura procuratio sudo ac repono ssh claves in uno reposito.
Ita, aula silentio temporis adligat, conductor arundo levavit, orchestra paravit.
Go.

Datum;
- Active Directory domain testopf.local in Windows Servo 2012 R2.
— Linux hospes currit Centos 7
- Configured auctoritas usura ssd *
Ambae solutiones faciunt mutationes schema Active Directory, ita omnia in ambitu experimenti deprimimus et tunc demum mutationibus infrastructuris operantibus mutamur. Notare velim omnes mutationes iaculis et, immo tantum attributa necessaria et classes adiicere.

Actio 1: control sudo per roles Active Directory.

Dilatare in circuitu Active Directory vos postulo ut download tardus emissio sudo — 1.8.27 ut hodie. Unpack et effingo tabella schema.ActiveDirectory ex directorio ./doc ad dominium moderatoris. Ex mandato linea cum iura administratorum e indice in quo tabella erat exscripta, currunt:
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(Noli oblivisci tuam substituere values)
aperire adsiedit.msc et coniungere in contextu default:
Partem divisionis ad radicem dominii sudoers. In hac unitate daemonum pertinaciter affirmant ssd * exquirit an item sudoRole obiicit. Tamen, postquam singula debugging et pervestigatione truncorum verteret, revelatum est investigationem per totam arborem presulem fiendam esse.
Creamus primum obiectum classis in divisione sudoRole. Nomen absolute ad arbitrium eligi potest, quod unice identitati opportunae inservit.
Inter attributa possibilium ex extensione schematis praesto, praecipua sunt quae sequuntur:

  • sudoCommand — decernit uter iubeat exercitum attin- gere.
  • sudoHost - decernit uter exercituum munus hoc pertineat. Potest certa ut oMNISac singulis nominatim. Potest etiam persona uti.
  • sudoUser - indicant quod users liceat facere sudo.
    Si sodalitatem securitatis denotas, signum "%" in principio nominis adde. Si spatia sunt in nomine collegii, nihil est quod cures. De lignis iudicandis, munus evadendi spatia mechanismo occupatur ssd *.

Victores certationis internationalis SSH et sudo iterum in scaena sunt. Ductus ab Distinguished Active Directory Conductor
Fig

Victores certationis internationalis SSH et sudo iterum in scaena sunt. Ductus ab Distinguished Active Directory Conductor
Figura 2. Sodalitas in coetibus securitatis in obiectis sudoRole specificatis.

Quae sequuntur acta sunt in parte Linux.
In file /etc/nsswitch.conf adde lineam usque ad finem tabella:

sudoers: files sss

In file /etc/sssd/sssd.conf in sectione [sssd] addere ad officia sudo

cat /etc/sssd/sssd.conf | grep services
services = nss, pam, sudo

Post omnes operationes debes purgare thesaurum daemonis sssd. Automaticae renovationes fiunt singulis horis 6 horis, sed cur tamdiu exspectemus quando eam nunc volumus?

sss_cache -E

Saepe accidit ut purgatio latibulum non adiuvat. Tunc cessamus ministerium, datorum mundare et servitium committitur.

service sssd stop
rm -rf /var/lib/sss/db/*
service sssd start

Coniungimus ut primum usorem et deprime quae praesto sunt ei sub sudo:

su user1
[user1@testsshad log]$ id
uid=1109801141(user1) gid=1109800513(domain users) groups=1109800513(domain users),1109801132(admins_)
[user1@testsshad log]$ sudo -l
[sudo] password for user1:
Matching Defaults entries for user1 on testsshad:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin:/bin:/usr/sbin:/usr/bin

User user1 may run the following commands on testsshad:
    (root) /usr/bin/ls, /usr/bin/cat

Idem facimus cum usuario nostro secundo;

su user2
[user2@testsshad log]$ id
uid=1109801142(user2) gid=1109800513(domain users) groups=1109800513(domain users),1109801138(sudo_root)
[user2@testsshad log]$ sudo -l
Matching Defaults entries for user2 on testsshad:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin:/bin:/usr/sbin:/usr/bin

User user2 may run the following commands on testsshad:
    (root) ALL

Hic aditus permittit tibi ut partes sudo centraliter definias pro diversis coetibus usoris.

Condita ac utens ssh claves in Active Directory

Levi expansione schematis, claves ssh condere potest in attributis Active Directory usoris et uti cum licentia in Linux Exercituum.

Auctoritas per sssd configurari debet.
Adde debitum attributum utens in PowerShell script.
AddsshPublicKeyAttribute.ps1Munus Nova-AttributeID {
$Prefix="1.2.840.113556.1.8000.2554"
$GUID=[System.Guid] :: NewGuid().
$ Partes=@()
$Parse+=[UInt64]:: Parse($guid.SubString(0,4),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(4,4),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(9,4),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(14,4),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(19,4),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(24,6),"PermitteHexSpecifier")
$Parse+=[UInt64]:: Parse($guid.SubString(30,6),"PermitteHexSpecifier")
$oid=[String]::Format(«{0}.{1}.{2}.{3}.{4}.{5}.{6}.{7}»,$prefix,$Parts[0],
$Parts[1],$Parts[2],$Parts[3],$Parts[4],$Parts[5],$Parts[6])
$oid
}
$schemaPath = (Get-ADRootDSE).schemaNamingContext
$oid = New-AttributeID
$attributa = @{
lDAPDisplayName = 'sshPublicKey';
attribudId = $oid;
oMSyntax = XXII;
attributum = "2.5.5.5";
isSingleValued = $ verum;
adminDescription = 'User Publica clavis pro SSH login';
}

Novum-ADObject -Name sshPublicKey -Type attributedSchema -Path $ schemapath -OtherAttributes $ attributa
$userSchema = adepto-adobject -SearchBase $schemapath -Filter 'nomen -eq "usor"
$userSchema | Paro-ADObject -Add @{mayContain = 'sshPublicKey'}

His additis attributum, sileo Active Directory Domain Services oportet.
Transeamus ad users Active Directory. Nos par clavem generabimus ad nexum ssh utendo quovis modo tibi opportuno.
PuttyGen demittimus, puga pyga "generare" et furibenter murem intra spatium vacuum deprimimus.
Processu peracto, claves publicas et privatas servare possumus, clavem publicas immittere ad attributum activum Indicis utentis ac processu frui. Sed clavis publica uti debet "Clavis publica pro lima in OpenSSH authentici_keys transigendi:".
Victores certationis internationalis SSH et sudo iterum in scaena sunt. Ductus ab Distinguished Active Directory Conductor
Addere clavis ad user attributum.
Optio 1 - GUI:
Victores certationis internationalis SSH et sudo iterum in scaena sunt. Ductus ab Distinguished Active Directory Conductor
Optio 2 - PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
Ita, nunc habemus: a user cum attributo sshPublicKey repleto in, clientelam figuram Putty pro cessione clavium utendi. Unum punctum superest: quomodo cogere sshd daemonem ad extrahendum clavem publicam, quae nobis opus est ex attributis usoris. Scriptum parvum in interreti Bourgeois inventum hoc feliciter obire potest.

cat /usr/local/bin/fetchSSHKeysFromLDAP
#!/bin/sh
ldapsearch -h testmdt.testopf.local -xb "dc=testopf,dc=local" '(sAMAccountName='"${1%@*}"')' -D [email protected] -w superSecretPassword 'sshPublicKey' | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/n *//g;s/sshPublicKey: //gp'

Licentias in ea 0500 ad radicem constituimus.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

Hoc exemplo administratoris ratio ad indicem obligare adhibetur. Condiciones in certamine cum minimum iurium statuto rationem separatam esse oportet.
Ego personaliter valde turbatus est momento tesserae purae in scriptura forma, non obstantibus iuribus statutis.
Solution optio:

  • Servo password in file separatum:
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • Et posuit pro radix file permissiones ad D
    chmod 0500 /usr/local/etc/secretpass

  • Mutantes ldapsearch parametri Lorem: parametri -w superSecretPassword Ego mutare eam -y /usr/loci/etc/secretpass

Ultima chorda in hodierno comite edit sshd_config

cat /etc/ssh/sshd_config | egrep -v -E "#|^$" | grep -E "AuthorizedKeysCommand|PubkeyAuthe"
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/local/bin/fetchSSHKeysFromLDAP
AuthorizedKeysCommandUser root

Quam ob rem sequentia sequentia consequimur cum licentia clavem in clientelam ssh configuratam;

  1. Usor cum servo nectit aperiens suum login.
  2. Daemon sshd, per scriptum, extrahit valorem clavem publicam ex attributo usoris in Directorio Active, et potestatem facit utendi clavibus.
  3. Daemon sssd adhuc authenticat utentem e sodalitate coetus fundatum. Attendite! Si hoc non configuratur, tunc usor fundi ullus aditus ad exercitum habebit.
  4. Cum sudo conantur, daemon sssd per partes activum Directorium scrutatur. Si munera adsint, attributa et membra utentis coetus adstringuntur (si sudoRoles configuratur ut coetus usoris utendi)

Infimum.

Ita claves reponuntur in attributis usoris Active Directory, sudo permissiones - similiter accessus ad exercitum Linux per rationes dominicas exercetur annotando adscriptionem in circulo Active Directory.
Ultima baculi conductoris unda - et aula pio constringitur silentio.

Resources in scripto:

Sudo per Active Directory
Ssh claves per Active Directory
Scriptum Powershell, addito attributum Schema Active Directory
sudo firmum emissio

Source: www.habr.com

Add a comment