Голибони мусобикахои байналхалкии СШ ва судо боз ба сахна баромаданд. Бо роҳбарии барандаи барҷастаи Active Directory

Таърихан, иҷозатҳои sudo аз рӯи мундариҷаи файлҳои аз /etc/sudoers.d и висудо, ва иҷозати калидӣ бо истифода аз он амалӣ карда шуд ~/.ssh/authorized_keys. Бо вуҷуди ин, вақте ки инфрасохтор афзоиш меёбад, хоҳиши идора кардани ин ҳуқуқҳо ба таври мутамарказ вуҷуд дорад. Имрӯз метавонад якчанд вариантҳои ҳалли мушкилот вуҷуд дошта бошад:

  • Системаи идоракунии конфигуратсия - сар, Қабат, Фаҳмост, намак
  • Рӯйхати фаъол + ssd
  • Таҳрири гуногун дар шакли скриптҳо ва таҳрири дастӣ файл

Ба андешаи субъективии ман, беҳтарин варианти идоракунии мутамарказ ҳоло ҳам комбинатсия аст Рӯйхати фаъол + ssd. Афзалиятҳои ин усул инҳоянд:

  • Дар ҳақиқат як феҳристи ягонаи мутамаркази корбар.
  • Тақсимоти ҳуқуқҳо sudo ба илова кардани корбар ба гурӯҳи махсуси амниятӣ меояд.
  • Дар мавриди системаҳои гуногуни Linux, барои муайян кардани ОС ҳангоми истифодаи системаҳои конфигуратсия санҷишҳои иловагӣ ворид кардан лозим меояд.

Сюитаи имрӯза махсусан ба пайвастшавӣ бахшида мешавад Рӯйхати фаъол + ssd барои идоракунии ҳуқуқҳо sudo ва нигоҳдорӣ SSH калидҳо дар як анбори ягона.
Хамин тавр, зал хомушии пуршиддат ях баста, дирижёр эстафетаашро баланд кард ва оркестр тайёр шуд.
Биёед биравем.

дода шудааст:
— Домени Active Directory testopf.local дар Windows Server 2012 R2.
- Хости Linux бо Centos 7 кор мекунад
— Бо истифода аз иҷозати танзимшуда ssd
Ҳарду қарорҳо ба схема тағирот ворид мекунанд Рӯйхати фаъол, аз ин рӯ, мо ҳама чизро дар муҳити санҷиш тафтиш мекунем ва танҳо баъд ба инфрасохтори корӣ тағйирот ворид мекунем. Ман мехоҳам қайд намоям, ки ҳама тағиротҳо мақсадноканд ва дар асл, танҳо атрибутҳо ва синфҳои заруриро илова мекунанд.

Амал 1: назорат sudo нақшҳо тавассути Рӯйхати фаъол.

Барои васеъ кардани схема Рӯйхати фаъол шумо бояд версияи охиринро зеркашӣ кунед sudo - 1.8.27 то имрӯз. Файлро кушоед ва нусхабардорӣ кунед schema.ActiveDirectory аз феҳристи ./doc ба контролери домен. Аз сатри фармон бо ҳуқуқҳои администратор аз директорияе, ки файл нусхабардорӣ шудааст, иҷро кунед:
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(Иваз кардани арзишҳои худро фаромӯш накунед)
Бастед adsiedit.msc ва ба контексти пешфарз пайваст шавед:
Дар решаи домен шӯъба эҷод кунед свитерҳо. (Буржуазия якравона даъво мекунад, ки махз дар хамин звено дев ssd ашёро ҷустуҷӯ мекунад sudoRole объектхо. Аммо, пас аз ба кор даровардани ислоҳи муфассал ва омӯзиши гузоришҳо, маълум шуд, ки ҷустуҷӯ дар тамоми дарахти директория анҷом дода шудааст.)
Мо аввалин объекти ба синф тааллуқдоштаро дар тақсимот эҷод мекунем sudoRole. Номро комилан худсарона интихоб кардан мумкин аст, зеро он танҳо барои муайянкунии қулай хизмат мекунад.
Дар байни атрибутҳои имконпазири васеъшавии схема, хусусиятҳои асосӣ инҳоянд:

  • sudoCommand — муайян мекунад, ки кадом фармонҳо дар ҳост иҷро карда мешаванд.
  • sudoHost — муайян мекунад, ки ин нақш ба кадом ҳостҳо дахл дорад. Муайян кардан мумкин аст ҲАМАИ, ва барои мизбони инфиродӣ бо ном. Ниқобдан ҳам фойдаланиш мумкин.
  • sudoUser — нишон диҳед, ки ба кадом корбарон иҷозати иҷроиш доранд sudo.
    Агар шумо гурӯҳи амниятро муайян кунед, дар аввали ном аломати "%" илова кунед. Агар дар номи гурӯҳ ҷойҳо мавҷуд бошанд, ҳеҷ чизи ташвишовар нест. Аз руи ло-кахо, вазифаи гурехтани чойхо ба зиммаи механизм аст ssd.

