Migrate from old repository
This commit is contained in:
commit
a2cb24af99
20
defaults/main.yml
Normal file
20
defaults/main.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
cs_collections_list: []
|
||||||
|
cs_scenarios_list: []
|
||||||
|
cs_parsers_list: []
|
||||||
|
cs_postoverflows_list: []
|
||||||
|
|
||||||
|
cs_ban_duration: "4h"
|
||||||
|
|
||||||
|
cs_prometheus_enabled: false
|
||||||
|
|
||||||
|
cs_parsers_mywhitelists_ip: []
|
||||||
|
cs_parsers_mywhitelists_cidr: []
|
||||||
|
|
||||||
|
cs_trusted_ips:
|
||||||
|
- 127.0.0.1
|
||||||
|
- ::1
|
||||||
|
|
||||||
|
cs_receiver_emails: []
|
||||||
|
|
||||||
|
version: latest
|
18
meta/main.yml
Normal file
18
meta/main.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
|
|
||||||
|
galaxy_info:
|
||||||
|
role_name: crowdsec
|
||||||
|
author: 'Pierre-Olivier Mercier <nemunaire+iac@nemunai.re>'
|
||||||
|
description: Installs and configure crowdsec through Docker
|
||||||
|
license: GPL-3.0-or-later
|
||||||
|
min_ansible_version: 2.9
|
||||||
|
platforms:
|
||||||
|
- name: Alpine
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
galaxy_tags: []
|
57
tasks/main.yml
Normal file
57
tasks/main.yml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure crowdsec directory exists
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
loop:
|
||||||
|
- /etc/crowdsec/notifications
|
||||||
|
- /etc/crowdsec/parsers/s02-enrich
|
||||||
|
|
||||||
|
- name: configure crowdsec
|
||||||
|
template:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "/etc/crowdsec/{{ item.dest }}"
|
||||||
|
register: crowdsecconfig
|
||||||
|
loop:
|
||||||
|
- {src: "config.yaml.j2", dest: "config.yaml" }
|
||||||
|
- {src: "profiles.yaml.j2", dest: "profiles.yaml" }
|
||||||
|
- {src: "email.yaml.j2", dest: "notifications/email.yaml" }
|
||||||
|
- {src: "mywhitelists.yaml.j2", dest: "parsers/s02-enrich/mywhitelists.yaml" }
|
||||||
|
|
||||||
|
- name: "stop crowdsec container to reload config"
|
||||||
|
docker_container:
|
||||||
|
name: "{{ instance_name }}"
|
||||||
|
state: stopped
|
||||||
|
when: crowdsecconfig is changed
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- name: "launch {{ instance_name }} container"
|
||||||
|
docker_container:
|
||||||
|
name: "{{ instance_name }}"
|
||||||
|
image: "crowdsecurity/crowdsec:{{ version }}"
|
||||||
|
pull: true
|
||||||
|
state: started
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
memory: 2G
|
||||||
|
volumes:
|
||||||
|
- /etc/crowdsec:/etc/crowdsec
|
||||||
|
- /var/lib/crowdsec:/var/lib/crowdsec/data
|
||||||
|
- /var/log/:/logs:ro
|
||||||
|
mounts:
|
||||||
|
- target: /tmp
|
||||||
|
type: tmpfs
|
||||||
|
tmpfs_mode: 1777
|
||||||
|
tmpfs_size: 512M
|
||||||
|
env:
|
||||||
|
COLLECTIONS: "{{ cs_collections_list | join(' ') }}"
|
||||||
|
SCENARIOS: "{% if cs_scenarios_list is defined %}{{ cs_scenarios_list | join(' ') }}{% endif %}"
|
||||||
|
PARSERS: "{% if cs_parsers_list is defined %}{{ cs_parsers_list | join(' ') }}{% endif %}"
|
||||||
|
POSTOVERFLOWS: "{% if cs_postoverflows_list is defined %}{{ cs_postoverflows_list | join(' ') }}{% endif %}"
|
||||||
|
published_ports:
|
||||||
|
- "{{ prometheus_endpoint }}:6060"
|
||||||
|
- "{{ endpoint }}:8080"
|
||||||
|
log_driver: syslog
|
||||||
|
log_options:
|
||||||
|
syslog-address: unixgram:///dev/log
|
||||||
|
syslog-facility: daemon
|
||||||
|
tag: "{{ instance_name }}"
|
60
templates/config.yaml.j2
Normal file
60
templates/config.yaml.j2
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
common:
|
||||||
|
daemonize: false
|
||||||
|
pid_dir: /var/run/
|
||||||
|
log_media: stdout
|
||||||
|
log_level: info
|
||||||
|
log_dir: /logs/
|
||||||
|
working_dir: .
|
||||||
|
config_paths:
|
||||||
|
config_dir: /etc/crowdsec/
|
||||||
|
data_dir: /var/lib/crowdsec/data/
|
||||||
|
simulation_path: /etc/crowdsec/simulation.yaml
|
||||||
|
hub_dir: /etc/crowdsec/hub/
|
||||||
|
index_path: /etc/crowdsec/hub/.index.json
|
||||||
|
notification_dir: /etc/crowdsec/notifications/
|
||||||
|
plugin_dir: /usr/local/lib/crowdsec/plugins/
|
||||||
|
crowdsec_service:
|
||||||
|
acquisition_path: /etc/crowdsec/acquis.yaml
|
||||||
|
parser_routines: 1
|
||||||
|
plugin_config:
|
||||||
|
user: nobody
|
||||||
|
group: nobody
|
||||||
|
cscli:
|
||||||
|
output: human
|
||||||
|
db_config:
|
||||||
|
log_level: info
|
||||||
|
{% if database is defined %}
|
||||||
|
type: mysql
|
||||||
|
user: "{{ database.username }}"
|
||||||
|
password: "{{ database.password }}"
|
||||||
|
db_name: "{{ database.database }}"
|
||||||
|
host: "{{ database.host }}"
|
||||||
|
port: {{ database.port }}
|
||||||
|
{% else %}
|
||||||
|
type: sqlite
|
||||||
|
db_path: /var/lib/crowdsec/data/crowdsec.db
|
||||||
|
{% endif %}
|
||||||
|
flush:
|
||||||
|
max_items: 5000
|
||||||
|
max_age: 7d
|
||||||
|
api:
|
||||||
|
client:
|
||||||
|
insecure_skip_verify: false
|
||||||
|
credentials_path: /etc/crowdsec/local_api_credentials.yaml
|
||||||
|
server:
|
||||||
|
log_level: info
|
||||||
|
listen_uri: 0.0.0.0:8080
|
||||||
|
profiles_path: /etc/crowdsec/profiles.yaml
|
||||||
|
use_forwarded_for_headers: true
|
||||||
|
trusted_ips: {{ cs_trusted_ips | to_json() }}# IP ranges, or IPs which can have admin API access
|
||||||
|
online_client: # Central API credentials (to push signals and receive bad IPs)
|
||||||
|
credentials_path: /etc/crowdsec/online_api_credentials.yaml
|
||||||
|
#credentials_path: /etc/crowdsec/online_api_credentials.yaml
|
||||||
|
# tls:
|
||||||
|
# cert_file: /etc/crowdsec/ssl/cert.pem
|
||||||
|
# key_file: /etc/crowdsec/ssl/key.pem
|
||||||
|
prometheus:
|
||||||
|
enabled: {{ cs_prometheus_enabled }}
|
||||||
|
level: full
|
||||||
|
listen_addr: 0.0.0.0
|
||||||
|
listen_port: 6060
|
37
templates/email.yaml.j2
Normal file
37
templates/email.yaml.j2
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
type: email # Don't change
|
||||||
|
name: email_default # Must match the registered plugin in the profile
|
||||||
|
|
||||||
|
# One of "trace", "debug", "info", "warn", "error", "off"
|
||||||
|
log_level: info
|
||||||
|
|
||||||
|
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
|
||||||
|
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
|
||||||
|
# max_retry: # Number of attempts to relay messages to plugins in case of error
|
||||||
|
timeout: 20s # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
|
||||||
|
|
||||||
|
#-------------------------
|
||||||
|
# plugin-specific options
|
||||||
|
|
||||||
|
# The following template receives a list of models.Alert objects
|
||||||
|
# The output goes in the email message body
|
||||||
|
format: | {{ "
|
||||||
|
{{range . -}}
|
||||||
|
{{$alert := . -}}
|
||||||
|
{{range .Decisions -}}
|
||||||
|
<html><body><p><a href=https://www.whois.com/whois/{{.Value}}>{{.Value}}</a> will get <b>{{.Type}}</b> for next <b>{{.Duration}}</b> for triggering <b>{{.Scenario}}</b> on machine <b>{{$alert.MachineID}}</b>.</p> <p><a href=https://www.shodan.io/host/{{.Value}}>Shodan</a></p></body></html>
|
||||||
|
{{end -}}
|
||||||
|
{{end -}}" }}
|
||||||
|
|
||||||
|
smtp_host: "{{ email.host }}"
|
||||||
|
smtp_username: "{{ email.username }}"
|
||||||
|
smtp_password: "{{ email.password }}"
|
||||||
|
smtp_port: {{ email.port }}
|
||||||
|
auth_type: "{{ email.auth }}" # Valid choices are "none", "crammd5", "login", "plain"
|
||||||
|
sender_name: "CrowdSec"
|
||||||
|
sender_email: "{{ email.from }}"
|
||||||
|
email_subject: "CrowdSec Notification"
|
||||||
|
receiver_emails: {{ cs_receiver_emails | to_json() }}
|
||||||
|
# - email1@gmail.com
|
||||||
|
# - email2@gmail.com
|
||||||
|
|
||||||
|
encryption_type: "{{ email.starttls }}" # One of "ssltls", "none"
|
8
templates/mywhitelists.yaml.j2
Normal file
8
templates/mywhitelists.yaml.j2
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
name: crowdsecurity/whitelists
|
||||||
|
description: "Whitelist events from my ip addresses"
|
||||||
|
whitelist:
|
||||||
|
reason: "my ip ranges"
|
||||||
|
ip:
|
||||||
|
{{ cs_parsers_mywhitelists_ip }}
|
||||||
|
cidr:
|
||||||
|
{{ cs_parsers_mywhitelists_cidr }}
|
15
templates/profiles.yaml.j2
Normal file
15
templates/profiles.yaml.j2
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
name: default_ip_remediation
|
||||||
|
#debug: true
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.GetScope() == "Ip"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
duration: {{ cs_ban_duration }}
|
||||||
|
notifications:
|
||||||
|
# - slack_default # Set the webhook in /etc/crowdsec/notifications/slack.yaml before enabling this.
|
||||||
|
# - splunk_default # Set the splunk url and token in /etc/crowdsec/notifications/splunk.yaml before enabling this.
|
||||||
|
# - http_default # Set the required http parameters in /etc/crowdsec/notifications/http.yaml before enabling this.
|
||||||
|
{% if len(cs_receiver_emails) > 0 %}
|
||||||
|
- email_default # Set the required email parameters in /etc/crowdsec/notifications/email.yaml before enabling this.
|
||||||
|
{% endif %}
|
||||||
|
on_success: break
|
Loading…
Reference in New Issue
Block a user