అంతర్జాతీయ పోటీలలో SSH మరియు sudo విజేతలు మళ్లీ వేదికపై ఉన్నారు. ప్రముఖ యాక్టివ్ డైరెక్టరీ కండక్టర్ నేతృత్వంలో

చారిత్రాత్మకంగా, సుడో అనుమతులు ఫైల్‌ల కంటెంట్‌ల ద్వారా నిర్వహించబడతాయి /etc/sudoers.d и visudo, మరియు కీ అధికారాన్ని ఉపయోగించి నిర్వహించబడింది ~/.ssh/authorized_keys. అయితే, మౌలిక సదుపాయాలు పెరుగుతున్నందున, ఈ హక్కులను కేంద్రంగా నిర్వహించాలనే కోరిక ఉంది. నేడు అనేక పరిష్కార ఎంపికలు ఉండవచ్చు:

  • కాన్ఫిగరేషన్ మేనేజ్‌మెంట్ సిస్టమ్ - తల, పప్పెట్, చేసాడు, ఉప్పు
  • యాక్టివ్ డైరెక్టరీ + ssd
  • స్క్రిప్ట్‌లు మరియు మాన్యువల్ ఫైల్ ఎడిటింగ్ రూపంలో వివిధ వక్రీకరణలు

నా ఆత్మాశ్రయ అభిప్రాయం ప్రకారం, కేంద్రీకృత నిర్వహణకు ఉత్తమ ఎంపిక ఇప్పటికీ కలయిక యాక్టివ్ డైరెక్టరీ + ssd. ఈ విధానం యొక్క ప్రయోజనాలు:

  • నిజంగా ఒకే కేంద్రీకృత వినియోగదారు డైరెక్టరీ.
  • హక్కుల పంపిణీ సుడో నిర్దిష్ట భద్రతా సమూహానికి వినియోగదారుని జోడించడం కిందికి వస్తుంది.
  • వివిధ Linux సిస్టమ్‌ల విషయంలో, కాన్ఫిగరేషన్ సిస్టమ్‌లను ఉపయోగిస్తున్నప్పుడు OSని నిర్ణయించడానికి అదనపు తనిఖీలను పరిచయం చేయడం అవసరం.

నేటి సూట్ ప్రత్యేకంగా కనెక్షన్‌కు అంకితం చేయబడుతుంది యాక్టివ్ డైరెక్టరీ + ssd హక్కుల నిర్వహణ కోసం సుడో మరియు నిల్వ ssh ఒకే రిపోజిటరీలో కీలు.
కాబట్టి, హాల్ ఉద్రిక్త నిశ్శబ్దంతో స్తంభింపజేసింది, కండక్టర్ లాఠీ ఎత్తాడు మరియు ఆర్కెస్ట్రా సిద్ధంగా ఉంది.
వెళ్దాం.

May:
— యాక్టివ్ డైరెక్టరీ డొమైన్ testopf.local Windows సర్వర్ 2012 R2లో.
— Linux హోస్ట్ Centos 7ని నడుపుతోంది
- ఉపయోగించి కాన్ఫిగర్ చేయబడిన అధికార ssd
రెండు పరిష్కారాలు స్కీమాకు మార్పులను చేస్తాయి యాక్టివ్ డైరెక్టరీ, కాబట్టి మేము పరీక్ష వాతావరణంలో ప్రతిదాన్ని తనిఖీ చేస్తాము మరియు ఆ తర్వాత మాత్రమే పని చేసే మౌలిక సదుపాయాలకు మార్పులు చేస్తాము. అన్ని మార్పులు లక్ష్యంగా ఉన్నాయని మరియు వాస్తవానికి, అవసరమైన లక్షణాలను మరియు తరగతులను మాత్రమే జోడించాలని నేను గమనించాలనుకుంటున్నాను.

చర్య 1: నియంత్రణ సుడో ద్వారా పాత్రలు యాక్టివ్ డైరెక్టరీ.

సర్క్యూట్ విస్తరించేందుకు యాక్టివ్ డైరెక్టరీ మీరు తాజా విడుదలను డౌన్‌లోడ్ చేసుకోవాలి సుడో - 1.8.27 నేటికి. ఫైల్‌ను అన్‌ప్యాక్ చేసి కాపీ చేయండి స్కీమా.యాక్టివ్ డైరెక్టరీ ./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

మేము మొదటి వినియోగదారుగా కనెక్ట్ అయ్యాము మరియు సుడో కింద అతనికి ఏమి అందుబాటులో ఉందో తనిఖీ చేస్తాము:

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

వివిధ వినియోగదారు సమూహాల కోసం సుడో పాత్రలను కేంద్రంగా నిర్వచించడానికి ఈ విధానం మిమ్మల్ని అనుమతిస్తుంది.

యాక్టివ్ డైరెక్టరీలో ssh కీలను నిల్వ చేయడం మరియు ఉపయోగించడం

స్కీమ్ యొక్క స్వల్ప విస్తరణతో, యాక్టివ్ డైరెక్టరీ యూజర్ అట్రిబ్యూట్‌లలో ssh కీలను నిల్వ చేయడం మరియు Linux హోస్ట్‌లపై అధికారం ఇస్తున్నప్పుడు వాటిని ఉపయోగించడం సాధ్యమవుతుంది.

sssd ద్వారా ఆథరైజేషన్ తప్పనిసరిగా కాన్ఫిగర్ చేయబడాలి.
PowerShell స్క్రిప్ట్‌ని ఉపయోగించి అవసరమైన లక్షణాన్ని జోడించండి.
AddsshPublicKeyAttribute.ps1ఫంక్షన్ కొత్త-అట్రిబ్యూట్ ID {
$Prefix="1.2.840.113556.1.8000.2554"
$GUID=[System.Guid]::NewGuid().ToString()
$భాగాలు=@()
$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 = కొత్త-అట్రిబ్యూట్ ID
$లక్షణాలు = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $oid;
oMsyntax = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $true;
adminDescription = 'SSH లాగిన్ కోసం వినియోగదారు పబ్లిక్ కీ';
}

కొత్త-ADObject -పేరు sshPublicKey -రకం లక్షణం పథకం -మార్గం $schemapath -ఇతర లక్షణాలు $లక్షణాలు
$userSchema = get-adobject -SearchBase $schemapath -Filter 'name -eq "user"'
$userSchema | సెట్-ADObject -Add @{mayContain = 'sshPublicKey'}

లక్షణాన్ని జోడించిన తర్వాత, మీరు తప్పనిసరిగా యాక్టివ్ డైరెక్టరీ డొమైన్ సేవలను పునఃప్రారంభించాలి.
యాక్టివ్ డైరెక్టరీ వినియోగదారులకు వెళ్దాం. మేము మీకు అనుకూలమైన ఏదైనా పద్ధతిని ఉపయోగించి ssh కనెక్షన్ కోసం కీ జతని రూపొందిస్తాము.
మేము పుట్టీజెన్‌ని ప్రారంభించాము, "జనరేట్" బటన్‌ను నొక్కండి మరియు ఖాళీ ప్రదేశంలో మౌస్‌ను పిచ్చిగా తరలించండి.
ప్రక్రియ పూర్తయిన తర్వాత, మేము పబ్లిక్ మరియు ప్రైవేట్ కీలను సేవ్ చేయవచ్చు, పబ్లిక్ కీని యాక్టివ్ డైరెక్టరీ వినియోగదారు లక్షణానికి అప్‌లోడ్ చేయవచ్చు మరియు ప్రాసెస్‌ను ఆస్వాదించవచ్చు. అయితే, పబ్లిక్ కీ తప్పనిసరిగా " నుండి ఉపయోగించాలిOpenSSH authorized_keys ఫైల్‌లో అతికించడానికి పబ్లిక్ కీ:".
అంతర్జాతీయ పోటీలలో SSH మరియు sudo విజేతలు మళ్లీ వేదికపై ఉన్నారు. ప్రముఖ యాక్టివ్ డైరెక్టరీ కండక్టర్ నేతృత్వంలో
వినియోగదారు లక్షణానికి కీని జోడించండి.
ఎంపిక 1 - GUI:
అంతర్జాతీయ పోటీలలో SSH మరియు sudo విజేతలు మళ్లీ వేదికపై ఉన్నారు. ప్రముఖ యాక్టివ్ డైరెక్టరీ కండక్టర్ నేతృత్వంలో
ఎంపిక 2 - పవర్‌షెల్:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
కాబట్టి, మేము ప్రస్తుతం కలిగి ఉన్నాము: sshPublicKey లక్షణంతో నిండిన వినియోగదారు, కీలను ఉపయోగించి అధికారం కోసం కాన్ఫిగర్ చేయబడిన పుట్టీ క్లయింట్. ఒక చిన్న పాయింట్ మిగిలి ఉంది: వినియోగదారు లక్షణాల నుండి మనకు అవసరమైన పబ్లిక్ కీని సంగ్రహించడానికి 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'

