46 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Method 1 - Build Locally and Import to AWS
 | |
| 
 | |
| This method involves using Terraform to bring DetectionLab infrastructure online by first building it locally using Virtualbox/VMware and then [importing the resulting virtual machines](https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html#import-vm-image) as AMIs on AWS.
 | |
| 
 | |
| The supplied Terraform configuration can then be used to create EC2 instances and all requisite networking components.
 | |
| 
 | |
| ## Prerequisites
 | |
| * A machine to build DetectionLab with
 | |
| * An AWS account
 | |
| * An AWS user and access keys to use with the AWS CLI
 | |
| * Optional but recommended: a separate user for Terraform
 | |
| 
 | |
| ## Step by step guide
 | |
| 
 | |
| 1. Build the lab by following the [README](https://github.com/clong/DetectionLab/blob/master/README.md)
 | |
| 2. [Configure the AWS command line utility](https://docs.aws.amazon.com/polly/latest/dg/setup-aws-cli.html)
 | |
| 3. [Create an S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html). You will upload the DetectionLab VMs to this bucket later.
 | |
| 
 | |
| 4. For the VM importation to work, you must create a role named `vmimport` with a trust relationship policy document that allows VM Import to assume the role, and you must attach an IAM policy to the role:
 | |
| 
 | |
|   ```aws iam create-role --role-name vmimport --assume-role-policy-document file:///path/to/DetectionLab/Terraform/vm_import/trust-policy.json```
 | |
| 
 | |
| 5. Edit `/path/to/DetectionLab/Terraform/vm_import/role-policy.json` and insert the name of the bucket you created in step 3 on lines 12-13, replacing `YOUR_BUCKET_GOES_HERE` with the name of your bucket.
 | |
| 
 | |
| 6. Use the create-role command to create a role named vmimport and give VM Import/Export access to it:
 | |
| 
 | |
|  ```aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file:///path/to/DetectionLab/Terraform/vm_import/role-policy.json```
 | |
| 
 | |
| 7. Export the DetectionLab VMs as single file OVA files if they are not already in that format
 | |
| 8. [Upload the OVAs to the S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) you created in step three
 | |
| 9. Edit the `logger.json`, `dc.json`, `wef.json` and `win10.json` files and modify the S3Bucket and S3Key headers to match the location of the OVA files in your S3 bucket.
 | |
| 10. Import the VMs from S3 as AMIs by running the following commands:
 | |
| ```
 | |
| aws ec2 import-image --description "dc" --license-type byol --disk-containers file:///path/to/DetectionLab/Terraform/vm_import/dc.json
 | |
| aws ec2 import-image --description "wef" --license-type byol --disk-containers file:///path/to/DetectionLab/Terraform/vm_import/wef.json
 | |
| aws ec2 import-image --description "win10" --license-type byol --disk-containers file:///path/to/DetectionLab/Terraform/vm_import/win10.json
 | |
| aws ec2 import-image --description "logger" --license-type byol --disk-containers file:///path/to/DetectionLab/Terraform/vm_import/logger.json
 | |
| ```
 | |
| 11. Check on the status of the importation with the following command:
 | |
| 
 | |
|   ```aws ec2 describe-import-image-tasks --import-task-ids <import-ami-xxxxxxxxxxxxxxxxx>```
 | |
| 
 | |
| 12. Fill out the variables in `/path/to/DetectionLab/Terraform/terraform.tfvars`
 | |
| 13. Run `terraform init` to setup the initial Terraform configuration
 | |
| 14. `cd /path/to/DetectionLab/Terraform/Method1 && terraform apply`
 | 
