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

curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh -o /tmp/filebrowser-get.sh
Запускаем
bash /tmp/filebrowser-get.sh

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

# Проверяем версию 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-доступ к уже существующей структуре логов.