Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ec2-

This commit is contained in:
Translator
2026-02-27 14:14:51 +00:00
parent 69a4f53076
commit 6f92553971
2 changed files with 136 additions and 136 deletions
@@ -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:
<figure><img src="https://lh5.googleusercontent.com/LliB7eb3cYfkEyOpyw1-eYgWsn2kq1yF6uRn5VYndvOuTvDlURimYx9UvuK8F2impTLmx50mid4MdTXE-Ljt2i_rxaIfnKUdji_hFjCdU9tdoW-axng9-W4tSL71gbbjrPQ7IYY5lAdH_G3UoMRMGGGOxQ=s2048" alt=""><figcaption></figcaption></figure>
### 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 <a href="#what-is-components" id="what-is-components"></a>
**Підключення з вашого пристрою до вашого 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:<base64_encoded_string>:<base64_encoded_string>
```
- Self-service portal **не доступний** для клієнтів, які автентифікуються за допомогою mutual authentication.
- Self-service portal **не доступний для клієнтів, які автентифікуються з використанням mutual authentication**.
{{#include ../../../../banners/hacktricks-training.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://<bucket-name>.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 <bucket-region> 's3://<bucket-name>/<file-name>'
```
> [!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** і це ключ, який завжди генерується і використовується для шифрування даних.
<details>
<summary><strong>Server-side encryption with S3 managed keys, SSE-S3</strong></summary>
<summary><strong>Серверне шифрування з керованими S3 ключами, SSE-S3</strong></summary>
Цей варіант вимагає мінімальної конфігурації, і все управління використовуваними ключами шифрування здійснюється 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 роки). Якщо ви використовуєте власний ключ, ви зможете виконувати ротацію, вимикати та застосовувати контроль доступу.
</details>
<details>
<summary><strong>Server-side encryption with KMS managed keys, SSE-KMS</strong></summary>
<summary><strong>Серверне шифрування з KMS керованими ключами, SSE-KMS</strong></summary>
Цей метод дозволяє 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
<details>
<summary><strong>Server-side encryption with customer provided keys, SSE-C</strong></summary>
<summary><strong>Серверне шифрування з ключами, наданими клієнтом, SSE-C</strong></summary>
Цей варіант дає змогу надати власний 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
<details>
<summary><strong>Client-side encryption with KMS, CSE-KMS</strong></summary>
<summary><strong>Клієнтське шифрування з KMS, CSE-KMS</strong></summary>
Аналогічно до 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
<details>
<summary><strong>Client-side encryption with customer provided keys, CSE-C</strong></summary>
<summary><strong>Клієнтське шифрування з ключами, наданими клієнтом, CSE-C</strong></summary>
За допомогою цього механізму ви можете використовувати власні ключі і 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
</details>
### **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 <bucket-name>
@@ -229,7 +229,7 @@ aws s3api put-object-acl --bucket <bucket-name> --key flag --access-control-poli
```
### dual-stack <a href="#dual-stack-endpoints-description" id="dual-stack-endpoints-description"></a>
Ви можете отримати доступ до 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 <a href="#heading-s3-http-desync-cache-poisoning-issue" id="heading-s3-http-desync-cache-poisoning-issue"></a>
[**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