███████╗███████╗██╗ █████╗ ██████╗
██╔════╝██╔════╝██║ ██╔══██╗██╔══██╗
███████╗█████╗ ██║ ███████║██████╔╝
╚════██║██╔══╝ ██║ ██╔══██║██╔══██╗
███████║███████╗███████╗██║ ██║██████╔╝
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═════╝
SELinux Assistant — интерактивный TUI-менеджер для SELinux
SELab — TUI-инструмент на Rust для управления SELinux прямо из терминала.
Без лишних команд, без риска потерять настройки — просто выбираешь, нажимаешь Enter, откатываешь если что-то пошло не так.
- Возможности
- Установка
- Запуск
- Интерфейс
- Клавиши
- Вкладки
- Режим симуляции
- Зависимости
- Сборка и разработка
- Лицензия
| Функция | Описание |
|---|---|
| 📊 AVC Alerts | Просмотр отказов SELinux с цветовой индикацией по severity, фильтрация, применение fix-ов |
| ⚙️ Modules | Включение и отключение модулей SELinux с показом приоритета |
| 🔧 Booleans | Управление булевыми переменными; отмечены изменённые от дефолтного значения |
| 🛡️ Safe Settings | Применение предустановленных безопасных политик одним нажатием |
| ⏪ Rollback | История всех изменений с возможностью отката последнего действия |
| 📁 File Contexts | Просмотр и добавление файловых контекстов SELinux |
| 🔌 Ports | Управление сетевыми контекстами портов |
| 📈 Statistics | Сводка по системе: risk score, количество алертов, изменений |
| 🔄 SELinux Mode | Переключение между Enforcing / Permissive прямо из TUI |
| 🧪 Simulation | Тестирование любых изменений без применения к системе |
| 📤 Export / Import | Экспорт конфигурации в JSON и импорт на другую машину |
| 💡 Advisor | Встроенные подсказки и рекомендации по контекстам, модулям и булевым |
- Linux с SELinux (Fedora, RHEL, CentOS, Rocky, AlmaLinux и др.)
- Rust 1.70+ — установить
ausearch,semanage,setsebool,semodule— стандартные инструменты SELinux
git clone https://github.com/VLOD-ZDOV/Selabt
cd Selabt
# Сборка релизной версии
cargo build --release
# Установить в систему (опционально)
sudo cp target/release/selab /usr/local/bin/# Основной запуск (нужен root для управления SELinux)
sudo selab
# Режим симуляции — все действия применяются только в памяти
sudo selab --simulate
# Изменить частоту обновления данных (секунды, по умолчанию 2)
sudo selab --update-interval 5
# Отладочный лог
sudo selab --debug
# ASCII-режим (для терминалов без Unicode)
sudo selab --ascii| Флаг | Описание | По умолчанию |
|---|---|---|
-s, --simulate |
Режим симуляции без реальных изменений | false |
-d, --debug |
Включить отладочный лог | false |
-l, --logfile <PATH> |
Путь к лог-файлу | авто |
--update-interval <N> |
Интервал обновления в секундах | 2 |
--ascii |
ASCII-режим для совместимости | false |
┌─ SELab ───────────────────────────────────────────────────────────┐
│ 1:Dash 2:AVC 3:Mod 4:Bool 5:Roll 6:Safe 7:File 8:Port 9:Stats 0:Mode │
├──────────────────────┬────────────────────────────────────────────┤
│ Navigation │ Quick Stats │
│ │ │
│ 1. AVC Alerts (3) │ SELinux Mode : Enforcing │
│ 2. Module Manager │ │
│ 3. Boolean Manager │ AVC Alerts : 3 │
│ 4. Safe Settings │ 3 High 0 Med 0 Low │
│ 5. Rollback History │ │
│ 6. File Contexts │ Modules : 42/42 enabled │
│ 7. Ports │ Booleans : 145 total, 2 changed │
│ 8. Statistics │ │
│ 9. SELinux Mode │ Risk Score : 30.0 — Medium │
│ │ Changes : 5 │
├──────────────────────┴────────────────────────────────────────────┤
│ hl/←→:tabs jk/↑↓:move Enter:open e:export R:refresh q:quit │
└───────────────────────────────────────────────────────────────────┘
| Клавиша | Действие |
|---|---|
h / ← |
Предыдущая вкладка |
l / → |
Следующая вкладка |
j / ↓ |
Элемент ниже |
k / ↑ |
Элемент выше |
1 … 9, 0 |
Быстрый переход на вкладку |
Enter |
Применить / выбрать |
R |
Обновить данные |
r |
Откатить последнее изменение |
s |
Применить Safe Defaults |
M |
Переключить режим SELinux |
e |
Экспорт конфигурации |
i |
Импорт конфигурации |
? |
Контекстная помощь / советник |
q |
Выход |
| Вкладка | Клавиша | Действие |
|---|---|---|
| AVC Alerts | f |
Фильтр по severity (High → Medium → Low → All) |
| AVC Alerts | A |
Показать автоматические рекомендации |
| AVC Alerts | m |
Создать модуль из алерта через audit2allow |
| AVC Alerts | a |
Добавить запись вручную |
| AVC Alerts | v |
Детали выбранного алерта |
| Booleans | / |
Поиск по имени или описанию |
| Booleans | v |
Детали и совет по булевой переменной |
| Ports | a |
Добавить контекст порта |
| File Contexts | a |
Добавить файловый контекст |
Обзор системы. Левая панель — быстрая навигация, правая — живая статистика: режим SELinux, количество AVC-алертов по уровням, risk score, состояние модулей и булевых.
Список отказов из ausearch. Каждый алерт помечен по severity:
[!]High — execute, write, unlink[~]Medium — read, getattr[ ]Low — прочие
Выбери алерт → Enter применит рекомендованный fix. v — детали. m — сгенерировать модуль через audit2allow.
Список модулей SELinux с приоритетом. [+] зелёный — включён, [-] красный — отключён. Enter переключает состояние.
Все булевые переменные SELinux. * рядом с именем означает, что значение отличается от дефолтного. Поиск через /.
Лог всех применённых изменений. r откатывает последнее. [ ok ] — применённое изменение, [undo] — откат.
Два профиля:
- Safe Defaults — отключает потенциально опасные булевые (доступ httpd к home, анонимный FTP и др.)
- Restrictive Policy — включает
deny_ptrace,deny_execmem,secure_mode
Контексты файлов (semanage fcontext). a — добавить. Enter — удалить выбранный.
Контексты сетевых портов. a — добавить (формат: PORT PROTO TYPE). Enter — удалить.
Сводная статистика: алерты по severity, модули, булевые, risk score, последние изменения.
Текущий режим (Enforcing / Permissive / Disabled). Enter или M — переключить.
sudo selab --simulateВ режиме симуляции все операции — переключение булевых, модулей, изменение контекстов — выполняются только в памяти. Система не изменяется. Идеально для знакомства с инструментом или тестирования.
SELab умеет сохранять текущее состояние булевых, модулей, контекстов файлов и портов в JSON:
# В TUI: нажать 'e', ввести имя файла (или Enter для авто-имени)
# Файл: selab_config_20250511_143000.json
# Импорт: нажать 'i', ввести путь к файлуЭто позволяет быстро перенести конфигурацию SELinux между машинами.
| Crate | Версия | Назначение |
|---|---|---|
ratatui |
0.23 | TUI-рендеринг |
crossterm |
0.27 | Работа с терминалом |
clap |
4.4 | CLI-аргументы |
serde / serde_json |
1.0 | Сериализация конфигурации |
chrono |
0.4 | Временны́е метки |
anyhow / thiserror |
1.0 | Обработка ошибок |
regex |
1.0 | Парсинг AVC-логов |
# Отладочная сборка
cargo build
# Релизная сборка
cargo build --release
# Запуск в симуляции (без root)
cargo run -- --simulate
# Тесты
cargo test
# Проверка предупреждений
cargo clippysrc/
├── main.rs — точка входа, TUI-цикл, рендеринг
├── state.rs — состояние приложения (вид, список, режим ввода)
├── avc.rs — парсинг AVC-логов, применение fix-ов
├── modules.rs — управление модулями SELinux
├── booleans.rs — управление булевыми переменными
├── file_contexts.rs — файловые контексты
├── ports.rs — контексты портов
├── rollback.rs — история изменений и откат
├── safe_config.rs — профили безопасной конфигурации
├── selinux_mode.rs — переключение режима SELinux
├── stats.rs — расчёт статистики и risk score
├── advisor.rs — встроенные советы и рекомендации
├── config_export.rs — экспорт / импорт конфигурации
└── logging.rs — логирование действий
- SELab требует прав root для управления SELinux
- Перед применением изменений в production всегда тестируйте в
--simulate - История изменений сохраняется в
~/.config/selab/rollback.json - Инструмент находится в активной разработке — используйте с осторожностью
Распространяется под лицензией GNU General Public License v3.0.