Настройка 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 |-o sudo bash/tmp/filebrowser-get.shbash /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-доступ к уже существующей структуре логов.