refactored. 01-02-03 done

This commit is contained in:
Marat Kharitonov
2024-03-26 19:36:57 -04:00
parent 37b5fd1f40
commit 40899bcd4b
152 changed files with 647 additions and 0 deletions

View File

@@ -0,0 +1,168 @@
# Модуль 3. Мониторинг информационной безопасности и оценка рисков
## Мониторинг, аналитика и оценка рисков ИБ. Задание 4
### Ход лабораторной работы
#### Развертывание Zabbix
1. Для развертывания Zabbix воспользуемся официальной документацией, в части касающейся использования Docker-контейнера для развертывания.
```
https://www.zabbix.com/documentation/current/en/manual/installation/containers
https://github.com/zabbix/zabbix-docker
```
2. Сформируем docker-compose.yaml, запустим его и убедимся в старте сервисов
```yaml
version: '3.5'
services:
server:
image: zabbix/zabbix-server-pgsql:alpine-latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
restart: always
depends_on:
- postgres-server
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- POSTGRES_DB=zabbixNew
- ZBX_HISTORYSTORAGETYPES=log,text #Zabbix configuration variables
- ZBX_DEBUGLEVEL=1
- ZBX_HOUSEKEEPINGFREQUENCY=1
- ZBX_MAXHOUSEKEEPERDELETE=5000
- ZBX_PROXYCONFIGFREQUENCY=3600
web-nginx-pgsql:
image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
ports:
- "80:8080"
- "443:8443"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /etc/ssl/nginx:/etc/ssl/nginx
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
sysctls:
- net.core.somaxconn=65535
restart: always
depends_on:
- server
- postgres-server
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- POSTGRES_DB=zabbixNew
- ZBX_SERVER_HOST=server
- ZBX_POSTMAXSIZE=64M
- PHP_TZ=Europe/Moscow
- ZBX_MAXEXECUTIONTIME=500
agent:
image: zabbix/zabbix-agent:alpine-latest
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /proc:/proc
- /sys:/sys
- /dev:/dev
- /var/run/docker.sock:/var/run/docker.sock
privileged: true
pid: "host"
restart: always
depends_on:
- server
environment:
- ZBX_SERVER_HOST=server
postgres-server:
image: postgres:16.2
restart: always
volumes:
- pg_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=zabbix
- POSTGRES_USER=zabbix
- POSTGRES_DB=zabbixNew
volumes:
pg_data:
```
![alt text](img/01.png)
3. Проверим веб-интерфейс на наличие запущенного Zabbix
![alt text](img/02.png)
Zabbix развернут, можно приступать к работе.
4. Войдём в Zabbix с использованием учетных данных `Admin/zabbix`
![alt text](img/03.png)
Тут мы видим, что у нас уже имеется один хост, который сообщает о проблеме. Это уведомление о недоступности агента самого Zabbix-сервера, который был развернут в контейнере `agent` (в соответствии с docker-compose файлом)
5. Исправим эту проблему, для этого перейдем в настройки данного хоста и установим его опрос с помощью Zabbix-агента через DNS имя, вместо IP-адреса.
![alt text](img/04.png)
6. Спустя пару секунд мы наблюдаем, что связность появилась.
![alt text](img/05.png)
7. Дополнительно создадим ещё одно устройство, это будет мой маршрутизатор Mikrotik. В качестве интерфейса подключения назначим SNMP.
![alt text](img/06.png)
8. Добавим 2 элемента данных:
Проверку доступности по ICMP:
![alt text](img/07.png)
Текущий аптайм в милисекундах:
![alt text](img/08.png)
#### Создание кастомных дашбордов
1. Приступим к созданию своего дашборда с мониторингом интересующих нас параметров.
![alt text](img/09.png)
2. Добавим виджет доступности узлов сети
![alt text](img/10.png)
3. Добавим виджет с информацией об Uptime Mikrotik.
![alt text](img/11.png)
4. Виджет с информацией о системе в целом.
![alt text](img/12.png)
5. Настроим виджеты с информацией об аптайме ОС, утилизации процессора и памяти.
6. В итоге мы получили следующий дашборд.
![alt text](img/13.png)
7. Теперь можно добавить пару графиков, например график доступности Mikrotik (основан на метрике доступности по ICMP) и утилизацию сервера Zabbix (по CPU)
![alt text](img/14.png)
![alt text](img/15.png)
## Выводы
Лабортаорная работа завершена. В ходе работы мы научились разворачивать Zabbix и добавлять устройства в мониторинг. Устройства, на которые нельзя установить Zabbix-агент по прежнему могут быть поставлены на мониторинг, например с помощью SNMP. Zabbix очень функциональный open-source инструмент мониторинга, который очень в том числе в Enterprise среде за свою стабильность, большие возможности и широкую поддержку коммьюнити.
**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

View File

@@ -0,0 +1,81 @@
version: '3.5'
services:
server:
image: zabbix/zabbix-server-pgsql:alpine-latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
restart: always
depends_on:
- postgres-server
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- POSTGRES_DB=zabbixNew
- ZBX_HISTORYSTORAGETYPES=log,text #Zabbix configuration variables
- ZBX_DEBUGLEVEL=1
- ZBX_HOUSEKEEPINGFREQUENCY=1
- ZBX_MAXHOUSEKEEPERDELETE=5000
- ZBX_PROXYCONFIGFREQUENCY=3600
web-nginx-pgsql:
image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
ports:
- "80:8080"
- "443:8443"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /etc/ssl/nginx:/etc/ssl/nginx
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
sysctls:
- net.core.somaxconn=65535
restart: always
depends_on:
- server
- postgres-server
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- POSTGRES_DB=zabbixNew
- ZBX_SERVER_HOST=server
- ZBX_POSTMAXSIZE=64M
- PHP_TZ=Europe/Moscow
- ZBX_MAXEXECUTIONTIME=500
agent:
image: zabbix/zabbix-agent:alpine-latest
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /proc:/proc
- /sys:/sys
- /dev:/dev
- /var/run/docker.sock:/var/run/docker.sock
privileged: true
pid: "host"
restart: always
depends_on:
- server
environment:
- ZBX_SERVER_HOST=server
postgres-server:
image: postgres:16.2
restart: always
volumes:
- pg_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=zabbix
- POSTGRES_USER=zabbix
- POSTGRES_DB=zabbixNew
volumes:
pg_data: