ජාත්‍යන්තර තරඟ SSH සහ sudo ජයග්‍රාහකයින් නැවතත් වේදිකාවට පැමිණ සිටිති. කීර්තිමත් ක්රියාකාරී නාමාවලි සන්නායක විසින් මෙහෙයවනු ලැබේ

ඓතිහාසික වශයෙන්, sudo අවසරයන් පාලනය කරනු ලැබුවේ ගොනු වල අන්තර්ගතය මගිනි /etc/sudoers.d и visudo, සහ ප්රධාන අවසරය භාවිතා කර ඇත ~/.ssh/authorized_keys. කෙසේ වෙතත්, යටිතල පහසුකම් වර්ධනය වන විට, මෙම අයිතිවාසිකම් කේන්ද්රගතව කළමනාකරණය කිරීමට ආශාවක් ඇත. අද විසඳුම් විකල්ප කිහිපයක් තිබිය හැකිය:

  • වින්‍යාස කළමනාකරණ පද්ධතිය - හිස, රූකඩ, පිළිතුරු, ලුණු
  • සක්රීය නාමාවලිය + ssd
  • ස්ක්‍රිප්ට් සහ අතින් ගොනු සංස්කරණ ආකාරයෙන් විවිධ විකෘති කිරීම්

මගේ ආත්මීය මතය අනුව, මධ්යගත කළමනාකරණය සඳහා හොඳම විකල්පය තවමත් සංයෝජනයකි සක්රීය නාමාවලිය + ssd. මෙම ප්රවේශයේ වාසි වන්නේ:

  • සැබවින්ම තනි මධ්‍යගත පරිශීලක නාමාවලියකි.
  • අයිතිවාසිකම් බෙදා හැරීම කිසිදිනක භාවිතා නිශ්චිත ආරක්ෂක කණ්ඩායමකට පරිශීලකයෙකු එක් කිරීම දක්වා පැමිණේ.
  • විවිධ ලිනක්ස් පද්ධති වලදී, වින්‍යාස පද්ධති භාවිතා කරන විට OS තීරණය කිරීම සඳහා අමතර චෙක්පත් හඳුන්වා දීම අවශ්‍ය වේ.

අද දින කට්ටලය විශේෂයෙන් සම්බන්ධතාවය සඳහා කැප කරනු ඇත සක්රීය නාමාවලිය + ssd හිමිකම් කළමනාකරණය සඳහා කිසිදිනක භාවිතා සහ ගබඩා කිරීම ssh තනි ගබඩාවක යතුරු.
ඉතින්, ශාලාව නොසන්සුන් නිශ්ශබ්දතාවයකින් මිදුණා, කොන්දොස්තර බැටන් පොල්ල ඔසවා, වාදක කණ්ඩායම සූදානම් විය.
යන්න.

ලබා දී ඇත්තේ:
- ක්රියාකාරී නාමාවලි වසම testopf.local Windows Server 2012 R2 මත.
— Linux සත්කාරක Centos 7 ධාවනය වේ
- භාවිතා කරමින් වින්‍යාසගත අවසරය ssd
විසඳුම් දෙකම යෝජනා ක්රමයට වෙනස්කම් සිදු කරයි සක්රීය නාමාවලිය, එබැවින් අපි පරීක්ෂණ පරිසරයක් තුළ සියල්ල පරීක්ෂා කර පසුව පමණක් වැඩ කරන යටිතල පහසුකම් සඳහා වෙනස්කම් සිදු කරන්නෙමු. සියලුම වෙනස්කම් ඉලක්ක කර ඇති අතර, ඇත්ත වශයෙන්ම, අවශ්ය ගුණාංග සහ පන්ති පමණක් එකතු කරන බව මම සටහන් කිරීමට කැමැත්තෙමි.

පියවර 1: පාලනය කිසිදිනක භාවිතා හරහා භූමිකාවන් සක්රීය නාමාවලිය.

