From e8ae554901d701210346706b44e8c090b35477ea Mon Sep 17 00:00:00 2001
From: Matevz Erzen <matevz.erzen@xlab.si>
Date: Tue, 12 Oct 2021 09:31:45 +0200
Subject: [PATCH] Added Evidence Collector machine

---
 README.md                                     | 10 ++++++++
 security-monitoring-ansible/Makefile          |  5 +++-
 .../docker/credentials/credentials.yml        |  4 ++++
 .../ansible/docker/credentials/vars.yml       |  3 +++
 .../ansible/provision-evidence-collector.yml  | 13 +++++++++++
 .../ansible/provision.yml                     |  5 +++-
 .../Vagrantfile                               | 23 ++++++++++++-------
 .../inventory.txt                             | 12 +++++++---
 .../vagrant-full-setup.mk}                    |  5 +++-
 9 files changed, 66 insertions(+), 14 deletions(-)
 create mode 100644 security-monitoring-ansible/ansible/docker/credentials/credentials.yml
 create mode 100644 security-monitoring-ansible/ansible/docker/credentials/vars.yml
 create mode 100644 security-monitoring-ansible/ansible/provision-evidence-collector.yml
 rename security-monitoring-ansible/environments/{vagrant-1manager-2agents => vagrant-full-setup}/Vagrantfile (58%)
 rename security-monitoring-ansible/environments/{vagrant-1manager-2agents => vagrant-full-setup}/inventory.txt (52%)
 rename security-monitoring-ansible/environments/{vagrant-1manager-2agents/vagrant-1manager-2agents.mk => vagrant-full-setup/vagrant-full-setup.mk} (75%)

diff --git a/README.md b/README.md
index 51a3540..d4be5ba 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,16 @@ You should see 2 agents registered and running with Wazuh.
 ```
 $ PORT=8088 npx http-echo-server
 ```
+
+## Using Evidence Collector
+
+To see Evidence Collector's output, `ssh` to it's machine and open Docker logs:
+
+```
+$ make ssh-evidence-collector
+$ docker logs -ft evidence-collector
+```
+
 ## Potential issues
  
 ### Vagrant issue:
diff --git a/security-monitoring-ansible/Makefile b/security-monitoring-ansible/Makefile
index 394e7ff..84021dc 100644
--- a/security-monitoring-ansible/Makefile
+++ b/security-monitoring-ansible/Makefile
@@ -1,4 +1,4 @@
-ENVIRONMENT ?= vagrant-1manager-2agents
+ENVIRONMENT ?= vagrant-full-setup
 DEPLOY_DIR = $(PWD)
 ENV_DIR = $(DEPLOY_DIR)/environments/$(ENVIRONMENT)
 ANSIBLE_DIR = $(DEPLOY_DIR)/ansible
@@ -17,5 +17,8 @@ provision-managers:
 provision-agents:
 	@ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook $(ANSIBLE_ARGS) $(ANSIBLE_DIR)/provision-agents.yml
 
+provision-evidence-collector:
+	@ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook $(ANSIBLE_ARGS) $(ANSIBLE_DIR)/provision-evidence-collector.yml
+
 provision:
 	@ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook $(ANSIBLE_ARGS) $(ANSIBLE_DIR)/provision.yml