మేము దానిపై అనుమతులను రూట్ కోసం 0500కి సెట్ చేసాము.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

ఈ ఉదాహరణలో, డైరెక్టరీకి బైండ్ చేయడానికి అడ్మినిస్ట్రేటర్ ఖాతా ఉపయోగించబడుతుంది. పోరాట పరిస్థితుల్లో కనీస హక్కులతో ప్రత్యేక ఖాతా ఉండాలి.
హక్కులు సెట్ చేయబడినప్పటికీ, స్క్రిప్ట్‌లో దాని స్వచ్ఛమైన రూపంలో పాస్‌వర్డ్ యొక్క క్షణం చూసి నేను వ్యక్తిగతంగా చాలా గందరగోళానికి గురయ్యాను.
పరిష్కారం ఎంపిక:

  • నేను పాస్‌వర్డ్‌ను ప్రత్యేక ఫైల్‌లో సేవ్ చేస్తున్నాను:
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • నేను రూట్ కోసం ఫైల్ అనుమతులను 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 డెమోన్ పాత్రల కోసం యాక్టివ్ డైరెక్టరీని శోధిస్తుంది. పాత్రలు ఉన్నట్లయితే, వినియోగదారు యొక్క లక్షణాలు మరియు సమూహ సభ్యత్వం తనిఖీ చేయబడతాయి (సూడోరోల్స్ వినియోగదారు సమూహాలను ఉపయోగించడానికి కాన్ఫిగర్ చేయబడి ఉంటే)

ఫలితం.

ఈ విధంగా, కీలు యాక్టివ్ డైరెక్టరీ వినియోగదారు గుణాలు, సుడో అనుమతులు - అదేవిధంగా, డొమైన్ ఖాతాల ద్వారా Linux హోస్ట్‌లకు యాక్సెస్ యాక్టివ్ డైరెక్టరీ సమూహంలో సభ్యత్వాన్ని తనిఖీ చేయడం ద్వారా నిర్వహించబడుతుంది.
కండక్టర్ యొక్క లాఠీ యొక్క చివరి వేవ్ - మరియు హాల్ గౌరవప్రదమైన నిశ్శబ్దంతో ఘనీభవిస్తుంది.

వ్రాతపూర్వకంగా ఉపయోగించే వనరులు:

యాక్టివ్ డైరెక్టరీ ద్వారా సుడో
యాక్టివ్ డైరెక్టరీ ద్వారా Ssh కీలు
పవర్‌షెల్ స్క్రిప్ట్, యాక్టివ్ డైరెక్టరీ స్కీమాకు లక్షణాన్ని జోడిస్తుంది
sudo స్థిరమైన విడుదల

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి