diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md index 1b0959df6..41ed2f9d2 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md @@ -1,185 +1,185 @@ -# AWS - VPC & Networking Basic Information +# AWS - VPC & Мережі — базова інформація {{#include ../../../../banners/hacktricks-training.md}} -## AWS Networking in a Nutshell +## AWS Мережі у двох словах -A **VPC** містить **network CIDR** наприклад 10.0.0.0/16 (з його **routing table** та **network ACL**). +A **VPC** містить **network CIDR**, наприклад 10.0.0.0/16 (з його **routing table** та **network ACL**). -Ця мережа VPC ділиться на **subnetworks**, тож **subnetwork** безпосередньо пов'язана з **VPC**, **routing table** та **network ACL**. +Ця мережа VPC ділиться на **підмережі**, тож **підмережа** безпосередньо **пов'язана** з **VPC**, **routing table** і **network ACL**. -Потім, **Network Interface** підключені до сервісів (наприклад EC2 instances) **з’єднуються** з **subnetworks** з допомогою **security group(s)**. +Далі, **Network Interface**и, приєднані до сервісів (наприклад EC2 instances), **підключені** до **підмереж** з **security group(s)**. -Отже, **security group** буде обмежувати відкриті порти мережевих **interfaces, що його використовують**, **незалежно від субмережі**. А **network ACL** буде **обмежувати** відкриті порти для **усієї мережі**. +Отже, **security group** обмежує відкриті порти мережевих **інтерфейсів, які його використовують**, **незалежно від підмережі**. А **network ACL** буде **обмежувати** відкриті порти для **всієї мережі**. -Крім того, щоб мати **доступ до Інтернету**, є кілька цікавих налаштувань, які варто перевірити: +Крім того, для **доступу до Інтернету** варто перевірити такі конфігурації: -- **subnetwork** може **автоматично призначати публічні IPv4 адреси** -- **instance**, створений у мережі з **автоматичним призначенням IPv4 адрес**, може отримати адресу -- **Internet gateway** має бути **підключений** до **VPC** -- Також можна використовувати **Egress-only internet gateways** -- Можна мати **NAT gateway** у **private subnet**, щоб було можливим **підключатися до зовнішніх сервісів** з цієї приватної subnet, але **неможливо дістатися до нього ззовні**. -- NAT gateway може бути **public** (доступ в інтернет) або **private** (доступ до інших VPC) +- **підмережа** може **автоматично призначати public IPv4 addresses** +- інстанс, створений у мережі, яка **автопризначає IPv4**, може отримати такий IP +- **Internet gateway** потрібно **прикріпити** до **VPC** +- можна також використовувати **Egress-only internet gateways** +- можна мати **NAT gateway** у **private subnet**, щоб з цієї приватної підмережі було можливо **підключатися до зовнішніх сервісів**, але ззовні **не можна до них дістатися** +- NAT gateway може бути **public** (доступ до інтернету) або **private** (доступ до інших VPC) ![](<../../../../images/image (274).png>) ## VPC -Amazon **Virtual Private Cloud** (Amazon VPC) дозволяє вам **розгортати AWS ресурси у віртуальній мережі**, яку ви визначили. Ця віртуальна мережа матиме кілька subnet, Internet Gateways для доступу до Інтернету, ACLs, Security groups, IPs... +Amazon **Virtual Private Cloud** (Amazon VPC) дозволяє вам **запускати AWS ресурси у віртуальній мережі**, яку ви визначили. Ця віртуальна мережа матиме кілька підмереж, Internet Gateways для доступу в Інтернет, ACL, Security groups, IP тощо. ### Subnets -Subnets допомагають забезпечити вищий рівень безпеки. **Логічне групування подібних ресурсів** також допомагає зберегти **зручність управління** вашою інфраструктурою. +Subnets допомагають забезпечити вищий рівень безпеки. **Логічне групування подібних ресурсів** також полегшує **управління** вашою інфраструктурою. - Дійсні CIDR — від /16 netmask до /28 netmask. -- Subnet не може належати до різних availability zones одночасно. -- **AWS резервує перші три host IP адреси** кожної subnet **для внутрішнього використання AWS**: перша адреса використовується для VPC router. Друга адреса резервується для AWS DNS, а третя адреса резервується для майбутнього використання. -- Називаються **public subnets** ті, що мають **прямий доступ до Інтернету**, тоді як private subnets — ні. +- Підмережа не може бути в різних Availability Zones одночасно. +- **AWS резервує перші три host IP адреси** кожної підмережі **для внутрішнього використання AWS**: перша host адреса використовується для VPC router. Друга адреса резервується для AWS DNS, а третя адреса резервується для подальшого використання. +- Називають **public subnets** ті, які мають **прямий доступ до Інтернету**, тоді як private subnets цього не мають. ### Route Tables -Route tables визначають маршрутизацію трафіку для subnet у межах VPC. Вони визначають, який мережевий трафік пересилається в інтернет або через VPN-з'єднання. Зазвичай ви знайдете маршрути до: +Route tables визначають маршрутизацію трафіку для підмережі в межах VPC. Вони визначають, який мережевий трафік перенаправляється в інтернет або до VPN-з'єднання. Зазвичай ви знайдете доступ до: - Local VPC - NAT -- Internet Gateways / Egress-only Internet gateways (потрібні, щоб надати VPC доступ до Інтернету). -- Щоб зробити subnet публічною, потрібно **створити** та **прикріпити** **Internet gateway** до вашого VPC. -- VPC endpoints (щоб отримувати доступ до S3 з приватних мереж) +- Internet Gateways / Egress-only Internet gateways (необхідні для надання VPC доступу до Інтернету). +- Щоб зробити підмережу публічною, потрібно **створити** та **прикріпити** **Internet gateway** до вашого VPC. +- VPC endpoints (для доступу до S3 з приватних мереж) ### ACLs -**Network Access Control Lists (ACLs)**: Network ACLs — це правила брандмауера, що контролюють вхідний та вихідний мережевий трафік до subnet. Вони можуть використовуватися для дозволу або заборони трафіку до конкретних IP адрес або діапазонів. +**Network Access Control Lists (ACLs)**: Network ACLs — це правила фаєрвола, які контролюють вхідний та вихідний мережевий трафік для підмережі. Їх можна використовувати, щоб дозволити або заборонити трафік для конкретних IP-адрес або діапазонів. -- Найчастіше дозволи/заборони виконують за допомогою security groups, але ACLs — це єдиний спосіб повністю розірвати вже встановлені reverse shells. Зміна правила у security group не зупиняє вже встановлені з’єднання. -- Проте це застосовується до всієї subnet — будьте обережні при забороні, оскільки необхідна функціональність може бути порушена. +- Найчастіше для дозволу/заборони доступу використовують security groups, але ACL — це єдиний спосіб повністю розірвати вже встановлені reverse shells. Змінене правило в security group не припиняє вже встановлені з'єднання. +- Однак це застосовується до цілої підмережі — будьте обережні при забороні чогось, оскільки необхідна функціональність може бути порушена. ### Security Groups -Security groups — це віртуальний **брандмауер**, який контролює вхідний та вихідний мережевий **трафік до instances** у VPC. Відношення 1 SG до M instances (зазвичай 1 до 1).\ -Зазвичай використовується для відкриття небезпечних портів на інстансах, наприклад порт 22: +Security groups — це віртуальний **фаєрвол**, який контролює вхідний та вихідний мережевий **трафік до інстансів** у VPC. Відношення: 1 SG до M інстансів (зазвичай 1 до 1).\ +Зазвичай це використовують для відкриття небезпечних портів на інстансах, наприклад порт 22:
### Elastic IP Addresses -_Elastic IP address_ — це **статична IPv4 адреса**, призначена для динамічних обчислювальних середовищ у хмарі. Elastic IP адреса виділяється вашому AWS акаунту і належить вам, поки ви її не звільните. Використовуючи Elastic IP, ви можете приховати збій інстансу або софту шляхом швидкого перепризначення адреси іншому інстансу у вашому акаунті. +_Elastic IP address_ — це **статична IPv4 адреса**, призначена для динамічних хмарних обчислень. Elastic IP адреса виділяється для вашого AWS аккаунта і є вашою, поки ви її не звільните. Використовуючи Elastic IP, ви можете маскувати збій інстансу або програмного забезпечення шляхом швидкого перенаправлення адреси на інший інстанс у вашому акаунті. -### Connection between subnets +### Зв'язок між підмережами -За замовчуванням у всіх subnets **автоматичне призначення публічних IP адрес вимкнено**, але його можна ввімкнути. +За замовчуванням, у всіх підмережах **автоматичне призначення public IP адрес вимкнено**, але його можна увімкнути. -**Локальний маршрут у route table дозволяє зв’язок між VPC subnets.** +**Локальний маршрут у route table дозволяє зв'язок між підмережами VPC.** -Якщо ви **з'єднуєте subnet з іншою subnet, ви не зможете отримати доступ до subnet, з'єднаних з тією іншою subnet**, потрібно створювати з’єднання безпосередньо з ними. **Це також стосується Internet gateways.** Ви не можете пройти через з’єднання між subnet, щоб потрапити в інтернет — потрібно призначити internet gateway вашій subnet. +Якщо ви **підключаєте підмережу до іншої підмережі**, ви не матимете доступу до підмереж, які підключені до тієї іншої підмережі — потрібно створити з'єднання з ними безпосередньо. **Це також стосується internet gateways**. Ви не можете пройти через підключення підмережі, щоб дістатися до інтернету; потрібно призначити internet gateway своїй підмережі. ### VPC Peering -VPC peering дозволяє **з'єднати дві або більше VPC між собою**, використовуючи IPv4 або IPv6, так ніби вони були частиною однієї мережі. +VPC peering дозволяє **з'єднувати дві або більше VPC**, використовуючи IPV4 або IPV6, ніби вони є частиною однієї мережі. -Після встановлення peer-з’єднання **ресурси в одній VPC можуть отримувати доступ до ресурсів в іншій**. З’єднання між VPC реалізується через існуючу інфраструктуру мережі AWS, тому воно високо доступне і без вузьких місць по пропускній здатності. Оскільки **peered connections працюють так, ніби вони частина однієї мережі**, існують обмеження щодо CIDR-блоків, які можна використовувати.\ -Якщо у вас **перекриваються або дублюються CIDR** діапазони для ваших VPC, тоді **ви не зможете з'єднати ці VPC через peering**.\ -Кожна AWS VPC буде **комунікувати лише зі своїм peer**. Наприклад, якщо у вас є peering між VPC 1 та VPC 2, і ще один між VPC 2 та VPC 3, то VPC 1 та VPC 2 можуть безпосередньо спілкуватися, як і VPC 2 та VPC 3, проте VPC 1 та VPC 3 не зможуть. **Ви не можете маршрутизувати через одну VPC, щоб дістатися до іншої.** +Після встановлення peer-з'єднання **ресурси в одній VPC можуть отримувати доступ до ресурсів в іншій**. З'єднання між VPC реалізовано через існуючу інфраструктуру мережі AWS, тому воно є високодоступним без вузьких місць пропускної здатності. Оскільки **peered connections працюють ніби як частина однієї мережі**, існують обмеження щодо діапазонів CIDR, які можна використовувати.\ +Якщо у вас **перекриваються або дублюються CIDR** для ваших VPC, то **ви не зможете їх з'єднати через peering**.\ +Кожна AWS VPC **може спілкуватися лише зі своїм peer**. Наприклад, якщо у вас є peering між VPC 1 і VPC 2, і інше з'єднання між VPC 2 і VPC 3, то VPC 1 і VPC 2 можуть спілкуватися безпосередньо, як і VPC 2 і VPC 3, але VPC 1 і VPC 3 не можуть. **Ви не можете маршрутизувати через одну VPC, щоб потрапити до іншої.** ### **VPC Flow Logs** -У межах вашої VPC потенційно може бути сотні або навіть тисячі ресурсів, що обмінюються трафіком між різними subnets — як публічними, так і приватними — а також між різними VPC через VPC peering connections. **VPC Flow Logs дозволяють захоплювати інформацію про IP трафік, що проходить між мережевими інтерфейсами ваших ресурсів у VPC**. +У межах вашої VPC потенційно може бути сотні або навіть тисячі ресурсів, що спілкуються між різними підмережами як публічними, так і приватними, а також між різними VPC через VPC peering connections. **VPC Flow Logs дозволяють захоплювати інформацію про IP-трафік, який проходить між мережевими інтерфейсами ваших ресурсів у VPC**. -На відміну від S3 access logs і CloudFront access logs, **логові дані, згенеровані VPC Flow Logs, не зберігаються в S3. Замість цього дані надсилаються до CloudWatch logs**. +На відміну від S3 access logs і CloudFront access logs, **лог-дані, згенеровані VPC Flow Logs, не зберігаються в S3. Замість цього захоплені лог-дані відправляються в CloudWatch logs**. Обмеження: -- Якщо ви використовуєте VPC peered connection, то ви зможете бачити flow logs peered VPC лише в межах одного акаунту. -- Якщо ви все ще використовуєте ресурси у середовищі EC2-Classic, то, на жаль, ви не зможете отримати інформацію з їх інтерфейсів. -- Після створення VPC Flow Log його не можна змінити. Щоб змінити конфігурацію, потрібно видалити його і створити заново. -- Наступний трафік не контролюється і не захоплюється логами: DHCP трафік у межах VPC, трафік від інстансів, призначений для Amazon DNS Server. -- Будь-який трафік, призначений IP-адресі для VPC default router, та трафік до і з наступних адрес: 169.254.169.254 (використовується для збору instance metadata) і 169.254.169.123 (використовується для Amazon Time Sync Service). -- Трафік, пов'язаний з активацією ліцензії Amazon Windows з Windows instance. -- Трафік між network load balancer interface та endpoint network interface. +- Якщо ви використовуєте VPC peered connection, то ви зможете бачити flow logs peered VPC лише в межах того ж акаунта. +- Якщо у вас ще працюють ресурси у середовищі EC2-Classic, то, на жаль, ви не зможете отримати інформацію з їх інтерфейсів. +- Після створення VPC Flow Log його не можна змінити. Щоб змінити конфігурацію VPC Flow Log, потрібно видалити його й створити заново. +- Наступний трафік не моніториться і не захоплюється логами: DHCP трафік в межах VPC, трафік від інстансів, спрямований до Amazon DNS Server. +- Будь-який трафік, спрямований до IP-адреси VPC default router, та трафік до/від адрес 169.254.169.254 (використовується для збору instance metadata) і 169.254.169.123 (використовується для Amazon Time Sync Service), не захоплюються. +- Трафік, пов'язаний з активацією ліцензії Amazon Windows з Windows інстансу. +- Трафік між інтерфейсом network load balancer та інтерфейсом endpoint network interface. -Для кожного network interface, що публікує дані в CloudWatch log group, буде використовуватись окремий log stream. І в кожному з цих потоків будуть flow log event дані, які показують вміст записів логів. Кожен з цих **логів захоплює дані у вікні приблизно 10–15 хвилин**. +Для кожного network interface, який публікує дані до CloudWatch log group, буде використовуватися окремий log stream. І в кожному з цих стрімів будуть події flow log, що показують вміст записів логів. Кожен із цих **логів захоплює дані протягом вікна приблизно 10–15 хвилин**. ## VPN -### Basic AWS VPN Components +### Основні компоненти AWS VPN 1. **Customer Gateway**: -- Customer Gateway — ресурс, який ви створюєте в AWS, щоб представляти ваш бік VPN-з'єднання. -- Це, по суті, фізичний пристрій або програмний додаток на вашому боці Site-to-Site VPN з'єднання. -- Ви надаєте інформацію про маршрутизацію і публічну IP-адресу вашого мережевого пристрою (наприклад роутера або фаєрвола) в AWS для створення Customer Gateway. -- Служить як точка посилання для налаштування VPN-з'єднання і не несе додаткових витрат. +- Customer Gateway — це ресурс, який ви створюєте в AWS, щоб представляти вашу сторону VPN-з'єднання. +- По суті це фізичний пристрій або програмний додаток на вашій стороні Site-to-Site VPN connection. +- Ви надаєте інформацію маршрутизації та public IP-адресу вашого мережевого пристрою (наприклад маршрутизатора або фаєрволу) в AWS для створення Customer Gateway. +- Служить орієнтиром для налаштування VPN-з'єднання і не тягне за собою додаткових витрат. 2. **Virtual Private Gateway**: -- Virtual Private Gateway (VPG) — це VPN-концентратор на стороні Amazon для Site-to-Site VPN з'єднання. -- Він прикріплюється до вашого VPC і служить як ціль для вашого VPN-з'єднання. -- VPG — це AWS-ендпоінт для VPN-з'єднання. -- Він обробляє захищене спілкування між вашим VPC і вашою on-premises мережею. +- Virtual Private Gateway (VPG) — це VPN-концентратор на стороні Amazon для Site-to-Site VPN connection. +- Він приєднаний до вашого VPC і слугує ціллю для вашого VPN-з'єднання. +- VPG — це endpoint AWS для VPN-з'єднання. +- Він обробляє безпечну комунікацію між вашим VPC і вашим on-premises мережевим середовищем. 3. **Site-to-Site VPN Connection**: - Site-to-Site VPN connection з'єднує вашу on-premises мережу з VPC через захищений IPsec VPN тунель. -- Для цього типу з'єднання потрібні Customer Gateway і Virtual Private Gateway. -- Використовується для безпечного, стабільного та послідовного спілкування між вашим дата-центром або мережею і вашим AWS середовищем. -- Зазвичай використовується для регулярних, довготривалих з'єднань і тарифікується на основі обсягу даних, що передаються через з'єднання. +- Для цього типу з'єднання потрібні Customer Gateway та Virtual Private Gateway. +- Використовується для безпечного, стійкого та стабільного зв'язку між вашим дата-центром або мережею і вашим AWS середовищем. +- Зазвичай використовується для постійних, довготривалих з'єднань і тарифікується на основі кількості даних, переданих через з'єднання. 4. **Client VPN Endpoint**: -- Client VPN endpoint — ресурс, який ви створюєте в AWS для дозволу і управління клієнтськими VPN сесіями. -- Використовується для дозволу окремим пристроям (наприклад ноутбукам, смартфонам тощо) безпечно підключатися до AWS ресурсів або вашої on-premises мережі. -- Відрізняється від Site-to-Site VPN тим, що призначений для індивідуальних клієнтів, а не для з'єднання цілих мереж. -- Кожен клієнтський пристрій використовує VPN client software для встановлення безпечного з'єднання. +- Client VPN endpoint — це ресурс, який ви створюєте в AWS для дозволу та керування client VPN сесіями. +- Використовується для дозволу індивідуальним пристроям (наприклад ноутбукам, смартфонам тощо) безпечно підключатися до AWS ресурсів або вашої on-premises мережі. +- Відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для з'єднання цілих мереж. +- З Client VPN кожен клієнтський пристрій використовує VPN client software для встановлення захищеного з'єднання. ### Site-to-Site VPN -**З'єднує вашу on premisses мережу з вашим VPC.** +**З'єднує вашу on-premises мережу з вашим VPC.** - **VPN connection**: Захищене з'єднання між вашим on-premises обладнанням і вашими VPC. -- **VPN tunnel**: Зашифрований канал, через який дані можуть передаватися від клієнтської мережі до AWS або навпаки. +- **VPN tunnel**: Зашифроване посилання, через яке дані можуть проходити з мережі клієнта до або з AWS. -Кожне VPN-з'єднання включає два VPN tunnels, які можна використовувати одночасно для забезпечення високої доступності. +Кожне VPN-з'єднання включає два VPN тунелі, які ви можете використовувати одночасно для високої доступності. - **Customer gateway**: Ресурс AWS, який надає AWS інформацію про ваш customer gateway device. -- **Customer gateway device**: Фізичний пристрій або програмний додаток на вашому боці Site-to-Site VPN з'єднання. -- **Virtual private gateway**: VPN-концентратор на стороні Amazon для Site-to-Site VPN з'єднання. Ви використовуєте virtual private gateway або transit gateway як шлюз на стороні Amazon для Site-to-Site VPN з'єднання. -- **Transit gateway**: Транзитний хаб, який може використовуватися для взаємозв'язку ваших VPC і on-premises мереж. Ви використовуєте transit gateway або virtual private gateway як шлюз на стороні Amazon для Site-to-Site VPN з'єднання. +- **Customer gateway device**: Фізичний пристрій або програмний додаток на вашій стороні Site-to-Site VPN connection. +- **Virtual private gateway**: VPN-концентратор на стороні Amazon для Site-to-Site VPN connection. Ви використовуєте virtual private gateway або transit gateway як gateway для сторони Amazon у Site-to-Site VPN connection. +- **Transit gateway**: Транзитний хаб, який можна використовувати для з'єднання ваших VPC і on-premises мереж. Ви використовуєте transit gateway або virtual private gateway як gateway для сторони Amazon у Site-to-Site VPN connection. -#### Limitations +#### Обмеження -- IPv6 трафік не підтримується для VPN з'єднань на virtual private gateway. +- IPv6 трафік не підтримується для VPN-з'єднань на virtual private gateway. - AWS VPN connection не підтримує Path MTU Discovery. Крім того, врахуйте наступне при використанні Site-to-Site VPN. -- При підключенні ваших VPC до спільної on-premises мережі рекомендується використовувати неперекривні CIDR блоки для ваших мереж. +- При підключенні ваших VPC до спільної on-premises мережі рекомендується використовувати не перекриваючі CIDR блоки для ваших мереж. ### Client VPN -**Підключення з вашого пристрою до вашого VPC** +**Підключення з вашого пристрою до VPC** -#### Concepts +#### Концепції -- **Client VPN endpoint:** Ресурс, який ви створюєте і конфігуруєте для дозволу та управління клієнтськими VPN сесіями. Це ресурс, на якому завершуються всі клієнтські VPN сесії. -- **Target network:** Target network — це мережа, яку ви асоціюєте з Client VPN endpoint. **Subnet із VPC є target network**. Асигнування subnet до Client VPN endpoint дозволяє встановлювати VPN сесії. Ви можете асоціювати кілька subnet з Client VPN endpoint для високої доступності. Всі subnets повинні бути з одного VPC. Кожна subnet повинна належати різній Availability Zone. -- **Route**: Кожен Client VPN endpoint має route table, що описує доступні маршрути призначення мереж. Кожен маршрут у таблиці маршрутизації визначає шлях для трафіку до конкретних ресурсів або мереж. -- **Authorization rules:** Правило авторизації **обмежує користувачів, які можуть отримати доступ до мережі**. Для певної мережі ви налаштовуєте Active Directory або identity provider (IdP) групу, якій дозволено доступ. Лише користувачі, що належать до цієї групи, можуть отримати доступ до вказаної мережі. **За замовчуванням немає authorization rules** і вам потрібно їх налаштувати, щоб дозволити користувачам доступ до ресурсів і мереж. -- **Client:** Кінцевий користувач, який підключається до Client VPN endpoint для встановлення VPN сесії. Кінцеві користувачі повинні завантажити OpenVPN client і використовувати Client VPN configuration file, який ви створили, щоб встановити VPN сесію. -- **Client CIDR range:** Діапазон IP адрес, з якого призначаються IP адреси клієнтів. Кожне з'єднання з Client VPN endpoint отримує унікальну IP адресу з client CIDR range. Ви обираєте client CIDR range, наприклад, `10.2.0.0/16`. -- **Client VPN ports:** AWS Client VPN підтримує порти 443 і 1194 для TCP і UDP. За замовчуванням порт 443. -- **Client VPN network interfaces:** Коли ви асоціюєте subnet з вашим Client VPN endpoint, ми створюємо Client VPN network interfaces у цій subnet. **Трафік, що відправляється до VPC з Client VPN endpoint, надсилається через Client VPN network interface**. Потім застосовується Source network address translation (SNAT), де вихідна IP адреса з client CIDR range транслюється у IP адресу Client VPN network interface. -- **Connection logging:** Ви можете увімкнути logging з'єднань для вашого Client VPN endpoint, щоб логувати події підключення. Ви можете використовувати цю інформацію для проведення судово-експертних розслідувань, аналізу того, як використовується ваш Client VPN endpoint, або відлагодження проблем зі з'єднанням. -- **Self-service portal:** Ви можете увімкнути self-service portal для вашого Client VPN endpoint. Клієнти можуть увійти в веб-портал за допомогою своїх облікових даних і завантажити останню версію Client VPN endpoint configuration file або останню версію клієнта, наданого AWS. +- **Client VPN endpoint:** Ресурс, який ви створюєте і конфігуруєте для дозволу та керування client VPN сесіями. Це ресурс, де завершуються всі client VPN сесії. +- **Target network:** Target network — це мережа, яку ви асоціюєте з Client VPN endpoint. **Підмережа з VPC є target network**. Асоціація підмережі з Client VPN endpoint дозволяє встановлювати VPN сесії. Ви можете асоціювати кілька підмереж з Client VPN endpoint для високої доступності. Всі підмережі мають бути з одного VPC. Кожна підмережа має належати до різної Availability Zone. +- **Route**: Кожен Client VPN endpoint має route table, який описує доступні маршрути до мереж призначення. Кожний маршрут у таблиці маршрутів визначає шлях для трафіку до конкретних ресурсів або мереж. +- **Authorization rules:** Правило авторизації **обмежує користувачів, які можуть отримати доступ до мережі**. Для певної мережі ви конфігуруєте Active Directory або групу identity provider (IdP), якій дозволено доступ. Тільки користувачі, що належать до цієї групи, можуть отримати доступ до вказаної мережі. **За замовчуванням правил авторизації немає**, і вам потрібно налаштувати їх, щоб дозволити користувачам доступ до ресурсів і мереж. +- **Client:** Кінцевий користувач, який підключається до Client VPN endpoint для встановлення VPN сесії. Кінцевим користувачам потрібно завантажити OpenVPN client і використовувати конфігураційний файл Client VPN endpoint, який ви створили, для встановлення VPN сесії. +- **Client CIDR range:** Діапазон IP-адрес, з якого призначаються IP-адреси клієнтам. Кожне з'єднання з Client VPN endpoint отримує унікальну IP-адресу з client CIDR range. Ви обираєте client CIDR range, наприклад, `10.2.0.0/16`. +- **Client VPN ports:** AWS Client VPN підтримує порти 443 та 1194 як для TCP, так і для UDP. За замовчуванням використовується порт 443. +- **Client VPN network interfaces:** Коли ви асоціюєте підмережу з вашим Client VPN endpoint, AWS створює Client VPN network interfaces в цій підмережі. **Трафік, який надходить до VPC з Client VPN endpoint, надсилається через Client VPN network interface**. Потім застосовується Source Network Address Translation (SNAT), де вихідна IP-адреса з client CIDR range транслюється в IP-адресу Client VPN network interface. +- **Connection logging:** Ви можете увімкнути connection logging для вашого Client VPN endpoint, щоб логувати події підключення. Ви можете використовувати цю інформацію для проведення судово-технічного аналізу, аналізу використання Client VPN endpoint або відлагодження проблем підключення. +- **Self-service portal:** Ви можете увімкнути self-service portal для вашого Client VPN endpoint. Клієнти можуть увійти в веб-портал за своїми обліковими даними і завантажити останню версію конфігураційного файлу Client VPN endpoint або останню версію клієнта, надану AWS. -#### Limitations +#### Обмеження -- **Client CIDR ranges cannot overlap with the local CIDR** VPC, в якому знаходиться асоційована subnet, або будь-які маршрути, додані вручну до route table Client VPN endpoint. -- Client CIDR ranges повинні мати розмір блоку принаймні **/22** і **не більше ніж /12.** -- **Частина адрес** у client CIDR range використовується для **підтримки моделі доступності** Client VPN endpoint і не може бути призначена клієнтам. Тому рекомендується **призначити CIDR блок, що містить вдвічі більше IP адрес, ніж потрібно**, щоб підтримати максимальну кількість одночасних з'єднань, які ви плануєте. +- **Client CIDR ranges cannot overlap with the local CIDR** VPC, в якій знаходиться асоційована підмережа, або з будь-якими маршрутами, доданими вручну до route table Client VPN endpoint. +- Client CIDR ranges мають мати розмір блоку не менше **/22** і не бути більшими за **/12.** +- **Частина адрес** в client CIDR range використовується для **підтримки моделі доступності** Client VPN endpoint і не може бути призначена клієнтам. Тому рекомендується **призначити CIDR блок, який містить у два рази більше IP-адрес, ніж потрібно**, щоб підтримати максимальну кількість одночасних з'єднань, яку ви плануєте. - **client CIDR range не можна змінити** після створення Client VPN endpoint. -- **subnets**, асоційовані з Client VPN endpoint, **повинні бути в одному VPC**. -- Ви **не можете асоціювати кілька subnets з однієї Availability Zone з Client VPN endpoint**. -- Client VPN endpoint **не підтримує асоціації subnet у VPC з dedicated tenancy**. +- **Підмережі**, асоційовані з Client VPN endpoint, **повинні бути в одному VPC**. +- Ви **не можете асоціювати кілька підмереж з одного Availability Zone з Client VPN endpoint**. +- Client VPN endpoint **не підтримує асоціації підмереж у VPC з dedicated tenancy**. - Client VPN підтримує лише **IPv4** трафік. - Client VPN **не є сумісним** з Federal Information Processing Standards (**FIPS**). -- Якщо багатофакторна аутентифікація (MFA) вимкнена для вашого Active Directory, пароль користувача не може мати такий формат. +- Якщо multi-factor authentication (MFA) відключено для вашого Active Directory, пароль користувача не може мати такий формат. ``` SCRV1:: ``` -- Self-service portal **не доступний** для клієнтів, які автентифікуються за допомогою mutual authentication. +- Self-service portal **не доступний для клієнтів, які автентифікуються з використанням mutual authentication**. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index 4a09efcc1..4be32df6f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -4,21 +4,21 @@ ## S3 -Amazon S3 — це сервіс, який дозволяє вам **зберігати великі обсяги даних**. +Amazon S3 — сервіс, який дозволяє вам **зберігати великі обсяги даних**. -Amazon S3 надає кілька опцій для забезпечення **protection** даних у стані спокою (at REST). До опцій належать **Permission** (Policy), **Encryption** (Client and Server Side), **Bucket Versioning** та **MFA** **based delete**. **Користувач може ввімкнути** будь-яку з цих опцій для захисту даних. **Data replication** — це вбудована функція AWS, коли **S3 автоматично реплікує кожен об’єкт по всіх Availability Zones**, і організації не потрібно додатково її вмикати. +Amazon S3 пропонує кілька варіантів для забезпечення **захисту** даних у стані спокою (at REST). Варіанти включають **Permission** (Policy), **Encryption** (Client and Server Side), **Bucket Versioning** та **MFA** **based delete**. **User can enable** будь-який із цих варіантів для досягнення захисту даних. **Data replication** — це внутрішня можливість AWS, коли **S3 автоматично реплікує кожний об'єкт по всіх Availability Zones**, і організації в цьому випадку не потрібно її вмикати. -За допомогою дозволів на основі ресурсів (resource-based permissions) ви можете окремо визначати дозволи для піддиректорій вашого bucket. +За допомогою resource-based permissions ви можете окремо визначати дозволи для підкаталогів вашого bucket. ### Bucket Versioning and MFA based delete -Коли bucket versioning увімкнено, будь-яка дія, яка намагається змінити файл всередині файлу, створить нову версію файлу, також зберігаючи попередній вміст. Тому його вміст не буде перезаписано. +Коли Bucket Versioning увімкнено, будь-яка дія, яка намагається змінити файл, створює нову версію файлу, зберігаючи також попередній вміст. Отже, вміст не перезаписується. -Крім того, MFA based delete запобіжить видаленню версій файлів у S3 bucket та вимкненню Bucket Versioning, тому зловмисник не зможе змінити ці файли. +Крім того, MFA based delete завадить видаленню версій файлів у S3 bucket і запобіжить вимкненню Bucket Versioning, тож attacker не зможе змінити ці файли. ### S3 Access logs -Можна **увімкнути S3 access login** (за замовчуванням вимкнено) для певного bucket і зберігати логи в іншому bucket, щоб знати, хто отримує доступ до bucket (обидва bucket повинні бути в одному регіоні). +Можна **увімкнути S3 access login** (за замовчуванням вимкнено) для певного bucket і зберігати логи в іншому bucket, щоб знати, хто отримує доступ до bucket (обидва bucket мають бути в одному регіоні). ### S3 Presigned URLs @@ -26,14 +26,14 @@ Amazon S3 надає кілька опцій для забезпечення **p ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -presigned URL можна **створити через cli, використовуючи credentials певного principal, що має доступ до object** (якщо account, який ви використовуєте, не має доступу, буде створено коротший presigned URL, але він буде марним) +Presigned URL можна **створити з cli, використовуючи облікові дані principal, який має доступ до об'єкта** (якщо акаунт, який ви використовуєте, не має доступу, буде створено коротший presigned URL, але він буде марним) ```bash aws s3 presign --region 's3:///' ``` > [!NOTE] -> Єдиним необхідним дозволом для генерації presigned URL є дозвіл, що надається, тому для попередньої команди єдиний дозвіл, необхідний principal — `s3:GetObject` +> Єдиний необхідний дозвіл для створення попередньо підписаного URL — це дозвіл, що надається, тому для попередньої команди єдиний дозвіл, потрібний принципалу, — `s3:GetObject` -Також можна створювати presigned URLs з **іншими дозволами**: +Також можливо створювати попередньо підписані URL з **іншими дозволами**: ```python import boto3 url = boto3.client('s3').generate_presigned_url( @@ -42,38 +42,38 @@ Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600 ) ``` -### S3 Encryption Mechanisms +### Механізми шифрування S3 -**DEK означає ключ шифрування даних (Data Encryption Key)** — це ключ, який завжди генерується і використовується для шифрування даних. +**DEK означає Data Encryption Key** і це ключ, який завжди генерується і використовується для шифрування даних.
-Server-side encryption with S3 managed keys, SSE-S3 +Серверне шифрування з керованими S3 ключами, SSE-S3 -Цей варіант вимагає мінімальної конфігурації, і все управління використовуваними ключами шифрування здійснюється AWS. Все, що потрібно — завантажити ваші дані, і S3 обробить усі інші аспекти. Кожному bucket в S3-акаунті призначено bucket key. +Цей варіант вимагає мінімальної конфігурації — все управління ключами шифрування здійснюється AWS. Все, що потрібно зробити — це **завантажити дані, і S3 потурбується про решту**. Кожному bucket в обліковому записі S3 призначається bucket key. -- Encryption: +- Шифрування: - Object Data + created plaintext DEK --> Encrypted data (stored inside S3) - Created plaintext DEK + S3 Master Key --> Encrypted DEK (stored inside S3) and plain text is deleted from memory -- Decryption: +- Розшифрування: - Encrypted DEK + S3 Master Key --> Plaintext DEK - Plaintext DEK + Encrypted data --> Object Data -Зверніть увагу, що в цьому випадку **ключ керується AWS** (ротація лише раз на 3 роки). Якщо ви використовуєте власний ключ, ви зможете виконувати ротацію, вимикати та застосовувати контролі доступу. +Зверніть увагу, що в цьому випадку **ключ управляється AWS** (ротація лише раз на 3 роки). Якщо ви використовуєте власний ключ, ви зможете виконувати ротацію, вимикати та застосовувати контроль доступу.
-Server-side encryption with KMS managed keys, SSE-KMS +Серверне шифрування з KMS керованими ключами, SSE-KMS -Цей метод дозволяє S3 використовувати Key Management Service для генерації ваших data encryption keys. KMS дає значно більшу гнучкість у керуванні ключами. Наприклад, ви можете відключати, обертати (rotate) та застосовувати контролі доступу до CMK, а також відстежувати їх використання за допомогою AWS Cloud Trail. +Цей метод дозволяє S3 використовувати Key Management Service для генерації ваших data encryption keys. KMS дає значно більшу гнучкість у тому, як керуються ключі. Наприклад, ви можете відключати, обертати та застосовувати контроль доступу до CMK, а також відстежувати їх використання за допомогою AWS Cloud Trail. -- Encryption: +- Шифрування: - S3 request data keys from KMS CMK - KMS uses a CMK to generate the pair DEK plaintext and DEK encrypted and send them to S£ -- S3 uses the paintext key to encrypt the data, store the encrypted data and the encrypted key and deletes from memory the plain text key -- Decryption: +- S3 uses the plaintext key to encrypt the data, store the encrypted data and the encrypted key and deletes from memory the plain text key +- Розшифрування: - S3 ask to KMS to decrypt the encrypted data key of the object - KMS decrypt the data key with the CMK and send it back to S3 - S3 decrypts the object data @@ -82,16 +82,16 @@ ExpiresIn=3600
-Server-side encryption with customer provided keys, SSE-C +Серверне шифрування з ключами, наданими клієнтом, SSE-C -Цей варіант дає змогу надати власний master key, який ви, можливо, вже використовуєте поза AWS. Ваш customer-provided key буде відправлений разом із даними до S3, де S3 виконуватиме шифрування за вас. +Ця опція дає можливість надати власний master key, який ви, можливо, вже використовуєте поза AWS. Ваш ключ, наданий клієнтом, надсилається разом з даними до S3, де S3 виконує шифрування. -- Encryption: +- Шифрування: - The user sends the object data + Customer key to S3 - The customer key is used to encrypt the data and the encrypted data is stored - a salted HMAC value of the customer key is stored also for future key validation - the customer key is deleted from memory -- Decryption: +- Розшифрування: - The user send the customer key - The key is validated against the HMAC value stored - The customer provided key is then used to decrypt the data @@ -100,16 +100,16 @@ ExpiresIn=3600
-Client-side encryption with KMS, CSE-KMS +Клієнтське шифрування з KMS, CSE-KMS -Аналогічно до SSE-KMS, цей метод також використовує Key Management Service для генерації data encryption keys. Однак цього разу KMS викликається клієнтом, а не S3. Шифрування відбувається на боці клієнта, після чого зашифровані дані відправляються до S3 для зберігання. +Аналогічно до SSE-KMS, цей підхід також використовує KMS для генерації data encryption keys. Однак цього разу виклик до KMS робить клієнт, а не S3. Шифрування відбувається на стороні клієнта, після чого зашифровані дані відправляються до S3 для зберігання. -- Encryption: +- Шифрування: - Client request for a data key to KMS - KMS returns the plaintext DEK and the encrypted DEK with the CMK - Both keys are sent back - The client then encrypts the data with the plaintext DEK and send to S3 the encrypted data + the encrypted DEK (which is saved as metadata of the encrypted data inside S3) -- Decryption: +- Розшифрування: - The encrypted data with the encrypted DEK is sent to the client - The client asks KMS to decrypt the encrypted key using the CMK and KMS sends back the plaintext DEK - The client can now decrypt the encrypted data @@ -118,23 +118,23 @@ ExpiresIn=3600
-Client-side encryption with customer provided keys, CSE-C +Клієнтське шифрування з ключами, наданими клієнтом, CSE-C -За допомогою цього механізму ви можете використовувати власні ключі і AWS-SDK клієнт для шифрування даних перед відправкою їх до S3 для зберігання. +За цією схемою ви можете використовувати власні ключі й застосувати AWS-SDK клієнт для шифрування даних перед відправкою в S3. -- Encryption: +- Шифрування: - The client generates a DEK and encrypts the plaintext data - Then, using it's own custom CMK it encrypts the DEK - submit the encrypted data + encrypted DEK to S3 where it's stored -- Decryption: +- Розшифрування: - S3 sends the encrypted data and DEK - As the client already has the CMK used to encrypt the DEK, it decrypts the DEK and then uses the plaintext DEK to decrypt the data
-### **Enumeration** +### **Перерахування** -Один із традиційних основних шляхів компрометації AWS orgs починається з компрометації публічно доступних buckets. **You can find** [**public buckets enumerators in this page**](../aws-unauthenticated-enum-access/index.html#s3-buckets)**.** +Один із традиційних основних шляхів компрометації AWS організацій починається з отримання доступу до публічно доступних бакетів. **You can find** [**public buckets enumerators in this page**](../aws-unauthenticated-enum-access/index.html#s3-buckets)**.** ```bash # Get buckets ACLs aws s3api get-bucket-acl --bucket @@ -229,7 +229,7 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### dual-stack -Ви можете отримати доступ до S3 бакета через dual-stack endpoint, використовуючи virtual hosted-style або path-style ім'я endpoint. Це корисно для доступу до S3 через IPv6. +Ви можете отримати доступ до S3 bucket через dual-stack endpoint, використовуючи virtual hosted-style або path-style endpoint name. Це корисно для доступу до S3 через IPv6. Dual-stack endpoints використовують наступний синтаксис: @@ -238,7 +238,7 @@ Dual-stack endpoints використовують наступний синта ### Privesc -На наступній сторінці ви можете дізнатися, як **abuse S3 permissions to escalate privileges**: +In the following page you can check how to **abuse S3 permissions to escalate privileges**: {{#ref}} ../aws-privilege-escalation/aws-s3-privesc/README.md @@ -266,21 +266,21 @@ Dual-stack endpoints використовують наступний синта ### S3 HTTP Cache Poisoning Issue -[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) було можливо кешувати відповідь довільного бакета так, ніби вона належала іншому. Це могло б бути використано для зміни, наприклад, відповідей javascript-файлів і компрометації довільних сторінок, які використовують S3 для зберігання статичного коду. +[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) було можливо кешувати response довільного bucket так, ніби він належав іншому. Це могло бути використано для зміни, наприклад, javascript file responses і скомпрометувати довільні сторінки, що використовують S3 для зберігання статичного коду. ## Amazon Athena -Amazon Athena — це інтерактивний сервіс запитів, який полегшує **аналіз даних** безпосередньо в Amazon Simple Storage Service (Amazon **S3**) **за допомогою** стандартного **SQL**. +Amazon Athena — це інтерактивний сервіс запитів, який полегшує **аналіз даних** безпосередньо в Amazon Simple Storage Service (Amazon **S3**) **з використанням** стандартного **SQL**. -Потрібно **підготувати реляційну DB-таблицю** з форматом вмісту, який буде з'являтися в моніторованих S3 бакетах. Після цього Amazon Athena зможе заповнювати таблицю з логів, щоб ви могли її опитувати. +Потрібно **підготувати таблицю реляційної БД** з форматом вмісту, який буде з'являтися в відстежуваних S3 buckets. І тоді Amazon Athena зможе наповнити БД з логів, щоб ви могли виконувати запити. -Amazon Athena підтримує **можливість виконувати запити до S3-даних, які вже зашифровані**, і, якщо налаштовано відповідним чином, **Athena також може шифрувати результати запиту, які потім можна зберігати в S3**. +Amazon Athena підтримує **можливість запитувати дані S3, які вже зашифровані**, і якщо налаштовано, **Athena також може зашифрувати результати запиту, які потім можуть зберігатися в S3**. -**Це шифрування результатів не залежить від підлягаючих запиту S3-даних**, тобто навіть якщо S3-дані не зашифровані, результати запиту можуть бути зашифровані. Варто зауважити, що Amazon Athena підтримує дані, зашифровані лише наступними методами шифрування S3: **SSE-S3, SSE-KMS, and CSE-KMS**. +**Це шифрування результатів незалежне від вихідних запитаних даних S3**, тобто навіть якщо дані S3 не зашифровані, результати запитів можуть бути зашифровані. Слід пам'ятати, що Amazon Athena підтримує лише дані, які були **зашифровані** за допомогою **наступних методів шифрування S3**, **SSE-S3, SSE-KMS, and CSE-KMS**. -SSE-C і CSE-C не підтримуються. Крім того, важливо розуміти, що Amazon Athena виконуватиме запити лише до **зашифрованих об'єктів, які знаходяться в тому ж регіоні, що й сам запит**. Якщо потрібно виконати запит до S3-даних, зашифрованих за допомогою KMS, користувачу Athena потрібні спеціальні дозволи для виконання такого запиту. +SSE-C та CSE-C не підтримуються. Крім того, важливо розуміти, що Amazon Athena виконуватиме запити лише проти **зашифрованих об'єктів, які знаходяться в тому ж регіоні, що й сам запит**. Якщо вам потрібно запитувати дані S3, зашифровані з використанням KMS, то користувачеві Athena потрібні конкретні дозволи, щоб виконати такий запит. -### Перерахування +### Enumeration ```bash # Get catalogs aws athena list-data-catalogs