ironfan 4.11.4 → 4.11.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -1
- data/ELB.md +14 -4
- data/VERSION +1 -1
- data/ironfan.gemspec +2 -2
- data/lib/ironfan/dsl/ec2.rb +49 -11
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
# v4.11.5
|
2
|
+
* Update ELB creation code to reflect new SSLNegotiationPolicyType behaviors (thanks @nickmarden)
|
3
|
+
|
1
4
|
# v4.11.4
|
2
|
-
* fix "undefined method" error when assigning elastic IPs (thanks
|
5
|
+
* fix "undefined method" error when assigning elastic IPs (thanks @andrewgoktepe)
|
3
6
|
|
4
7
|
# v4.11.3
|
5
8
|
* Removing unnecessary check for groups (caused failures when in VPC)
|
data/ELB.md
CHANGED
@@ -26,7 +26,14 @@
|
|
26
26
|
map_port('HTTPS', 443, 'HTTP', 81, 'snake-oil')
|
27
27
|
|
28
28
|
# Applies to all HTTPS/SSL listeners
|
29
|
-
|
29
|
+
allowed_ciphers(%w[ Protocol-SSLv3 Protocol-TLSv1 RC4-MD5 RC4-SHA ])
|
30
|
+
|
31
|
+
# If AWS tries to add other ciphers automatically because "they know
|
32
|
+
# best", and you really don't want that cipher (e.g. the cipher is
|
33
|
+
# flagged as problematic by SSLLabs, nessus, etc.) you can explicitly
|
34
|
+
# disallow the cipher from your HTTPS/SSL listeners thusly.
|
35
|
+
disallowed_ciphers(%w[ AES128-SHA ])
|
36
|
+
# PROTIP: The disallowed_ciphers call is usually unnecessary
|
30
37
|
|
31
38
|
# Health check that is made against ALL running instances
|
32
39
|
health_check do
|
@@ -78,15 +85,18 @@ These `knife cluster` commands are not associated with updates of the Chef or IA
|
|
78
85
|
|
79
86
|
## SSL policy
|
80
87
|
|
81
|
-
The SSL policy control in Ironfan is very rudimentary. You may control which ciphers are explicitly disallowed as follows
|
88
|
+
The SSL policy control in Ironfan is very rudimentary. You may control which ciphers are explicitly allowed or disallowed as follows
|
82
89
|
|
83
90
|
elastic_load_balancer "sparky-elb" do
|
84
91
|
...
|
85
|
-
|
92
|
+
allowed_ciphers(%w[ Protocol-SSLv3 Protocol-TLSv1 RC4-MD5 RC4-SHA ])
|
93
|
+
disallowed_ciphers(%w[ AES128-SHA ])
|
86
94
|
...
|
87
95
|
end
|
88
96
|
|
89
|
-
Note that the default behavior is to disallow ciphers that are hypothetically vulnerable to the [BEAST attack](http://vnhacker.blogspot.com/2011/09/beast.html). You probably don't want or need to change it.
|
97
|
+
Note that the default behavior is to allow a standard "safe" list of ciphers supported by most modern browsers, and to disallow ciphers that are hypothetically vulnerable to the [BEAST attack](http://vnhacker.blogspot.com/2011/09/beast.html) and RC4 attacks (http://en.wikipedia.org/wiki/Transport_Layer_Security#RC4_attacks). You probably don't want or need to change it.
|
98
|
+
|
99
|
+
NOTE: If you do call allowed_ciphers or disallowed_ciphers, you will be overriding the built-in defaults and will need to specify the complete list of allowed or disallowed ciphers instead of just the ones you want to add or remove from the list.
|
90
100
|
|
91
101
|
## How do port mappings work?
|
92
102
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.11.
|
1
|
+
4.11.5
|
data/ironfan.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ironfan"
|
8
|
-
s.version = "4.11.
|
8
|
+
s.version = "4.11.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infochimps"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-09-24"
|
13
13
|
s.description = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
|
14
14
|
s.email = "coders@infochimps.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/ironfan/dsl/ec2.rb
CHANGED
@@ -182,8 +182,15 @@ module Ironfan
|
|
182
182
|
|
183
183
|
end
|
184
184
|
|
185
|
-
#
|
186
|
-
|
185
|
+
# AWS has wonky logic about which ciphers are included in a policy.
|
186
|
+
# Some ciphers need to be explicitly excluded or else they will be
|
187
|
+
# included, and vice versa. For completeness we protect ourselves
|
188
|
+
# from this behavior the best we can by having both an explicit
|
189
|
+
# include (allow) and exclude (disallow) list.
|
190
|
+
|
191
|
+
# Remove ciphers which are vulnerable to the BEAST attack.
|
192
|
+
# http://en.wikipedia.org/wiki/Transport_Layer_Security#BEAST_attack
|
193
|
+
DISALLOWED_SSL_CIPHERS = %w[
|
187
194
|
Protocol-SSLv2
|
188
195
|
ADH-AES128-SHA
|
189
196
|
ADH-AES256-SHA
|
@@ -193,12 +200,9 @@ module Ironfan
|
|
193
200
|
ADH-DES-CBC3-SHA
|
194
201
|
ADH-RC4-MD5
|
195
202
|
ADH-SEED-SHA
|
196
|
-
AES128-SHA
|
197
|
-
AES256-SHA
|
198
203
|
DES-CBC-MD5
|
199
204
|
DES-CBC-SHA
|
200
205
|
DES-CBC3-MD5
|
201
|
-
DES-CBC3-SHA
|
202
206
|
DHE-DSS-AES128-SHA
|
203
207
|
DHE-DSS-AES256-SHA
|
204
208
|
DHE-RSA-AES128-SHA
|
@@ -226,11 +230,45 @@ module Ironfan
|
|
226
230
|
PSK-AES128-CBC-SHA
|
227
231
|
PSK-AES256-CBC-SHA
|
228
232
|
RC2-CBC-MD5
|
233
|
+
] +
|
234
|
+
# Remove all RC4 ciphers
|
235
|
+
# http://en.wikipedia.org/wiki/Transport_Layer_Security#RC4_attacks
|
236
|
+
%w[
|
237
|
+
ADH-RC4-MD5
|
238
|
+
EXP-ADH-RC4-MD5
|
239
|
+
EXP-KRB5-RC4-MD5
|
240
|
+
EXP-KRB5-RC4-SHA
|
241
|
+
EXP-RC4-MD5
|
242
|
+
KRB5-RC4-MD5
|
243
|
+
KRB5-RC4-SHA
|
244
|
+
PSK-RC4-SHA
|
245
|
+
RC4-MD5
|
246
|
+
RC4-SHA
|
247
|
+
]
|
248
|
+
|
249
|
+
# TODO: Move over to Elliptic Curve Cipher Suites (ECDHE ciphers) as
|
250
|
+
# soon as ELB supports them.
|
251
|
+
ALLOWED_SSL_CIPHERS = %w[
|
252
|
+
Protocol-SSLv3
|
253
|
+
Protocol-TLSv1
|
254
|
+
AES128-SHA
|
255
|
+
AES256-SHA
|
256
|
+
CAMELLIA128-SHA
|
257
|
+
CAMELLIA256-SHA
|
258
|
+
DES-CBC3-SHA
|
259
|
+
DHE-DSS-CAMELLIA128-SHA
|
260
|
+
DHE-DSS-CAMELLIA256-SHA
|
261
|
+
DHE-DSS-SEED-SHA
|
262
|
+
DHE-RSA-CAMELLIA128-SHA
|
263
|
+
DHE-RSA-CAMELLIA256-SHA
|
264
|
+
DHE-RSA-SEED-SHA
|
265
|
+
SEED-SHA
|
229
266
|
]
|
230
267
|
|
231
268
|
field :name, String
|
232
269
|
field :port_mappings, Array, :default => []
|
233
|
-
magic :
|
270
|
+
magic :allowed_ciphers, Array, :default => ALLOWED_SSL_CIPHERS
|
271
|
+
magic :disallowed_ciphers, Array, :default => DISALLOWED_SSL_CIPHERS
|
234
272
|
member :health_check, HealthCheck
|
235
273
|
|
236
274
|
def map_port(load_balancer_protocol = 'HTTP', load_balancer_port = 80, internal_protocol = 'HTTP', internal_port = 80, iam_server_certificate = nil)
|
@@ -240,11 +278,11 @@ module Ironfan
|
|
240
278
|
end
|
241
279
|
|
242
280
|
def ssl_policy_to_fog
|
243
|
-
result =
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
}
|
281
|
+
result = { }
|
282
|
+
allowed_ciphers.each { |a| result[a] = true }
|
283
|
+
disallowed_ciphers.each { |d| result[d] = false }
|
284
|
+
uuid = Digest::MD5.hexdigest("ALLOWED:#{allowed_ciphers.sort.join('')};DISALLOWED:#{disallowed_ciphers.sort.join('')}")
|
285
|
+
return { :name => uuid, :attributes => result }
|
248
286
|
end
|
249
287
|
|
250
288
|
def listeners_to_fog(cert_lookup)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ironfan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.11.
|
4
|
+
version: 4.11.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
@@ -381,7 +381,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
381
381
|
version: '0'
|
382
382
|
segments:
|
383
383
|
- 0
|
384
|
-
hash:
|
384
|
+
hash: -2976122810145852585
|
385
385
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
386
386
|
none: false
|
387
387
|
requirements:
|