የአለም አቀፍ ውድድሮች SSH እና sudo አሸናፊዎች በድጋሚ መድረክ ላይ ናቸው። በተከበረ ዳይሬክቶሬት ንቁ ዳይሬክተሪ የተመራ

በታሪክ የሱዶ መብቶች የሚተዳደሩት በፋይሎች ይዘቶች ነው። /ወዘተ/sudoers.d и ቪዲዶ, እና በቁልፍ ፈቃድ በመጠቀም ተከናውኗል ~/.ssh/የተፈቀዱ_ቁልፎች. ነገር ግን፣ በመሠረተ ልማት ዕድገት፣ እነዚህን መብቶች በማዕከላዊነት የመምራት ፍላጎት አለ። በአሁኑ ጊዜ በርካታ መፍትሄዎች አሉ-

  • የማዋቀር አስተዳደር ስርዓት - ራስ, አሻንጉሊት, የሚጠራ, ጨው
  • የ Active Directory + ኤስ
  • በስክሪፕት መልክ እና በፋይሎች በእጅ አርትዖት የተለያዩ የተዛቡ ነገሮች

በእኔ ተጨባጭ አስተያየት፣ የተማከለ አስተዳደር የተሻለው አማራጭ አሁንም ስብስብ ነው። የ Active Directory + ኤስ. የዚህ ዘዴ ጥቅሞች የሚከተሉት ናቸው-

  • በእውነቱ ዩኒፎርም የተማከለ የተጠቃሚዎች ማውጫ።
  • የመብቶች ስርጭት sudo ተጠቃሚን ወደ አንድ የተወሰነ የደህንነት ቡድን ለመጨመር ይወርዳል።
  • በተለያዩ የሊኑክስ ስርዓቶች ውስጥ የውቅረት ስርዓቶችን ሲጠቀሙ ስርዓተ ክወናውን ለመወሰን ተጨማሪ ቼኮችን ማስተዋወቅ አስፈላጊ ይሆናል.

የዛሬው ስብስብ ለጥቅሉ የተወሰነ ይሆናል። የ Active Directory + ኤስ ለመብቶች አስተዳደር sudo እና ማከማቻ SSH በአንድ ማከማቻ ውስጥ ቁልፎች.
እናም አዳራሹ በውጥረት ፀጥታ ቀዘቀዘ፣ መሪው በትሩን አነሳ፣ ኦርኬስትራው ተዘጋጀ።
ሂድ

የተሰጠው፡-
- ንቁ የማውጫ ጎራ testopf.local በዊንዶውስ አገልጋይ 2012 R2.
- የሊኑክስ አስተናጋጅ ሴንቶስ 7ን እያሄደ
- በመጠቀም ብጁ ፍቃድ ኤስ
ሁለቱም መፍትሄዎች የመርሃግብር ለውጦችን ያደርጋሉ የ Active Directory, ስለዚህ ሁሉንም ነገር በሙከራ አካባቢ ላይ እንፈትሻለን እና ከዚያ በኋላ ብቻ በስራ መሠረተ ልማት ላይ ለውጦችን እናደርጋለን. ሁሉም ለውጦች ነጥብ-ጥበበኛ መሆናቸውን እና እንዲያውም አስፈላጊ የሆኑትን ባህሪያት እና ክፍሎች ብቻ እንደሚጨምሩ ማስተዋል እፈልጋለሁ.

እርምጃ 1: አስተዳደር sudo በኩል ሚናዎች የ Active Directory.

ንድፉን ለማራዘም የ Active Directory የቅርብ ጊዜውን ልቀት ማውረድ ያስፈልግዎታል sudo - 1.8.27 ዛሬ. ያውጡ፣ ፋይሉን ይቅዱ schema.ActiveDirectory ከ./doc ማውጫ ወደ ጎራ መቆጣጠሪያ። ፋይሉ ከተገለበጠበት ማውጫ የአስተዳዳሪ መብቶች ካለው የትእዛዝ መስመር፣ ያሂዱ፡-
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(እሴቶቻችሁን መተካት እንዳትረሱ)
ክፈት። adsiedit.msc እና ከነባሪው አውድ ጋር ይገናኙ፡
በጎራው ስር ንዑስ ክፍል ይፍጠሩ ሱዶዎችን. (ቡርጆዎቹ በዚህ ክፍል ውስጥ ጋኔኑ እንዳለ በግትርነት ይናገራሉ ኤስ ዕቃ ይፈልጋል sudoRole እቃዎች. ነገር ግን ዝርዝር ማረምን ካበራ በኋላ እና መዝገቦቹን ከመረመረ በኋላ ፍለጋው በመላው የማውጫ ዛፉ ውስጥ እንደሚካሄድ ታወቀ።)
በክፍሉ ውስጥ ባለው ክፍል ውስጥ የመጀመሪያውን ነገር ይፍጠሩ sudoRole. ለሚመች መታወቂያ ብቻ የሚያገለግል ስለሆነ ስሙ በፍፁም በዘፈቀደ ሊመረጥ ይችላል።
ከመርሃግብር ማራዘሚያ ሊገኙ ከሚችሉ ባህሪያት መካከል ዋናዎቹ፡-

  • sudoCommand - በአስተናጋጁ ላይ የትኞቹ ትዕዛዞች እንዲተገበሩ እንደሚፈቀድ ይወስናል.
  • sudoHost - ይህ ሚና ለየትኞቹ አስተናጋጆች እንደሚተገበር ይወስናል. ተብሎ ሊሰጥ ይችላል። ሁሉም፣ እና ለተለየ አስተናጋጅ በስም። በተጨማሪም ጭምብል መጠቀም ይቻላል.
  • sudoUser - የትኞቹን ተጠቃሚዎች እንዲፈጽሙ እንደተፈቀደላቸው ይግለጹ sudo.
    የደህንነት ቡድን ከተገለጸ በስሙ መጀመሪያ ላይ "%" ምልክት ያክሉ። በቡድኑ ስም ውስጥ ክፍተቶች ካሉ, ምንም የሚያስጨንቅ ነገር የለም. በምዝግብ ማስታወሻዎች በመመዘን, ቦታዎችን የማምለጥ ስራ በመሳሪያው ይወሰዳል ኤስ.

የአለም አቀፍ ውድድሮች SSH እና sudo አሸናፊዎች በድጋሚ መድረክ ላይ ናቸው። በተከበረ ዳይሬክቶሬት ንቁ ዳይሬክተሪ የተመራ
ምስል 1 የ sudoRole ነገሮች በማውጫው ስር በ sudoers ንዑስ ክፍል ውስጥ

የአለም አቀፍ ውድድሮች SSH እና sudo አሸናፊዎች በድጋሚ መድረክ ላይ ናቸው። በተከበረ ዳይሬክቶሬት ንቁ ዳይሬክተሪ የተመራ
ምስል 2. በ sudoRole ነገሮች ውስጥ በተገለጹ የደህንነት ቡድኖች ውስጥ አባልነት.

የሚከተለው ማዋቀር በሊኑክስ በኩል ይከናወናል.
በፋይል ውስጥ /ወዘተ/nsswitch.conf በፋይሉ መጨረሻ ላይ የሚከተለውን መስመር ያክሉ

sudoers: files sss

በፋይል ውስጥ /ወዘተ/sssd/sssd.conf በክፍል ውስጥ [ኤስኤስዲ] ወደ አገልግሎቶች መጨመር sudo

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

ከሁሉም ክዋኔዎች በኋላ የ sssd daemon መሸጎጫ ማጽዳት ያስፈልግዎታል. አውቶማቲክ ማሻሻያ በየ6 ሰዓቱ ይደረጋሉ፣ ግን ለምን አሁን ስንፈልግ ለምን ያህል ጊዜ መጠበቅ አለብን።

sss_cache -E

ብዙውን ጊዜ መሸጎጫውን ማጽዳት እንደማይረዳው ይከሰታል. ከዚያ አገልግሎቱን እናቆማለን, የውሂብ ጎታውን እናጸዳለን, አገልግሎቱን እንጀምራለን.

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

እንደ መጀመሪያ ተጠቃሚ እንገናኛለን እና ከሱዶ ስር ምን እንደሚገኝ እንፈትሻለን።

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

ይህ አካሄድ ለተለያዩ የተጠቃሚ ቡድኖች የሱዶ ሚናዎችን በማዕከላዊነት እንዲገልጹ ያስችልዎታል።

በActive Directory ውስጥ የssh ቁልፎችን ማከማቸት እና መጠቀም

በትንሽ የመርሃግብሩ መስፋፋት የssh ቁልፎችን በActive Directory የተጠቃሚ ባህሪያት ውስጥ ማከማቸት እና በሊኑክስ አስተናጋጆች ላይ ፍቃድ ሲሰጡ መጠቀም ይቻላል።

ፈቃድ በsssd በኩል መዋቀር አለበት።
የ PowerShell ስክሪፕት በመጠቀም አስፈላጊውን ባህሪ እንጨምራለን.
AddsshPublicKeyAttribute.ps1ተግባር አዲስ-መታወቂያ {
$ ቅድመ ቅጥያ = "1.2.840.113556.1.8000.2554"
$GUID=[ስርዓት.መመሪያ]::NewGuid() .ToString()
$ክፍሎች=@()
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(0,4)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(4,4)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(9,4)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(14,4)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(19,4)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($guid.SubString(24,6)"AllowHexSpecifier")
$Parts+=[UInt64]:: ትንታኔ($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 = አዲስ-መታወቂያ
$ባህሪዎች = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $ id;
oMSyntax = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $ እውነት;
adminDescription = 'የተጠቃሚ ይፋዊ ቁልፍ ለኤስኤስኤች መግቢያ';
}

አዲስ-ADObject -ስም sshPublicKey -ዓይነት አይነታ ሼማ -Path $schemapath -ሌሎች ባህሪያት $ባህሪዎች
$userSchema = ማግኘት-adobject -SearchBase $schemapath -Filter 'name -eq "user"'
$userSchema | Set-ADObject -አክል @{mayContain = 'sshPublicKey'}

ባህሪውን ካከሉ ​​በኋላ የነቃ ዳይሬክተሩ ጎራ አገልግሎቶችን እንደገና ማስጀመር አለብዎት።
ወደ Active Directory ተጠቃሚዎች እንሂድ። ለእርስዎ በሚመች በማንኛውም መንገድ፣ ለ ssh ግንኙነት ጥንድ ቁልፎችን እንፈጥራለን።
ፑቲጄንን አስጀምረናል፣ "አመንጭ" የሚለውን ቁልፍ ተጫን እና በብስጭት በባዶ ቦታ ውስጥ በመዳፊት እንጎበኘዋለን።
ሂደቱን እንደጨረስን የወል እና የግል ቁልፎችን እናስቀምጣለን፣የወል ቁልፉን ወደ የነቃ ዳይሬክተሩ ተጠቃሚ ባህሪ መስቀል እና በሂደቱ መደሰት እንችላለን። ይሁን እንጂ የአደባባይ ቁልፉ ከ" መጠቀም አለበት.በOpenSSH የተፈቀደ_keys ፋይል ውስጥ ለመለጠፍ ይፋዊ ቁልፍ፡-".
የአለም አቀፍ ውድድሮች SSH እና sudo አሸናፊዎች በድጋሚ መድረክ ላይ ናቸው። በተከበረ ዳይሬክቶሬት ንቁ ዳይሬክተሪ የተመራ
ቁልፉን ወደ ተጠቃሚው ባህሪ ያክሉ።
አማራጭ 1 - GUI
የአለም አቀፍ ውድድሮች SSH እና sudo አሸናፊዎች በድጋሚ መድረክ ላይ ናቸው። በተከበረ ዳይሬክቶሬት ንቁ ዳይሬክተሪ የተመራ
አማራጭ 2 - PowerShell
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
ስለዚህ፣ በአሁኑ ጊዜ አለን፡ የsshPublicKey ባህሪ የተሞላ ተጠቃሚ፣ የተዋቀረ የፑቲ ደንበኛ በቁልፍ ፈቃድ። አንድ ትንሽ ነጥብ ይቀራል፣ እንዴት sshd daemon የምንፈልገውን የህዝብ ቁልፍ ከተጠቃሚው ባህሪ እንዲጎትት ማስገደድ። በቡርጂዮ በይነመረብ ክፍት ቦታዎች ላይ የተገኘ ትንሽ ስክሪፕት ይህንን በተሳካ ሁኔታ ይቋቋማል።

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'

ለእሱ መብቶችን እናስቀምጣለን 0500 ለ root.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

በዚህ ምሳሌ፣ የአስተዳዳሪ መለያው ከማውጫው ጋር ለማያያዝ ይጠቅማል። በውጊያ ሁኔታዎች ውስጥ, አነስተኛ የመብቶች ስብስብ ያለው የተለየ መለያ መኖር አለበት.
በግሌ ፣ ምንም እንኳን የተቀመጡ መብቶች ቢኖሩም ፣ በስክሪፕቱ ውስጥ ያለው የይለፍ ቃል ቅጽበት በጣም አፍሬ ነበር ።
የመፍትሄ አማራጭ

  • የይለፍ ቃሉን በተለየ ፋይል ውስጥ አስቀምጫለሁ-
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • ለስር ፋይሉ 0500 መብቶችን አዘጋጅቻለሁ
    chmod 0500 /usr/local/etc/secretpass

  • የldapsearch ጅምር አማራጮችን ይቀይሩ፡ ልኬት -w ሱፐር ሴክሬት የይለፍ ቃል ቀይር ወደ -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. ሱዶ ለማድረግ ሲሞክሩ የsssd ዴሞን ሚናዎችን ለማግኘት ንቁ ዳይሬክተሩን ይፈልጋል። ሚናዎች ካሉ የተጠቃሚው ባህሪያት እና የቡድን አባልነት ምልክት ይደረግባቸዋል ( sudoRoles የተጠቃሚ ቡድኖችን ለመጠቀም ከተዋቀረ)

ውጤቱ ፡፡

ስለዚህ ቁልፎች በActive Directory የተጠቃሚ ባህሪያት፣ የሱዶ ፍቃዶች ውስጥ ተቀምጠዋል - በተመሳሳይ መልኩ የጎራ መለያዎችን በመጠቀም የሊኑክስ አስተናጋጆችን መድረስ የሚከናወነው በActive Directory ቡድን ውስጥ አባልነትን በማጣራት ነው።
የኮንዳክተሩ ዱላ የመጨረሻው ሞገድ - እና አዳራሹ በአክብሮት ጸጥታ ይበርዳል።

በጽሑፍ ያገለገሉ ግብዓቶች፡-

ሱዶ በንቃት ማውጫ በኩል
Ssh ቁልፎች በActive Directory በኩል
የPowershell ስክሪፕት፣ ወደ አክቲቭ ዳይሬክተሪ እቅድ ባህሪ በማከል
sudo የተረጋጋ ልቀት

ምንጭ: hab.com

አስተያየት ያክሉ