Add security engine role
This commit is contained in:
parent
938e6664ba
commit
8123f50e83
8 changed files with 209 additions and 0 deletions
26
roles/security_engine/defaults/main.yml
Normal file
26
roles/security_engine/defaults/main.yml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
crowdsec_version: ''
|
||||
crowdsec_log_dir: /var/log
|
||||
crowdsec_server: {}
|
||||
crowdsec_data_dir: /var/lib/crowdsec/data
|
||||
crowdsec_plugin_dir: /usr/local/lib/crowdsec/plugins
|
||||
crowdsec_simulation: false
|
||||
crowdsec_server_trusted_ips:
|
||||
- 127.0.0.1
|
||||
- ::1
|
||||
crowdsec_default_ip_remediation:
|
||||
filters:
|
||||
- Alert.Remediation == true && Alert.GetScope() == "Ip"
|
||||
decisions:
|
||||
- type: ban
|
||||
duration: 4h
|
||||
on_success: break
|
||||
crowdsec_default_range_remediation:
|
||||
filters:
|
||||
- Alert.Remediation == true && Alert.GetScope() == "Range"
|
||||
decisions:
|
||||
- type: ban
|
||||
duration: 4h
|
||||
on_success: break
|
||||
crowdsec_remediation: []
|
||||
crowdsec_notifications: []
|
||||
5
roles/security_engine/handlers/main.yml
Normal file
5
roles/security_engine/handlers/main.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: Restart CrowdSec service
|
||||
ansible.builtin.systemd_service:
|
||||
name: crowdsec
|
||||
state: restarted
|
||||
64
roles/security_engine/tasks/main.yml
Normal file
64
roles/security_engine/tasks/main.yml
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
---
|
||||
- name: Setup security engine package
|
||||
ansible.builtin.apt:
|
||||
name: "crowdsec{{ crowdsec_version }}"
|
||||
state: present
|
||||
notify:
|
||||
- Restart CrowdSec service
|
||||
|
||||
- name: Setup configuration file
|
||||
ansible.builtin.template:
|
||||
src: config.yaml.j2
|
||||
dest: /etc/crowdsec/config.yaml
|
||||
user: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- Restart CrowdSec service
|
||||
|
||||
- name: Setup acquisition configuration file
|
||||
ansible.builtin.template:
|
||||
src: acquis.yaml.j2
|
||||
dest: /etc/crowdsec/acquis.yaml
|
||||
user: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
when:
|
||||
- crowdsec_acquisition is defined
|
||||
notify:
|
||||
- Restart CrowdSec service
|
||||
|
||||
- name: Setup profiles file
|
||||
ansible.builtin.template:
|
||||
src: profiles.yaml.j2
|
||||
dest: /etc/crowdsec/profiles.yaml
|
||||
user: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- Restart CrowdSec service
|
||||
|
||||
- name: "Setup {{ item.name }} notification configuration file"
|
||||
ansible.builtin.template:
|
||||
src: notification.yaml.j2
|
||||
dest: "/etc/crowdsec/notifications/{{ item.name }}.yaml"
|
||||
user: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- Restart CrowdSec service
|
||||
loop: "{{ crowdsec_notifications }}"
|
||||
|
||||
- name: Setup service file
|
||||
ansible.builtin.template:
|
||||
src: crowdsec.service.j2
|
||||
dest: /lib/systemd/system/crowdsec.service
|
||||
user: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
|
||||
- name: Setup CrowdSec service
|
||||
ansible.builtin.systemd_service:
|
||||
name: crowdsec
|
||||
state: started
|
||||
enabled: true
|
||||
9
roles/security_engine/templates/acquis.yaml.j2
Normal file
9
roles/security_engine/templates/acquis.yaml.j2
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#jinja2:lstrip_blocks: True
|
||||
# {{ ansible_managed }}
|
||||
|
||||
{% for item in crowdsec_acquisition %}
|
||||
{% if not loop.first %}
|
||||
---
|
||||
{% endif %}
|
||||
{{ item | to_nice_yaml(indent=2) | trim }}
|
||||
{% endfor %}
|
||||
70
roles/security_engine/templates/config.yaml.j2
Normal file
70
roles/security_engine/templates/config.yaml.j2
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#jinja2:lstrip_blocks: True
|
||||
# {{ ansible_managed }}
|
||||
|
||||
common:
|
||||
daemonize: {{ crowdsec_daemonize | default(true) }}
|
||||
log_media: {{ crowdsec_log_media | default('file') }}
|
||||
log_level: {{ crowdsec_log_level | default('info') }}
|
||||
log_dir: {{ crowdsec_log_dir }}/
|
||||
log_max_size: {{ crowdsec_log_max_size | default(20) }}
|
||||
compress_logs: {{ crowdsec_log_compress | default(true) }}
|
||||
log_max_files: {{ crowdsec_log_max_files | default(10) }}
|
||||
config_paths:
|
||||
config_dir: /etc/crowdsec/
|
||||
data_dir: {{ crowdsec_data_dir }}/
|
||||
{% if crowdsec_simulation %}
|
||||
simulation_path: /etc/crowdsec/simulation.yaml
|
||||
{% endif %}
|
||||
notification_dir: /etc/crowdsec/notifications/
|
||||
plugin_dir: {{ crowdsec_plugin_dir }}/
|
||||
crowdsec_service:
|
||||
{% if crowdsec_acquisition is defined %}
|
||||
acquisition_path: /etc/crowdsec/acquis.yaml
|
||||
acquisition_dir: /etc/crowdsec/acquis.d
|
||||
{% endif %}
|
||||
parser_routines: 1
|
||||
cscli:
|
||||
output: {{ crowdsec_cli_output | default('human') }}
|
||||
color: {{ crowdsec_cli_color | default('auto') }}
|
||||
{% if crowdsec_database is defined %}
|
||||
db_config:
|
||||
{{ crowdsec_database | to_nice_yaml(indent=2) | trim | indent(2) }}
|
||||
{% else %}
|
||||
db_config:
|
||||
log_level: info
|
||||
type: sqlite
|
||||
db_path: /var/lib/crowdsec/data/crowdsec.db
|
||||
flush:
|
||||
max_items: 5000
|
||||
max_age: 7d
|
||||
{% endif %}
|
||||
plugin_config:
|
||||
user: {{ crowdsec_plugin_user | default('nobody') }}
|
||||
group: {{ crowdsec_plugin_group | default('nogroup') }}
|
||||
api:
|
||||
client:
|
||||
insecure_skip_verify: {{ crowdsec_client_insecure_skip_verify | default(false) }}
|
||||
credentials_path: /etc/crowdsec/local_api_credentials.yaml
|
||||
server:
|
||||
log_level: {{ crowdsec_server['log_level'] if 'log_level' in crowdsec_server else 'info' }}
|
||||
listen_uri: {{ crowdsec_server['listen_uri'] if 'listen_uri' in crowdsec_server else '127.0.0.1:8080' }}
|
||||
profiles_path: /etc/crowdsec/profiles.yaml
|
||||
{% if crowdsec_console is defined %}
|
||||
console_path: /etc/crowdsec/console.yaml
|
||||
{% endif %}
|
||||
{% if crowdsec_online_api is defined %}
|
||||
online_client:
|
||||
credentials_path: /etc/crowdsec/online_api_credentials.yaml
|
||||
{% endif %}
|
||||
trusted_ips:
|
||||
{{ crowdsec_server_trusted_ips | to_nice_yaml(indent=2) | trim | indent(6) }}
|
||||
{% if 'ssl' in crowdsec_server %}
|
||||
tls:
|
||||
cert_file: {{ crowdsec_server['ssl']['cert_file'] }}
|
||||
key_file: {{ crowdsec_server['ssl']['key_file'] }}
|
||||
{% endif %}
|
||||
prometheus:
|
||||
enabled: {{ crowdsec_prometheus_enabled | default(true) }}
|
||||
level: {{ crowdsec_prometheus_level | default('full') }}
|
||||
listen_addr: {{ crowdsec_prometheus_listen_addr | default('127.0.0.1') }}
|
||||
listen_port: {{ crowdsec_prometheus_listen_port | default(6060) }}
|
||||
19
roles/security_engine/templates/crowdsec.service.j2
Normal file
19
roles/security_engine/templates/crowdsec.service.j2
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
Description=CrowdSec agent
|
||||
After=syslog.target network.target remote-fs.target nss-lookup.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
Environment=LC_ALL=C LANG=C
|
||||
ExecStartPre=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml -t -error
|
||||
ExecStart=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml
|
||||
#ExecStartPost=/bin/sleep 0.1
|
||||
ExecReload=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml -t -error
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
Restart=always
|
||||
RestartSec=60
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
4
roles/security_engine/templates/notification.yaml.j2
Normal file
4
roles/security_engine/templates/notification.yaml.j2
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#jinja2:lstrip_blocks: True
|
||||
# {{ ansible_managed }}
|
||||
|
||||
{{ item | to_nice_yaml(indent=2) | trim }}
|
||||
12
roles/security_engine/templates/profiles.yaml.j2
Normal file
12
roles/security_engine/templates/profiles.yaml.j2
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#jinja2:lstrip_blocks: True
|
||||
# {{ ansible_managed }}
|
||||
|
||||
name: default_ip_remediation
|
||||
{{ crowdsec_default_ip_remediation | to_nice_yaml(indent=2) | trim }}
|
||||
---
|
||||
name: default_range_remediation
|
||||
{{ crowdsec_default_range_remediation | to_nice_yaml(indent=2) | trim }}
|
||||
{% for item in crowdsec_remediation %}
|
||||
---
|
||||
{{ item | to_nice_yaml(indent=2) | trim }}
|
||||
{% endfor %}
|
||||
Loading…
Add table
Reference in a new issue