Skip to content
/ hntool Public

Hardening tool for Unix. It scans the system and available software, to detect security issues.

License

Notifications You must be signed in to change notification settings

gomex/hntool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WHAT IS IT?
-----------------------------

hntool is a hardening tool for Linux/BSD.

HOW CAN I HELP?
-----------------------------

There are several ways that you can contribute and help hntool's development. 
You can contribute with code, patchs, bugs and feature requests.

To report a bug or a feature request for hntool, file a bug in GitHub or send 
a mail to mail@hugodoria.org. If you're reporting a bug, please give concrete 
examples of how and where the problem occurs.

If you've a patch (fixing a bug or a new hntool module), then you can send it 
to mail@hugodoria.org. hntool development is managed with git, so 
git-formatted patches are preferred. 

hntool's source is available on:

http://github.com/hdoria/hntool/tree/master

HOW TO USE
-----------------------------

Run hntool with:

# ./hntool

You can also see the hntool(1) manual by typing man hntool at the command line 
or see the usage help:

$ hntool -h 


UNDERSTANDING THE OUTPUT
-----------------------------

There are 5 types of results:

OK : 
	Means that the item checked is fine and that you do not need to worry

INFO: 
	Means that you should know the item status, but probably it is fine. A port
	opened, for example.

LOW:
	Means that a security problem was found, but it does not provides a high risk
	for your system.

MEDIUM:
	Things are getting worse and you should start to worry about these itens.

HIGH:
	You have an important security hole/problem on your system and you
	should fix it NOW or run and save your life.



HOW TO CREATE A MODULE
-----------------------------

This section documents the innards of hntool and specifies how to create 
a new module.

The main hntool program (hntool.py) runs a list of rules defined in __files__ 
and __services__.

	* __files__ :
		defines the rules which process simple files and configs.

	* __services__ :
		defines the rules which checks the security on services and
		daemons. 

Once your module is finalized, remember to add it to the appropriate array 
(__files__ or __services__) defined in hntool/__init__.py

A sample hntool module is like this (hntool/ssh.py):

import os

class rule:
	def short_name(self):
		return "ssh"
	def long_name(self):
		return "Checks security problems on sshd config file"
	def analyze(self):
		check_results = [[],[],[],[],[]]
		ssh_conf_file = ['/etc/ssh/sshd_config', '/etc/sshd_config']

		for sshd_conf in ssh_conf_file:
			if os.path.isfile(sshd_conf):
				fp = open(sshd_conf,'r')
				lines = [x.strip('\n') for x in fp.readlines()]

				# Checking if SSH is using the default port
				if 'Port 22' in lines or '#Port 22' in lines:
					check_results[1].append('SSH is using the default port')
				else:
					check_results[0].append('SSH is not using the default port')			

				# Closing the sshd_config file
				fp.close()

		return check_results
	def type(self):
		return "files"


Mostly, the code is self-explanatory. The following are the list of the methods 
that each hntool module must have:

	* short_name(self) 
	Returns a string containing a short name of the module. Usually,this is the 
	same as the basename of the module file.
	
	* long_name(self) 
	Returns a string containing a concise description of the module. This 
	description is used when listing all the rules using hntool -l.	
	
	* analyze(self) 
	Should return a list comprising in turn of five lists: ok, low, medium, 
	high and info, respectively. 
	
	* type(self) 
	"files" for a module processing simple files and configs
	"services" for a module processing services and daemons 

About

Hardening tool for Unix. It scans the system and available software, to detect security issues.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages