nexpose_pxgrid 0.1.4-java → 0.1.5-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b491e0306e3ef6a0a86c6c130aac80a8593ea78d
|
4
|
+
data.tar.gz: 15dead73f58934f3d38f117c959ed741017ac975
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b93c8118dc23da7bb0b0ef382ffa419881bdbf314811ec046af45bd9693779eb7c4534adca13210b00e5ad5d4b3d438408e9854396b11130e3ca7abe44d4adfb
|
7
|
+
data.tar.gz: 1d1ea1ae083831bcabd3d3cc7a1a79473e5997c4ae7b82825bfb7e41d8cad2c381c7f91a4687b02d88b1270e9bb0137b50778ce038409d862fec4fe8c81ab28f
|
@@ -23,6 +23,8 @@
|
|
23
23
|
:riskscore: 20
|
24
24
|
# (M) Time to wait before cancelling a scan and continuing.
|
25
25
|
:scan_timeout: 3600
|
26
|
+
# (M) Nexpose scan template ID to be used while creating temporary Site for scanning.
|
27
|
+
:scan_template_id: full-audit
|
26
28
|
# Cisco pxGrid options. Note all of these options can be set through environment variables of the same capitalised name e.g. ISE_URL instead of :ise_url
|
27
29
|
:pxg_data:
|
28
30
|
# Cisco Identity Services Engine hostname/ip.
|
@@ -20,6 +20,11 @@ module PxnxJruby
|
|
20
20
|
|
21
21
|
# TODO: This method ABC is too high (http://c2.com/cgi/wiki?AbcMetric)
|
22
22
|
def setup(config_options = {})
|
23
|
+
# Fail early if scan template id is invalid
|
24
|
+
unless PxnxJruby::NexposeConnection.is_valid_scan_template(config_options)
|
25
|
+
@log.error("#{config_options[:nexpose_data][:scan_template_id]} is not a valid scan template ID -- aborting application.")
|
26
|
+
abort('Scan template ID not valid, please update pxnx.config with proper setting')
|
27
|
+
end
|
23
28
|
# We can only have a certain number of connections to Nexpose. Generate a pool of connections for realtime or batched scans.
|
24
29
|
@connection_pool = Executors.newFixedThreadPool(config_options[:nexpose_connection_max])
|
25
30
|
# Schedule our "realtime" or batched tasks
|
@@ -25,7 +25,7 @@ module PxnxJruby
|
|
25
25
|
def call
|
26
26
|
begin
|
27
27
|
@ip = @ip_list.is_a?(Array) ? @ip_list : Array.new(1, @ip_list)
|
28
|
-
@site = Nexpose::Site.new("pxGrid-Nexpose-#{DateTime.now.strftime('%Y%jT%H%M%SZ')}",
|
28
|
+
@site = Nexpose::Site.new("pxGrid-Nexpose-#{DateTime.now.strftime('%Y%jT%H%M%SZ')}", @options[:nexpose_data][:scan_template_id])
|
29
29
|
@site.description = "Rapid7 Nexpose - Cisco pxGrid Integration scan job saved at #{DateTime.now.strftime('%Y%jT%H%M%SZ')}"
|
30
30
|
@log.info("Scanning IPs <#{@ip.each{|ip| ip}}> on site <#{@site.name}>.")
|
31
31
|
@ip.each { |ip| @site.add_ip(ip) }
|
@@ -37,7 +37,7 @@ module PxnxJruby
|
|
37
37
|
# Add ', :verbose => true' to get more info.
|
38
38
|
WaitUtil.wait_for_condition('waiting_for_scan_to_finish', :timeout_sec => @options[:nexpose_data][:scan_timeout], :delay_sec => 30) do
|
39
39
|
@completed = true
|
40
|
-
if %w(unknown dispatched running).include? (@nsc.scan_status(@scan_info.id))
|
40
|
+
if %w(unknown dispatched running integrating).include? (@nsc.scan_status(@scan_info.id))
|
41
41
|
@completed = false
|
42
42
|
@log.debug("Scan still running for site <#{@site.name}>")
|
43
43
|
end
|
@@ -45,10 +45,10 @@ module PxnxJruby
|
|
45
45
|
end
|
46
46
|
@log.info("Scan completed for site #{@site.name}>")
|
47
47
|
devices = @nsc.devices(@site.id)
|
48
|
-
@devices_to_quarantine = devices.
|
48
|
+
@devices_to_quarantine = devices.map { |d| d.address if d.risk_score >= @options[:nexpose_data][:riskscore]}
|
49
49
|
Thread.new do
|
50
50
|
eps_broker = PxnxJruby::EpsBroker.new(@options[:grid_connection].grid)
|
51
|
-
@log.info("Quarantining device <#{@devices_to_quarantine}> for site <#{@site.name}>.")
|
51
|
+
@log.info("Quarantining device(s) <#{@devices_to_quarantine}> for site <#{@site.name}>.")
|
52
52
|
eps_broker.quarantine_ip(@devices_to_quarantine) unless @devices_to_quarantine.empty?
|
53
53
|
end unless @options[:debug] == true
|
54
54
|
@log.debug("Deleting temporary site <#{@site.name}>, logging out and exiting.")
|
@@ -58,5 +58,11 @@ module PxnxJruby
|
|
58
58
|
@log.error("Exception while running a Nexpose connection thread! Message is <#{e.message}> and stacktrace is <#{e.backtrace.join("\n")}>.")
|
59
59
|
end
|
60
60
|
end
|
61
|
+
|
62
|
+
def self.is_valid_scan_template(options)
|
63
|
+
nsc = Nexpose::Connection.new(options[:nexpose_data][:nxconsole],options[:nexpose_data][:nxuser], ENV['NEXPOSE_PASSWORD'])
|
64
|
+
nsc.login
|
65
|
+
return nsc.list_scan_templates.select{|template_summary| template_summary.id.eql?(options[:nexpose_data][:scan_template_id])}.any?
|
66
|
+
end
|
61
67
|
end
|
62
68
|
end
|
data/lib/pxnx_jruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nexpose_pxgrid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Damian Finol
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-03-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -212,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
212
|
version: '0'
|
213
213
|
requirements: []
|
214
214
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.5.
|
215
|
+
rubygems_version: 2.5.2
|
216
216
|
signing_key:
|
217
217
|
specification_version: 4
|
218
218
|
summary: Nexpose - pxGrid Node implementation.
|