Установка 1. Ставим пакеты #общая часть apt install git xxd bsdmainutils #для сервера с БД apt install mariadb-server #для сервера с вэбом apt install apache2 libapache2-mod-fcgid \ php php-mysql php-bcmath php-intl php-mbstring php-date php-mail php-snmp php-zip php-fpm php-db php-pgsql #для ядра apt 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 libparallel-forkmanager-perl libproc-daemon-perl libdatetime-format-dateparse-perl \ libnetwork-ipv4addr-perl libnet-openssh-perl libfile-tail-perl libcrypt-rijndael-perl \ libcrypt-cbc-perl libcryptx-perl libdbd-pg-perl libfile-path-tiny-perl libexpect-perl libcrypt-des-perl #дополнительно apt install dnsmasq syslog-ng apt install bind9 bind9-utils bind9-host 2. Create user and group addgroup --system eye adduser --system --disabled-password --disabled-login --ingroup eye --home=/opt/Eye eye chmod 770 /opt/Eye 2.1 Если нужна работа с nagios usermod -a -G eye nagios 3. Качаем исходники и раскидываем по каталогам: git clone https://github.com/rajven/Eye mkdir -p /opt/Eye/scripts mkdir -p /opt/Eye/scripts/cfg mkdir -p /opt/Eye/scripts/log cd Eye/ cp -R scripts/ /opt/Eye/ cp -R html/ /opt/Eye/ patch perl snmp for support SHA512 #cp -f docs/patches/USM.pm /usr/share/perl5/Net/SNMP/Security/USM.pm 4. Можно скачать дополнительные скрипты (красивости) mkdir -p /opt/Eye/html/js/jq mkdir -p /opt/Eye/html/js/select2 download from https://jquery.com/download/ production jQuery to /opt/Eye/html/js/jq #wget https://code.jquery.com/jquery-1.12.4.min.js -O /opt/Eye/html/js/jq/jquery.min.js or #wget https://code.jquery.com/jquery-3.7.0.min.js -O /opt/Eye/html/js/jq/jquery.min.js download from https://github.com/select2/select2 release #wget https://github.com/select2/select2/archive/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 download jstree from https://github.com/vakata/jstree/ #wget https://github.com/vakata/jstree/zipball/3.3.12 -O js.zip #unzip js.zip "vakata-jstree-7a03954/dist/*" -d "/opt/Eye/html/" #mv /opt/Eye/html/vakata-jstree-7a03954/dist/ /opt/Eye/html/js/jstree #rm -d /opt/Eye/html/vakata-jstree-7a03954 #rm -f js.zip 5. Настраиваем mysql set password for root #mysql_secure_installation Создаём базу данных #cat docs/mysql/create_db.sql | mysql -u root -p Импортируем таблицы #cat docs/mysql/latest-mysql.sql | mysql -u root -p stat Create user and database #mysql -u root -p MariaDB [(none)]> grant all privileges to stat.* stat@localhost, identified with a "password"; flush privileges; exit 6. Настраиваем конфиги для вэба и скриптов: cp html/inc/config.sample.php /opt/Eye/html/cfg/ mv /opt/Eye/html/cfg/config.sample.php /opt/Eye/html/cfg/config.php edit: /opt/Eye/html/cfg/config.php cp scripts/cfg/config.sample /opt/Eye/scripts/cfg/config edit: /opt/Eye/scripts/cfg/config Надо указать пароль в mysql и базу данных! Для шифрования паролей на устройства используется симметричное ишфрование AES-128-CBC. Необходимо сгенерировать пароль и вектор инициализации, внести в оба конфига: Пароль: pwgen 16 Вектор: tr -dc 0-9 /etc/dnsmasq.conf #edit /etc/dnsmasq.conf for you network systemctl enable dnsmasq systemctl enable dhcp-log systemctl start dnsmasq systemctl start dhcp-log ######################################### Additional ################################################################## 1. Для определения вендора оборудования по маку, необходимо импортировать базу маков: scripts/utils/mac-oids/download-macs.sh scripts/utils/mac-oids/update-mac-vendors.pl 2. Для изменения списков доступа на маршрутизаторе сразу после внесения изменений в вэб-интерфейсе необходимо включить сервис stat-sync cp docs/systemd/stat-sync.service /etc/systemd/system systemctl enable stat-sync.service ######################################### Network flow ##################################################################### Включаем netflow на роутере микротик: #for ROS 6 set enabled=yes #for ROS 7 set enabled=yes interfaces=WAN /ip traffic-flow target add dst-address=[IP-SERVER] port=2055 ######################################### Remote syslog ############################################################### Если нужно писать логи с устройств: apt install syslog-ng -y cp /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.default cat docs/syslog-ng/syslog-ng.conf >/etc/syslog-ng/syslog-ng.conf systemctl enable syslog-ng systemctl start syslog-ng cp docs/systemd/syslog-stat.service /etc/systemd/system/syslog-stat.service systemctl enable syslog-stat systemctl start syslog-stat ######################################### Mikrotik managment ########################################################## настраиваем параметры доступа по ssh к роутеру в админке (login|password|port) http://[IP]/admin/customers/control-options.php указываем в роутере (http://[IP]/admin/devices/) внешние и внутренние интерфейсы, включаем использование шейперов, dhcp-сервера (не нужно, если исопльзуем dnsmasq) Добавляем правила в фаервол: /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 #указанные выше правила надо поставить выше этих дефалтных: #add action=drop chain=forward comment="drop forward invalid" connection-state=invalid #add action=accept chain=forward comment=related,established connection-state=established,related #А эти правила должны быть ниже дефолтных add action=reject chain=forward comment="deny default wan" in-interface-list=WAN log=yes log-prefix=unk_wan: reject-with=icmp-network-unreachable add action=drop chain=forward out-interface-list=WAN шейпер: /queue tree add max-limit=[YOU BANDWIDTH] name=upload_root_[WAN_INTERFACE_NAME] parent=[WAN_INTERFACE_NAME] queue=pcq-upload-default add name=download_root_[LAN_INTERFACE_NAME] parent=[LAN_INTERFACE_NAME] queue=pcq-download-default запускаем /opt/Eye/scripts/sync_mikrotik.pl Скрипт создаст правила фильтрации и шейпера #dhcp script #ROS6 /tool fetch mode=http keep-result=no url="http:///api.php\?login=&api_key=&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname"" #ROS7 /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 #########################################################################################################################