120 lines
3.6 KiB
YAML
120 lines
3.6 KiB
YAML
---
|
|
# FlokiNET-specific phishing infrastructure tasks
|
|
|
|
- name: Create FlokiNET instances for phishing
|
|
uri:
|
|
url: "{{ flokinet_api_endpoint }}/instances"
|
|
method: POST
|
|
headers:
|
|
Authorization: "Bearer {{ flokinet_api_token }}"
|
|
Content-Type: "application/json"
|
|
body_format: json
|
|
body:
|
|
plan: "{{ flokinet_plan | default('basic') }}"
|
|
region: "{{ flokinet_region | default('romania') }}"
|
|
os: "{{ flokinet_os | default('ubuntu-22.04') }}"
|
|
hostname: "{{ deployment_id }}-{{ item }}"
|
|
ssh_keys:
|
|
- "{{ ssh_public_key }}"
|
|
tags:
|
|
- "c2itall"
|
|
- "phishing"
|
|
- "{{ deployment_id }}"
|
|
status_code: [200, 201]
|
|
register: flokinet_instances
|
|
loop: "{{ deployment_components }}"
|
|
when: item in deployment_components
|
|
|
|
- name: Wait for instances to be active
|
|
uri:
|
|
url: "{{ flokinet_api_endpoint }}/instances/{{ item.json.id }}"
|
|
method: GET
|
|
headers:
|
|
Authorization: "Bearer {{ flokinet_api_token }}"
|
|
register: instance_status
|
|
until: instance_status.json.status == "active"
|
|
retries: 30
|
|
delay: 10
|
|
loop: "{{ flokinet_instances.results }}"
|
|
when: flokinet_instances.results is defined
|
|
|
|
- name: Get instance details
|
|
uri:
|
|
url: "{{ flokinet_api_endpoint }}/instances/{{ item.json.id }}"
|
|
method: GET
|
|
headers:
|
|
Authorization: "Bearer {{ flokinet_api_token }}"
|
|
register: instance_details
|
|
loop: "{{ flokinet_instances.results }}"
|
|
when: flokinet_instances.results is defined
|
|
|
|
- name: Set instance facts
|
|
set_fact:
|
|
phishing_instances: >-
|
|
{% set instances = [] %}
|
|
{% for result in instance_details.results %}
|
|
{% set instance = {
|
|
'id': result.json.id,
|
|
'hostname': result.json.hostname,
|
|
'ip': result.json.main_ip,
|
|
'region': result.json.region,
|
|
'plan': result.json.plan,
|
|
'status': result.json.status
|
|
} %}
|
|
{% set _ = instances.append(instance) %}
|
|
{% endfor %}
|
|
{{ instances }}
|
|
when: instance_details.results is defined
|
|
|
|
- name: Wait for SSH connectivity
|
|
wait_for:
|
|
host: "{{ item.ip }}"
|
|
port: 22
|
|
delay: 30
|
|
timeout: 300
|
|
loop: "{{ phishing_instances }}"
|
|
when: phishing_instances is defined
|
|
|
|
- name: Update instance inventory
|
|
add_host:
|
|
name: "{{ item.ip }}"
|
|
groups: "phishing_{{ item.hostname.split('-')[-1] }}"
|
|
ansible_host: "{{ item.ip }}"
|
|
ansible_user: root
|
|
ansible_ssh_private_key_file: "{{ ssh_private_key_path }}"
|
|
ansible_ssh_common_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
|
instance_id: "{{ item.id }}"
|
|
instance_hostname: "{{ item.hostname }}"
|
|
provider: "flokinet"
|
|
loop: "{{ phishing_instances }}"
|
|
when: phishing_instances is defined
|
|
|
|
- name: Configure Gophish servers
|
|
include_tasks: ../common/configure_gophish.yml
|
|
when: "'gophish' in deployment_components"
|
|
|
|
- name: Configure MTA fronts
|
|
include_tasks: ../common/configure_mta.yml
|
|
when: "'mta_front' in deployment_components"
|
|
|
|
- name: Configure redirectors
|
|
include_tasks: ../common/configure_redirector.yml
|
|
when: "'redirector' in deployment_components"
|
|
|
|
- name: Configure web servers
|
|
include_tasks: ../common/configure_webserver.yml
|
|
when: "'webserver' in deployment_components"
|
|
|
|
- name: Display deployment summary
|
|
debug:
|
|
msg: |
|
|
🎯 FlokiNET Phishing Infrastructure Deployed
|
|
{{ phishing_instances | length }} instances created
|
|
Provider: FlokiNET
|
|
Deployment ID: {{ deployment_id }}
|
|
Instances:
|
|
{% for instance in phishing_instances %}
|
|
- {{ instance.hostname }}: {{ instance.ip }} ({{ instance.plan }})
|
|
{% endfor %}
|
|
when: phishing_instances is defined
|