Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e8e40569cf | |||
|
|
95b1d1231f | ||
|
|
7ae861c216 | ||
|
|
70c6bf4a88 | ||
|
|
50210d9cc3 | ||
|
|
52b3523d4d | ||
|
|
de94a58c3e | ||
|
|
a0fae48b67 | ||
|
|
f9e4cfa10b | ||
|
|
2e68e4259a | ||
|
|
0cdcd5b673 | ||
|
|
12dc849ad3 |
@@ -4,7 +4,7 @@ rvm:
|
||||
- 1.8.7
|
||||
- 1.9.3
|
||||
- 2.0.0
|
||||
script: "bundle exec rake spec SPEC_OPTS='--format documentation'"
|
||||
script: "bundle exec rake spec SPEC_OPTS='--format documentation' && bundle exec rake test"
|
||||
branches:
|
||||
only:
|
||||
master
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name 'netmanagers-fail2ban'
|
||||
version '1.3.0'
|
||||
version '1.4.0'
|
||||
author 'Javier Bertoli'
|
||||
license 'Apache2'
|
||||
project_page 'http://www.netmanagers.com.ar'
|
||||
|
||||
40
Rakefile
40
Rakefile
@@ -1,5 +1,41 @@
|
||||
require 'rubygems'
|
||||
require 'puppetlabs_spec_helper/rake_tasks'
|
||||
require 'puppet-lint/tasks/puppet-lint'
|
||||
PuppetLint.configuration.send('disable_80chars')
|
||||
require 'puppet-syntax/tasks/puppet-syntax'
|
||||
|
||||
# These two gems aren't always present, for instance
|
||||
# on Travis with --without development
|
||||
begin
|
||||
require 'rspec-system/rake_task'
|
||||
rescue LoadError
|
||||
end
|
||||
|
||||
begin
|
||||
require 'puppet_blacksmith/rake_tasks'
|
||||
rescue LoadError
|
||||
end
|
||||
|
||||
PuppetLint.configuration.send("disable_80chars")
|
||||
PuppetLint.configuration.log_format = "%{path}:%{linenumber}:%{check}:%{KIND}:%{message}"
|
||||
PuppetLint.configuration.fail_on_warnings = true
|
||||
PuppetLint.configuration.relative = true
|
||||
|
||||
# Forsake support for Puppet 2.6.2 for the benefit of cleaner code.
|
||||
# http://puppet-lint.com/checks/class_parameter_defaults/
|
||||
PuppetLint.configuration.send('disable_class_parameter_defaults')
|
||||
# http://puppet-lint.com/checks/class_inherits_from_params_class/
|
||||
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
||||
|
||||
exclude_paths = [
|
||||
"pkg/**/*",
|
||||
"vendor/**/*",
|
||||
"spec/**/*",
|
||||
]
|
||||
PuppetLint.configuration.ignore_paths = exclude_paths
|
||||
PuppetSyntax.exclude_paths = exclude_paths
|
||||
|
||||
desc "Run syntax, lint, and spec tests."
|
||||
task :test => [
|
||||
:syntax,
|
||||
:lint,
|
||||
:spec,
|
||||
]
|
||||
|
||||
@@ -31,6 +31,14 @@
|
||||
# (source => $source_dir , recurse => true , purge => true)
|
||||
# Can be defined also by the (top scope) variable $fail2ban_source_dir_purge
|
||||
#
|
||||
# [*source_dir_owner*]
|
||||
# Configuration directory owner
|
||||
# Default: root
|
||||
#
|
||||
# [*source_dir_group*]
|
||||
# Configuration directory group
|
||||
# Default: root
|
||||
#
|
||||
# [*template*]
|
||||
# Sets the path to the template to use as content for main configuration file
|
||||
# If defined, fail2ban main config file has: content => content("$template")
|
||||
@@ -278,6 +286,8 @@ class fail2ban (
|
||||
$source = params_lookup( 'source' ),
|
||||
$source_dir = params_lookup( 'source_dir' ),
|
||||
$source_dir_purge = params_lookup( 'source_dir_purge' ),
|
||||
$source_dir_owner = params_lookup( 'source_dir_owner' ),
|
||||
$source_dir_group = params_lookup( 'source_dir_group' ),
|
||||
$template = params_lookup( 'template' ),
|
||||
$service_autorestart = params_lookup( 'service_autorestart' , 'global' ),
|
||||
$options = params_lookup( 'options' ),
|
||||
@@ -412,18 +422,18 @@ class fail2ban (
|
||||
|
||||
### Managed resources
|
||||
package { $fail2ban::package:
|
||||
ensure => $fail2ban::manage_package,
|
||||
noop => $fail2ban::noops,
|
||||
ensure => $fail2ban::manage_package,
|
||||
noop => $fail2ban::noops,
|
||||
}
|
||||
|
||||
service { 'fail2ban':
|
||||
ensure => $fail2ban::manage_service_ensure,
|
||||
name => $fail2ban::service,
|
||||
enable => $fail2ban::manage_service_enable,
|
||||
hasstatus => $fail2ban::service_status,
|
||||
pattern => $fail2ban::process,
|
||||
require => Package[$fail2ban::package],
|
||||
noop => $fail2ban::noops,
|
||||
ensure => $fail2ban::manage_service_ensure,
|
||||
name => $fail2ban::service,
|
||||
enable => $fail2ban::manage_service_enable,
|
||||
hasstatus => $fail2ban::service_status,
|
||||
pattern => $fail2ban::process,
|
||||
require => Package[$fail2ban::package],
|
||||
noop => $fail2ban::noops,
|
||||
}
|
||||
|
||||
if $fail2ban::manage_file_source
|
||||
@@ -497,6 +507,8 @@ class fail2ban (
|
||||
source => $fail2ban::source_dir,
|
||||
recurse => true,
|
||||
purge => $fail2ban::bool_source_dir_purge,
|
||||
owner => $fail2ban::source_dir_owner,
|
||||
group => $fail2ban::source_dir_group,
|
||||
force => $fail2ban::bool_source_dir_purge,
|
||||
replace => $fail2ban::manage_file_replace,
|
||||
audit => $fail2ban::manage_audit,
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
# If empty, defaults to == $jailname.
|
||||
# $ignoreip - Don't ban a host which matches an address in this list.
|
||||
# $port - The port to filter. It can be an array of ports.
|
||||
# $protocol - The protocol for this jail's action.
|
||||
# $logpath - The log file to monitor
|
||||
# $maxretry - How many fails are acceptable
|
||||
# $action - The action to take when fail2ban finds $maxretry $filter-matching
|
||||
@@ -32,6 +33,7 @@ define fail2ban::jail (
|
||||
$filter = '',
|
||||
$ignoreip = '',
|
||||
$port = '',
|
||||
$protocol = '',
|
||||
$action = '',
|
||||
$logpath = '',
|
||||
$maxretry = '',
|
||||
@@ -80,6 +82,11 @@ define fail2ban::jail (
|
||||
default => $port,
|
||||
}
|
||||
|
||||
$real_protocol = $protocol ? {
|
||||
'' => undef,
|
||||
default => $protocol,
|
||||
}
|
||||
|
||||
$array_action = is_array($action) ? {
|
||||
false => $action ? {
|
||||
'' => [],
|
||||
|
||||
@@ -16,49 +16,49 @@ class fail2ban::params {
|
||||
|
||||
### Application related parameters
|
||||
|
||||
$package = $::operatingsystem ? {
|
||||
$package = $::osfamily ? {
|
||||
default => 'fail2ban',
|
||||
}
|
||||
|
||||
$service = $::operatingsystem ? {
|
||||
$service = $::osfamily ? {
|
||||
default => 'fail2ban',
|
||||
}
|
||||
|
||||
$service_status = $::operatingsystem ? {
|
||||
$service_status = $::osfamily ? {
|
||||
default => true,
|
||||
}
|
||||
|
||||
$process = $::operatingsystem ? {
|
||||
/(?i:Debian|Ubuntu|Mint)/ => 'fail2ban-server',
|
||||
/(?i:RedHat|Centos|Scientific|Fedora|OracleLinux)/ => 'fail2ban-server',
|
||||
default => 'fail2ban',
|
||||
$process = $::osfamily ? {
|
||||
'Debian' => 'fail2ban-server',
|
||||
'RedHat' => 'fail2ban-server',
|
||||
default => 'fail2ban',
|
||||
}
|
||||
|
||||
$process_args = $::operatingsystem ? {
|
||||
$process_args = $::osfamily ? {
|
||||
default => '',
|
||||
}
|
||||
|
||||
$process_user = $::operatingsystem ? {
|
||||
$process_user = $::osfamily ? {
|
||||
default => 'fail2ban',
|
||||
}
|
||||
|
||||
$config_dir = $::operatingsystem ? {
|
||||
$config_dir = $::osfamily ? {
|
||||
default => '/etc/fail2ban',
|
||||
}
|
||||
|
||||
$config_file = $::operatingsystem ? {
|
||||
$config_file = $::osfamily ? {
|
||||
default => '/etc/fail2ban/fail2ban.local',
|
||||
}
|
||||
|
||||
$config_file_mode = $::operatingsystem ? {
|
||||
$config_file_mode = $::osfamily ? {
|
||||
default => '0644',
|
||||
}
|
||||
|
||||
$config_file_owner = $::operatingsystem ? {
|
||||
$config_file_owner = $::osfamily ? {
|
||||
default => 'root',
|
||||
}
|
||||
|
||||
$config_file_group = $::operatingsystem ? {
|
||||
$config_file_group = $::osfamily ? {
|
||||
default => 'root',
|
||||
}
|
||||
|
||||
@@ -69,41 +69,41 @@ class fail2ban::params {
|
||||
# fail2ban::jail define
|
||||
$jails_config = ''
|
||||
|
||||
$jails_file = $::operatingsystem ? {
|
||||
$jails_file = $::osfamily ? {
|
||||
default => '/etc/fail2ban/jail.local',
|
||||
}
|
||||
|
||||
$jails_file_mode = $::operatingsystem ? {
|
||||
$jails_file_mode = $::osfamily ? {
|
||||
default => '0644',
|
||||
}
|
||||
|
||||
$jails_file_owner = $::operatingsystem ? {
|
||||
$jails_file_owner = $::osfamily ? {
|
||||
default => 'root',
|
||||
}
|
||||
|
||||
$jails_file_group = $::operatingsystem ? {
|
||||
$jails_file_group = $::osfamily ? {
|
||||
default => 'root',
|
||||
}
|
||||
|
||||
$config_file_init = $::operatingsystem ? {
|
||||
/(?i:Debian|Ubuntu|Mint)/ => '/etc/default/fail2ban',
|
||||
default => '/etc/sysconfig/fail2ban',
|
||||
$config_file_init = $::osfamily ? {
|
||||
'Debian' => '/etc/default/fail2ban',
|
||||
default => '/etc/sysconfig/fail2ban',
|
||||
}
|
||||
|
||||
$pid_file = $::operatingsystem ? {
|
||||
/(?i:Debian|Ubuntu|Mint)/ => '/var/run/fail2ban/fail2ban.pid',
|
||||
default => '/var/run/fail2ban.pid',
|
||||
$pid_file = $::osfamily ? {
|
||||
'Debian' => '/var/run/fail2ban/fail2ban.pid',
|
||||
default => '/var/run/fail2ban.pid',
|
||||
}
|
||||
|
||||
$data_dir = $::operatingsystem ? {
|
||||
$data_dir = $::osfamily ? {
|
||||
default => '/etc/fail2ban',
|
||||
}
|
||||
|
||||
$log_dir = $::operatingsystem ? {
|
||||
$log_dir = $::osfamily ? {
|
||||
default => '/var/log/fail2ban',
|
||||
}
|
||||
|
||||
$log_file = $::operatingsystem ? {
|
||||
$log_file = $::osfamily ? {
|
||||
default => '/var/log/fail2ban/fail2ban.log',
|
||||
}
|
||||
|
||||
@@ -133,6 +133,8 @@ class fail2ban::params {
|
||||
$template = ''
|
||||
$source_dir = ''
|
||||
$source_dir_purge = false
|
||||
$source_dir_owner = 'root'
|
||||
$source_dir_group = 'root'
|
||||
$options = ''
|
||||
$service_autorestart = true
|
||||
$version = 'present'
|
||||
|
||||
@@ -26,7 +26,7 @@ describe 'fail2ban' do
|
||||
end
|
||||
|
||||
describe 'Test jails managed throuh file - template' do
|
||||
let(:facts) { {:operatingsystem => 'Debian' } }
|
||||
let(:facts) { {:osfamily => 'Debian' } }
|
||||
let(:params) { {:jails_config => 'file', :jails_template => 'fail2ban/jail.local.erb', :jails => 'ssh' } }
|
||||
it { should contain_file('jail.local').without_source }
|
||||
it { should contain_file('jail.local').with_content(/ssh-iptables\]
|
||||
|
||||
@@ -37,6 +37,7 @@ filter = fail2ban::jail
|
||||
{
|
||||
:name => 'sample1',
|
||||
:port => ['42', '43'],
|
||||
:protocol => 'udp',
|
||||
:logpath => '/path/to/somelog',
|
||||
:enable => true,
|
||||
:ignoreip => [ '10.3.2.0/24', '192.168.56.0/24' ],
|
||||
@@ -56,6 +57,7 @@ enabled = true
|
||||
filter = fail2ban::jail
|
||||
ignoreip = 10.3.2.0/24 192.168.56.0/24
|
||||
port = 42,43
|
||||
protocol = udp
|
||||
action = iptables[name=SSH, port=ssh, protocol=tcp]
|
||||
mail-whois[name=SSH, dest=yourmail@mail.com]
|
||||
logpath = /path/to/somelog
|
||||
|
||||
@@ -10,6 +10,9 @@ ignoreip = <%= @array_ignoreip * ' ' %>
|
||||
<% if @array_port != [] -%>
|
||||
port = <%= @array_port * ',' %>
|
||||
<% end -%>
|
||||
<% if @real_protocol -%>
|
||||
protocol = <%= @real_protocol %>
|
||||
<% end -%>
|
||||
<% if @array_action != [] -%>
|
||||
action = <%= @array_action.join("\n\t") %>
|
||||
<% end -%>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This file is managed by Puppet. DO NOT EDIT.
|
||||
[DEFAULT]
|
||||
ignoreip = <%= scope.lookupvar('fail2ban::ignoreip') %>
|
||||
ignoreip = <%= scope.lookupvar('fail2ban::ignoreip') * ' ' %>
|
||||
bantime = <%= scope.lookupvar('fail2ban::bantime') %>
|
||||
findtime = <%= scope.lookupvar('fail2ban::findtime') %>
|
||||
maxretry = <%= scope.lookupvar('fail2ban::maxretry') %>
|
||||
@@ -13,7 +13,11 @@ action = iptables[name=IMAP, port=imap, protocol=tcp]
|
||||
<% unless scope.lookupvar('fail2ban::mailto').empty? -%>
|
||||
sendmail-whois[name=POP3, dest=<%= scope.lookupvar('fail2ban::mailto') %>, sender=fail2ban@<%= @fqdn %>]
|
||||
<% end -%>
|
||||
<% if @osfamily == "Debian" -%>
|
||||
logpath = /var/log/mail.log
|
||||
<% else -%>
|
||||
logpath = /var/log/maillog
|
||||
<% end -%>
|
||||
maxretry = 5
|
||||
|
||||
[pop3-iptables]
|
||||
@@ -23,7 +27,11 @@ action = iptables[name=POP3, port=pop3, protocol=tcp]
|
||||
<% unless scope.lookupvar('fail2ban::mailto').empty? -%>
|
||||
sendmail-whois[name=POP3, dest=<%= scope.lookupvar('fail2ban::mailto') %>, sender=fail2ban@<%= @fqdn %>]
|
||||
<% end -%>
|
||||
<% if @osfamily == "Debian" -%>
|
||||
logpath = /var/log/mail.log
|
||||
<% else -%>
|
||||
logpath = /var/log/maillog
|
||||
<% end -%>
|
||||
maxretry = 5
|
||||
|
||||
[ssh-iptables]
|
||||
@@ -33,7 +41,7 @@ action = iptables[name=SSH, port=ssh, protocol=tcp]
|
||||
<% unless scope.lookupvar('fail2ban::mailto').empty? -%>
|
||||
sendmail-whois[name=SSH, dest=<%= scope.lookupvar('fail2ban::mailto') %>, sender=fail2ban@<%= @fqdn %>]
|
||||
<% end -%>
|
||||
<% if @operatingsystem == "Debian" -%>
|
||||
<% if @osfamily == "Debian" -%>
|
||||
logpath = /var/log/auth.log
|
||||
<% else -%>
|
||||
logpath = /var/log/secure
|
||||
|
||||
Reference in New Issue
Block a user