Niakatra an-tsehatra indray ireo mpandresy tamin’ny fifaninanana iraisam-pirenena SSH sy sudo. Notarihin'ny Distinguished Active Directory Conductor

Ara-tantara, ny fahazoan-dàlana sudo dia fehezin'ny votoatin'ny rakitra avy amin'ny /etc/sudoers.d и visado, ary ny fanomezan-dàlana fototra dia natao tamin'ny fampiasana ~/.ssh/authorized_keys. Na izany aza, rehefa mitombo ny fotodrafitrasa dia misy ny faniriana hitantana ireo zo ireo amin'ny foibe. Amin'izao fotoana izao dia mety misy safidy vahaolana maromaro:

  • Rafitra fitantanana Configuration - lohany, saribakolin'ny, Ansible, Salt
  • Active Directory + ssd
  • Fanodinkodinana isan-karazany amin'ny endrika script sy fanitsiana rakitra amin'ny tanana

Raha ny hevitro manokana, ny safidy tsara indrindra ho an'ny fitantanana foibe dia mbola fitambarana Active Directory + ssd. Ny tombony amin'ity fomba ity dia:

  • Tena lahatahiry mpampiasa foibe tokana.
  • Fizarana ny zo sudo dia tonga amin'ny fampidirana mpampiasa iray amin'ny vondrona fiarovana manokana.
  • Raha ny rafitra Linux isan-karazany, dia ilaina ny mampiditra fanamarinana fanampiny mba hamaritana ny OS rehefa mampiasa rafitra fanamafisana.

Ny suite anio dia hatokana manokana amin'ny fifandraisana Active Directory + ssd ho an'ny fitantanana ny zo sudo ary fitahirizana ssh fanalahidy ao anaty tahiry tokana.
Noho izany, dia nangina tao anatin’ny fahanginana mafy ilay efitrano, nanangana ny kibayny ilay mpitarika, ary niomana ny orkesitra.
Mandehana.

nomena:
— sehatra Active Directory testtopf.local amin'ny Windows Server 2012 R2.
- Linux mpampiantrano mihazakazaka Centos 7
- Fanomezan-dàlana voafefy mampiasa ssd
Ireo vahaolana roa ireo dia manova ny skema Active Directory, noho izany dia manamarina ny zava-drehetra ao amin'ny tontolo fitsapana izahay ary avy eo dia manao fanovana amin'ny fotodrafitrasa miasa. Tiako ny manamarika fa ny fanovana rehetra dia kendrena ary, raha ny marina, dia manampy ireo toetra sy kilasy ilaina ihany.

Hetsika 1: fanaraha-maso sudo anjara amin'ny alalan'ny Active Directory.

Mba hanitarana ny circuit Active Directory mila misintona ny famoahana farany ianao sudo — 1.8.27 hatramin’izao. Sokafy ary kopia ny rakitra schema.ActiveDirectory avy amin'ny lahatahiry ./doc mankany amin'ny mpitantana ny sehatra. Avy amin'ny andalana baiko miaraka amin'ny zon'ny administratera avy amin'ny lahatahiry izay nandikana ny rakitra, mandehana:
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(Aza adino ny manolo ny soatoavinao)
sokafy ny adsiedit.msc ary mifandray amin'ny contexte default:
Mamorona fizarana eo amin'ny fototry ny sehatra akanjo ba. (Ny bourgeoisie dia milaza mafy fa ao anatin'io vondrona io no misy ny demonia ssd mikaroka zavatra iray sudoRole zavatra. Na izany aza, taorian'ny nanombohan'ny debugging amin'ny antsipiriany sy ny fandalinana ny logs, dia nambara fa ny fikarohana dia natao manerana ny hazo lahatahiry manontolo.)
Mamorona ny zavatra voalohany an'ny kilasy ao amin'ny fizarana izahay sudoRole. Ny anarana dia azo fidina amin'ny fomba tsy misy dikany, satria izy io dia natao ho an'ny famantarana mety.
Anisan'ireo toetra azo alaina avy amin'ny fanitarana schema, ireto no tena lehibe:

  • sudoCommand - mamaritra izay baiko avela hotanterahina amin'ny mpampiantrano.
  • sudoHost - mamaritra hoe iza amin'ireo mpampiantrano iharan'io andraikitra io. Azo lazaina hoe ALL, ary ho an'ny mpampiantrano tsirairay amin'ny anarany. Azo atao koa ny mampiasa saron-tava.
  • sudoUser - manondro hoe iza no mpampiasa azo atao sudo.
    Raha manondro vondrona fiarovana ianao dia ampio famantarana "%" eo am-piandohan'ny anarana. Raha misy toerana ao amin'ny anaran'ny vondrona dia tsy misy tokony hatahorana. Raha tsaraina amin'ny logs, ny asa fandosirana toerana dia lasan'ny mekanika ssd.

Niakatra an-tsehatra indray ireo mpandresy tamin’ny fifaninanana iraisam-pirenena SSH sy sudo. Notarihin'ny Distinguished Active Directory Conductor
Sary 1. sudoRole zavatra ao amin'ny subdivision sudoers eo amin'ny fototry ny lahatahiry

Niakatra an-tsehatra indray ireo mpandresy tamin’ny fifaninanana iraisam-pirenena SSH sy sudo. Notarihin'ny Distinguished Active Directory Conductor
Sary 2. Ny maha-mpikambana ao amin'ny vondrona fiarovana voafaritra ao amin'ny sudoRole objects.

Ity setup manaraka ity dia atao amin'ny lafiny Linux.
Ao anaty rakitra /etc/nsswitch.conf ampio ny tsipika amin'ny faran'ny rakitra:

sudoers: files sss

Ao anaty rakitra /etc/sssd/sssd.conf amin'ny fizarana [sssd] ampio amin'ny serivisy sudo

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

Aorian'ny asa rehetra dia mila mamafa ny cache daemon sssd ianao. Mitranga isaky ny adiny 6 ny fanavaozana mandeha ho azy, fa maninona no tokony hiandry ela be isika rehefa maniry izany izao?

sss_cache -E

Matetika no mitranga fa tsy manampy ny fanadiovana ny cache. Avy eo dia mijanona ny serivisy, manadio ny angon-drakitra ary manomboka ny serivisy.

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

Mifandray amin'ny maha-mpampiasa voalohany anay izahay ary manamarina izay azony amin'ny 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

Manao toy izany koa izahay amin'ny mpampiasa faharoa:

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

Ity fomba fiasa ity dia ahafahanao mamaritra afovoany ny anjara asan'ny sudo ho an'ny vondrona mpampiasa samihafa.

Mitahiry sy mampiasa fanalahidy ssh ao amin'ny Active Directory

Miaraka amin'ny fanitarana kely ny drafitra, azo atao ny mitahiry ny fanalahidy ssh amin'ny toetran'ny mpampiasa Active Directory ary mampiasa azy ireo rehefa manome alalana amin'ny mpampiantrano Linux.

Tsy maintsy amboarina ny fanomezan-dàlana amin'ny alàlan'ny sssd.
Ampio ny toetra ilaina amin'ny fampiasana script PowerShell.
AddsshPublicKeyAttribute.ps1Function New-AttributeID {
$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-AttributeID
$attributes = @{
lDAPDisplayName = 'sshPublicKey';
attributeId = $oid;
oMSyntax = 22;
attributeSyntax = "2.5.5.5";
isSingleValued = $true;
adminDescription = 'User Public key for SSH login';
}

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

Aorian'ny fampidirana ilay toetra dia tsy maintsy averinao indray ny Active Directory Domain Services.
Andao hiroso amin'ny mpampiasa Active Directory. Hamorona mpivady fanalahidy ho an'ny fifandraisana ssh izahay amin'ny fampiasana fomba mety aminao.
Mandeha ny PuttyGen izahay, manindry ny bokotra "Mamorona" ary manosika ny totozy amin'ny toerana tsy misy na inona na inona.
Rehefa vita ny dingana dia afaka mitahiry ny fanalahidin'ny daholobe sy tsy miankina isika, mampakatra ny fanalahidin'ny daholobe amin'ny toetran'ny mpampiasa Active Directory ary mankafy ny dingana. Na izany aza, ny fanalahidin'ny daholobe dia tsy maintsy ampiasaina avy amin'ny "Fanalahidy ho an'ny daholobe hametahana amin'ny rakitra OpenSSH authorized_keys:".
Niakatra an-tsehatra indray ireo mpandresy tamin’ny fifaninanana iraisam-pirenena SSH sy sudo. Notarihin'ny Distinguished Active Directory Conductor
Ampio ny lakile amin'ny toetran'ny mpampiasa.
Safidy 1 - GUI:
Niakatra an-tsehatra indray ireo mpandresy tamin’ny fifaninanana iraisam-pirenena SSH sy sudo. Notarihin'ny Distinguished Active Directory Conductor
Safidy 2 - PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
Noho izany, manana izahay amin'izao fotoana izao: mpampiasa iray manana ny toetra sshPublicKey feno, mpanjifa Putty namboarina ho an'ny fanomezan-dàlana mampiasa fanalahidy. Mbola misy teboka kely iray: ny fomba hanerena ny daemon sshd hanesorana ny fanalahidin'ny daholobe ilaintsika amin'ny toetran'ny mpampiasa. Ny script kely hita ao amin'ny Internet bourgeois dia afaka miatrika izany amim-pahombiazana.

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'

Nametraka ny fahazoan-dàlana ho 0500 ho an'ny faka.

chmod 0500  /usr/local/bin/fetchSSHKeysFromLDAP

Amin'ity ohatra ity, ny kaonty administratera dia ampiasaina hamatotra ny lahatahiry. Amin'ny toe-javatra miady dia tsy maintsy misy kaonty misaraka miaraka amin'ny zo ambany indrindra.
Izaho manokana dia very hevitra tamin'ny fotoana nisian'ny tenimiafina amin'ny endriny madio ao amin'ny script, na dia eo aza ny zo napetraka.
Safidy vahaolana:

  • Tehiriziko ao anaty rakitra misaraka ny tenimiafina:
    echo -n Supersecretpassword > /usr/local/etc/secretpass

  • Nametraka fahazoan-dàlana ho 0500 ho an'ny root aho
    chmod 0500 /usr/local/etc/secretpass

  • Fanovana ny mari-pamantarana fanombohana ldapsearch: parameter -w superSecretPassword Ovaiko ho -y /usr/local/etc/secretpass

Ny chord farany amin'ny suite androany dia ny fanovana sshd_config

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

Vokatr'izany dia mahazo ity filaharana manaraka ity isika miaraka amin'ny fanomezan-dàlana fototra napetraka ao amin'ny mpanjifa ssh:

  1. Mifandray amin'ny mpizara ny mpampiasa amin'ny filazana ny fidirany.
  2. Ny daemon sshd, amin'ny alàlan'ny script, dia maka ny sandan'ny fanalahidin'ny daholobe avy amin'ny toetran'ny mpampiasa iray ao amin'ny Active Directory ary manao fanomezan-dàlana amin'ny fampiasana ny fanalahidy.
  3. Ny daemon sssd dia manamarina bebe kokoa ny mpampiasa mifototra amin'ny maha-mpikambana ao amin'ny vondrona. Attention! Raha tsy voarindra izany, dia afaka miditra amin'ny mpampiantrano ny mpampiasa sehatra rehetra.
  4. Rehefa manandrana sudo ianao, ny daemon sssd dia mitady ny Active Directory ho an'ny andraikitra. Raha misy ny andraikitra, dia voamarina ny toetran'ny mpampiasa sy ny maha-mpikambana ao amin'ny vondrona (raha ny sudoRoles dia natao hampiasa vondrona mpampiasa)

Ny vokany.

Noho izany, ny lakile dia voatahiry ao amin'ny toetran'ny mpampiasa Active Directory, fahazoan-dàlana sudo - toy izany koa, ny fidirana amin'ny mpampiantrano Linux amin'ny kaonty domaine dia atao amin'ny fanamarinana ny maha-mpikambana ao amin'ny vondrona Active Directory.
Ny onja farany amin'ny kibon'ny mpitarika - ary nivaingana tao anatin'ny fahanginana feno fanajana ny efitrano.

Loharano ampiasaina amin'ny fanoratana:

Sudo amin'ny Active Directory
Ssh fanalahidy amin'ny Active Directory
Script Powershell, manampy toetra amin'ny Active Directory Schema
sudo stable release

Source: www.habr.com

Add a comment