Skip to content
VLOD-ZDOVPublic

About

SElinux tui manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

███████╗███████╗██╗      █████╗ ██████╗ 
██╔════╝██╔════╝██║     ██╔══██╗██╔══██╗
███████╗█████╗  ██║     ███████║██████╔╝
╚════██║██╔══╝  ██║     ██╔══██║██╔══██╗
███████║███████╗███████╗██║  ██║██████╔╝
╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝╚═════╝ 

SELinux Assistant — интерактивный TUI-менеджер для SELinux

License: GPL v3 Rust Platform 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

Аргументы CLI

Флаг Описание По умолчанию
-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 Добавить файловый контекст

📋 Вкладки

1 · Dashboard

Обзор системы. Левая панель — быстрая навигация, правая — живая статистика: режим SELinux, количество AVC-алертов по уровням, risk score, состояние модулей и булевых.

2 · AVC Alerts

Список отказов из ausearch. Каждый алерт помечен по severity:

  • [!] High — execute, write, unlink
  • [~] Medium — read, getattr
  • [ ] Low — прочие

Выбери алерт → Enter применит рекомендованный fix. v — детали. m — сгенерировать модуль через audit2allow.

3 · Module Manager

Список модулей SELinux с приоритетом. [+] зелёный — включён, [-] красный — отключён. Enter переключает состояние.

4 · Boolean Manager

Все булевые переменные SELinux. * рядом с именем означает, что значение отличается от дефолтного. Поиск через /.

5 · Rollback History

Лог всех применённых изменений. r откатывает последнее. [ ok ] — применённое изменение, [undo] — откат.

6 · Safe Settings

Два профиля:

  • Safe Defaults — отключает потенциально опасные булевые (доступ httpd к home, анонимный FTP и др.)
  • Restrictive Policy — включает deny_ptrace, deny_execmem, secure_mode

7 · File Contexts

Контексты файлов (semanage fcontext). a — добавить. Enter — удалить выбранный.

8 · Ports

Контексты сетевых портов. a — добавить (формат: PORT PROTO TYPE). Enter — удалить.

9 · Statistics

Сводная статистика: алерты по severity, модули, булевые, risk score, последние изменения.

0 · SELinux Mode

Текущий режим (Enforcing / Permissive / Disabled). Enter или M — переключить.


🧪 Режим симуляции

sudo selab --simulate

В режиме симуляции все операции — переключение булевых, модулей, изменение контекстов — выполняются только в памяти. Система не изменяется. Идеально для знакомства с инструментом или тестирования.


📤 Export / Import конфигурации

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 clippy

Структура проекта

src/
├── 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.


Сделано на Rust 🦀

About

SElinux tui manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages