OLD | NEW |
(Empty) | |
| 1 # == Class: fail2ban |
| 2 # |
| 3 # Create and maintain fail2ban (http://www.fail2ban.org/) setups. |
| 4 # |
| 5 # == Parameters: |
| 6 # |
| 7 # [*jail_config*] |
| 8 # Provisions a jail.local adjacent to the default configuration. |
| 9 # By default entries will have the following parameters: |
| 10 # 'enabled' => 'true', |
| 11 # 'port' => 'all', |
| 12 # 'maxretry' => 6, |
| 13 # 'banaction' => 'iptables-allports', |
| 14 # 'bantime' => 3600, |
| 15 # |
| 16 # For the default banaction iptables-allports, the port parameter |
| 17 # is not used and only set here for documentation purposes. Note |
| 18 # that if 'banaction' is set to iptables-multiport, it requires that |
| 19 # the 'port' parameter contains one or more comma-separated ports or protocols
. |
| 20 # |
| 21 # [*package*] |
| 22 # Overwrite the default package options, to fine-tune the target version (i.e. |
| 23 # ensure => 'latest') or remove fail2ban (ensure => 'absent' or 'purged') |
| 24 # |
| 25 # [*service*] |
| 26 # Overwrite the default service options. |
| 27 # |
| 28 # [*filters*] |
| 29 # Adds adittional filters to the filters.d folder. |
| 30 # === Examples: |
| 31 # |
| 32 # class {'fail2ban': |
| 33 # package => {ensure => 'present',}, |
| 34 # service => {}, |
| 35 # jail_config => { |
| 36 # 'CVE-2013-0235' => { |
| 37 # 'logpath' => '/var/log/nginx/access_log_hg', |
| 38 # 'banaction' => 'iptables-multiport', |
| 39 # 'port' => 'https, http', |
| 40 # } |
| 41 # }, |
| 42 # filters => { |
| 43 # 'CVE-2013-0235' => { |
| 44 # failregex => [ |
| 45 # '^<HOST>.*\"WordPress\/.*', |
| 46 # ], |
| 47 # } |
| 48 # }, |
| 49 # } |
| 50 class fail2ban ( |
| 51 $package = {}, |
| 52 $service = {}, |
| 53 $jail_config = {}, |
| 54 $filters = {}, |
| 55 ) { |
| 56 |
| 57 include stdlib |
| 58 |
| 59 $jail_default = { |
| 60 'enabled' => 'true', |
| 61 'port' => 'all', |
| 62 'maxretry' => 6, |
| 63 'banaction' => 'iptables-allports', |
| 64 'bantime' => 3600, |
| 65 } |
| 66 |
| 67 ensure_resource('package', $title, $package) |
| 68 |
| 69 # Used as default $ensure parameter for most resources below |
| 70 $ensure = getparam(Package[$title], 'ensure') ? { |
| 71 /^(absent|purged)$/ => 'absent', |
| 72 default => 'present', |
| 73 } |
| 74 |
| 75 # Service resources don't properly support the concept of absence |
| 76 if ($ensure == 'present') { |
| 77 |
| 78 ensure_resource('service', $title, $service) |
| 79 # See modules/fail2ban/manifests/filter.pp |
| 80 create_resources('fail2ban::filter', $filters) |
| 81 |
| 82 # Filters already present in the fail2ban distribution can |
| 83 # also be activated. |
| 84 # Another thing to consider is the possibility of |
| 85 # having the filters configured but not activated, so no conf is |
| 86 # passed. |
| 87 if jail_config != undef { |
| 88 file {'/etc/fail2ban/jail.local': |
| 89 ensure => present, |
| 90 group => 'root', |
| 91 mode => '0644', |
| 92 owner => 'root', |
| 93 content => template("fail2ban/jail.erb"), |
| 94 notify => Service[$title], |
| 95 } |
| 96 } |
| 97 |
| 98 Package[$title] -> File['/etc/fail2ban/jail.local'] |
| 99 } |
| 100 |
| 101 } |
OLD | NEW |