bug fix: add custom ssh port to csf

This commit is contained in:
Usman Nasir
2019-12-08 18:45:17 +05:00
parent ca6bd36236
commit 4109aaa25c
3 changed files with 34 additions and 20 deletions

View File

@@ -378,21 +378,29 @@ class FirewallManager:
if output.find("1,None") > -1: if output.find("1,None") > -1:
try: csfPath = '/etc/csf'
updateFW = FirewallRules.objects.get(name="SSHCustom")
FirewallUtilities.deleteRule("tcp", updateFW.port, "0.0.0.0/0") if os.path.exists(csfPath):
updateFW.port = sshPort dataIn = {'protocol': 'TCP_IN', 'ports': sshPort}
updateFW.save() self.modifyPorts(dataIn)
FirewallUtilities.addRule('tcp', sshPort, "0.0.0.0/0") dataIn = {'protocol': 'TCP_OUT', 'ports': sshPort}
except: self.modifyPorts(dataIn)
else:
try: try:
newFireWallRule = FirewallRules(name="SSHCustom", port=sshPort, proto="tcp") updateFW = FirewallRules.objects.get(name="SSHCustom")
newFireWallRule.save() FirewallUtilities.deleteRule("tcp", updateFW.port, "0.0.0.0/0")
updateFW.port = sshPort
updateFW.save()
FirewallUtilities.addRule('tcp', sshPort, "0.0.0.0/0") FirewallUtilities.addRule('tcp', sshPort, "0.0.0.0/0")
command = 'firewall-cmd --permanent --remove-service=ssh' except:
ProcessUtilities.executioner(command) try:
except BaseException, msg: newFireWallRule = FirewallRules(name="SSHCustom", port=sshPort, proto="tcp")
logging.CyberCPLogFileWriter.writeToFile(str(msg)) newFireWallRule.save()
FirewallUtilities.addRule('tcp', sshPort, "0.0.0.0/0")
command = 'firewall-cmd --permanent --remove-service=ssh'
ProcessUtilities.executioner(command)
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
final_dic = {'status': 1, 'saveStatus': 1} final_dic = {'status': 1, 'saveStatus': 1}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
@@ -1463,7 +1471,7 @@ class FirewallManager:
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
def modifyPorts(self): def modifyPorts(self, data = None):
try: try:
userID = self.request.session['userID'] userID = self.request.session['userID']
@@ -1474,8 +1482,6 @@ class FirewallManager:
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
data = json.loads(self.request.body)
protocol = data['protocol'] protocol = data['protocol']
ports = data['ports'] ports = data['ports']

View File

@@ -190,7 +190,7 @@ def saveSSHConfigs(request):
if result != 200: if result != 200:
return result return result
fm = FirewallManager() fm = FirewallManager(request)
coreResult = fm.saveSSHConfigs(userID, json.loads(request.body)) coreResult = fm.saveSSHConfigs(userID, json.loads(request.body))
result = pluginManager.postSaveSSHConfigs(request, coreResult) result = pluginManager.postSaveSSHConfigs(request, coreResult)
@@ -520,7 +520,7 @@ def modifyPorts(request):
return result return result
fm = FirewallManager(request) fm = FirewallManager(request)
coreResult = fm.modifyPorts() coreResult = fm.modifyPorts(json.loads(request.body))
result = pluginManager.postModifyPorts(request, coreResult) result = pluginManager.postModifyPorts(request, coreResult)
if result != 200: if result != 200:

View File

@@ -486,14 +486,22 @@ class CSF(multi.Thread):
if protocol == 'TCP_IN': if protocol == 'TCP_IN':
for items in data: for items in data:
if items.find('TCP_IN') > -1 and items.find('=') > -1 and (items[0] != '#'): if items.find('TCP_IN') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToFile.writelines('TCP_IN = "' + ports + '"\n') if ports.find(',') > -1:
writeToFile.writelines('TCP_IN = "' + ports + '"\n')
else:
content = '%s,%s\n' % (items, ports)
writeToFile.writelines(content)
else: else:
writeToFile.writelines(items) writeToFile.writelines(items)
writeToFile.close() writeToFile.close()
elif protocol == 'TCP_OUT': elif protocol == 'TCP_OUT':
for items in data: for items in data:
if items.find('TCP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'): if items.find('TCP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToFile.writelines('TCP_OUT = "' + ports + '"\n') if ports.find(',') > -1:
writeToFile.writelines('TCP_OUT = "' + ports + '"\n')
else:
content = '%s,%s\n' % (items, ports)
writeToFile.writelines(content)
else: else:
writeToFile.writelines(items) writeToFile.writelines(items)
writeToFile.close() writeToFile.close()