Ang mga mananaog sa internasyonal nga kompetisyon SSH ug sudo anaa na usab sa entablado. Gipangunahan sa Distinguished Active Directory Conductor

Sa kasaysayan, ang mga pagtugot sa sudo gidumala sa mga sulud sa mga file gikan sa /etc/sudoers.d и visudo, ug ang yawe nga pagtugot gihimo gamit ~/.ssh/authorized_keys. Apan, samtang nagkadako ang imprastraktura, adunay tinguha sa pagdumala niini nga mga katungod sa sentro. Karon mahimo nga adunay daghang mga kapilian sa solusyon:

  • Sistema sa Pagdumala sa Configuration - ulo, Mga manunugtog, Ansible, Salt
  • Active Directory + ssd
  • Nagkalainlain nga mga kahiwian sa porma sa mga script ug manwal nga pag-edit sa file

Sa akong suhetibong opinyon, ang labing kaayo nga kapilian alang sa sentralisadong pagdumala usa gihapon ka kombinasyon Active Directory + ssd. Ang mga bentaha niini nga pamaagi mao ang:

  • Tinuod nga usa ka sentralisadong direktoryo sa tiggamit.
  • Pag-apod-apod sa mga katungod sudo moabut sa pagdugang sa usa ka tiggamit sa usa ka piho nga grupo sa seguridad.
  • Sa kaso sa lain-laing mga sistema sa Linux, kinahanglan nga ipaila ang dugang nga mga tseke aron mahibal-an ang OS kung mogamit mga sistema sa pag-configure.

Ang suite karong adlawa ipahinungod ilabina sa koneksyon Active Directory + ssd alang sa pagdumala sa katungod sudo ug pagtipig ssh mga yawe sa usa ka repositoryo.
Busa, ang tigomanan mihunong sa tensiyonado nga kahilom, giisa sa konduktor ang iyang baton, ug nangandam ang orkestra.
Pag-adto.

Gihatag:
— Active Directory domain testtopf.lokal sa Windows Server 2012 R2.
- Linux host nga nagpadagan sa Centos 7
- Gi-configure nga pagtugot gamit ssd
Ang duha ka solusyon naghimog mga kausaban sa schema Active Directory, mao nga gisusi namo ang tanan sa usa ka palibot sa pagsulay ug dayon naghimog mga pagbag-o sa nagtrabaho nga imprastraktura. Gusto nakong timan-an nga ang tanan nga mga pagbag-o gipunting ug, sa tinuud, idugang lamang ang gikinahanglan nga mga hiyas ug mga klase.

Aksyon 1: pagkontrol sudo mga papel pinaagi sa Active Directory.

Aron mapalapad ang sirkito Active Directory kinahanglan nimo nga i-download ang pinakabag-o nga pagpagawas sudo — 1.8.27 hangtod karon. Unpack ug kopyaha ang file schema.ActiveDirectory gikan sa ./doc nga direktoryo ngadto sa domain controller. Gikan sa command line nga adunay mga katungod sa tagdumala gikan sa direktoryo diin ang file gikopya, pagdagan:
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(Ayaw kalimti nga ilisan ang imong mga mithi)
Bukas adsiedit.msc ug sumpay sa default nga konteksto:
Paghimo usa ka dibisyon sa gamut sa domain sudoers. (Ang burgesya matig-a nga nag-angkon nga sa kini nga yunit nga ang demonyo ssd nangitag butang sudoRole mga butang. Bisan pa, pagkahuman sa pag-on sa detalyado nga pag-debug ug pagtuon sa mga log, gipadayag nga ang pagpangita gihimo sa tibuuk nga punoan sa direktoryo.)
Gihimo namo ang unang butang nga iya sa klase sa dibisyon sudoRole. Ang ngalan mahimong mapili sa hingpit nga arbitraryo, tungod kay kini nagsilbi lamang alang sa sayon ​​​​nga pag-ila.
Lakip sa posible nga magamit nga mga hiyas gikan sa schema extension, ang mga nag-una mao ang mosunod:

  • sudoCommand - nagtino kung unsang mga sugo ang gitugotan nga ipatuman sa host.
  • sudoHost - nagtino kung kinsa nga host ang magamit niini nga papel. Mahimong ipiho ingon TANAN, ug alang sa usa ka indibidwal nga host pinaagi sa ngalan. Posible usab nga gamiton ang maskara.
  • sudoUser - ipahibalo kung kinsa nga mga tiggamit ang gitugotan nga ipatuman sudo.
    Kung imong gipiho ang usa ka grupo sa seguridad, pagdugang usa ka timaan nga "%" sa sinugdanan sa ngalan. Kung adunay mga espasyo sa ngalan sa grupo, wala’y angay kabalak-an. Sa paghukom sa mga troso, ang tahas sa pag-ikyas sa mga wanang gikuha sa mekanismo ssd.

Ang mga mananaog sa internasyonal nga kompetisyon SSH ug sudo anaa na usab sa entablado. Gipangunahan sa Distinguished Active Directory Conductor
Fig 1. sudoRole nga mga butang sa sudoers subdivision sa gamut sa direktoryo

Ang mga mananaog sa internasyonal nga kompetisyon SSH ug sudo anaa na usab sa entablado. Gipangunahan sa Distinguished Active Directory Conductor
Figure 2. Membership sa mga grupo sa seguridad nga gipiho sa sudoRole nga mga butang.

Ang mosunod nga pag-setup gihimo sa kilid sa Linux.
Sa file /etc/nsswitch.conf idugang ang linya sa katapusan sa file:

sudoers: files sss

Sa file /etc/sssd/sssd.conf sa seksyon [sssd] idugang sa mga serbisyo sudo

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

Pagkahuman sa tanan nga mga operasyon, kinahanglan nimo nga hawanan ang sssd daemon cache. Ang mga awtomatikong pag-update mahitabo matag 6 ka oras, apan nganong maghulat kita og dugay kung gusto na nato kini karon?

sss_cache -E

Kanunay nga mahitabo nga ang paglimpyo sa cache dili makatabang. Dayon among ihunong ang serbisyo, limpyohan ang database, ug sugdan ang serbisyo.

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

Nagkonektar kami isip unang tiggamit ug susihon kung unsa ang anaa kaniya ubos sa 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

Gibuhat usab namon ang parehas sa among ikaduha nga tiggamit:

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

Kini nga pamaagi nagtugot kanimo sa sentral nga paghubit sa mga papel sa sudo alang sa lainlaing mga grupo sa tiggamit.

Pagtipig ug paggamit sa mga yawe sa ssh sa Active Directory

Uban sa gamay nga pagpalapad sa laraw, posible nga tipigan ang mga yawe sa ssh sa mga kinaiya sa tiggamit sa Active Directory ug gamiton kini kung gitugotan ang mga host sa Linux.

Ang pagtugot pinaagi sa sssd kinahanglan nga ma-configure.
Idugang ang gikinahanglang attribute gamit ang PowerShell script.
AddsshPublicKeyAttribute.ps1Function Bag-ong-AttributeID {
$Prefix="1.2.840.113556.1.8000.2554"
$GUID=[System.Guid]::NewGuid().ToString()
$Mga Bahin=@()
$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 = Bag-ong-AttributeID
$mga hiyas = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $oid;
oMSyntax = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $tinuod;
adminDescription = 'User Public key para sa SSH login';
}

Bag-ong-ADObject -Ngalan sshPublicKey -Type attributeSchema -Path $schemapath -OtherAttributes $attributes
$userSchema = get-adobject -SearchBase $schemapath -Filter 'ngalan -eq "user"'
$userSchema | Set-ADObject -Add @{mayContain = 'sshPublicKey'}