පරිපථය පුළුල් කිරීමට සක්රීය නාමාවලිය ඔබ නවතම නිකුතුව බාගත කළ යුතුය කිසිදිනක භාවිතා - අද වන විට 1.8.27. ගොනුව ඉවත් කර පිටපත් කරන්න schema.ActiveDirectory ./doc නාමාවලියේ සිට වසම් පාලකය වෙත. ගොනුව පිටපත් කළ නාමාවලියෙන් පරිපාලක අයිතිවාසිකම් සහිත විධාන රේඛාවෙන්, ධාවනය කරන්න:
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(ඔබේ අගයන් ආදේශ කිරීමට අමතක නොකරන්න)
විවෘතයි adsiedit.msc සහ පෙරනිමි සන්දර්භයට සම්බන්ධ කරන්න:
වසමේ මූලයේ බෙදීමක් සාදන්න sudoers. (ධනේශ්වරය මුරණ්ඩු ලෙස කියා සිටින්නේ මෙම ඒකකයේ යක්ෂයා බවයි ssd අයිතමයක් සොයයි sudoRole වස්තූන්. කෙසේ වෙතත්, සවිස්තරාත්මක දෝශ නිරාකරණය ක්‍රියාත්මක කර ලඝු-සටහන් අධ්‍යයනය කිරීමෙන් පසුව, මුළු නාමාවලිය ගස පුරා සෙවීම සිදු කළ බව අනාවරණය විය.)
අපි කොට්ඨාසයේ පන්තියට අයත් පළමු වස්තුව නිර්මාණය කරමු sudoRole. පහසු හඳුනා ගැනීම සඳහා පමණක් සේවය කරන බැවින්, නම සම්පූර්ණයෙන්ම අත්තනෝමතික ලෙස තෝරා ගත හැකිය.
ක්‍රම ව්‍යාප්තියෙන් ලබා ගත හැකි ගුණාංග අතර, ප්‍රධාන ඒවා පහත දැක්වේ:

  • sudoCommand — ධාරකය මත ක්‍රියාත්මක කිරීමට අවසර දී ඇති විධානයන් තීරණය කරයි.
  • sudoHost — මෙම භූමිකාව අදාළ වන්නේ කුමන ධාරකයටද යන්න තීරණය කරයි. ලෙස දැක්විය හැක සෑම, සහ නමින් තනි පුද්ගල සත්කාරකයකු සඳහා. වෙස්මුහුණක් භාවිතා කිරීමට ද හැකිය.
  • sudoUser - ක්‍රියාත්මක කිරීමට අවසර ඇත්තේ කුමන පරිශීලකයින්ටද යන්න දක්වන්න කිසිදිනක භාවිතා.
    ඔබ ආරක්ෂක කණ්ඩායමක් සඳහන් කරන්නේ නම්, නමේ ආරම්භයේ "%" ලකුණක් එක් කරන්න. කණ්ඩායම් නාමයේ හිස්තැන් තිබේ නම්, කරදර වීමට කිසිවක් නැත. ලඝු-සටහන් අනුව විනිශ්චය කිරීම, අවකාශයෙන් ගැලවී යාමේ කාර්යය යාන්ත්රණය විසින් භාර ගනු ලැබේ ssd.

ජාත්‍යන්තර තරඟ SSH සහ sudo ජයග්‍රාහකයින් නැවතත් වේදිකාවට පැමිණ සිටිති. කීර්තිමත් ක්රියාකාරී නාමාවලි සන්නායක විසින් මෙහෙයවනු ලැබේ
Figure 1. නාමාවලියේ මූලයේ sudoers උප අංශයේ sudoRole වස්තු

ජාත්‍යන්තර තරඟ SSH සහ sudo ජයග්‍රාහකයින් නැවතත් වේදිකාවට පැමිණ සිටිති. කීර්තිමත් ක්රියාකාරී නාමාවලි සන්නායක විසින් මෙහෙයවනු ලැබේ
රූපය 2. sudoRole වස්තූන්හි නිශ්චිතව දක්වා ඇති ආරක්ෂක කණ්ඩායම්වල සාමාජිකත්වය.

පහත සැකසුම Linux පැත්තෙන් සිදු කෙරේ.
ගොනුවේ /etc/nsswitch.conf ගොනුවේ අවසානයට පේළිය එක් කරන්න:

sudoers: files sss

ගොනුවේ /etc/sssd/sssd.conf කොටසේ [sssd] සේවාවන්ට එකතු කරන්න කිසිදිනක භාවිතා

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

සියලුම මෙහෙයුම් වලින් පසුව, ඔබ sssd ඩීමන් හැඹිලිය ඉවත් කළ යුතුය. සෑම පැය 6 කට වරක් ස්වයංක්‍රීය යාවත්කාලීන කිරීම් සිදු වේ, නමුත් අපට දැන් අවශ්‍ය වූ විට අප මෙතරම් කාලයක් බලා සිටිය යුත්තේ ඇයි?

sss_cache -E

හැඹිලිය ඉවත් කිරීම උදව් නොකරන බව බොහෝ විට සිදු වේ. එවිට අපි සේවාව නවත්වා, දත්ත සමුදාය පිරිසිදු කර, සේවාව ආරම්භ කරමු.

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

