Skip to main content

Настройка File Browser для просмотра и скачивания Syslog-логов

1. Назначение

File Browser используется как простая web-морда для просмотра и скачивания файлов из каталога:

/var/log/remote

В этой схеме:

rsyslog пишет логи → /var/log/remote
logrotate ротирует файлы → /var/log/remote
Zabbix agent читает alert-файлы → /var/log/remote/_alerts
File Browser показывает логи через web → http://IP_SYSLOG_SERVER:8081

File Browser работает как отдельный бинарный web-сервис, а корневой каталог можно задать параметром --root; база настроек хранится в одном файле Bolt DB, отдельная СУБД не требуется.


2. Установка File Browser

# Скачиваем и устанавливаем File Browser официальным install-скриптом
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | sudo bash

Проверить установку:

# Проверяем версию File Browser
filebrowser version

# Проверяем путь к бинарному файлу
which filebrowser

Обычно бинарник устанавливается сюда:

/usr/local/bin/filebrowser


3. Создание системного пользователя

File Browser лучше запускать не от root, а от отдельного системного пользователя.

# Создаем системного пользователя без интерактивного входа
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/filebrowser filebrowser

# Создаем каталог для базы File Browser
sudo mkdir -p /var/lib/filebrowser

# Назначаем владельца каталога
sudo chown -R filebrowser:filebrowser /var/lib/filebrowser


4. Доступ File Browser к логам

Так как логи создаются в каталоге /var/log/remote с владельцем/группой syslog:syslog, пользователя filebrowser нужно добавить в группу syslog.

# Добавляем пользователя filebrowser в группу syslog для чтения логов
sudo usermod -aG syslog filebrowser

Проверить:

# Проверяем группы пользователя filebrowser
id filebrowser

В выводе должна быть группа:

syslog

Проверить права на каталог логов:

# Проверяем права на каталоги логов
ls -ld /var/log/remote
ls -ld /var/log/remote/_alerts

Ожидаемый вариант:

drwxr-x--- ... syslog syslog ... /var/log/remote
drwxr-x--- ... syslog syslog ... /var/log/remote/_alerts


5. Инициализация File Browser

В данной схеме File Browser:

слушает порт: 8081
корневой каталог: /var/log/remote
адрес прослушивания: 0.0.0.0

File Browser нельзя настроить на прослушивание «только подсетей» напрямую. Он слушает IP-адрес и порт, а ограничение доступа из подсетей 192.168.1.0/24 и 10.44.100.0/24 выполняется firewall-правилами.

# Инициализируем базу File Browser
sudo -u filebrowser filebrowser \
  -d /var/lib/filebrowser/filebrowser.db \
  config init \
  --address 0.0.0.0 \
  --port 8081 \
  --root /var/log/remote \
  --auth.method=json \
  --branding.name "Syslog Logs" \
  --disableExec

Параметры config init позволяют задать адрес прослушивания, порт, root-каталог, метод авторизации и отключить выполнение команд.


6. Создание пользователя для просмотра логов

Создать отдельного пользователя, например:

syslogview

Пользователю выдаются права только на просмотр и скачивание, без создания, удаления, изменения и переименования файлов. Команда filebrowser users add создаёт пользователя в базе File Browser и позволяет задать его scope и permissions.

# Создаем пользователя только для просмотра и скачивания логов
sudo -u filebrowser filebrowser \
  -d /var/lib/filebrowser/filebrowser.db \
  users add syslogview 'ЗАМЕНИ_НА_СЛОЖНЫЙ_ПАРОЛЬ' \
  --scope / \
  --perm.download=true \
  --perm.create=false \
  --perm.delete=false \
  --perm.modify=false \
  --perm.rename=false \
  --perm.share=false \
  --perm.execute=false

После входа пользователь будет видеть /var/log/remote как корень / внутри File Browser.


7. Создание systemd-сервиса

Создать unit-файл:

# Создаем systemd unit для File Browser
sudo nano /etc/systemd/system/filebrowser.service

Содержимое:

[Unit]
Description=File Browser for Syslog Logs
After=network-online.target
Wants=network-online.target

[Service]
Type=simple

# Запускаем File Browser от отдельного пользователя
User=filebrowser
Group=filebrowser

# Дополнительная группа нужна для чтения логов syslog:syslog
SupplementaryGroups=syslog

# Рабочий каталог File Browser
WorkingDirectory=/var/lib/filebrowser

# Запуск File Browser с указанной базой
ExecStart=/usr/local/bin/filebrowser -d /var/lib/filebrowser/filebrowser.db

# Перезапуск при аварийном завершении
Restart=on-failure
RestartSec=5

# Базовое усиление безопасности
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Применить:

# Перечитываем systemd-конфигурацию
sudo systemctl daemon-reload

# Включаем File Browser в автозагрузку и запускаем
sudo systemctl enable --now filebrowser

