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
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 *.
Fig
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:".
Addere clavis ad user attributum.
Optio 1 - GUI:
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;
- Usor cum servo nectit aperiens suum login.
- Daemon sshd, per scriptum, extrahit valorem clavem publicam ex attributo usoris in Directorio Active, et potestatem facit utendi clavibus.
- Daemon sssd adhuc authenticat utentem e sodalitate coetus fundatum. Attendite! Si hoc non configuratur, tunc usor fundi ullus aditus ad exercitum habebit.
- 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:
Source: www.habr.com