අපි පළමු පරිශීලකයා ලෙස සම්බන්ධ වී 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

අපගේ දෙවන පරිශීලකයා සමඟ අපි එයම කරමු:

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

විවිධ පරිශීලක කණ්ඩායම් සඳහා sudo භූමිකාවන් කේන්ද්‍රීයව නිර්වචනය කිරීමට මෙම ප්‍රවේශය ඔබට ඉඩ සලසයි.

සක්‍රීය නාමාවලියෙහි ssh යතුරු ගබඩා කිරීම සහ භාවිතා කිරීම

යෝජනා ක්‍රමයේ සුළු ප්‍රසාරණයක් සමඟ, සක්‍රීය නාමාවලි පරිශීලක ගුණාංගවල ssh යතුරු ගබඩා කර ලිනක්ස් ධාරක මත අවසර දීමේදී ඒවා භාවිතා කළ හැකිය.

sssd හරහා අවසරය වින්‍යාසගත කළ යුතුය.
PowerShell ස්ක්‍රිප්ට් එකක් භාවිතයෙන් අවශ්‍ය ගුණාංගය එක් කරන්න.
AddsshPublicKeyAttribute.ps1ශ්‍රිතය New-AtributeID {
$Prefix="1.2.840.113556.1.8000.2554"
$GUID=[System.Guid]::NewGuid().ToString()
$Parts=@()
$Parts+=[UInt64]::Parse($guid.SubString(0,4),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($guid.SubString(4,4),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($guid.SubString(9,4),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($guid.SubString(14,4),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($guid.SubString(19,4),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($guid.SubString(24,6),“AllowHexSpecifier”)
$Parts+=[UInt64]::Parse($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 = New-AtributeID
$attributes = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $oid;
oMSyntax = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $true;
adminDescription = 'SSH පිවිසුම සඳහා පරිශීලක පොදු යතුර';
}

New-ADObject -Name sshPublicKey -Type attributeSchema -Path $schemapath -OtherAttributes $attributes
$userSchema = get-adobject -SearchBase $schemapath -Filter 'name -eq "user"'
$userSchema | Set-ADObject -Add @{mayContain = 'sshPublicKey'}

ගුණාංගය එකතු කිරීමෙන් පසු, ඔබ ක්‍රියාකාරී නාමාවලි වසම් සේවා නැවත ආරම්භ කළ යුතුය.
අපි Active Directory භාවිතා කරන්නන් වෙත යමු. අපි ඔබට පහසු ඕනෑම ක්රමයක් භාවිතා කරමින් ssh සම්බන්ධතාවය සඳහා යතුරු යුගලයක් උත්පාදනය කරන්නෙමු.
අපි PuttyGen දියත් කරමු, "උත්පාදනය" බොත්තම ඔබන්න සහ හිස් ප්රදේශය තුළ මූසිකය වියරුවෙන් ගෙන යන්න.
ක්‍රියාවලිය අවසන් වූ පසු, අපට පොදු සහ පුද්ගලික යතුරු සුරැකිය හැක, පොදු යතුර Active Directory පරිශීලක ගුණාංගයට උඩුගත කර ක්‍රියාවලිය භුක්ති විඳිය හැකිය. කෙසේ වෙතත්, පොදු යතුර භාවිතා කළ යුත්තේ "OpenSSH authorized_keys ගොනුවට ඇලවීම සඳහා පොදු යතුර:«.
ජාත්‍යන්තර තරඟ SSH සහ sudo ජයග්‍රාහකයින් නැවතත් වේදිකාවට පැමිණ සිටිති. කීර්තිමත් ක්රියාකාරී නාමාවලි සන්නායක විසින් මෙහෙයවනු ලැබේ
පරිශීලක ගුණාංගයට යතුර එක් කරන්න.
විකල්ප 1 - GUI:
ජාත්‍යන්තර තරඟ SSH සහ sudo ජයග්‍රාහකයින් නැවතත් වේදිකාවට පැමිණ සිටිති. කීර්තිමත් ක්රියාකාරී නාමාවලි සන්නායක විසින් මෙහෙයවනු ලැබේ
විකල්ප 2 - PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
එබැවින්, අපට දැනට ඇත්තේ: sshPublicKey ගුණාංගය පුරවා ඇති පරිශීලකයෙක්, යතුරු භාවිතයෙන් අවසරය සඳහා වින්‍යාස කළ Putty සේවාදායකයෙක්. එක් කුඩා කරුණක් ඉතිරිව ඇත: පරිශීලකයාගේ ගුණාංග වලින් අපට අවශ්‍ය පොදු යතුර උකහා ගැනීමට sshd ඩීමන් බල කරන්නේ කෙසේද. ධනේශ්වර අන්තර්ජාලයේ ඇති කුඩා පිටපතක් මෙය සමඟ සාර්ථකව කටයුතු කළ හැකිය.

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'

අපි එහි අවසරයන් root සඳහා 0500 ලෙස සකස් කරමු.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

මෙම උදාහරණයේදී, නාමාවලියට බැඳීමට පරිපාලක ගිණුමක් භාවිතා කරයි. සටන් තත්වයන් තුළ අවම අයිතිවාසිකම් කට්ටලයක් සහිත වෙනම ගිණුමක් තිබිය යුතුය.
අයිතීන් සකසා තිබියදීත්, මුරපදය එහි පිරිසිදු ස්වරූපයෙන් ස්ක්‍රිප්ට් එකේ තිබීම ගැන මම පෞද්ගලිකව බෙහෙවින් ව්‍යාකූල වීමි.
විසඳුම් විකල්පය:

  • මම මුරපදය වෙනම ගොනුවක සුරකිමි:
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • මම root සඳහා ගොනු අවසර 0500 ට සකසා ඇත
    chmod 0500 /usr/local/etc/secretpass

  • ldapsearch දියත් කිරීමේ පරාමිතීන් වෙනස් කිරීම: පරාමිතිය -w superSecretPassword මම එය වෙනස් කරමි -y /usr/local/etc/secretpass

අද කට්ටලයේ අවසාන ස්වරය වන්නේ sshd_config සංස්කරණය කිරීමයි

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

එහි ප්‍රතිඵලයක් වශයෙන්, ssh සේවාලාභියා තුළ වින්‍යාස කර ඇති ප්‍රධාන අවසරය සහිත පහත අනුපිළිවෙල අපට ලැබේ:

  1. පරිශීලකයා ඔහුගේ පිවිසුම සඳහන් කිරීමෙන් සේවාදායකයට සම්බන්ධ වේ.
  2. sshd ඩීමන්, ස්ක්‍රිප්ට් එකක් හරහා, සක්‍රීය නාමාවලියේ ඇති පරිශීලක උපලක්ෂණයකින් පොදු යතුරු අගය උපුටා ගන්නා අතර යතුරු භාවිතයෙන් අවසරය ලබා දෙයි.
  3. කණ්ඩායම් සාමාජිකත්වය මත පදනම්ව sssd ඩීමන් පරිශීලකයා තවදුරටත් සත්‍යාපනය කරයි. අවධානය! මෙය වින්‍යාස කර නොමැති නම්, ඕනෑම වසම් පරිශීලකයෙකුට සත්කාරක වෙත ප්‍රවේශය ඇත.
  4. ඔබ sudo කිරීමට උත්සාහ කරන විට, sssd ඩීමන් විසින් භූමිකාවන් සඳහා ක්රියාකාරී නාමාවලිය සොයයි. භූමිකාවන් තිබේ නම්, පරිශීලකයාගේ ගුණාංග සහ කණ්ඩායම් සාමාජිකත්වය පරීක්ෂා කරනු ලැබේ (sudoRoles පරිශීලක කණ්ඩායම් භාවිතා කිරීමට වින්‍යාස කර ඇත්නම්)

ප්රති result ලය.

මේ අනුව, යතුරු සක්‍රීය නාමාවලි පරිශීලක ගුණාංගවල ගබඩා කර ඇත, sudo අවසර - ඒ හා සමානව, වසම් ගිණුම් මගින් Linux සත්කාරක වෙත ප්‍රවේශය ක්‍රියාකාරී නාමාවලි සමූහයේ සාමාජිකත්වය පරීක්ෂා කිරීමෙන් සිදු කෙරේ.
කොන්දොස්තරගේ බැටන් පොල්ලේ අවසාන රැල්ල - සහ ශාලාව ගෞරවනීය නිශ්ශබ්දතාවයකින් මිදෙයි.

ලිඛිතව භාවිතා කරන සම්පත්:

සක්‍රීය නාමාවලිය හරහා Sudo
සක්‍රීය නාමාවලිය හරහා Ssh යතුරු
Powershell ස්ක්‍රිප්ට්, Active Directory Skema වෙත උපලක්ෂණයක් එක් කරමින්
sudo ස්ථාවර නිකුතුව

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න