Голибони мусобикахои байналхалкии СШ ва судо боз ба сахна баромаданд. Бо роҳбарии барандаи барҷастаи Active Directory
Расми 1. объектҳои sudoRole дар зербанди sudoers дар решаи директория

Голибони мусобикахои байналхалкии СШ ва судо боз ба сахна баромаданд. Бо роҳбарии барандаи барҷастаи Active Directory
Расми 2. Узвият дар гурӯҳҳои амниятӣ, ки дар объектҳои sudoRole нишон дода шудаанд.

Танзимоти зерин дар тарафи Linux анҷом дода мешавад.
Дар файл /etc/nsswitch.conf сатрро ба охири файл илова кунед:

sudoers: files sss

Дар файл /etc/sssd/sssd.conf дар бахш [sssd] ба хидматҳо илова кунед sudo

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 дар Active Directory

Бо тавсеаи андаке схема, метавон калидҳои ssh-ро дар атрибутҳои корбари Active Directory нигоҳ доштан ва онҳоро ҳангоми иҷозатдиҳӣ дар ҳостҳои Linux истифода бурдан мумкин аст.

Авторизатсия тавассути sssd бояд танзим карда шавад.
Бо истифода аз скрипти PowerShell атрибути лозимиро илова кунед.
AddsshPublicKeyAttribute.ps1Функсияи New-AttributeID {
$Префикс = "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-AttributeID
$атрибутҳо = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $oid;
oMSсинтаксис = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $true;
adminDescription = 'Калиди ҷамъиятии корбар барои вуруди SSH';
}

New-ADObject -Номи sshPublicKey -Type attributeSchema -Path $schemapath -OtherAttributes $attributes
$userSchema = get-adobject -SearchBase $schemapath -Филтр 'name -eq "user"'
$userSchema | Set-ADObject -Add @{mayContain = 'sshPublicKey'}

Пас аз илова кардани атрибут, шумо бояд Services Domain Active Directory-ро аз нав оғоз кунед.
Биёед ба корбарони Active Directory гузарем. Мо як ҷуфт калидро барои пайвасти ssh бо истифода аз ҳама гуна усули барои шумо мувофиқ тавлид мекунем.
Мо PuttyGen-ро оғоз мекунем, тугмаи "Эҷод" -ро пахш мекунем ва мушро дар дохили майдони холӣ ба таври ҳассос ҳаракат мекунем.
Пас аз анҷоми раванд, мо метавонем калидҳои ҷамъиятӣ ва махфиро захира кунем, калиди ҷамъиятиро ба атрибути корбари Active Directory бор кунем ва аз раванд лаззат барем. Аммо, калиди ҷамъиятӣ бояд аз "Калиди ҷамъиятӣ барои часбондан ба файли OpenSSH authorized_keys:".
Голибони мусобикахои байналхалкии СШ ва судо боз ба сахна баромаданд. Бо роҳбарии барандаи барҷастаи Active Directory
Калидро ба атрибути корбар илова кунед.
Варианти 1 - GUI:
Голибони мусобикахои байналхалкии СШ ва судо боз ба сахна баромаданд. Бо роҳбарии барандаи барҷастаи Active Directory
Варианти 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'

Мо иҷозатҳоро дар он ба 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 тавассути скрипт арзиши калиди ҷамъиятиро аз атрибути корбар дар Active Directory хориҷ мекунад ва бо истифода аз калидҳо иҷозат медиҳад.
  3. Демони sssd минбаъд корбарро дар асоси узвияти гурӯҳ тасдиқ мекунад. Диққат! Агар ин танзим нашуда бошад, он гоҳ ҳар як корбари домен ба ҳост дастрасӣ дорад.
  4. Вақте ки шумо кӯшиш мекунед, ки sudo кунед, демони sssd дар Directory Active нақшҳоро ҷустуҷӯ мекунад. Агар нақшҳо мавҷуд бошанд, атрибутҳои корбар ва узвияти гурӯҳ тафтиш карда мешаванд (агар sudoRoles барои истифодаи гурӯҳҳои корбар танзим шуда бошад)

Хати поён.

Ҳамин тариқ, калидҳо дар атрибутҳои корбари Active Directory нигоҳ дошта мешаванд, иҷозатҳои sudo - ҳамин тавр, дастрасӣ ба ҳостҳои Linux аз рӯи ҳисобҳои доменӣ тавассути тафтиши узвият дар гурӯҳи Active Directory сурат мегирад.
Мавчи охирини эстафетаи дирижёр — ва зал дар хомушии пурэхтиром ях мекунад.

Сарчашмаҳое, ки дар хаттӣ истифода мешаванд:

Sudo тавассути Active Directory
Калидҳои Ssh тавассути Active Directory
Скрипти Powershell, илова кардани атрибут ба Active Directory Schema
барориши устувори sudo

Манбаъ: will.com

Илова Эзоҳ