Skip to content

Commit 5e25f1d

Browse files
author
Jason McFarland
committed
added TLS options for TLS cert verification or to turn off TLS
This fixes #2
1 parent 39f36d7 commit 5e25f1d

2 files changed

Lines changed: 60 additions & 26 deletions

File tree

cb-defense-connector.py

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,20 @@ def fix_response(data):
8888
def send_syslog_tls(server_url, port, data):
8989

9090
unsecured_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
91-
client_socket = ssl.wrap_socket(unsecured_client_socket,
92-
ca_certs=config.get('general', 'ca_cert'),
93-
cert_reqs=ssl.CERT_REQUIRED,
94-
ssl_version=ssl.PROTOCOL_TLSv1)
91+
92+
if config.getboolean('general', 'tls_verify'):
93+
cert_reqs = ssl.CERT_REQUIRED
94+
else:
95+
cert_reqs = ssl.CERT_NONE
96+
97+
if config.getboolean('general', 'tls_enabled'):
98+
client_socket = ssl.wrap_socket(unsecured_client_socket,
99+
ca_certs=config.get('general', 'ca_cert'),
100+
cert_reqs=cert_reqs,
101+
ssl_version=ssl.PROTOCOL_TLSv1)
102+
else:
103+
client_socket = unsecured_client_socket
104+
95105
client_socket.connect((server_url, port))
96106
client_socket.send(data)
97107
client_socket.close()
@@ -208,36 +218,49 @@ def verify_config_parse_servers():
208218
#
209219
# Sanity check the general stanza this includes the tcp/tls host, port, template, and cert
210220
#
211-
if not config.get('general', 'tcp_tls_host'):
221+
if not config.has_option('general', 'tcp_tls_host'):
212222
logger.error('Error: A tcp_tls_host is required in the general stanza')
213223
sys.exit(-1)
214-
if not config.get('general', 'tcp_tls_port'):
224+
if not config.has_option('general', 'tcp_tls_port'):
215225
logger.error('Error: A tcp_tls_port is required in the general stanza')
216226
sys.exit(-1)
217-
if not config.get('general', 'template'):
227+
if not config.has_option('general', 'template'):
218228
logger.error('Error: A template is required in the general stanza')
219229
sys.exit(-1)
220-
if not config.get('general', 'ca_cert'):
221-
#
222-
# A ca_cert is not required
223-
#
224-
config.set('general', 'ca_cert', '')
225-
#
226-
# Warn the user that certificate verification will not occur
227-
#
228-
logger.warning('Warning: A ca_cert was not found. The remote tcp server certificate can NOT be verified')
229-
230+
if not config.has_option('general', 'ca_cert'):
231+
logger.error("Error: Must specify ca_cert file path in the general stanza")
232+
sys.exit(-1)
233+
if not config.has_option('general', 'tls_enabled'):
234+
logger.error("Error: Must specify tls_enabled in the general stanza")
235+
sys.exit(-1)
236+
if not config.has_option('general', 'tls_verify'):
237+
logger.error("Error: Must specify tls_verify in config file")
238+
sys.exit(-1)
230239

231240
#
232241
# Sanity check the port
233242
#
234243
try:
235-
int(config.get('general', 'tcp_tls_port'))
236-
except Exception as e:
244+
config.getint('general', 'tcp_tls_port')
245+
except ValueError as e:
237246
logger.error(e.message)
238247
logger.error("Error: tcp_tls_port must be an integer")
239248
sys.exit(-1)
240249

250+
try:
251+
config.getboolean('general', 'tls_enabled')
252+
except ValueError as e:
253+
logger.error(e.message)
254+
logger.error("Error: tls_enabled must be either true or false")
255+
sys.exit(-1)
256+
257+
try:
258+
config.getboolean('general', 'tls_verify')
259+
except ValueError as e:
260+
logger.error(e.message)
261+
logger.error("Error: tls_verify must be either true or false")
262+
sys.exit(-1)
263+
241264
#
242265
# Parse out multiple servers
243266
#

root/etc/cb/integrations/cb-defense/cb-defense-connector.conf.example

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,21 @@
77
#
88
template = {{source}}|{{version}}|{{vendor}}|{{product}}|{{dev_version}}|{{signature}}|{{name}}|{{severity}}|{{extension}}
99

10+
#
11+
# Specify whether to use TLS over TCP connection. If false, then the connector will use unencrypted tcp connection
12+
#
13+
tls_enabled = true
14+
1015
#
1116
# Specify a file containing PEM-encoded CA certificates for verifying the peer server when using TLS+TCP syslog
1217
#
1318
ca_cert = /etc/cb/integrations/cb-defense/cert.pem
1419

20+
#
21+
# Uncomment tls_verify and set to "false" in order to disable verification of the peer server certificate
22+
#
23+
tls_verify = true
24+
1525
#
1626
# Specify a host to send notifications from all Cb Defense Servers
1727
#
@@ -22,17 +32,17 @@ tcp_tls_host = localhost
2232
#
2333
tcp_tls_port = 8888
2434

25-
[cbdefenseserver1]
35+
[cbdefense1]
2636

2737
#
2838
# Cb Defense Connector ID
2939
#
30-
connector_id = F8KFGNF100
40+
connector_id = F8KF111111
3141

3242
#
3343
# Cb Defense API Key
3444
#
35-
api_key = WT9T3QDP4UGCK2NS96999999
45+
api_key = WT9T3QDP4UGCK2NS96111111
3646

3747
#
3848
# Cb Defense Server URL
@@ -41,9 +51,10 @@ api_key = WT9T3QDP4UGCK2NS96999999
4151
server_url = https://server.yourcompany.com
4252

4353
#
44-
# For more than one Cb Defense Servers, add another server using the following template including the stanza
54+
# For more than one Cb Defense Server, add another server using the following template including the stanza
4555
#
4656
#[cbdefenseserver2]
47-
#connector_id = F8KFGNFVS6
48-
#api_key = WT9T3QDP4UGCK2NS96JSGTDZ
49-
#server_url = https://server.yourcompany.com
57+
#connector_id = F8KF111111
58+
#api_key = WT9T3QDP4UGCK2NS96111111
59+
#server_url = https://server2.yourcompany.com
60+

0 commit comments

Comments
 (0)