-
Notifications
You must be signed in to change notification settings - Fork 9
/
PeekabooAV-install.yml
executable file
·437 lines (395 loc) · 11.7 KB
/
PeekabooAV-install.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
---
#
#
# PeekabooAV Installation Ansible Playbook
#
# this playbook is work in progress
# it has two purposes
# - an easy way to have a fast installation
# - documentation on how to set things up
#
# it can also be used to update an installation
#
#
# by felix bauer felix.bauer@atos.net
#
# 23.08.2017
#
# Copyright (C) 2016-2018 science + computing ag
#
#
#
# This ansible playbook describes and performs a basic installation
# of PeekabooAV
#
# Require minimal ansible version
- hosts: all
tasks:
- name: Check for systemd module in ansible (minimal version required 2.5)
systemd:
- name: Verify ansible version
assert:
that: "ansible_version.full | version_compare('2.5', '>=')"
msg: >
"Minimum ansible version required is 2.5"
# The following code is just to have the owl and info scroll bye slowly.
- name: Print Peekaboo logo
hosts: localhost
become: no
gather_facts: false
vars:
peekabooinst_banner: |
Welcome to the PeekabooAV installer
====================================================================
== =
======== =======
===========? ===========
========================
== ======== ===
= ==== =
+= ? ==== ? ==
== =,,= ==
= ,,,,,,, =+
== =,,,,= ==
+====+=======,====== =====
==========================
==============================
===============77===============
=========77777777777777+========
======77777777777777777777======
=====7777777777777777777777=====
===777777777777777777777777====
===7777777777777777777777777==
==7777777777777777777777777=
+=777777777777777777777777==
==77777777777777777777777=
==777777777777777777777=
+=7777777777777777777=
=7777777777777777=
==777777777777==
==777777==
,,,,,,::::::==::::::,,,,,,
,,,,,,,,,,,,,,, ,,,,,,,,,,,,,
,,,,,,,, ,,,,,,
,,,,, ,,,
,,,
,
tasks:
- debug:
msg: "{{ peekabooinst_banner.split('\n') }}"
- name: Check OS version
hosts: all
tasks:
- fail:
msg: "{{ ansible_distribution }} {{ ansible_distribution_version }} not supported. Please use the version that is specified in README.md"
when: (ansible_distribution != "Ubuntu") or (ansible_distribution_version < "16.04")
- name: Install software packages
hosts: all
gather_facts: no
become: yes
tasks:
- name: Refresh apt package repositories
apt:
update_cache: yes
- name: Install basic tools
apt:
name: "{{ item }}"
state: latest
with_items:
- vim
- ipython
- less
- iputils-ping
- socket
- netcat
- git
- curl
- socat
- name: Install Cuckoo dependencies
apt:
name: "{{ item }}"
state: latest
with_items:
- python
- python-pip
- python-dev
- libffi-dev
- libssl-dev
- python-virtualenv
- python-setuptools
- libjpeg-dev
- zlib1g-dev
- swig
- sqlite3
- swig
- mongodb
- name: Install python packages
pip:
name: "{{ item }} "
state: latest
with_items:
- pip
- setuptools
- cuckoo
- name: Install tcpdump and set capability
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Install tcpdump
apt:
name: tcpdump
state: latest
- name: Set capability
capabilities:
path: /usr/sbin/tcpdump
capability: cap_net_raw,cap_net_admin=eip
state: present
- name: Create Peekaboo in /opt
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Checking that /opt/peekaboo exists
file:
path: /opt/peekaboo
state: directory
mode: 0755
- name: Create a new peekaboo user and group
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Create a new group peekaboo
group:
name: peekaboo
state: present
gid: 150
- name: Create a new user peekaboo
user:
name: peekaboo
group: peekaboo
uid: 150
home: /var/lib/peekaboo
- name: Install Peekaboo
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Install Peekaboo
command: python setup.py install
args:
chdir: PeekabooAV
creates: /usr/local/bin/peekaboo
# pip:
# name: peekabooav
# state: present
- name: Copy systemd unit files to /etc
copy:
src: systemd/{{ item }}
dest: /etc/systemd/system/
owner: root
group: root
mode: 0644
backup: true
with_items:
- peekaboo.service
- cuckoohttpd.service
- mysql-proxy.service
- mysql-proxy.socket
- name: Enable services to run on startup
systemd:
name: "{{ item }}"
enabled: yes
with_items:
- peekaboo
- cuckoohttpd
- name: Place Peekaboo config in /opt/peekaboo
tags: peekabooconf
copy:
src: peekaboo/peekaboo.conf
dest: /opt/peekaboo/
owner: root
group: root
mode: 0644
backup: true
- name: Place Peekaboo ruleset.conf in /opt/peekaboo
tags: peekabooconf
copy:
src: PeekabooAV/ruleset.conf.sample
dest: /opt/peekaboo/ruleset.conf
owner: root
group: root
mode: 0755
backup: true
- name: Place cuckoo processor wrapper in /opt/peekaboo
copy:
src: cuckoo/cuckooprocessor.sh
dest: /opt/peekaboo/
owner: root
group: root
mode: 0755
backup: true
- name: Now place wrapper to run vboxmanage command on remote host
# This is necessary to control vm start, stop and snapshot
# restore on the host from within the Peekaboo-VM.
copy:
src: vbox/vboxmanage
dest: /usr/local/bin/
owner: root
group: root
mode: 0755
backup: true
- name: Copy /var/lib/peekaboo/vboxmanage.conf
# The configuration contains IP address and username of the
# target user on the host that owns all virtual box vms.
copy:
src: vbox/vboxmanage.conf
dest: /var/lib/peekaboo/vboxmanage.conf
owner: peekaboo
group: peekaboo
mode: 0644
backup: true
- name: Install ssh
apt:
name: ssh
state: latest
- name: Setup ssh key for peekaboo user
file:
path: /var/lib/peekaboo/.ssh
state: directory
mode: 0700
owner: peekaboo
group: peekaboo
- name: This key will have to be allowed on the host to authenticate the vm user
command: su -c "ssh-keygen -t ed25519 -f /var/lib/peekaboo/.ssh/id_ed25519 -P ''" peekaboo
args:
chdir: /var/lib/peekaboo
creates: /var/lib/peekaboo/.ssh/id_ed25519
- name: Setting up Cuckoo
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Initial run of Cuckoo to create directory structure in peekaboo $HOME
command: su -c "cuckoo" peekaboo
args:
chdir: /var/lib/peekaboo
creates: /var/lib/peekaboo/.cuckoo
- name: Install cuckoo community signatures
command: su -c "cuckoo community" peekaboo
args:
chdir: /var/lib/peekaboo
- name: Copy config files for cuckoo
copy:
src: cuckoo/{{ item }}
dest: /var/lib/peekaboo/.cuckoo/conf/
owner: peekaboo
group: peekaboo
mode: 0644
backup: true
with_items:
- cuckoo.conf
- virtualbox.conf
- reporting.conf
- name: Install amavis and dependencies
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Installing software
apt:
name: "{{ item }}"
state: latest
with_items:
- amavisd-new
- arj
- bzip2
- cabextract
- cpio
- file
- gzip
- lhasa
- nomarch
- pax
- rar
- unrar
- unzip
- zip
- name: Copy amavis configs to conf.d
copy:
src: amavis/{{ item }}
dest: /etc/amavis/conf.d/
owner: root
group: root
mode: 0644
backup: true
with_items:
- 15-av_scanners
- 15-content_filter_mode
- 50-peekaboo
- name: Copy amavis plugin to conf.d
copy:
src: PeekabooAV/amavis/10-ask_peekaboo
dest: /etc/amavis/conf.d/
owner: root
group: root
mode: 0644
backup: true
- name: Restart amavis
systemd:
state: restarted
daemon_reload: yes
name: amavis
- name: Allow access to files and sockets for amavis and peekaboo
hosts: peekabooav_server
gather_facts: no
become: true
tasks:
- name: Add secondary group amavis to user peekaboo
user:
name: peekaboo
groups: amavis
- name: Add secondary group peekaboo to user amavis
user:
name: amavis
groups: peekaboo
- name: Install mysql database and setup users and databases
hosts: peekabooav_server
gather_facts: no
become: true
tags: mysql
tasks:
- name: Installing Software
apt:
name: "{{ item }}"
state: latest
with_items:
- mariadb-server
- python-mysqldb
- name: Create databases
mysql_db:
name: "{{ item }}"
state: present
encoding: utf8
with_items:
- cuckoo
- peekaboo
- name: Create database user cuckoo
mysql_user:
name: cuckoo
password: newpassword
host: localhost
priv: 'cuckoo.*:ALL,GRANT'
state: present
- name: Create database user peekaboo
mysql_user:
name: peekaboo
password: differentnewpassword
host: localhost
priv: 'peekaboo.*:ALL,GRANT'
state: present
# - name: Restart services
# service:
# name: peekaboo
# state: restarted