# Око Обычный быдло-кодинг, разросшийся за последние 13 лет. Выкладываю сюда - может кого-то сподвигнет сделать что-то своё нормально). ## 📋 Обзор Eye — это комплексная система сетевого мониторинга и управления, обеспечивающая: - Управление выходом в интернет для IP-адресов через маршрутизаторы MikroTik/Linux (настраивается фильтрация, лимиты трафика в сутки и за месяц). - Ограничение скорости доступа (реализовано на MikroTik; функциональность для Linux ранее существовала, но была удалена). - Генерация конфигураций для DHCP-серверов (dnsmasq, MikroTik). - Генерация конфигураций для DNS-сервера (BIND). - Опрос коммутаторов и маршрутизаторов по SNMP с последующим анализом и определением портов подключения IP-адресов. - Мониторинг и управление сетевыми устройствами. - Анализ трафика и контроль пропускной способности. - Сбор и анализ Syslog-сообщений. - Статистика и отчёты в реальном времени. --- # Eye Monitoring System — Руководство по установке ### Системные требования #### Поддерживаемые дистрибутивы: * ALT Linux 11.1+ * Debian 11+ * Ubuntu 20.04+ --- ## 🚀 Быстрая установка с помощью скрипта Для автоматизированной установки используйте установочный скрипт: ```bash # Сделать скрипт исполняемым chmod +x install-eye.sh # Запуск установки sudo ./install-eye.sh # Автоматический режим (минимальное вмешательство) sudo ./install-eye.sh --auto ```` ### Возможности скрипта * Поддержка ALT Linux, Debian и Ubuntu * Поддержка двух СУБД: MySQL/MariaDB или PostgreSQL (экспериментально, не для production!) * Многоязычный интерфейс: английский или русский * Автоматическая установка зависимостей * Настройка конфигурационных файлов * Инициализация базы данных --- ## 🔧 Ручная установка ### Установка требуемых пакетов #### Для ALT Linux: ```bash # Обновление репозиториев apt-get update # Установка пакетов Eye apt-get install git xxd wget fping hwdata # База данных (выберите одну) apt-get install mariadb-server mariadb-client # Для MySQL # ИЛИ apt-get install postgresql postgresql-client # Для PostgreSQL # Веб-сервер и PHP apt-get install apache2 php8.2 php8.2-mysqlnd php8.2-pgsql \ php8.2-intl php8.2-mbstring php8.2-fpm-fcgi apache2-mod_fcgid # Perl-модули apt-get install perl perl-Net-Patricia perl-NetAddr-IP \ perl-Config-Tiny perl-Net-DNS perl-DateTime perl-Net-Ping \ perl-Net-Netmask perl-Text-Iconv perl-Net-SNMP perl-Net-Telnet \ perl-DBI perl-DBD-mysql perl-DBD-Pg perl-Parallel-ForkManager \ perl-Proc-Daemon perl-DateTime-Format-DateParse perl-Net-OpenSSH \ perl-File-Tail perl-Crypt-Rijndael perl-Crypt-CBC perl-CryptX \ perl-Crypt-DES perl-File-Path-Tiny perl-Expect perl-Proc-ProcessTable # Дополнительные сервисы apt-get install dnsmasq syslog-ng syslog-ng-journal pwgen ``` #### Для Debian / Ubuntu: ```bash # Обновление репозиториев apt-get update # Установка пакетов Eye apt-get install git xxd bsdmainutils pwgen wget fping ieee-data # База данных (выберите одну) apt-get install mariadb-server mariadb-client # Для MySQL # ИЛИ apt-get install postgresql postgresql-client # Для PostgreSQL # Веб-сервер и PHP apt-get install apache2 php php-mysql php-pgsql php-bcmath \ php-intl php-mbstring php-date php-mail php-snmp php-zip \ php-db php-fpm libapache2-mod-fcgid # Perl-модули apt-get install perl libnet-patricia-perl libnetaddr-ip-perl \ libconfig-tiny-perl libnet-dns-perl libdatetime-perl \ libnet-netmask-perl libtext-iconv-perl libnet-snmp-perl \ libnet-telnet-perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl \ libparallel-forkmanager-perl libproc-daemon-perl \ libdatetime-format-dateparse-perl libnet-openssh-perl \ libfile-tail-perl libcrypt-rijndael-perl libcrypt-cbc-perl \ libcryptx-perl libfile-path-tiny-perl libexpect-perl libcrypt-des-perl # Дополнительные сервисы apt-get install dnsmasq syslog-ng ``` --- ### Создание пользователя и группы ```bash # Создание группы groupadd --system eye # Создание пользователя adduser --system --disabled-password --disabled-login \ --ingroup eye --home=/opt/Eye eye # Создание каталога mkdir -p /opt/Eye chown eye:eye /opt/Eye chmod 770 /opt/Eye # Опционально: добавить nagios в группу eye usermod -a -G eye nagios ``` --- ### Загрузка и установка исходного кода ```bash # Клонирование репозитория git clone https://github.com/rajven/Eye # Создание структуры каталогов mkdir -p /opt/Eye/scripts/cfg mkdir -p /opt/Eye/scripts/log mkdir -p /opt/Eye/html/cfg mkdir -p /opt/Eye/html/js mkdir -p /opt/Eye/docs # Копирование файлов cp -R scripts/ /opt/Eye/ cp -R html/ /opt/Eye/ cp -R docs/ /opt/Eye/ # Установка прав chown -R eye:eye /opt/Eye chmod -R 755 /opt/Eye/html chmod -R 770 /opt/Eye/scripts/log chmod 750 /opt/Eye/scripts ``` --- ### Применение патча SNMP SHA512 (опционально) ```bash # Патч для поддержки SNMPv3 SHA512 # Файл: /opt/Eye/docs/patches/sha512.patch # Для ALT Linux: /opt/Eye/docs/patches/sha512.alt.patch # Применение патча при необходимости cp /opt/Eye/docs/patches/USM.pm /usr/share/perl5/Net/SNMP/Security/USM.pm ``` --- ### Загрузка дополнительных JavaScript-библиотек ```bash # Создание каталогов mkdir -p /opt/Eye/html/js/jq mkdir -p /opt/Eye/html/js/select2 mkdir -p /opt/Eye/html/js/jstree # Загрузка jQuery wget https://code.jquery.com/jquery-3.7.0.min.js \ -O /opt/Eye/html/js/jq/jquery.min.js # Загрузка Select2 wget https://github.com/select2/select2/archive/4.0.12.tar.gz -O 4.0.12.tar.gz tar -xzf 4.0.12.tar.gz -C /opt/Eye/html/js/select2/ \ --strip-components=2 select2-4.0.12/dist rm -f 4.0.12.tar.gz # Загрузка jsTree wget https://github.com/vakata/jstree/archive/3.3.12.tar.gz -O jstree.tar.gz tar -xzf jstree.tar.gz -C /opt/Eye/html/js/ mv /opt/Eye/html/js/jstree-3.3.12/dist/* /opt/Eye/html/js/jstree rm -rf /opt/Eye/html/js/jstree-3.3.12 rm -f jstree.tar.gz ``` --- ### Настройка базы данных #### MySQL / MariaDB: ```bash systemctl enable mariadb systemctl start mariadb mysql_secure_installation mysql -u root -p < /opt/Eye/docs/databases/mysql/en/create_db.sql mysql -u root -p stat < /opt/Eye/docs/databases/mysql/en/data.sql mysql -u root -p < /etc/dnsmasq.conf cp /opt/Eye/docs/systemd/dhcp-log.service /etc/systemd/system/ cp /opt/Eye/docs/systemd/dhcp-log-truncate.service /etc/systemd/system/ systemctl enable dnsmasq dhcp-log dhcp-log-truncate systemctl start dnsmasq ``` #### Syslog-ng: ```bash cp /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.backup mkdir -p /etc/syslog-ng/conf.d cp /opt/Eye/docs/syslog-ng/eye.conf /etc/syslog-ng/conf.d/ cp /opt/Eye/docs/systemd/syslog-stat.service /etc/systemd/system/ systemctl enable syslog-ng syslog-stat systemctl restart syslog-ng systemctl start syslog-stat ``` #### NetFlow: ```bash cp /opt/Eye/docs/systemd/eye-statd.service /etc/systemd/system/ systemctl enable eye-statd ``` #### Stat-sync: ```bash cp /opt/Eye/docs/systemd/stat-sync.service /etc/systemd/system/ systemctl enable stat-sync.service ``` --- ### Импорт базы MAC-адресов ```bash cd /opt/Eye/scripts/utils/mac-oids/ bash download-macs.sh perl update-mac-vendors.pl ``` --- ## 🌐 Доступ к веб-интерфейсу * URL: `http://your-server-ip/` * Админ-панель: `http://your-server-ip/admin/` * Логин: `admin` * Пароль: `admin` --- ## 🔐 Рекомендации по безопасности * **НЕМЕДЛЕННО смените пароль администратора** * Сгенерируйте новый API-ключ * Ограничьте доступ с помощью firewall * Используйте HTTPS (без принудительного редиректа!) * Делайте регулярные обновления и резервные копии --- ## 📊 Интеграция с MikroTik ### Firewall: ```routeros /ip firewall filter add action=jump chain=forward comment="users set" in-interface-list=WAN jump-target=Users add action=jump chain=forward jump-target=Users out-interface-list=WAN ``` ### Управление трафиком: ```routeros /queue tree add max-limit=100M name=upload_root_ether1 parent=ether1 queue=pcq-upload-default add name=download_root_bridge parent=bridge queue=pcq-download-default ``` ### DHCP-скрипт (RouterOS 6): ```routeros /tool fetch mode=http keep-result=no url="http:///api.php?login=&api_key=&send=dhcp&mac=\$leaseActMAC&ip=\$leaseActIP&action=\$leaseBound&hostname=\$lease-hostname" ``` ### DHCP-скрипт (RouterOS 7): ```routeros /tool fetch url="http:///api.php?login=&api_key=&send=dhcp&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname"" mode=http keep-result=no ``` ### NetFlow: ```routeros # RouterOS 6 /ip traffic-flow set enabled=yes # RouterOS 7 /ip traffic-flow set enabled=yes interfaces=WAN /ip traffic-flow target add dst-address= port=2055 ``` ---