trying to fix ssh key issue

This commit is contained in:
n0mad1k
2025-05-13 14:23:36 -04:00
parent 67aa819ceb
commit 2386cac0ef
4 changed files with 153 additions and 129 deletions
+33 -18
View File
@@ -87,21 +87,6 @@
- "Using AMI ID: {{ ami_id | default('AMI not defined') }}"
- "Detected SSH user: {{ ami_ssh_user }}"
# Fix: Use the deployment_id key name if c2deploy prefix exists (for consistency with tool scripts)
- name: Create EC2 key pair with consistent naming
amazon.aws.ec2_key:
name: "c2deploy_{{ deployment_id }}"
region: "{{ aws_c2_region }}"
state: present
register: c2_key_pair
- name: Save private key with consistent naming
copy:
content: "{{ c2_key_pair.key.private_key }}"
dest: "~/.ssh/c2deploy_{{ deployment_id }}.pem"
mode: "0600"
when: c2_key_pair.changed and c2_key_pair.key.private_key is defined
# Create new infrastructure only if not using shared
- name: Create VPC
amazon.aws.ec2_vpc_net:
@@ -212,10 +197,12 @@
# Management access only from operator IP
- proto: tcp
ports: 22
cidr_ip: "{{ operator_ip }}/32"
cidr_ip: "{{ operator_ip }}"
proto: tcp
- proto: tcp
ports: "{{ havoc_teamserver_port | default(40056) }}"
cidr_ip: "{{ operator_ip }}/32"
cidr_ip: "{{ operator_ip }}"
proto: tcp
# Allow traffic only from redirector
- proto: tcp
ports:
@@ -225,17 +212,45 @@
- "{{ havoc_https_port | default(443) }}"
- "{{ gophish_admin_port }}"
cidr_ip: "{{ redirector_ip }}/32"
proto: tcp
rules_egress:
- proto: -1
cidr_ip: 0.0.0.0/0
state: present
register: security_group
# Generate or import SSH key for the deployment
- name: Check if deployment SSH key already exists locally
stat:
path: "~/.ssh/c2deploy_{{ deployment_id }}.pem"
register: ssh_key_file
- name: Ensure proper permissions on SSH key
file:
path: "~/.ssh/c2deploy_{{ deployment_id }}"
mode: '0600'
when: not ssh_key_file.stat.exists
- name: Check if key pair exists in AWS
amazon.aws.ec2_key_info:
region: "{{ aws_c2_region }}"
filters:
key-name: "c2deploy_{{ deployment_id }}"
register: existing_key_pair
- name: Import SSH key to AWS
amazon.aws.ec2_key:
name: "c2deploy_{{ deployment_id }}"
key_material: "{{ lookup('file', '~/.ssh/c2deploy_{{ deployment_id }}.pub') }}"
region: "{{ aws_c2_region }}"
state: present
when: existing_key_pair.key_pairs | length == 0
# Launch the C2 server - use the consistent key pair name
- name: Launch C2 instance
amazon.aws.ec2_instance:
name: "{{ c2_name }}"
key_name: "c2deploy_{{ deployment_id }}" # Use the same key name as created above
key_name: "c2deploy_{{ deployment_id }}" # Use the imported key
instance_type: "{{ instance_type | default('t2.medium') }}"
vpc_subnet_id: "{{ subnet_id }}"
security_groups:
+16 -29
View File
@@ -389,54 +389,41 @@
- "VPC resources deleted: {{ vpc_check.vpcs | length == 0 }}"
when: not disable_summary | default(false)
# STEP 14: Delete key pairs - more reliable implementation
- name: Find key pairs related to deployment
amazon.aws.ec2_key_info:
region: "{{ aws_region }}"
register: all_key_pairs
- name: Delete deployment related key pairs
amazon.aws.ec2_key:
name: "{{ item.key_name }}"
region: "{{ aws_region }}"
state: absent
loop: "{{ all_key_pairs.key_pairs | selectattr('key_name', 'search', deployment_id) | list }}"
when: all_key_pairs.key_pairs | length > 0
# Add this after your existing key pair finding task
- name: Find c2deploy key pairs
amazon.aws.ec2_key:
name: "c2deploy_{{ deployment_id }}"
region: "{{ aws_region }}"
state: present
register: c2deploy_key_check
# STEP 14: Delete key pairs - completely revised implementation
- name: Check for deployment key in AWS
shell: |
aws ec2 describe-key-pairs --region {{ aws_region }} --filters "Name=key-name,Values=c2deploy_{{ deployment_id }}" --query "KeyPairs[*].KeyName" --output text
environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
register: keypair_check
ignore_errors: yes
- name: Delete c2deploy key pairs
- name: Delete deployment key pair if it exists
amazon.aws.ec2_key:
name: "c2deploy_{{ deployment_id }}"
region: "{{ aws_region }}"
state: absent
when: not c2deploy_key_check.failed | default(true)
register: deleted_c2deploy_key
# STEP 15: Delete SSH key files
when: keypair_check.stdout | trim != ""
register: deleted_keypair
- name: Delete SSH key files
file:
path: "{{ item }}"
state: absent
with_items:
- "~/.ssh/c2deploy_{{ deployment_id }}.pem"
- "~/.ssh/c2deploy_{{ deployment_id }}.pub"
- "~/.ssh/{{ redirector_name }}.pem"
- "~/.ssh/{{ c2_name }}.pem"
- "~/.ssh/{{ tracker_name }}.pem"
- "~/.ssh/c2deploy_{{ deployment_id }}.pem" # Fix: add .pem extension
- "~/.ssh/c2deploy_{{ deployment_id }}.pub"
ignore_errors: yes
register: deleted_ssh_files
- name: Count deleted SSH files
set_fact:
cleanup_summary: "{{ cleanup_summary | combine({
'keypairs_deleted': (deleted_keypair.changed | default(false)) | ternary(1, 0),
'ssh_files_deleted': (deleted_ssh_files.results | selectattr('changed', 'defined') | selectattr('changed') | list | length)}) }}"
# Remove infrastructure state file - fix path to include deployment_id
@@ -458,7 +445,7 @@
- "Security Groups: {{ cleanup_summary.security_groups_found | default(0) }} found, {{ deleted_sgs.results | default([]) | length }} deleted"
- "Network Interfaces: {{ cleanup_summary.enis_found | default(0) }} found, {{ deleted_enis.results | default([]) | length }} deleted"
- "VPCs: {{ cleanup_summary.vpcs_found | default(0) }} found, {{ cleanup_summary.vpcs_deleted | default(0) }} deleted"
- "Key Pairs: {{ cleanup_summary.keypairs_deleted | default(0) }} deleted"
- "Key Pairs: {{ deleted_key_pairs.results | default([]) | length }} deleted"
- "SSH Key Files: {{ cleanup_summary.ssh_files_deleted | default(0) }} deleted"
- "Infrastructure file: {{ 'Removed' if infra_file.changed else 'Not found' }}"
- "=========================================================="
+40 -22
View File
@@ -91,20 +91,6 @@
set_fact:
ami_id: "{{ ubuntu_ami_map[aws_redirector_region] | default(ubuntu_ami_map['us-east-1']) }}"
- name: Create EC2 key pair
amazon.aws.ec2_key:
name: "{{ redirector_name }}"
region: "{{ aws_redirector_region }}"
state: present
register: redirector_key_pair
- name: Save private key locally
copy:
content: "{{ redirector_key_pair.key.private_key }}"
dest: "~/.ssh/{{ redirector_name }}.pem"
mode: "0600"
when: redirector_key_pair.changed and redirector_key_pair.key.private_key is defined
# Create new infrastructure only if not using shared
- name: Create VPC
amazon.aws.ec2_vpc_net:
@@ -210,23 +196,55 @@
dest: "infrastructure_state_{{ deployment_id }}.json"
when: not (use_shared_infra | bool and infra_state_file.stat.exists | default(false))
# Launch the redirector
- name: Launch redirector instance
# Generate or import SSH key for the deployment
- name: Check if deployment SSH key already exists locally
stat:
path: "~/.ssh/c2deploy_{{ deployment_id }}.pem"
register: ssh_key_file
- name: Ensure proper permissions on SSH key
file:
path: "~/.ssh/c2deploy_{{ deployment_id }}"
mode: '0600'
when: not ssh_key_file.stat.exists
- name: Check if key pair exists in AWS
amazon.aws.ec2_key_info:
region: "{{ aws_c2_region }}"
filters:
key-name: "c2deploy_{{ deployment_id }}"
register: existing_key_pair
- name: Import SSH key to AWS
amazon.aws.ec2_key:
name: "c2deploy_{{ deployment_id }}"
key_material: "{{ lookup('file', '~/.ssh/c2deploy_{{ deployment_id }}.pub') }}"
region: "{{ aws_c2_region }}"
state: present
when: existing_key_pair.key_pairs | length == 0
# Launch the C2 server - use the consistent key pair name
- name: Launch C2 instance
amazon.aws.ec2_instance:
name: "{{ redirector_name }}"
key_name: "{{ redirector_name }}"
instance_type: "{{ redirector_instance_type | default('t2.micro') }}"
name: "{{ c2_name }}"
key_name: "c2deploy_{{ deployment_id }}" # Use the imported key
instance_type: "{{ instance_type | default('t2.medium') }}"
vpc_subnet_id: "{{ subnet_id }}"
security_groups:
- "{{ security_group.group_id }}"
image_id: "{{ ami_id }}"
region: "{{ aws_redirector_region }}"
region: "{{ aws_c2_region }}"
state: present
wait: yes
volumes:
- device_name: "/dev/xvda"
ebs:
volume_size: 100
delete_on_termination: true
tags:
Name: "{{ redirector_name }}"
Name: "{{ c2_name }}"
deployment_id: "{{ deployment_id }}"
register: redirector_instance
register: c2_instance
- name: Set redirector_ip for later use
set_fact: