Главные настройки (kor-elf-shield.toml)

По умолчанию главные настройки находятся тут:

/etc/kor-elf-shield/kor-elf-shield.toml

Но программу можно запустить и через флаг --config и указать свой путь. Например:

kor-elf-shield --config=/my/path/configs/kor-elf-shield.toml start

Это надо внести изменения в /etc/systemd/system/kor-elf-shield.service

[Unit]
Description=kor-elf-shield
After=network.target

[Service]
-ExecStart=/usr/sbin/kor-elf-shield start
-ExecStop=/usr/sbin/kor-elf-shield stop
+ExecStart=/usr/sbin/kor-elf-shield --config=/my/path/configs/kor-elf-shield.toml start
+ExecStop=/usr/sbin/kor-elf-shield --config=/my/path/configs/kor-elf-shield.toml stop

[Install]
WantedBy=sysinit.target

И отредактировать /etc/kor-elf-shield.logrotate

/var/log/kor-elf-shield.log {
    rotate 3
    weekly
    compress
    maxsize 100M
    missingok
    notifempty
    postrotate
-        /usr/sbin/kor-elf-shield reopen_logger
+        /usr/sbin/kor-elf-shield --config=/my/path/configs/kor-elf-shield.toml reopen_logger
    endscript
}

Копия полноценого файл настроек (kor-elf-shield.toml) находится тут.

В этом файле есть несколько разделов:


Базовые настройки

Эти настройки должны находиться вначале файла до разделов: "Log", "Настройки, специфичные для ОС", "Пути к другим настройкам".

Параметр testing
Значение true или false
По умолчанию true
Описание Включает тестовый режим. Если тестовый режим включён, то через минут, которые указаны в параметре "testing_interval", выключится программа с очисткой правил с nftables.
true   - включает
false - выключает
Примеры
testing = true
testing = false
***
Параметр testing_interval
Значение от 1 по 30000
По умолчанию 5
Описание Указываем в минутах, через сколько выключится программа запущенная в тестовом режиме.
Примеры
testing_interval = 1
testing_interval = 5
testing_interval = 60
testing_interval = 30000
***
Параметр language
Значение ru, kk, en
По умолчанию ru
Описание Указываем язык. Не влияет на логи. Логи пишутся на английском языке.
На данный момент поддерживаются языки:
ru  - русский
kk - казахский
en - английский
Примеры
language = "ru"
language = "kk"
language = "en"
***
Параметр fallback_language
Значение ru, kk, en
По умолчанию ru
Описание Второй язык, если вдруг у текущего языка не будет перевода. Доступные все значения, которые есть у параметра language. Но мы рекомендуем указать "ru" или "en".
Примеры
language = "ru"
language = "en"
***
Параметр pid_file
Значение Указываем путь к файлу
По умолчанию /var/run/kor-elf-shield/kor-elf-shield.pid
Описание Путь, по которому будет создан pid-файл. Путь должен быть абсолютный. Относительный путь вызовет ошибку! Обязательно в конце должно быть указано .pid.
Примеры
pid_file = "/var/run/kor-elf-shield/kor-elf-shield.pid"
***
Параметр socket_file
Значение Указываем путь к файлу
По умолчанию /var/run/kor-elf-shield/kor-elf-shield.sock
Описание Путь, по которому будет создан файл сокета. Путь должен быть абсолютный. Относительный путь вызовет ошибку! Обязательно в конце должно быть указано .sock.
Примеры
socket_file = "/var/run/kor-elf-shield/kor-elf-shield.sock"

Log

Указывать параметры для этого раздела нужно вначале указать [log], а после уже указывать остальные параметры этого раздела. Пример:

[log]
enabled = true
level = "info"
Параметр enabled
Значение true или false
По умолчанию true
Описание Включает логи.
true  - включает
false - выключает
Примеры
enabled = true
enabled = false
***
Параметр level
Значение debug, info, warn, error, fatal
По умолчанию info
Описание Уровень ведения логов:
debug - Логи для отладки и рекомендуется не выберать в production.
info     - Подробное ведение логово. Записывает информацию о запуске, остановке и т.д.
warn   - Предупреждения о потенциально проблемных ситуациях, которые не мешают работе приложения, но требуют внимания.
error  - Ошибки, которые возникли во время работы, но не привели к остановке программы.
fatal   - Критичные ошибки, после которых программа завершит работу.
Примеры
level = "debug"
level = "info"
level = "warn"
level = "error"
level = "fatal"
***
Параметр development
Значение true или false
По умолчанию false
Описание Нужен для отладки в тестовых окружениях. В production всегда должен быть выключен.
true  - включает
false - выключает
Примеры
development = false
development = true
***
Параметр encoding
Значение json или text
По умолчанию json
Описание В каком формате следует записывать данные в лог:
json - В формате json.
text - В формате обычного текста. Каждый параметр в журнале будет разделён пробелом. (не рекомендуется)
Примеры
encoding = json
encoding = text
***
Параметр paths
Значение Указываем пути к логу
По умолчанию ["/var/log/kor-elf-shield.log"]
Описание Список мест для основных логов. Можно указать несколько путей. Путь должен быть абсолютный. Относительный путь вызовет ошибку! Обязательно в конце должно быть указано .log.
Исключение "stdout" и "stderr" - это вывод данных в консоль.

Если меняем стандартное значение, то рекомедуется посмотреть и от редактировать файл /etc/logrotate.d/kor-elf-shield на новые пути.
Примеры
paths = ["/var/log/kor-elf-shield.log"]
paths = ["/var/log/kor-elf-shield.log", "stdout"]
paths = ["/var/log/kor-elf-shield.log", "/mnt/other-server/kor-elf-shield.log", "stdout"]
***
Параметр log_error_paths
Значение Указываем пути к логу
По умолчанию ["stderr"]
Описание Список мест для ошибок логгирования. Например логгер не смог записать какие-то данные. Можно указать несколько путей. Путь должен быть абсолютный. Относительный путь вызовет ошибку! Обязательно в конце должно быть указано .log.
Исключение "stdout" и "stderr" - это вывод данных в консоль.

Если меняем стандартное значение, то рекомедуется посмотреть и от редактировать файл /etc/logrotate.d/kor-elf-shield на новые пути.
Примеры
paths = ["stderr"]
paths = ["/var/log/kor-elf-shield-error.log", "stderr"]
paths = ["/var/log/kor-elf-shield-error.log", "/mnt/other-server/kor-elf-shield-error.log", "stderr"]

Настройки, специфичные для ОС

Указывать параметры для этого раздела нужно вначале указать [binaryLocations], а после уже указывать остальные параметры этого раздела. Пример:

[binaryLocations]
nftables = "/usr/sbin/nft"
Параметр nftables
Значение Указываем путь к nftables
По умолчанию /usr/sbin/nft
Описание Укажите путь к nftables. Возможно в вашей ОС путь может быть другим.
Примеры
nftables = "/usr/sbin/nft"

Пути к другим настройкам

Указывать параметры для этого раздела нужно вначале указать [otherSettingsPath], а после уже указывать остальные параметры этого раздела. Пример:

[otherSettingsPath]
firewall = "/etc/kor-elf-shield/firewall.toml"
Параметр firewall
Значение Указываем путь к настройкам для firewall
По умолчанию /etc/kor-elf-shield/firewall.toml
Описание Укажите путь к настройкам firewall. В этих настройках мы указываем, какие порты открыть или закрыть. Какие IP адреса заблокировать или наоборот, что бы никогда не блокировались. Путь должен быть абсолютный. Относительный путь вызовет ошибку! Обязательно в конце должно быть указано .toml.
Про настройки firewall, можно ознакомиться тут.
Примеры
firewall = "/etc/kor-elf-shield/firewall.toml"