\ No newline at end of file
diff --git a/security-monitoring-ansible/ansible/docker/credentials/credentials.yml b/security-monitoring-ansible/ansible/docker/credentials/credentials.yml
new file mode 100644
index 0000000..d3e7318
--- /dev/null
+++ b/security-monitoring-ansible/ansible/docker/credentials/credentials.yml
@@ -0,0 +1,4 @@
+---
+docker_registry: 'registry-gitlab.xlab.si'
+docker_username: 'gitlab+deploy-token-53'
+docker_token: '_yRiffnzyub8XmuJ4ugr'
\ No newline at end of file
diff --git a/security-monitoring-ansible/ansible/docker/credentials/vars.yml b/security-monitoring-ansible/ansible/docker/credentials/vars.yml
new file mode 100644
index 0000000..e209b5f
--- /dev/null
+++ b/security-monitoring-ansible/ansible/docker/credentials/vars.yml
@@ -0,0 +1,3 @@
+---
+- name: include credentials
+  include_vars: credentials.yml
\ No newline at end of file
diff --git a/security-monitoring-ansible/ansible/provision-evidence-collector.yml b/security-monitoring-ansible/ansible/provision-evidence-collector.yml
new file mode 100644
index 0000000..655791c
--- /dev/null
+++ b/security-monitoring-ansible/ansible/provision-evidence-collector.yml
@@ -0,0 +1,13 @@
+---
+# Evidence Collector
+  - hosts: evidence_collector
+    become: yes
+    pre_tasks:
+    - import_tasks: "{{ ansible_dir }}/docker/credentials/vars.yml"
+    roles:    
+      - docker
+    tasks:
+      - name: Login to Docker registry
+        shell: "docker login -u {{ docker_username }} -p {{ docker_token }} {{ docker_registry }}"
+      - name: Run Docker container
+        shell: "docker run --name evidence-collector -d {{ docker_registry }}/medina/evidence-collector:latest" 
\ No newline at end of file
diff --git a/security-monitoring-ansible/ansible/provision.yml b/security-monitoring-ansible/ansible/provision.yml
index a4ff61d..6901c33 100644
--- a/security-monitoring-ansible/ansible/provision.yml
+++ b/security-monitoring-ansible/ansible/provision.yml
@@ -3,4 +3,7 @@
   import_playbook: provision-managers.yml
 
 - name: Start provision of the Wazuh Agents
-  import_playbook: provision-agents.yml
\ No newline at end of file
+  import_playbook: provision-agents.yml
+
+- name: Start provision of Evidence Collector
+  import_playbook: provision-evidence-collector.yml
\ No newline at end of file
diff --git a/security-monitoring-ansible/environments/vagrant-1manager-2agents/Vagrantfile b/security-monitoring-ansible/environments/vagrant-full-setup/Vagrantfile
similarity index 58%
rename from security-monitoring-ansible/environments/vagrant-1manager-2agents/Vagrantfile
rename to security-monitoring-ansible/environments/vagrant-full-setup/Vagrantfile
index 157229a..e2ecdd6 100644
--- a/security-monitoring-ansible/environments/vagrant-1manager-2agents/Vagrantfile
+++ b/security-monitoring-ansible/environments/vagrant-full-setup/Vagrantfile
@@ -22,6 +22,13 @@ servers=[
     :box => "centos/7",
     :ram => 512,
     :cpu => 1
+  },
+  {
+    :hostname => "evidence-collector",
+    :ip => "192.168.33.13",
+    :box => "centos/7",
+    :ram => 2048,
+    :cpu => 2
   }
 ]
 
@@ -32,14 +39,14 @@ Vagrant.configure(2) do |config|
           #   "You are trying to forward a host IP that does not exist. Please set `host_ip`
           #   to the address of an existing IPv4 network interface, or remove the option
           #   from your port forward configuration."
-          if machine[:hostname] == "manager"
-            node.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "192.168.33.10"
-            node.vm.network "forwarded_port", guest: 443, host: 8443 , host_ip: "192.168.33.10"
-            node.vm.network "forwarded_port", guest: 55000, host: 55000 , host_ip: "192.168.33.10"
-            node.vm.network "forwarded_port", guest: 1514, host: 1514 , host_ip: "192.168.33.10"
-            node.vm.network "forwarded_port", guest: 1515, host: 1515 , host_ip: "192.168.33.10"
-            node.vm.network "forwarded_port", guest: 1516, host: 1516 , host_ip: "192.168.33.10"
-          end
+          #if machine[:hostname] == "manager"
+          #  node.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "192.168.33.10"
+          #  node.vm.network "forwarded_port", guest: 443, host: 8443 , host_ip: "192.168.33.10"
+          #  node.vm.network "forwarded_port", guest: 55000, host: 55000 , host_ip: "192.168.33.10"
+          #  node.vm.network "forwarded_port", guest: 1514, host: 1514 , host_ip: "192.168.33.10"
+          #  node.vm.network "forwarded_port", guest: 1515, host: 1515 , host_ip: "192.168.33.10"
+          #  node.vm.network "forwarded_port", guest: 1516, host: 1516 , host_ip: "192.168.33.10"
+          #end
           node.vm.box = machine[:box]
           node.vm.hostname = machine[:hostname]
           node.vm.network "private_network", ip: machine[:ip]
