A simply logic, configuration based, distributable and reliable extended-firewall.
Saruman is a extended firewall, meaning:
build by a former Iresam. It targets I-Resam need’s first but should be enough flexible to be used elsewhere.
saruman takes care of the boring bits for you.
Here’s an overview of the documentation we have for you. First the documentation on using saruman:
A simply logic, configuration based, distributable and reliable extended-firewall.
Saruman is a extended firewall (meaning firewall + dns + dhcp +intruision detection + reverse proxy) build by a former Iresam. It targets I-Resam need’s first but should be enough flexible to be used elsewhere.
It still unstable and yet brings not that much. Try at your own risks.
pip install saruman
away from installation on your computer.And... we’re automatically being tested by Scrutinizer !
Saruman gives you three commands to manage the worker and one to run your firewall. Worker’s commands must be run in root since they manage main parts of your system. Firewall’s one doesn’t need this. The commands are:
Still infant
These command line options are supported by the release commands
(saruman workers enable
, saruman workers enable
, saruman workers enable
, saruman firewall start
).
-v, --verbose | Run in verbose mode, printing a bit more, mostly only interesting for debugging. |
-h, --help | Display help text |
Saruman originated at Iresam so there are some assumptions build-in that might or might not fit you but I’m pretty sure it’ll probably fit :-)
That’s just the style we started with. Pretty clear and useful.
Mighty fine documementation, the stuff you’re reading now. But some other suggestions, ideas and a different tone might help you improve your firewall. So here are some pointers to other material.
And documentation on saruman as a project; for instance for reporting bugs and fixing the code:
Did you find a bug? Do you have an improvement? Do you have questions? We run saruman as a proper open source project on github at https://github.com/tychota/saruman, so you have three basic options:
Report bugs or problems at https://github.com/tychota/saruman/issues ! And feature requests too ! Normally you’ll get a quick reply within a day or so, depending on our relative timezones. If you don’t get an answer within a few days, please send off a quick email to remind us.
Or make a fork, fix the bug or add something and open a pull request.
If you are going to fork saruman, take a look at Information for developers of saruman for setup and test running information.
You can mail Tycho Tatitscheff if you want to ask a question, too. Or if you want to tell us about an idea you have.
We like to use Virtual env to get a simple environment and to use pytest to test. When you are in the root folder of your saruman checkout, do this:
$ virtualenv ~/venv/saruman --python=`which python3.5` # Or a different python version.
$ source ~/venv/firewall/bin/activate
$ python setup.py test
The tests currently pass on python 3.4 and 3.5. Travis continuous integration tests 3.4 and 3.5 for us automatically.
To run the firewall and test, you need to have an AMQP broker ! On ubuntu:
$ sudo apt-get install rabbitmq
Contains all the functionalities that help loading or unloading a kernel module
saruman.tasks.kernel.modprobe.
Check
[source]¶Bases: celery.app.task.Task
Tache de vérification de l’activation d’un module dans le kernel
Vérifie si le module module_name est activé dans le kernel. Se réfère à une liste des modules autorisés (ainsi, l’utilisateur ne peut pas supprimer le module du filesystem par exemple). La tache tourne dans un context (:py:func:error_handling) qui gère les erreurs
acks_late
= False¶ignore_result
= False¶name
= 'kernel.modules.check'¶rate_limit
= None¶request_stack
= <celery.utils.threads._LocalStack object>¶run
(module_name)[source]¶Parameters: | module_name (str) – le nom du module à checker |
---|---|
Returns: | oui si le module est activé, non sinon |
Return type: | bool |
send_error_emails
= False¶serializer
= 'json'¶store_errors_even_if_ignored
= False¶track_started
= False¶saruman.tasks.kernel.modprobe.
Add
[source]¶Bases: celery.app.task.Task
Tache de vérification de l’activation d’un module dans le kernel
Vérifie si le module module_name est activé dans le kernel. Se réfère à une liste des modules autorisés (ainsi, l’utilisateur ne peut pas supprimer le module du filesystem par exemple). La tache tourne dans un context (:py:func:error_handling) qui gère les erreurs
acks_late
= False¶ignore_result
= False¶name
= 'kernel.modules.add'¶rate_limit
= None¶request_stack
= <celery.utils.threads._LocalStack object>¶send_error_emails
= False¶serializer
= 'json'¶store_errors_even_if_ignored
= False¶track_started
= False¶saruman.tasks.kernel.modprobe.
AddWithArgs
[source]¶Bases: celery.app.task.Task
Tache de vérification de l’activation d’un module dans le kernel
Vérifie si le module module_name est activé dans le kernel. Se réfère à une liste des modules autorisés (ainsi, l’utilisateur ne peut pas supprimer le module du filesystem par exemple). La tache tourne dans un context (:py:func:error_handling) qui gère les erreurs
acks_late
= False¶ignore_result
= False¶name
= 'kernel.modules.addWithArgs'¶rate_limit
= None¶request_stack
= <celery.utils.threads._LocalStack object>¶send_error_emails
= False¶serializer
= 'json'¶store_errors_even_if_ignored
= False¶track_started
= False¶saruman.tasks.kernel.modprobe.
Remove
[source]¶Bases: celery.app.task.Task
acks_late
= False¶ignore_result
= False¶name
= 'kernel.modules.remove'¶rate_limit
= None¶request_stack
= <celery.utils.threads._LocalStack object>¶send_error_emails
= False¶serializer
= 'json'¶store_errors_even_if_ignored
= False¶track_started
= False¶Saruman use an unique cli-entrypoint, that use click to parse command line arguments