# Проверяем статус службы
sudo systemctl status filebrowser --no-pager

Нормальное состояние:

Active: active (running)


8. Проверка порта

# Проверяем, что File Browser слушает порт 8081
sudo ss -tlpn | grep ':8081'

Ожидаемо:

LISTEN ... 0.0.0.0:8081 ...

Проверить HTTP-ответ локально:

# Проверяем локальный HTTP-ответ
curl -I http://127.0.0.1:8081


9. Ограничение доступа через UFW

Разрешить доступ к File Browser только из двух сетей:

192.168.1.0/24
10.44.100.0/24

Если ufw уже используется:

# Разрешаем доступ к File Browser из сети 192.168.1.0/24
sudo ufw allow from 192.168.1.0/24 to any port 8081 proto tcp

# Разрешаем доступ к File Browser из сети 10.44.100.0/24
sudo ufw allow from 10.44.100.0/24 to any port 8081 proto tcp

# Проверяем правила firewall
sudo ufw status numbered

Если ufw ещё не включён, перед включением нужно заранее разрешить служебные порты, чтобы не отрезать доступ к серверу.

Минимальный набор правил:

# Разрешаем SSH из доверенных сетей
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
sudo ufw allow from 10.44.100.0/24 to any port 22 proto tcp

# Разрешаем Syslog UDP/514 из нужных сетей
sudo ufw allow from 192.168.1.0/24 to any port 514 proto udp
sudo ufw allow from 10.44.100.0/24 to any port 514 proto udp

# Разрешаем Syslog TCP/514 из нужных сетей
sudo ufw allow from 192.168.1.0/24 to any port 514 proto tcp
sudo ufw allow from 10.44.100.0/24 to any port 514 proto tcp

# Разрешаем File Browser TCP/8081 из нужных сетей
sudo ufw allow from 192.168.1.0/24 to any port 8081 proto tcp
sudo ufw allow from 10.44.100.0/24 to any port 8081 proto tcp

# Если Zabbix server/proxy опрашивает агент пассивно, разрешаем TCP/10050
sudo ufw allow from 10.10.99.0/24 to any port 10050 proto tcp

После проверки правил включить UFW:

# Включаем firewall
sudo ufw enable

# Проверяем итоговое состояние
sudo ufw status verbose


10. Вход в web-интерфейс

Открыть в браузере:

http://IP_SYSLOG_SERVER:8081

Примеры:

http://192.168.1.X:8081
http://10.44.100.X:8081

Войти пользователем:

Login:    syslogview
Password: заданный пароль

После входа должна быть видна структура каталогов:

/
├── <IP_источника>/
│   ├── all.log
│   ├── facility/
│   └── severity/
└── _alerts/


11. Проверка доступа к логам

Создать тестовое syslog-сообщение:

# Отправляем тестовое сообщение в rsyslog
logger -n 127.0.0.1 -P 514 -d -p user.err -t TEST "Проверка File Browser"

Проверить запись в консоли:

# Ищем сообщение в логах
sudo grep -R "Проверка File Browser" /var/log/remote/

После этого открыть File Browser и проверить наличие сообщения в соответствующем файле, например:

/127.0.0.1/all.log

или в alert-каталоге:

/_alerts/127.0.0.0/


12. Обслуживание File Browser

Проверить статус:

# Проверяем статус службы
sudo systemctl status filebrowser --no-pager

Посмотреть журнал:

# Последние 100 строк журнала File Browser
journalctl -u filebrowser -n 100 --no-pager

Журнал в реальном времени:

# Смотрим журнал File Browser в реальном времени
journalctl -u filebrowser -f

Перезапустить:

# Перезапускаем службу
sudo systemctl restart filebrowser

Остановить:

# Останавливаем службу
sudo systemctl stop filebrowser


13. Смена пароля пользователя

# Меняем пароль пользователя syslogview
sudo -u filebrowser filebrowser \
  -d /var/lib/filebrowser/filebrowser.db \
  users update syslogview \
  --password 'НОВЫЙ_СЛОЖНЫЙ_ПАРОЛЬ'

После смены пароля обычно достаточно перелогиниться в web-интерфейсе. При необходимости можно перезапустить службу:

# Перезапускаем File Browser
sudo systemctl restart filebrowser


14. Итоговая схема

File Browser:
  URL:        http://IP_SYSLOG_SERVER:8081
  Listen:     0.0.0.0:8081
  Root:       /var/log/remote
  Service:    filebrowser.service
  OS user:    filebrowser
  ExtraGroup: syslog
  App user:   syslogview
  Rights:     просмотр + скачивание, без изменения файлов

Allowed networks:
  192.168.1.0/24
  10.44.100.0/24

Такой вариант не меняет работу rsyslog, logrotate и Zabbix agent: File Browser только предоставляет web-доступ к уже существующей структуре логов.