VÄsturiski sudo atļaujas regulÄja failu saturs no /etc/sudoers.d Šø Visudo, un atslÄgas autorizÄcija tika veikta, izmantojot ~/.ssh/authorized_keys. TaÄu, infrastruktÅ«rai augot, rodas vÄlme Ŕīs tiesÄ«bas pÄrvaldÄ«t centralizÄti. Å odien var bÅ«t vairÄkas risinÄjuma iespÄjas:
- KonfigurÄcijas pÄrvaldÄ«bas sistÄma - Å efpavÄrs, marionete, IespÄjams, sÄls
- Active Directory + ssd
- DažÄdas perversijas skriptu un manuÄlas failu rediÄ£ÄÅ”anas veidÄ
ManuprÄt, vislabÄkais centralizÄtÄs pÄrvaldÄ«bas variants joprojÄm ir kombinÄcija Active Directory + ssd. Å Ä«s pieejas priekÅ”rocÄ«bas ir:
- PatieÅ”Äm viens centralizÄts lietotÄju direktorijs.
- TiesÄ«bu sadale sudo Tas ir saistÄ«ts ar lietotÄja pievienoÅ”anu noteiktai droŔības grupai.
- DažÄdu Linux sistÄmu gadÄ«jumÄ, izmantojot konfigurÄcijas sistÄmas, kļūst nepiecieÅ”ams ieviest papildu pÄrbaudes, lai noteiktu OS.
Å odienas komplekts bÅ«s Ä«paÅ”i veltÄ«ts savienojumam Active Directory + ssd tiesÄ«bu pÄrvaldÄ«bai sudo un uzglabÄÅ”ana ssh atslÄgas vienÄ repozitorijÄ.
TÄ zÄle sastinga saspringtÄ klusumÄ, diriÄ£ents pacÄla zizli, un orÄ·estris gatavojÄs.
Iesim.
Å
emot vÄrÄ:
ā Active Directory domÄns testopf.local operÄtÄjsistÄmÄ Windows Server 2012 R2.
ā Linux resursdators, kurÄ darbojas Centos 7
ā KonfigurÄta autorizÄcija, izmantojot ssd
Abi risinÄjumi veic izmaiÅas shÄmÄ Active Directory, tÄpÄc mÄs visu pÄrbaudÄm testa vidÄ un tikai pÄc tam veicam izmaiÅas darba infrastruktÅ«rÄ. Es vÄlos atzÄ«mÄt, ka visas izmaiÅas ir mÄrÄ·tiecÄ«gas un faktiski pievieno tikai nepiecieÅ”amos atribÅ«tus un klases.
1. darbība: kontrole sudo lomas cauri Active Directory.
Lai paplaÅ”inÄtu Ä·Ädi Active Directory jums ir nepiecieÅ”ams lejupielÄdÄt jaunÄko versiju
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(Neaizmirstiet aizstÄt savas vÄrtÄ«bas)
AtvÄrt adsiedit.msc un izveidojiet savienojumu ar noklusÄjuma kontekstu:
Izveidojiet sadalÄ«jumu domÄna saknÄ sudoers. (BuržuÄzija spÄ«tÄ«gi apgalvo, ka tieÅ”i Å”ajÄ vienÄ«bÄ dÄmons ssd meklÄ preci sudoRole objektus. TomÄr pÄc detalizÄtas atkļūdoÅ”anas ieslÄgÅ”anas un žurnÄlu izpÄtes atklÄjÄs, ka meklÄÅ”ana tika veikta visÄ direktoriju kokÄ.)
MÄs izveidojam pirmo objektu, kas pieder klasei sadalÄ«jumÄ sudoRole. VÄrdu var izvÄlÄties absolÅ«ti patvaļīgi, jo tas kalpo tikai Ärtai identifikÄcijai.
Starp iespÄjamiem shÄmas paplaÅ”inÄjuma pieejamajiem atribÅ«tiem galvenie ir Å”Ädi:
- sudoCommand ā nosaka, kuras komandas ir atļauts izpildÄ«t resursdatorÄ.
- sudoHost ā nosaka, uz kuriem saimniekiem Ŕī loma attiecas. Var norÄdÄ«t kÄ VISS, un individuÄlam saimniekdatoram pÄc nosaukuma. Ir iespÄjams arÄ« izmantot masku.
- sudoUser ā norÄda, kuriem lietotÄjiem ir atļauts izpildÄ«t sudo.
Ja norÄdÄt droŔības grupu, nosaukuma sÄkumÄ pievienojiet zÄ«mi ā%ā. Ja grupas nosaukumÄ ir atstarpes, nav par ko uztraukties. Spriežot pÄc baļķiem, uzdevumu izbÄgt no telpÄm pÄrÅem mehÄnisms ssd.
1. att. sudoRole objekti sudoers apakÅ”nodaÄ¼Ä direktorija saknÄ
2. attÄls. DalÄ«ba droŔības grupÄs, kas norÄdÄ«tas sudoRole objektos.
TÄlÄk norÄdÄ«tÄ iestatÄ«Å”ana tiek veikta Linux pusÄ.
FailÄ /etc/nsswitch.conf pievienojiet rindiÅu faila beigÄs:
sudoers: files sss
FailÄ /etc/sssd/sssd.conf sadaÄ¼Ä [sssd] pievienot pakalpojumiem sudo
cat /etc/sssd/sssd.conf | grep services
services = nss, pam, sudo
PÄc visÄm darbÄ«bÄm jums ir jÄiztÄ«ra sssd dÄmona keÅ”atmiÅa. AutomÄtiski atjauninÄjumi notiek ik pÄc 6 stundÄm, bet kÄpÄc mums bÅ«tu jÄgaida tik ilgi, ja mÄs to vÄlamies tagad?
sss_cache -E
Bieži gadÄs, ka keÅ”atmiÅas notÄ«rÄ«Å”ana nepalÄ«dz. PÄc tam mÄs pÄrtraucam pakalpojumu, iztÄ«rÄm datu bÄzi un sÄkam pakalpojumu.
service sssd stop
rm -rf /var/lib/sss/db/*
service sssd start
MÄs izveidojam savienojumu kÄ pirmais lietotÄjs un pÄrbaudÄm, kas viÅam ir pieejams zem 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
MÄs darÄm to paÅ”u ar savu otro lietotÄju:
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
Å Ä« pieeja ļauj centralizÄti definÄt sudo lomas dažÄdÄm lietotÄju grupÄm.
Ssh atslÄgu glabÄÅ”ana un izmantoÅ”ana Active Directory
Nedaudz paplaÅ”inot shÄmu, ir iespÄjams glabÄt ssh atslÄgas Active Directory lietotÄja atribÅ«tos un izmantot tos, veicot autorizÄciju Linux resursdatoros.
JÄkonfigurÄ autorizÄcija, izmantojot sssd.
Pievienojiet nepiecieŔamo atribūtu, izmantojot PowerShell skriptu.
AddsshPublicKeyAttribute.ps1Funkcija New-AttributeID {
$Prefix="1.2.840.113556.1.8000.2554"
$GUID=[System.Guid]::NewGuid().ToString()
$Parts=@()
$Parts+=[UInt64]::ParsÄt($guid.SubString(0,4),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(4,4),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(9,4),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(14,4),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(19,4),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(24,6),āAllowHexSpecifierā)
$Parts+=[UInt64]::ParsÄt($guid.SubString(30,6),āAllowHexSpecifierā)
$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 = jauns atribūta ID
$attributes = @{
lDAPDisplayName = 'sshPublicKey';
atribūtiId = $oid;
oMSintakse = 22;
atribūtiSyntax = "2.5.5.5";
isSingleValued = $true;
adminDescription = 'LietotÄja publiskÄ atslÄga SSH pieteikÅ”anai';
}
Jauns-ADObject -Nosaukums sshPublicKey -Type atribūtiSchema -CeļŔ $schemapath -Citi atribūti $atribūti
$userSchema = get-adobject - SearchBase $schemapath - Filtrs 'name -eq "user"'
$userSchema | Set-ADObject -Add @{mayContain = 'sshPublicKey'}
PÄc atribÅ«ta pievienoÅ”anas jums ir jÄrestartÄ Active Directory domÄna pakalpojumi.
PÄriesim pie Active Directory lietotÄjiem. MÄs Ä£enerÄsim atslÄgu pÄri ssh savienojumam, izmantojot jebkuru jums Ärtu metodi.
MÄs palaižam PuttyGen, nospiežam pogu āÄ¢enerÄtā un izmisÄ«gi pÄrvietojam peli tukÅ”ajÄ apgabalÄ.
PÄc procesa pabeigÅ”anas mÄs varam saglabÄt publisko un privÄto atslÄgu, augÅ”upielÄdÄt publisko atslÄgu Active Directory lietotÄja atribÅ«tÄ un izbaudÄ«t procesu. TomÄr publiskÄ atslÄga ir jÄizmanto no "PubliskÄ atslÄga ielÄ«mÄÅ”anai OpenSSH authorised_keys failÄ:".
Pievienojiet atslÄgu lietotÄja atribÅ«tam.
1. iespÄja ā GUI:
2. iespÄja ā PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
TÄtad paÅ”laik mums ir: lietotÄjs ar aizpildÄ«tu atribÅ«tu sshPublicKey, konfigurÄts Putty klients autorizÄcijai, izmantojot atslÄgas. JoprojÄm ir viens mazs jautÄjums: kÄ piespiest sshd dÄmonu iegÅ«t mums nepiecieÅ”amo publisko atslÄgu no lietotÄja atribÅ«tiem. Neliels buržuÄziskajÄ internetÄ atrasts skripts ar to var veiksmÄ«gi tikt galÄ.
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'
MÄs iestatÄ«jÄm tÄ atļaujas uz 0500 root.
chmod 0500 /usr/local/bin/fetchSSHKeysFromLDAP
Å ajÄ piemÄrÄ, lai izveidotu saiti ar direktoriju, tiek izmantots administratora konts. CÄ«Åas apstÄkļos ir jÄbÅ«t atseviŔķam kontam ar minimÄlu tiesÄ«bu kopumu.
Mani personÄ«gi ļoti mulsinÄja paroles mirklis tÄ«rÄ veidÄ skriptÄ, neskatoties uz noteiktajÄm tiesÄ«bÄm.
RisinÄjuma variants:
- Es saglabÄju paroli atseviÅ”Ä·Ä failÄ:
echo -n Supersecretpassword > /usr/local/etc/secretpass
- Es iestatīju faila atļaujas uz 0500 root
chmod 0500 /usr/local/etc/secretpass
- Ldapsearch palaiÅ”anas parametru maiÅa: parametrs -w superSecretPassword Es to mainu uz -y /usr/local/etc/secretpass
PÄdÄjais akords Å”odienas komplektÄ ir sshd_config rediÄ£ÄÅ”ana
cat /etc/ssh/sshd_config | egrep -v -E "#|^$" | grep -E "AuthorizedKeysCommand|PubkeyAuthe"
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/local/bin/fetchSSHKeysFromLDAP
AuthorizedKeysCommandUser root
RezultÄtÄ mÄs iegÅ«stam Å”Ädu secÄ«bu ar atslÄgas autorizÄciju, kas konfigurÄta ssh klientÄ:
- LietotÄjs izveido savienojumu ar serveri, norÄdot savu pieteikÅ”anos.
- Sshd dÄmons, izmantojot skriptu, izvelk publiskÄs atslÄgas vÄrtÄ«bu no Active Directory lietotÄja atribÅ«ta un veic autorizÄciju, izmantojot atslÄgas.
- Sssd dÄmons tÄlÄk autentificÄ lietotÄju, pamatojoties uz dalÄ«bu grupÄ. UzmanÄ«bu! Ja tas nav konfigurÄts, jebkuram domÄna lietotÄjam bÅ«s piekļuve resursdatoram.
- MÄÄ£inot veikt sudo, sssd dÄmons Active Directory meklÄ lomas. Ja lomas ir klÄt, tiek pÄrbaudÄ«ti lietotÄja atribÅ«ti un dalÄ«ba grupÄ (ja sudoRoles ir konfigurÄts lietotÄju grupu lietoÅ”anai)
Kopsavilkums.
TÄdÄjÄdi atslÄgas tiek glabÄtas Active Directory lietotÄju atribÅ«tos, sudo atļaujÄs - lÄ«dzÄ«gi domÄna kontu piekļuve Linux saimniekiem tiek veikta, pÄrbaudot dalÄ«bu Active Directory grupÄ.
PÄdÄjais diriÄ£enta pulciÅa vilnis ā un zÄle sastingst godbijÄ«gÄ klusumÄ.
RakstniecÄ«bÄ izmantotie resursi:
Avots: www.habr.com