diff --git a/security-monitoring-ansible/environments/vagrant-1manager-2agents/inventory.txt b/security-monitoring-ansible/environments/vagrant-full-setup/inventory.txt
similarity index 52%
rename from security-monitoring-ansible/environments/vagrant-1manager-2agents/inventory.txt
rename to security-monitoring-ansible/environments/vagrant-full-setup/inventory.txt
index 2626412..05e28e4 100644
--- a/security-monitoring-ansible/environments/vagrant-1manager-2agents/inventory.txt
+++ b/security-monitoring-ansible/environments/vagrant-full-setup/inventory.txt
@@ -1,12 +1,18 @@
 [wazuh_managers]
-192.168.33.10 public_ip=192.168.33.10 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-1manager-2agents/.vagrant/machines/manager/virtualbox/private_key
+192.168.33.10 public_ip=192.168.33.10 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-full-setup/.vagrant/machines/manager/virtualbox/private_key
 
 [wazuh_managers:vars]
 ansible_ssh_common_args='-o StrictHostKeyChecking=no'
 
 [wazuh_agents]
-192.168.33.11 public_ip=192.168.33.11 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-1manager-2agents/.vagrant/machines/agent1/virtualbox/private_key
-192.168.33.12 public_ip=192.168.33.12 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-1manager-2agents/.vagrant/machines/agent2/virtualbox/private_key
+192.168.33.11 public_ip=192.168.33.11 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-full-setup/.vagrant/machines/agent1/virtualbox/private_key
+192.168.33.12 public_ip=192.168.33.12 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-full-setup/.vagrant/machines/agent2/virtualbox/private_key
 
 [wazuh_agents:vars]
+ansible_ssh_common_args='-o StrictHostKeyChecking=no'
+
+[evidence_collector]
+192.168.33.13 public_ip=192.168.33.13 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant ansible_ssh_private_key_file=environments/vagrant-full-setup/.vagrant/machines/evidence-collector/virtualbox/private_key
+
+[evidence_collector:vars]
 ansible_ssh_common_args='-o StrictHostKeyChecking=no'
\ No newline at end of file
diff --git a/security-monitoring-ansible/environments/vagrant-1manager-2agents/vagrant-1manager-2agents.mk b/security-monitoring-ansible/environments/vagrant-full-setup/vagrant-full-setup.mk
similarity index 75%
rename from security-monitoring-ansible/environments/vagrant-1manager-2agents/vagrant-1manager-2agents.mk
rename to security-monitoring-ansible/environments/vagrant-full-setup/vagrant-full-setup.mk
index 244fcdd..cf5009b 100644
--- a/security-monitoring-ansible/environments/vagrant-1manager-2agents/vagrant-1manager-2agents.mk
+++ b/security-monitoring-ansible/environments/vagrant-full-setup/vagrant-full-setup.mk
@@ -15,4 +15,7 @@ ssh-agent1:
 	@$(VAGRANT_RUN) ssh agent1
 
 ssh-agent2:
-	@$(VAGRANT_RUN) ssh agent2
\ No newline at end of file
+	@$(VAGRANT_RUN) ssh agent2
+
+ssh-evidence-collector:
+	@$(VAGRANT_RUN) ssh evidence-collector
\ No newline at end of file
-- 
GitLab