forked from konstruktoid/hardening
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sshd.bats
338 lines (270 loc) · 7.97 KB
/
sshd.bats
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
#!/usr/bin/env bats
load test_helper
@test "Ensure OpenSSH ssh_host_dsa_key is not used" {
run sshdConfig ssh_host_dsa_key
[ "$status" -eq 1 ]
}
@test "Verify OpenSSH UsePrivilegeSeparation (Deprecated)" {
run sshdConfig UsePrivilegeSeparation
[ "$status" -eq 1 ]
}
@test "Verify OpenSSH Protocol (Deprecated)" {
run sshdConfig Protocol
[ "$status" -eq 1 ]
}
@test "Verify OpenSSH RhostsRSAAuthentication (Deprecated)" {
run sshdConfig RhostsRSAAuthentication
[ "$status" -eq 1 ]
}
@test "Verify OpenSSH port $SSH_PORT" {
run bash -c "sshd -T | grep -i \"^port $SSH_PORT$\""
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH User and Groups access limits" {
run bash -c "sshd -T | grep -i -E 'allowgroups|allowusers|denygroups|denyusers'"
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH IgnoreRhosts" {
run sshdConfig '^IgnoreRhosts yes$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Compression" {
run sshdConfig '^Compression no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH KerberosAuthentication" {
run sshdConfig '^KerberosAuthentication no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH StrictModes" {
run sshdConfig '^StrictModes yes$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH GSSAPIAuthentication" {
run sshdConfig '^GSSAPIAuthentication no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH X11Forwarding" {
run sshdConfig '^X11Forwarding no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH LoginGraceTime" {
run sshdConfig '^LoginGraceTime 20$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH PermitRootLogin" {
run sshdConfig '^PermitRootLogin no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH KeyRegenerationInterval" {
run sshdConfig '^KeyRegenerationInterval.*$'
[ "$status" -eq 1 ]
}
@test "Verify OpenSSH LogLevel" {
run sshdConfig '^LogLevel VERBOSE$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH banner" {
run sshdConfig '^Banner /etc/issue.net$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH sftp" {
run sshdConfig '^Subsystem sftp internal-sftp$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH MaxAuthTries" {
run sshdConfig '^MaxAuthTries .$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH ClientAliveInterval" {
run sshdConfig '^ClientAliveInterval 200$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH ClientAliveCountMax" {
run sshdConfig '^ClientAliveCountMax 3$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH PermitUserEnvironment" {
run sshdConfig '^PermitUserEnvironment no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH KexAlgorithms" {
run sshdConfig '^KexAlgorithms [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Ciphers" {
run sshdConfig '^Ciphers [email protected],[email protected],aes256-ctr$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Macs" {
run sshdConfig '^Macs [email protected],[email protected],hmac-sha2-512,hmac-sha2-256$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH MaxSessions" {
run sshdConfig '^MaxSessions 3$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH UseDNS" {
run sshdConfig '^UseDNS no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH PrintLastLog" {
run sshdConfig '^PrintLastLog yes$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH IgnoreUserKnownHosts" {
run sshdConfig '^IgnoreUserKnownHosts yes$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH PermitEmptyPasswords" {
run sshdConfig '^PermitEmptyPasswords no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH MaxStartups" {
run sshdConfig '^MaxStartups 10:30:60$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH HostbasedAuthentication" {
run sshdConfig '^HostbasedAuthentication no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH RekeyLimit" {
run sshdConfig '^RekeyLimit [0-9]{5,9} 3600$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH AllowTcpForwarding" {
run sshdConfig '^AllowTcpForwarding no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH AllowAgentForwarding" {
run sshdConfig '^AllowAgentForwarding no$'
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH TCPKeepAlive" {
run sshdConfig '^TCPKeepAlive no$'
[ "$status" -eq 0 ]
}
@test "Verify moduli sizes" {
run moduliSize
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Client HashKnownHosts" {
run bash -c "grep '^\s.*HashKnownHosts yes$' /etc/ssh/ssh_config"
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Client Ciphers" {
run bash -c "grep '^\s.*Ciphers [email protected],[email protected],aes256-ctr$' /etc/ssh/ssh_config"
[ "$status" -eq 0 ]
}
@test "Verify OpenSSH Client Macs" {
run bash -c "grep '^\s.*MACs [email protected],[email protected],hmac-sha2-512,hmac-sha2-256$' /etc/ssh/ssh_config"
[ "$status" -eq 0 ]
}
@test "Ensure OpenSSH MAC hmac-md5 is not used" {
run sshdConfig 'hmac-md5'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC hmac-md5-96 is not used" {
run sshdConfig 'hmac-md5-96'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC hmac-ripemd160 is not used" {
run sshdConfig 'hmac-ripemd160'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC hmac-sha1 is not used" {
run sshdConfig 'hmac-sha1'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC hmac-sha1-96 is not used" {
run sshdConfig 'hmac-sha1-96'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH MAC [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher 3des-cbc is not used" {
run sshdConfig '3des-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher aes128-cbc is not used" {
run sshdConfig 'aes128-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher aes192-cbc is not used" {
run sshdConfig 'aes192-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher aes256-cbc is not used" {
run sshdConfig 'aes256-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher arcfour is not used" {
run sshdConfig 'arcfour'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher arcfour128 is not used" {
run sshdConfig 'arcfour128'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher arcfour256 is not used" {
run sshdConfig 'arcfour256'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher blowfish-cbc is not used" {
run sshdConfig 'blowfish-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher cast128-cbc is not used" {
run sshdConfig 'cast128-cbc'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH cipher [email protected] is not used" {
run sshdConfig '[email protected]'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH KEX diffie-hellman-group1-sha1 is not used" {
run sshdConfig 'diffie-hellman-group1-sha1'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH KEX diffie-hellman-group14-sha1 is not used" {
run sshdConfig 'diffie-hellman-group14-sha1'
[ "$status" -eq 1 ]
}
@test "Ensure OpenSSH KEX diffie-hellman-group-exchange-sha1 is not used" {
run sshdConfig 'diffie-hellman-group-exchange-sha1'
[ "$status" -eq 1 ]
}