Build from source
Build from source using Rust
All Linux libraries and executables of couic can be built on Linux.
Requirements
The following elements are required to build them:
makepackage- The Rust toolchain installer rustup
Make Targets
The Makefile contains three main targets:
setup: invokesrustupto install all needed toolchains, targets and components for Rust;debug: builds non-stripped libraries and executables with debugging logs activated. Outputs to a repository nameddebug;release: builds stripped and optimized libraries and executables with informational logs. Outputs to a directory namedrelease.
For example, to build the project in release mode:
git clone https://github.com/FCSC-FR/couic
cd couic
make setup
make releaseThe release directory must have the following structure after compilation:
- couic
- couic_1.0.0-1_amd64.deb
- couic-1.0.0-1.x86_64.rpm
- couicctl
- couic-report
- couic-report_1.0.0-1_amd64.deb
- couic-report-1.0.0-1.x86_64.rpm
Test locally
To test the previously compiled binaries locally, we need to create the Couic workspace and copy the Couic configuration files into it.
Create a working directory
mkdir local
cp configs/couic*.toml localEdit Couic configuration
Edit couic.toml to match your environment.
#==========================
# Couic Configuration File
#==========================
ifaces = ["my_eth"] # interface where couic will be attached
working_dir = "/path_to_local_dir"
user = "my_user" # current user name
group = "my_group" # current user group
[logging]
dir = "/path_to_local_dir"
[server]
socket = "/path_to_local_dir/couic.sock"Add required capabilities
Give the required capabilities to couic binary. These capabilities are only used at startup and are immediately dropped, allowing Couic to run as a non-privileged user (more details in security section). Then start the process.
sudo setcap cap_sys_admin,cap_net_admin+ep ./release/couic
./release/couic -c local/couic.tomlConfigure couicctl
Edit couicctl.toml to match your environment. rbac/clients/couicctl.toml is automatically created at Couic’s startup.
#==========================
# Couicctl Configuration File
#==========================
# mode: local or remote
mode = "local"
# Local server configuration
socket = "/path_to_local_dir/couic.sock"
# Auth token
client_file = "/path_to_local_dir/rbac/clients/couicctl.toml"Test deployment
You should now be ready to interact with a fully functional Couic installation. Test it using couicctl from another terminal:
./release/couicctl -c ./local/couicctl.tomlControl couic firewall
Usage: couicctl [OPTIONS] [COMMAND]
Commands:
clients Manage clients
stats Display statistics
sets Control sets
drop Control drop policy
ignore Control ignore policy
help Print this message or the help of the given subcommand(s)
Options:
-c, --config <FILE> Path to config file [default: /etc/couic/couicctl.toml]
-h, --help Print help
-V, --version Print version