Pagkahuman sa pagdugang sa hiyas, kinahanglan nimo nga i-restart ang Active Directory Domain Services.
Mopadayon kita sa mga tiggamit sa Active Directory. Maghimo kami usa ka yawe nga pares alang sa koneksyon sa ssh gamit ang bisan unsang pamaagi nga kombenyente alang kanimo.
Gilunsad namo ang PuttyGen, i-press ang "Generate" nga buton ug ibalhin ang mouse sulod sa walay sulod nga lugar.
Sa pagkompleto sa proseso, mahimo namong i-save ang publiko ug pribado nga mga yawe, i-upload ang publiko nga yawe ngadto sa Active Directory user attribute ug malingaw sa proseso. Bisan pa, ang yawe sa publiko kinahanglan gamiton gikan sa "Pangpubliko nga yawe para sa pag-paste sa OpenSSH authorized_keys file:".
Ang mga mananaog sa internasyonal nga kompetisyon SSH ug sudo anaa na usab sa entablado. Gipangunahan sa Distinguished Active Directory Conductor
Idugang ang yawe sa hiyas sa tiggamit.
Opsyon 1 - GUI:
Ang mga mananaog sa internasyonal nga kompetisyon SSH ug sudo anaa na usab sa entablado. Gipangunahan sa Distinguished Active Directory Conductor
Opsyon 2 - PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
Busa, kami karon adunay: usa ka tiggamit nga adunay sshPublicKey nga hiyas nga napuno, usa ka gi-configure nga kliyente sa Putty alang sa pagtugot gamit ang mga yawe. Adunay nagpabilin nga usa ka gamay nga punto: kung giunsa pagpugos ang sshd daemon nga makuha ang yawe sa publiko nga kinahanglan namon gikan sa mga kinaiya sa tiggamit. Ang usa ka gamay nga script nga nakit-an sa burges nga Internet mahimong malampuson nga makasagubang niini.

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'

Gibutang namon ang mga pagtugot niini sa 0500 alang sa gamut.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

Sa kini nga pananglitan, ang usa ka account sa tagdumala gigamit sa pagbugkos sa direktoryo. Sa mga kondisyon sa kombat kinahanglan adunay usa ka bulag nga account nga adunay usa ka minimum nga set sa mga katungod.
Ako sa personal naglibog kaayo sa higayon sa password sa lunsay nga porma niini sa script, bisan pa sa mga katungod nga gitakda.
Kapilian sa solusyon:

  • Gitipigan nako ang password sa lahi nga file:
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • Gibutang nako ang mga permiso sa file sa 0500 alang sa gamut
    chmod 0500 /usr/local/etc/secretpass

  • Pag-usab sa ldapsearch launch parameters: parameter -w superSecretPassword Ilisan ko kini sa -y /usr/local/etc/secretpass

Ang katapusang chord sa suite karon mao ang pag-edit sa sshd_config

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

Ingon usa ka sangputanan, makuha namon ang mosunud nga pagkasunod-sunod nga adunay hinungdan nga pagtugot nga gi-configure sa kliyente sa ssh:

  1. Ang user nagkonektar sa server pinaagi sa pagpakita sa iyang login.
  2. Ang sshd daemon, pinaagi sa usa ka script, nagkuha sa public key value gikan sa usa ka user attribute sa Active Directory ug naghimo sa pagtugot gamit ang mga yawe.
  3. Ang sssd daemon dugang nga nagpamatuod sa tiggamit base sa membership sa grupo. Atensyon! Kung wala kini ma-configure, nan ang bisan kinsa nga tiggamit sa domain adunay access sa host.
  4. Kung gisulayan nimo ang sudo, ang sssd daemon nangita sa Active Directory alang sa mga tahas. Kung naa ang mga tahas, ang mga kinaiya sa tiggamit ug ang pagkamiyembro sa grupo susihon (kung ang sudoRoles gi-configure aron magamit ang mga grupo sa tiggamit)

Tima.

Busa, ang mga yawe gitipigan sa Active Directory user attributes, sudo permissions - susama, access sa Linux hosts pinaagi sa domain accounts gihimo pinaagi sa pagsusi sa membership sa Active Directory group.
Ang katapusang balud sa baton sa konduktor - ug ang hawanan nagyelo sa matinahuron nga kahilom.

Mga kapanguhaan nga gigamit sa pagsulat:

Sudo pinaagi sa Active Directory
Ssh nga mga yawe pinaagi sa Active Directory
Ang script sa Powershell, nagdugang ug usa ka attribute sa Active Directory Schema
sudo stable nga pagpagawas

Source: www.habr.com

Idugang sa usa ka comment