added details for ec2
This commit is contained in:
parent
1ce5afd912
commit
5378eca051
|
@ -681,9 +681,123 @@ How to find a potentially interesting CloudFront assets domain
|
||||||
|
|
||||||
### EC2
|
### EC2
|
||||||
|
|
||||||
Virtual machine service.
|
Deploy service instances of Virtual machines inside a VPC.
|
||||||
|
Deployment EC2 instances into 26 regions. Supports multiple OSs.
|
||||||
|
On-demand billing.
|
||||||
|
|
||||||
### Restore an Amazon Machine Image
|
#### Connect to an EC2 Instance
|
||||||
|
|
||||||
|
Connect to the instance using SSH, RDP, SSM, serial console or webconsole.
|
||||||
|
A keypair is needed to be owned to connect, for eaxmple EC2 Connect uses
|
||||||
|
temporary keys. Serial Console has be activated by the adminstrator and
|
||||||
|
the user which will be used to login needs a password set.
|
||||||
|
|
||||||
|
The URL scheme for EC2 Connect through the webconsole is the following.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
https://console.aws.amazon.com/ec2/v2/connect/$USERNAME/$INSTANCE_ID
|
||||||
|
```
|
||||||
|
|
||||||
|
| Method | Network Access needed | Requires Agent | Requires IAM Permissions |
|
||||||
|
+--------+-----------------------+----------------+--------------------------+
|
||||||
|
| SSH/RDP | YES | NO | NO |
|
||||||
|
| Instance Connect | YES | YES (amazon linux 2) | NO |
|
||||||
|
| SSM Run Command | No | YES | YES |
|
||||||
|
| SSM Session Manager | NO | YES | YES |
|
||||||
|
| Serial Console | No | Password needed | NO |
|
||||||
|
|
||||||
|
Instance Connect and the SSM Session Manager can be used to reset the root
|
||||||
|
password via `sudo passwd root`. After that it is possible to connect to the
|
||||||
|
root user, e.g. using serial console or just use `sudo su root` or `su root` directly.
|
||||||
|
|
||||||
|
#### EC2 and IAM
|
||||||
|
|
||||||
|
EC2 instances can use nearly any other service provided by AWS.
|
||||||
|
There only needs to be access to the credentials. This is can be done through
|
||||||
|
the Instance MetaData Service (IMDS). The IMDS is available through HTTP on
|
||||||
|
IP address `169.254.169.254` inside every EC2 instance.
|
||||||
|
|
||||||
|
##### Request Credentials through IMDS
|
||||||
|
|
||||||
|
There are two versions of IMDS in place right now.
|
||||||
|
Regardless of the version a name of a role needs to be requested through the
|
||||||
|
IMDS using curl, which is then used to query the token for said role.
|
||||||
|
|
||||||
|
###### Query IMDSv1 Permissions
|
||||||
|
|
||||||
|
Query the name of the role via curl.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
role_name=$(curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/)
|
||||||
|
```
|
||||||
|
|
||||||
|
Through the knowledge of the role name we can request the credentials of that role.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/${role_name}
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Query IMDSv2 Permissions
|
||||||
|
|
||||||
|
A token is needed to curl for the name of the role. This is done using curl.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
TOKEN=$(curl -s -XPUT http://169.254.169.254/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
|
||||||
|
```
|
||||||
|
|
||||||
|
The token is used to query the name of the role via curl.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
role_name=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/)
|
||||||
|
```
|
||||||
|
|
||||||
|
Both, token and name of the role can then be used to request the credentials
|
||||||
|
via curl.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/${role_name}
|
||||||
|
```
|
||||||
|
|
||||||
|
PS:
|
||||||
|
If you want to activate IMDSv2 an instance ID is needed to activate it through aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
|
||||||
|
region_name=<region_name>
|
||||||
|
aws ec2 modify-instance-metadata-options --instance-id $instance_id --https-tokens required --region $region_name
|
||||||
|
```
|
||||||
|
|
||||||
|
#### EC2 & Elastic Network Interface (ENI)
|
||||||
|
|
||||||
|
Every EC2 instance has at least one ENI to be made available on the network.
|
||||||
|
There is a security group bound to each ENI to limit communication to the EC2
|
||||||
|
instance. Such security contain for example which IP addresses can access the
|
||||||
|
instance, on which ports and which protocols can be used to access it.
|
||||||
|
|
||||||
|
List available ENIs through the webshell of the account.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 describe-network-interfaces
|
||||||
|
```
|
||||||
|
|
||||||
|
#### EC2 & ELastic Block Storage (EBS)
|
||||||
|
|
||||||
|
An EC2 instance has EBS as its set block device, either SSD or HDD.
|
||||||
|
|
||||||
|
EBS storage is persistent, snapshots can be created.
|
||||||
|
In contrast to other storage solutions. These other, ephemeral storage
|
||||||
|
solutions can not be snapshotted.
|
||||||
|
|
||||||
|
Snapshots can be created from EBSs, which are stored in S3 buckets.
|
||||||
|
Snapshots can be encrypted through KMS and can be shared accross accounts.
|
||||||
|
|
||||||
|
Snapshots deliver a lot of useful content. List metadata of a snapshot via aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 describe-snapshots --snapshot-ids <snap-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Restore an Amazon Machine Image
|
||||||
|
|
||||||
An EC2 VM can be created from an Amazon Machine Image,
|
An EC2 VM can be created from an Amazon Machine Image,
|
||||||
that can be found in some S3 buckets.
|
that can be found in some S3 buckets.
|
||||||
|
|
Loading…
Reference in New Issue