comparison modules/fail2ban/manifests/init.pp @ 292:3e04f35dd0af

Turn Fail2ban setup into a module We now: * Don't have a large class outside a module * Build "bad SSH users" config from a list (easier to understand/see diffs in than a long line) * Use modern EPP files
author IBBoard <dev@ibboard.co.uk>
date Sat, 18 Jan 2020 15:17:03 +0000
parents
children 55762b436f89
comparison
equal deleted inserted replaced
291:d2ae0b786b49 292:3e04f35dd0af
1 class fail2ban (
2 $firewall_cmd,
3 ) {
4 package { 'fail2ban':
5 ensure => installed,
6 }
7 service { 'fail2ban':
8 ensure => running,
9 enable => true
10 }
11 File<| tag == 'fail2ban' |> {
12 ensure => present,
13 require => Package['fail2ban'],
14 notify => Service['fail2ban'],
15 }
16 file { '/etc/fail2ban/fail2ban.local':
17 source => 'puppet:///modules/fail2ban/fail2ban.local',
18 }
19 file { '/etc/fail2ban/jail.local':
20 source => 'puppet:///modules/fail2ban/jail.local',
21 }
22 file { '/etc/fail2ban/action.d/apf.conf':
23 source => 'puppet:///modules/fail2ban/apf.conf',
24 }
25
26 if $firewall_cmd == 'iptables' {
27 $firewall_ban_cmd = 'iptables-multiport'
28 } else {
29 $firewall_ban_cmd = $firewall_cmd
30 }
31
32 file { '/etc/fail2ban/action.d/firewall-ban.conf':
33 ensure => link,
34 target => "/etc/fail2ban/action.d/${firewall_ban_cmd}.conf",
35 }
36 file { '/etc/fail2ban/filter.d/ibb-apache-exploits-instaban.conf':
37 source => 'puppet:///modules/fail2ban/ibb-apache-exploits-instaban.conf',
38 }
39 file { '/etc/fail2ban/filter.d/ibb-apache-shellshock.conf':
40 source => 'puppet:///modules/fail2ban/ibb-apache-shellshock.conf',
41 }
42 file { '/etc/fail2ban/filter.d/ibb-repeat-offender.conf':
43 source => 'puppet:///modules/fail2ban/ibb-repeat-offender.conf',
44 }
45 file { '/etc/fail2ban/filter.d/ibb-repeat-offender-ssh.conf':
46 source => 'puppet:///modules/fail2ban/ibb-repeat-offender-ssh.conf',
47 }
48 file { '/etc/fail2ban/filter.d/ibb-postfix-spammers.conf':
49 source => 'puppet:///modules/fail2ban/ibb-postfix-spammers.conf',
50 }
51 file { '/etc/fail2ban/filter.d/ibb-postfix-malicious.conf':
52 source => 'puppet:///modules/fail2ban/ibb-postfix-malicious.conf',
53 }
54 file { '/etc/fail2ban/filter.d/ibb-postfix.conf':
55 source => 'puppet:///modules/fail2ban/ibb-postfix.conf',
56 }
57 file { '/etc/fail2ban/filter.d/ibb-sshd.conf':
58 source => 'puppet:///modules/fail2ban/ibb-sshd.conf',
59 }
60
61 $bad_users = [
62 '[0-9]+',
63 '[0-9a-z][0-9a-z]?',
64 '([0-9a-z])\2{2,}',
65 'abc123',
66 'abused',
67 'adm',
68 'Admin',
69 'admin[0-9]+',
70 'administrateur',
71 'administracion',
72 'altibase',
73 'alumni',
74 'amavisd?',
75 'anwenderschnittstelle',
76 'anonymous',
77 'ansible',
78 'aptproxy',
79 'arkserver',
80 'asterisk',
81 'auser',
82 'avahi',
83 'avis',
84 'backlog',
85 'backup(s|er|pc|user)?',
86 'bf2',
87 'bitnami',
88 'bitrix',
89 'boinc',
90 'botmaster',
91 'build',
92 'buscador',
93 'cacti(user)?',
94 'catchall',
95 'cemergen',
96 'chef',
97 'cinema',
98 'clamav',
99 'cliente?[0-9]*',
100 'clouduser',
101 'com',
102 'comercial',
103 'control',
104 'couchdb',
105 'cpanel',
106 'create',
107 'cron',
108 '(cs(s|go|cz)|arma|mc|tf2?|sdtd|web|pz)se?rve?r?',
109 'cyrus[0-9]*',
110 'daemon',
111 'danger',
112 'debian(-spamd)?',
113 'default',
114 'dell',
115 'deploy(er)?',
116 'desktop',
117 'developer',
118 'devops',
119 'devteam',
120 'dietpi',
121 'django',
122 'dotblot',
123 'download',
124 'dovecot',
125 'easy',
126 'ec2-user',
127 'edu(cation)?[0-9]*',
128 'e-shop',
129 'engin(eer)?',
130 'esadmin',
131 'events',
132 'exports?',
133 'facebook',
134 'factorio',
135 'fax',
136 'filter',
137 'firebird',
138 'fuser',
139 'games',
140 'gdm',
141 'geniuz',
142 'ggc_user',
143 'ghost',
144 'git(olite?|blit|lab(_ci)?)?',
145 'gmail',
146 'gopher',
147 'guest',
148 'hacker',
149 'hadoop',
150 'harvard',
151 'helpdesk',
152 'home',
153 'host',
154 'httpd?',
155 'huawei',
156 'iceuser',
157 'imscp',
158 'info(rmix)?',
159 'java',
160 'jboss',
161 'jenkins',
162 'jira',
163 'jsboss',
164 'kafka',
165 'kodi',
166 'library',
167 'libsys',
168 'libuuid',
169 'linode',
170 'linux',
171 'login',
172 'logout',
173 'lynx',
174 'mailer',
175 'mailman',
176 'maintain',
177 'majordomo',
178 'man',
179 'mantis',
180 'marketing',
181 'master',
182 'membership',
183 'minecraft',
184 'modem',
185 'mongo(db|user)?',
186 'monitor',
187 'more',
188 'moher',
189 'mpiuser',
190 'musi[ck]bot',
191 '(my?|pg)sq(ue)?l',
192 'mythtv',
193 'nagios',
194 'nasa',
195 'netdump',
196 'netzplatz',
197 'newadmin',
198 'nexus',
199 'nfs',
200 '(nfs)?nobody',
201 'nginx',
202 'noc',
203 'nothing',
204 'NpC',
205 'nux',
206 'odoo',
207 'odroid',
208 'onyxeye',
209 'openbravo',
210 'openvpn',
211 'operador',
212 'operator',
213 'ops(code)?',
214 'oprofile',
215 'ora(cle|prod)',
216 'osmc',
217 'papernet',
218 'password',
219 'payments',
220 'pay_?pal',
221 'pentaho',
222 'PlcmSpIp(PlcmSpIp)?',
223 'popuser',
224 'postfix',
225 'postgres',
226 'postmaster',
227 'print',
228 'privoxy',
229 'proba',
230 'proxy',
231 'puppet',
232 'qhsupport',
233 'rabbit(mq)?',
234 'radiusd?',
235 'redis',
236 'redmine',
237 'riakcs',
238 'root[0-9]+',
239 'rpc(user)?',
240 'RPM',
241 'rtorrent',
242 'rustserver',
243 'sales[0-9]+',
244 's?bin',
245 '(samba|sshd|git|student|tomcat|abc|web|info|(vpn|appl?|my|b)?(use?r|server|manager|mgr)|account)[0-9]*',
246 'saslauth',
247 'scaner',
248 'screen',
249 'search',
250 'setup',
251 'service',
252 '(s|u|ams|admin|inss|pro)?ftp(d|_?user|home|_?test)?[0-9]*',
253 'sftponly',
254 'shell',
255 'shop',
256 'sinusbot',
257 'smmsp',
258 'socket',
259 'software',
260 'solarus',
261 'splunk',
262 'squid',
263 'squirrelmail',
264 'sshusr',
265 'staffc',
266 'steam(cmd)?',
267 'store',
268 'superuser',
269 'support',
270 'svnroot',
271 'sysadmin',
272 'system',
273 'teamspeak3?',
274 'telkom',
275 'temp',
276 'test((ing|ftp|man|use?r|u)[0-9]*|[0-9]+)?',
277 '(test)?username',
278 'text',
279 'tomcat',
280 'tools',
281 'toor',
282 'ts[23](se?rv(er)?|(musi[ck])?bot)?',
283 'tunstall',
284 'ubnt',
285 'ubuntu',
286 'upload',
287 'unity',
288 'USERID',
289 'user[0-9]*',
290 'usuario',
291 'uucp',
292 'vagrant',
293 'vbox',
294 'ventrilo',
295 'vhbackup',
296 'virusalter',
297 'vmadmin',
298 'vmail',
299 'vyatta',
300 'wanadoo',
301 'weblogic',
302 'webmaster',
303 'WinD3str0y',
304 'wine',
305 'wp-?user',
306 'write',
307 'www',
308 '(www|web|coin|fax|sys|db2|rsync|tc)-?(adm(in)?|run|user|data)',
309 'xbian',
310 'xbot',
311 'xoadmin',
312 'yahoo',
313 'yarn',
314 'zabbix',
315 'zimbra',
316 'zookeeper',
317 '0fordn1on@#\$%%\^&',
318 'P@\$\$w0rd',
319 'pass123?4?'
320 ]
321
322 file { '/etc/fail2ban/filter.d/ibb-sshd-bad-user.conf':
323 content => epp('fail2ban/ibb-sshd-bad-user.epp', { 'bad_users' => $bad_users }),
324 }
325 # Because one of our rules checks fail2ban's log, but the service dies without the file
326 file { '/var/log/fail2ban.log':
327 ensure => present,
328 owner => 'root',
329 group => 'root',
330 mode => '0600',
331 }
332 }