Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-basic-information

AWS - Basiese Inligting

{{#include ../../../banners/hacktricks-training.md}}

Organisasie Hiërargie

Rekeninge

In AWS is daar 'n root rekening, wat die ouerhouer is vir al die rekeninge van jou organisasie. Jy hoef egter nie daardie rekening te gebruik om hulpbronne te ontplooi nie, jy kan ander rekeninge skep om verskillende AWS infrastruktuur van mekaar te skei.

Dit is baie interessant vanuit 'n veiligheid oogpunt, aangesien een rekening nie toegang sal hê tot hulpbronne van 'n ander rekening nie (behalwe as brûe spesifiek geskep word), so op hierdie manier kan jy grense tussen ontplooiings skep.

Daarom is daar twee tipes rekeninge in 'n organisasie (ons praat van AWS rekeninge en nie gebruikersrekeninge nie): 'n enkele rekening wat as die bestuurrekening aangewys word, en een of meer lidrekeninge.

  • Die bestuurrekening (die root rekening) is die rekening wat jy gebruik om die organisasie te skep. Van die organisasie se bestuurrekening af, kan jy die volgende doen:

  • Rekeninge in die organisasie skep

  • Ander bestaande rekeninge na die organisasie nooi

  • Rekeninge uit die organisasie verwyder

  • Uitnodigings bestuur

  • Beleide toepas op entiteite (wortels, OUs, of rekeninge) binne die organisasie

  • Integrasie met ondersteunende AWS dienste inskakel om diensfunksionaliteit oor al die rekeninge in die organisasie te bied.

  • Dit is moontlik om as die root gebruiker aan te meld met die e-pos en wagwoord wat gebruik is om hierdie root rekening/organisasie te skep.

Die bestuurrekening het die verantwoordelikhede van 'n betaler rekening en is verantwoordelik vir die betaling van alle koste wat deur die lidrekeninge opgeloop word. Jy kan nie 'n organisasie se bestuurrekening verander nie.

  • Lidrekeninge maak al die res van die rekeninge in 'n organisasie uit. 'n Rekening kan slegs 'n lid van een organisasie op 'n slag wees. Jy kan 'n beleid aan 'n rekening koppel om kontroles slegs op daardie een rekening toe te pas.
  • Lidrekeninge moet 'n geldige e-posadres gebruik en kan 'n naam hê; in die algemeen sal hulle nie in staat wees om die faktuur te bestuur nie (maar hulle mag toegang daartoe gegee word).
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com

Organisasie-eenhede

Rekeninge kan gegroepeer word in Organisasie-eenhede (OU). Op hierdie manier kan jy beleide vir die Organisasie-eenheid skep wat op al die kindrekeninge toegepas gaan word. Let daarop dat 'n OU ander OUs as kinders kan hê.

# You can get the root id from aws organizations list-roots
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU

Service Control Policy (SCP)

'n service control policy (SCP) is 'n beleid wat die dienste en aksies spesifiseer wat gebruikers en rolle in die rekeninge wat die SCP beïnvloed, kan gebruik. SCPs is soortgelyk aan IAM toestemmingsbeleide, behalwe dat hulle nie enige toestemmings toeken nie. In plaas daarvan spesifiseer SCPs die maksimum toestemmings vir 'n organisasie, organisatoriese eenheid (OU), of rekening. Wanneer jy 'n SCP aan jou organisasie se wortel of 'n OU heg, beperk die SCP toestemmings vir entiteite in lidrekeninge.

Dit is die ENIGE manier waarop selfs die wortelgebruiker gestop kan word om iets te doen. Byvoorbeeld, dit kan gebruik word om gebruikers te stop om CloudTrail te deaktiveer of rugsteun te verwyder.
Die enigste manier om dit te omseil, is om ook die meesterrekening wat die SCPs konfigureer, te kompromitteer (meesterrekening kan nie geblokkeer word nie).

Warning

Let daarop dat SCPs slegs die principals in die rekening beperk, so ander rekeninge word nie beïnvloed nie. Dit beteken dat 'n SCP wat s3:GetObject weier, nie mense sal stop om toegang tot 'n openbare S3-bucket in jou rekening te verkry nie.

SCP voorbeelde:

  • Weier die wortelrekening heeltemal
  • Laat slegs spesifieke streke toe
  • Laat slegs witgelysde dienste toe
  • Weier GuardDuty, CloudTrail, en S3 Publieke Blok Toegang van

deaktiveer

  • Weier sekuriteit/voorvalrespons rolle om verwyder of

gewysig te word.

  • Weier rugsteun om verwyder te word.
  • Weier die skep van IAM gebruikers en toegang sleutels

Vind JSON voorbeelde in https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html

Resource Control Policy (RCP)

'n resource control policy (RCP) is 'n beleid wat die maksimum toestemmings vir hulpbronne binne jou AWS-organisasie definieer. RCPs is soortgelyk aan IAM beleide in sintaksis, maar gee nie toestemmings nie—hulle beperk slegs die toestemmings wat op hulpbronne deur ander beleide toegepas kan word. Wanneer jy 'n RCP aan jou organisasie se wortel, 'n organisatoriese eenheid (OU), of 'n rekening heg, beperk die RCP hulpbron toestemmings oor alle hulpbronne in die beïnvloede omvang.

Dit is die ENIGE manier om te verseker dat hulpbronne nie vooraf gedefinieerde toegangsvlakke kan oorskry—selfs as 'n identiteit-gebaseerde of hulpbron-gebaseerde beleid te permissief is. Die enigste manier om hierdie beperkings te omseil, is om ook die RCP wat deur jou organisasie se bestuursrekening gekonfigureer is, te wysig.

Warning

RCPs beperk slegs die toestemmings wat hulpbronne kan hê. Hulle beheer nie direk wat principals kan doen nie. Byvoorbeeld, as 'n RCP eksterne toegang tot 'n S3-bucket weier, verseker dit dat die bucket se toestemmings nooit aksies buite die gestelde limiet toelaat nie—selfs as 'n hulpbron-gebaseerde beleid verkeerd gekonfigureer is.

RCP voorbeelde:

  • Beperk S3-buckets sodat hulle slegs deur principals binne jou organisasie toegang kan kry
  • Beperk KMS sleutelgebruik om slegs operasies van vertroude organisatoriese rekeninge toe te laat
  • Beperk toestemmings op SQS rye om ongeoorloofde wysigings te voorkom
  • Handhaaf toegang grense op Secrets Manager geheime om sensitiewe data te beskerm

Vind voorbeelde in AWS Organizations Resource Control Policies dokumentasie

ARN

Amazon Resource Name is die unieke naam wat elke hulpbron binne AWS het, dit is soos volg saamgestel:

arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env

Let daarop dat daar 4 partities in AWS is, maar slegs 3 maniere om hulle te noem:

  • AWS Standard: aws
  • AWS China: aws-cn
  • AWS US publieke Internet (GovCloud): aws-us-gov
  • AWS Secret (US Classified): aws

IAM - Identiteit en Toegangsbestuur

IAM is die diens wat jou sal toelaat om Verifikasie, Magtiging en Toegangsbeheer binne jou AWS-rekening te bestuur.

  • Verifikasie - Proses om 'n identiteit te definieer en die verifikasie van daardie identiteit. Hierdie proses kan onderverdeel word in: Identifikasie en verifikasie.
  • Magtiging - Bepaal wat 'n identiteit kan toegang tot binne 'n stelsel nadat dit geverifieer is.
  • Toegangsbeheer - Die metode en proses van hoe toegang tot 'n veilige hulpbron toegestaan word.

IAM kan gedefinieer word deur sy vermoë om verifikasie, magtiging en toegangsbeheer meganismes van identiteite tot jou hulpbronne binne jou AWS-rekening te bestuur, te beheer en te regeer.

AWS rekening wortel gebruiker

Wanneer jy vir die eerste keer 'n Amazon Web Services (AWS) rekening skep, begin jy met 'n enkele aanmeld identiteit wat volledige toegang tot alle AWS dienste en hulpbronne in die rekening het. Dit is die AWS rekening wortel gebruiker en word verkry deur in te teken met die e-posadres en wagwoord wat jy gebruik het om die rekening te skep.

Let daarop dat 'n nuwe admin gebruiker minder regte as die wortel gebruiker sal hê.

Vanuit 'n sekuriteits oogpunt, word dit aanbeveel om ander gebruikers te skep en om hierdie een te vermy.

IAM gebruikers

'n IAM gebruiker is 'n entiteit wat jy in AWS skep om die persoon of toepassing wat dit gebruik om met AWS te kommunikeer te verteenwoordig. 'n gebruiker in AWS bestaan uit 'n naam en geloofsbriewe (wagwoord en tot twee toegang sleutels).

Wanneer jy 'n IAM gebruiker skep, gee jy dit regte deur dit 'n lid van 'n gebruikersgroep te maak wat toepaslike regte beleid aanheg (aanbeveel), of deur regte direk aan die gebruiker te heg.

Gebruikers kan MFA geaktiveer hê om in te teken deur die konsole. API tokens van MFA geaktiveerde gebruikers is nie deur MFA beskerm nie. As jy wil die toegang van 'n gebruiker se API sleutels met MFA beperk, moet jy in die beleid aandui dat om sekere aksies uit te voer, MFA teenwoordig moet wees (voorbeeld hier).

CLI

  • Toegang Sleutel ID: 20 ewekansige hoofletters alfanumeriese karakters soos AKHDNAPO86BSHKDIRYT
  • Geheime toegang sleutel ID: 40 ewekansige hoof- en kleinletters karakters: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Dit is nie moontlik om verlore geheime toegang sleutel ID's te herstel nie).

Wanneer jy die Toegang Sleutel moet verander, is dit die proses wat jy moet volg:
Skep 'n nuwe toegang sleutel -> Pas die nuwe sleutel toe op stelsel/toepassing -> merk oorspronklike een as inaktief -> Toets en verifieer dat nuwe toegang sleutel werk -> Verwyder ou toegang sleutel

MFA - Multi-Faktor Verifikasie

Dit word gebruik om 'n addisionele faktor vir verifikasie te skep benewens jou bestaande metodes, soos wagwoord, en skep dus 'n multi-faktor vlak van verifikasie.
Jy kan 'n gratis virtuele toepassing of 'n fisiese toestel gebruik. Jy kan toepassings soos google authentication gratis gebruik om 'n MFA in AWS te aktiveer.

Beleide met MFA voorwaardes kan aan die volgende geheg word:

  • 'n IAM gebruiker of groep
  • 'n hulpbron soos 'n Amazon S3 emmer, Amazon SQS tou, of Amazon SNS onderwerp
  • Die vertrouensbeleid van 'n IAM rol wat deur 'n gebruiker aanvaar kan word

As jy 'n hulpbron wil toegang via CLI wat MFA nagaan, moet jy GetSessionToken aanroep. Dit sal vir jou 'n token gee met inligting oor MFA.
Let daarop dat AssumeRole geloofsbriewe nie hierdie inligting bevat nie.

aws sts get-session-token --serial-number <arn_device> --token-code <code>

As hier genoem, daar is 'n baie verskillende gevalle waar MFA nie gebruik kan word nie.

IAM gebruikersgroepe

'n IAM gebruikersgroep is 'n manier om beleide aan verskeie gebruikers op een slag te koppel, wat dit makliker kan maak om die toestemmings vir daardie gebruikers te bestuur. Rol en groepe kan nie deel wees van 'n groep nie.

Jy kan 'n identiteitsgebaseerde beleid aan 'n gebruikersgroep koppel sodat al die gebruikers in die gebruikersgroep die beleid se toestemmings ontvang. Jy kan nie 'n gebruikersgroep as 'n Principal in 'n beleid identifiseer (soos 'n hulpbron-gebaseerde beleid) nie, omdat groepe met toestemmings verband hou, nie verifikasie nie, en principals is geverifieerde IAM entiteite.

Hier is 'n paar belangrike eienskappe van gebruikersgroepe:

  • 'n gebruikers groep kan baie gebruikers bevat, en 'n gebruiker kan tot verskeie groepe behoort.
  • Gebruikersgroepe kan nie geneste wees nie; hulle kan slegs gebruikers bevat, nie ander gebruikersgroepe nie.
  • Daar is geen standaard gebruikersgroep wat outomaties al die gebruikers in die AWS-rekening insluit nie. As jy 'n gebruikersgroep soos dit wil hê, moet jy dit skep en elke nuwe gebruiker daaraan toewys.
  • Die aantal en grootte van IAM hulpbronne in 'n AWS-rekening, soos die aantal groepe, en die aantal groepe waarvan 'n gebruiker 'n lid kan wees, is beperk. Vir meer inligting, sien IAM en AWS STS kwotas.

IAM rolle

'n IAM rol is baie soortgelyk aan 'n gebruiker, in die sin dat dit 'n identiteit met toestemmingbeleide is wat bepaal wat dit kan en nie kan doen in AWS nie. egter, 'n rol het nie enige geloofsbriewe (wagwoord of toegang sleutels) wat daarmee geassosieer is nie. In plaas daarvan om uniek aan een persoon geassosieer te wees, is 'n rol bedoel om aangenome te word deur enigiemand wat dit nodig het (en genoeg perms het). 'n IAM gebruiker kan 'n rol aanvaar om tydelik verskillende toestemmings vir 'n spesifieke taak aan te neem. 'n rol kan toegeken word aan 'n gefedereerde gebruiker wat aanmeld deur 'n eksterne identiteitsverskaffer te gebruik in plaas van IAM.

'n IAM rol bestaan uit twee tipes beleide: 'n vertrouensbeleid, wat nie leeg kan wees nie, wat definieer wie die rol kan aanvaar, en 'n toestemmingsbeleid, wat nie leeg kan wees nie, wat definieer wat dit kan toegang.

AWS Veiligheidstoken Diens (STS)

AWS Veiligheidstoken Diens (STS) is 'n webdiens wat die uitreiking van tydelike, beperkte-toestemming geloofsbriewe fasiliteer. Dit is spesifiek ontwerp vir:

Tydelike geloofsbriewe in IAM

Tydelike geloofsbriewe word hoofsaaklik gebruik met IAM rolle, maar daar is ook ander gebruike. Jy kan tydelike geloofsbriewe aan vra wat 'n meer beperkte stel toestemmings het as jou standaard IAM gebruiker. Dit voorkom dat jy per ongeluk take uitvoer wat nie toegelaat word deur die meer beperkte geloofsbriewe nie. 'n voordeel van tydelike geloofsbriewe is dat hulle outomaties verval na 'n bepaalde tydperk. Jy het beheer oor die duur dat die geloofsbriewe geldig is.

Beleide

Beleidstoestemmings

Word gebruik om toestemmings toe te ken. Daar is 2 tipes:

  • AWS bestuurde beleide (vooraf geconfigureer deur AWS)
  • Klant bestuurde beleide: Geconfigureer deur jou. Jy kan beleide skep gebaseer op AWS bestuurde beleide (een van hulle wysig en jou eie skep), deur die beleidsgenerator te gebruik (n GUI-uitsig wat jou help om toestemmings toe te ken en te weier) of jou eie te skryf.

Deur standaard toegang is weggeneem, toegang sal toegestaan word as 'n eksplisiete rol gespesifiseer is.
As enkele "Deny" bestaan, sal dit die "Allow" oorskry, behalwe vir versoeke wat die AWS-rekening se wortelveiligheidsgeloofsbriewe gebruik (wat standaard toegelaat word).

{
"Version": "2012-10-17",  //Version of the policy
"Statement": [  //Main element, there can be more than 1 entry in this array
{
"Sid": "Stmt32894y234276923" //Unique identifier (optional)
"Effect": "Allow", //Allow or deny
"Action": [  //Actions that will be allowed or denied
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": [ //Resource the action and effect will be applied to
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*"
],
"Condition": { //Optional element that allow to control when the permission will be effective
"ArnEquals": {"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/instance-id"}
}
}
]
}

Die globale velde wat gebruik kan word vir voorwaardes in enige diens is hier gedokumenteer.
Die spesifieke velde wat gebruik kan word vir voorwaardes per diens is hier gedokumenteer.

Inline Beleide

Hierdie tipe beleide is direk toegeken aan 'n gebruiker, groep of rol. Dan verskyn hulle nie in die Beleide lys nie, aangesien enige ander dit kan gebruik.
Inline beleide is nuttig as jy wil 'n streng een-tot-een verhouding tussen 'n beleid en die identiteit wat dit toegepas word, handhaaf. Byvoorbeeld, jy wil seker maak dat die toestemmings in 'n beleid nie per ongeluk aan 'n identiteit anders as die een waarvoor dit bedoel is, toegeken word nie. Wanneer jy 'n inline beleid gebruik, kan die toestemmings in die beleid nie per ongeluk aan die verkeerde identiteit geheg word nie. Boonop, wanneer jy die AWS Management Console gebruik om daardie identiteit te verwyder, word die beleide wat in die identiteit ingebed is, ook verwyder. Dit is omdat hulle deel is van die hoof entiteit.

Hulpbron Emmer Beleide

Hierdie is beleide wat in hulpbronne gedefinieer kan word. Nie alle hulpbronne van AWS ondersteun hulle nie.

As 'n hoof nie 'n eksplisiete ontkenning op hulle het nie, en 'n hulpbronbeleid hulle toegang gee, dan word hulle toegelaat.

IAM Grense

IAM grense kan gebruik word om die toestemmings wat 'n gebruiker of rol toegang tot moet hê, te beperk. Op hierdie manier, selfs al word 'n ander stel toestemmings aan die gebruiker deur 'n ander beleid toegeken, sal die operasie misluk as hy probeer om hulle te gebruik.

'n Grens is net 'n beleid wat aan 'n gebruiker geheg is wat die maksimum vlak van toestemmings wat die gebruiker of rol kan hê, aandui. So, selfs al het die gebruiker Administrateur toegang, as die grens aandui dat hy net S· emmers kan lees, is dit die maksimum wat hy kan doen.

Dit, SCPs en die beginsel van die minste voorreg is die maniere om te beheer dat gebruikers nie meer toestemmings het as wat hulle nodig het nie.

Sessie Beleide

'n Sessie beleid is 'n beleid wat ingestel word wanneer 'n rol aanvaar word op een of ander manier. Dit sal soos 'n IAM grens vir daardie sessie wees: Dit beteken dat die sessie beleid nie toestemmings toeken nie, maar beperk hulle tot diegene wat in die beleid aangedui word (met die maksimum toestemmings wat die rol het).

Dit is nuttig vir veiligheidsmaatreëls: Wanneer 'n admin 'n baie bevoorregte rol gaan aanvaar, kan hy die toestemming beperk tot slegs diegene wat in die sessie beleid aangedui word in die geval dat die sessie gecompromitteer word.

aws sts assume-role \
--role-arn <value> \
--role-session-name <value> \
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
[--policy <file://policy.json>]

Let wel dat AWS dalk sessiebeleide aan sessies kan voeg wat gegenereer gaan word weens derde redes. Byvoorbeeld, in ongemagtigde cognito aangeneemde rolle sal AWS standaard (met verbeterde verifikasie) sessie-akkrediteer met 'n sessiebeleid genereer wat die dienste wat die sessie kan toegang hê, beperk tot die volgende lys.

As jy dus op 'n stadium die fout "… omdat geen sessiebeleid dit toelaat nie …" teëkom, en die rol toegang het om die aksie uit te voer, is dit omdat daar 'n sessiebeleid is wat dit verhinder.

Identiteitsfederasie

Identiteitsfederasie laat gebruikers van identiteitsverskaffers wat eksterne tot AWS is, toe om AWS-hulpbronne veilig te benader sonder om AWS-gebruikersakkrediteer van 'n geldige IAM-gebruikersrekening te verskaf.
'n Voorbeeld van 'n identiteitsverskaffer kan jou eie korporatiewe Microsoft Active Directory (via SAML) of OpenID dienste (soos Google) wees. Gefedereerde toegang sal dan die gebruikers binne dit toelaat om AWS te benader.

Om hierdie vertroue te konfigureer, word 'n IAM Identiteitsverskaffer gegenereer (SAML of OAuth) wat die ander platform sal vertrou. Dan word ten minste een IAM rol (wat vertrou) aan die Identiteitsverskaffer toegeken. As 'n gebruiker van die vertroude platform AWS benader, sal hy as die genoemde rol toegang hê.

Jy sal egter gewoonlik 'n verskillende rol wil gee, afhangende van die groep van die gebruiker in die derdepartyplatform. Dan kan verskeie IAM rolle vertrou die derdeparty Identiteitsverskaffer en die derdepartyplatform sal die een wees wat gebruikers toelaat om een rol of die ander aan te neem.

IAM Identiteitsentrum

AWS IAM Identiteitsentrum (opvolger van AWS Enkelteken) brei die vermoëns van AWS Identiteits- en Toegangsbestuur (IAM) uit om 'n sentraal plek te bied wat die administrasie van gebruikers en hul toegang tot AWS rekeninge en wolktoepassings saambring.

Die aanmelddomein gaan iets soos <user_input>.awsapps.com wees.

Om gebruikers aan te meld, is daar 3 identiteitsbronne wat gebruik kan word:

  • Identiteitsentrum Gids: Gereelde AWS gebruikers
  • Aktiewe Gids: Ondersteun verskillende koppelvlakke
  • Eksterne Identiteitsverskaffer: Alle gebruikers en groepe kom van 'n eksterne Identiteitsverskaffer (IdP)

In die eenvoudigste geval van die Identiteitsentrum gids, sal die Identiteitsentrum 'n lys van gebruikers & groepe hê en sal in staat wees om beleide aan hulle toe te ken vir enige van die rekeninge van die organisasie.

Om toegang te gee aan 'n Identiteitsentrum gebruiker/groep tot 'n rekening, sal 'n SAML Identiteitsverskaffer wat die Identiteitsentrum vertrou, geskep word, en 'n rol wat die Identiteitsverskaffer met die aangeduide beleide vertrou, sal in die bestemmingsrekening geskep word.

AwsSSOInlinePolicy

Dit is moontlik om toestemmings via inline beleide aan rolle wat via IAM Identiteitsentrum geskep is, te gee. Die rolle wat in die rekeninge geskep word wat inline beleide in AWS Identiteitsentrum ontvang, sal hierdie toestemmings in 'n inline beleid genaamd AwsSSOInlinePolicy hê.

Daarom, selfs al sien jy 2 rolle met 'n inline beleid genaamd AwsSSOInlinePolicy, beteken dit nie dat dit dieselfde toestemmings het nie.

Kruisrekening Vertroue en Rolle

'n gebruiker (wat vertrou) kan 'n Kruisrekening Rol met sommige beleide skep en dan, 'n ander gebruiker (vertrou) toelaat om sy rekening te benader maar net met die toegang wat in die nuwe rolbeleide aangedui is. Om dit te skep, skep eenvoudig 'n nuwe Rol en kies Kruisrekening Rol. Rolle vir Kruisrekening Toegang bied twee opsies. Om toegang te bied tussen AWS rekeninge wat jy besit, en om toegang te bied tussen 'n rekening wat jy besit en 'n derdeparty AWS rekening.
Dit word aanbeveel om die gebruiker wat vertrou is spesifiek aan te dui en nie 'n generiese ding te plaas nie, want anders kan ander geverifieerde gebruikers soos gefedereerde gebruikers ook hierdie vertroue misbruik.

AWS Eenvoudige AD

Nie ondersteun nie:

  • Vertrouensverhoudings
  • AD Administrasiesentrum
  • Volledige PS API ondersteuning
  • AD Herwinningsblik
  • Groep Gemanagte Diensrekeninge
  • Skema-uitbreidings
  • Geen Direkte toegang tot OS of Instansies nie

Web Federasie of OpenID Verifikasie

Die toepassing gebruik die AssumeRoleWithWebIdentity om tydelike akkrediteer te skep. Dit gee egter nie toegang tot die AWS-konsol nie, net toegang tot hulpbronne binne AWS.

Ander IAM opsies

  • Jy kan 'n wagwoordbeleid instelling opsies soos minimum lengte en wagwoordvereistes stel.
  • Jy kan "Akkredietverslag" aflaai met inligting oor huidige akkrediteer (soos gebruikers skeppingstyd, is wagwoord geaktiveer...). Jy kan 'n akkredietverslag genereer so dikwels as een keer elke vier uur.

AWS Identiteits- en Toegangsbestuur (IAM) bied fyn-graad toegangbeheer oor al die AWS. Met IAM kan jy spesifiseer wie toegang kan hê tot watter dienste en hulpbronne, en onder watter omstandighede. Met IAM beleide bestuur jy toestemmings aan jou werksmag en stelsels om minst-bevoegde toestemmings te verseker.

IAM ID Vooraf

In hierdie bladsy kan jy die IAM ID vooraf van sleutels vind, afhangende van hul aard:

Identifiseerderkode Beskrywing
ABIA AWS STS diens draer token

| ACCA | Konteks-spesifieke akkrediet | | AGPA | Gebruikersgroep | | AIDA | IAM gebruiker | | AIPA | Amazon EC2 instansieprofiel | | AKIA | Toegangssleutel | | ANPA | Gemanagte beleid | | ANVA | Weergawe in 'n gemanagte beleid | | APKA | Publieke sleutel | | AROA | Rol | | ASCA | Sertifikaat | | ASIA | Tydelike (AWS STS) toegangssleutel ID's gebruik hierdie vooraf, maar is uniek slegs in kombinasie met die geheime toegangssleutel en die sessietoken. |

Aanbevole toestemmings om rekeninge te oudit

Die volgende voorregte bied verskeie lees toegang van metadata:

  • arn:aws:iam::aws:policy/SecurityAudit
  • arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
  • codebuild:ListProjects
  • config:Describe*
  • cloudformation:ListStacks
  • logs:DescribeMetricFilters
  • directconnect:DescribeConnections
  • dynamodb:ListTables

Verskeie

CLI Verifikasie

Om 'n gereelde gebruiker te laat verifieer by AWS via CLI, moet jy lokale akkrediteer hê. Standaard kan jy dit handmatig in ~/.aws/credentials konfigureer of deur te loop aws configure.
In daardie lêer kan jy meer as een profiel hê, as geen profiel gespesifiseer word met die aws cli, sal die een genaamd [default] in daardie lêer gebruik word.
Voorbeeld van akkrediteer lêer met meer as 1 profiel:

[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
aws_secret_access_key = uOcdhof683fbOUGFYEQug8fUGIf68greoihef

[Admin]
aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2

As jy toegang nodig het tot verskillende AWS-rekeninge en jou profiel toegang gegee is om 'n rol binne daardie rekeninge aan te neem, hoef jy nie elke keer STS handmatig aan te roep nie (aws sts assume-role --role-arn <role-arn> --role-session-name sessname) en die geloofsbriewe te konfigureer nie.

Jy kan die ~/.aws/config lêer gebruik om aan te dui watter rolle om aan te neem, en dan die --profile parameter soos gewoonlik gebruik (die assume-role sal op 'n deursigtige manier vir die gebruiker uitgevoer word).
'n Konfigurasielêer voorbeeld:

[profile acc2]
region=eu-west-2
role_arn=arn:aws:iam::<account-id>:role/<role-path>
role_session_name = <session_name>
source_profile = <profile_with_assume_role>
sts_regional_endpoints = regional

Met hierdie konfigurasie-lêer kan jy dan aws cli gebruik soos:

aws --profile acc2 ...

As jy op soek is na iets soortgelyks soos dit, maar vir die blaaier, kan jy die uitbreiding AWS Extend Switch Roles kyk.

Outomatisering van tydelike akrediteer

As jy 'n toepassing ontgin wat tydelike akrediteer genereer, kan dit vervelig wees om dit elke paar minute in jou terminale op te dateer wanneer dit verval. Dit kan reggestel word deur 'n credential_process riglyn in die konfigurasie-lêer te gebruik. Byvoorbeeld, as jy 'n kwesbare webapp het, kan jy doen:

[victim]
credential_process = curl -d 'PAYLOAD' https://some-site.com

Let daarop dat geloofsbriewe moet teruggestuur word na STDOUT in die volgende formaat:

{
"Version": 1,
"AccessKeyId": "an AWS access key",
"SecretAccessKey": "your AWS secret access key",
"SessionToken": "the AWS session token for temporary credentials",
"Expiration": "ISO8601 timestamp when the credentials expire"
}

Verwysings

{{#include ../../../banners/hacktricks-training.md}}