Installation 1. Install the packages #common apt install git xxd bsdmainutils #for database server apt install mariadb-server #for web 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 #for backend 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-cbc-perl libcryptx-perl libdbd-pg-perl libfile-path-tiny-perl #additional packages apt install dnsmasq syslong-ng bind9 bind9-utils bind9-host 2. Download the source code and spread it in catalogs: 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/ 3. You can download additional scripts (prettiness) 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 4. Setting up mysql systemctl enable mariadb systemctl start mariadb mysql_secure_installation - set password for root #mysql -u root -p Create user and database MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS `stat` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; grant all privileges to stat.* stat@localhost, identified with a "password"; reset privileges; go out Import default tables documents cat/mysql/mysql.sql | mysql -u root -p stat 5. Edit configs for web and scripts: cp html/cfg/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 You need to specify the password in mysql and the database! Symmetric AES-128-CBC encryption is used to encrypt passwords to devices. It is necessary to generate a password and an initialization vector, enter in both configs: Password: pwgen 16 Vector: 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. To determine the vendor of equipment by mac, you need to import a database of macs: scripts/utils/mac-oids/download-macs.sh scripts/utils/mac-oids/update-mac-vendors.pl 2. enable stat-sync service cp docs/systemd/stat-sync.service /etc/systemd/system systemctl enable stat-sync.service ######################################### Network flow ##################################################################### Enable netflow at mikrotik: /ip traffic-flow set enabled=yes /ip traffic-flow target add dst-address=[IP-SERVER] port=2055 ######################################### Remote System Log ############################################################### If you need to write logs from devices: 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 Management ########################################################## configure ssh access parameters to the router in the admin panel (login | password | port) http://[IP]/admin/customers/control-options.php we register in the router (http:// [IP]/admin/devices/), enter and disable servers, enable the use of servers, a dhcp server (not necessary if we use dnsmasq) Adding rules to the firewall: /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 #the above rules should be put above these default ones: #add action=drop chain=forward comment="drop forward invalid" connection-state=invalid #add action=accept chain=forward comment=related,established connection-state=established,related #And these rules should be lower than the default ones 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 shaper: /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 launching /opt/Eye/scripts/sync_mikrotik.pl The script will create filtering and shaper rules #dhcp script sampling #ROS6 /tool fetch mode=http keep-result=no url="http:///admin/users/add_dhcp.php\?login=&api_key=&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname"" #ROS7 /tool fetch url="http:///admin/users/add_dhcp.php?login=&api_key=&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname"" mode=http keep-result=no #########################################################################################################################