Skip to content

sl4m/chimney-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build

An implementation of the Santa sync protocol.

Getting Started

Configuring chimney

Pass in a TOML based configuration file path as a flag or environment variable named CHIMNEY_CONFIG.

Key Required Description
bind_address true chimney will bind to IP address and TCP port.
client_config_path true Path to the client configurations. Must contain a global.toml. More info under Client Configurations.
event_log_path false Path to the event log file. Enable if you want to record events. Uses Bunyan logging.
log_level false Log level. Defaults to info.
log_path true Path to the log file.
tls_config.cert_file false Path to the TLS cert file.
tls_config.key_file false Path to the TLS private key file. Must be in PKCS#8 format.

A couple of things to note:

  1. If you plan to terminate SSL elsewhere, you do not need to provide a tls_config section.
  2. All paths must be absolute paths. Tilde expansion is not supported at this time.

chimney config example

bind_address = "127.0.0.1:0"
client_config_path = "/path/to/client/configs"
event_log_path = "/path/to/event.log"
log_level = "info"
log_path = "/path/to/chimney.log"

[tls_config]
cert_file = "/path/to/server.crt"
key_file = "/path/to/server.key"

Client configurations

Client configuration files are also TOML based. They are read by chimney using the provided path (client_config_path) and cached on server start. global.toml must exist in the path. Similar to moroz, chimney uses global.toml to form preflight and ruledownload responses unless a machine specific configuration is provided. All machine specific configuration files are named after their machine id (e.g., hardware UUID - 3AC82A0D-3779-7B99-A598-C02FED123A04.toml).

Key Required Type Description
enable_bundles false boolean Enable bundle scanning. Defaults to false.
enable_transitive_rules false boolean Whether or not to enable transitive allowlisting. Defaults to false.
batch_size false number Number of events to upload at a time.
full_sync_interval false number Number of seconds between full syncs. Defaults to 600 seconds.
client_mode true string Operating mode to set for the client. Either MONITOR or LOCKDOWN.
allowed_path_regex false string Regular expression to allow a binary to execute from a path.
blocked_path_regex false string Regular expression to block a binary from executing by path.
block_usb_mount false boolean Block USB mass storage devices. Defaults to false.
remount_usb_mode false string Force USB mass storage devices to be remounted with the given permissions.
sync_type false string The type of sync the client should perform. Either NORMAL, CLEAN, or CLEAN_ALL. Defaults to NORMAL.
override_file_access_action true string Override file access config policy action. Either DISABLE, AUDIT_ONLY, or NONE.
rules.n.rule_type true* string Only required if defining a rule. Identifies the type of rule. Either BINARY, CERTIFICATE, SIGNINGID, TEAMID, or CDHASH.
rules.n.policy true* string Only required if defining a rule. Identifies the action to perform in response to the rule matching. Either ALLOWLIST, ALLOWLIST_COMPILER, BLOCKLIST, REMOVE, or SILENT_BLOCKLIST.
rules.n.identifier true* string Only required if defining a rule. The attribute of the binary the rule should match on e.g., the signing ID, team ID, or CDHash of a binary or SHA256 has value.
rules.n.custom_msg false string A custom message to display when the rule matches.
rules.n.custom_url false string A custom URL to use for the open button when the rule matches.
rules.n.creation_time false float Time the rule was created.
rules.n.file_bundle_binary_count false number The number of binaries in a bundle.
rules.n.file_bundle_hash false string The SHA256 of all binaries in a bundle.

Client configuration example

enable_bundles = false
enable_transitive_rules = true
batch_size = 100
full_sync_interval = 600
client_mode = "MONITOR"
# allowed_path_regex = "^(?:/Users)/.*"
# blocked_path_regex = "^(?:/Users)/.*"
block_usb_mount = false
# remount_usb_mode = "noexec"
sync_type = "CLEAN"
override_file_access_action = "AUDIT_ONLY"

[[rules]]
rule_type = "BINARY"
policy = "BLOCKLIST"
identifier = "2dc104631939b4bdf5d6bccab76e166e37fe5e1605340cf68dab919df58b8eda"
custom_msg = "blocklist firefox"

[[rules]]
rule_type = "TEAMID"
policy = "ALLOWLIST"
identifier = "EQHXZ8M8AV"
custom_msg = "allow google team id"

About

Santa sync server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages