По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Допустим, Вы решили обзавестись IP телефонией для своего офиса. Вы закупили необходимое количество телефонов, настроили voice VLAN, DHCP, TFTP серверы и определились с номерным планом. Однако, прежде чем Ваш IP Phone зазвонит, ему еще предстоит пройти процедуру загрузки, так называемый Bootup или Startup process, которому и будет посвящена данная статья. В качестве примера будет рассмотрен процесс загрузки Cisco IP Phone под управлением Cisco CallManager. Понимание данного процесса даст более полное представление о работе телефонов Cisco и IP телефонии в целом, а также поможет в оперативном траблшутинге неисправностей. Итак, пусть имеется некая сеть, содержащая: сервер с Cisco CallManager, сервер DHCP, сервер TFTP, коммутатор с поддержкой PoE (Power over Ethernet) и Cisco IP Phone, как показано на рисунке ниже. Допустим, что наш коммутатор и телефон поддерживают протокол PoE. Тогда, сразу после того, как телефон будет подключен к одному из Ethernet портов, коммутатор отреагирует специальным сигналом FLP (Fast Link Pulse), который определяет, имеет ли подключенное устройство питание. Возвращение FLP в форме петли (loopback) на порт коммутатора, к которому недавно было подключено новое устройство, сигнализирует о том, что на данный порт необходимо незамедлительно подать питание. Таким образом, IP Phone по протоколу PoE 802.3af получает питание в 48 Вольт. Cisco IP Phone имеет встроенную, энергонезависимую Flash-память, в которой хранится образ прошивки и начальные пользовательские настройки. В процессе начальной загрузки телефон, загружая из Flash-памяти образ прошивки, инициализирует своё программное обеспечение и аппаратные средства. Как только телефон получил питание и прошел POST (Power-on self-test) для проверки базовой функциональности, коммутатор, по проприетарному протоколу CDP (Cisco Discovery Protocol), отправляет на телефон информацию о том, какой voice VLAN необходимо использовать. Затем, IP Phone отправляет на широковещательный адрес 255.255.255.255 запрос DHCPDISCOVER, в свою очередь DHCP сервер возвращает ответ DHCPOFFER, который содержит следующую информацию: Свободный IP адрес Маска подсети Адрес шлюза по умолчанию (Default Gateway) Адрес DNS (Domain Name System) сервера. (опционально) Адрес TFTP (Trivial File Transfer Protocol) сервера, на котором хранится файл конфигурации для телефонов. Адрес TFTP сервера задается при конфигурировании DHCP по средствам, так называемой опции 150 (option 150). Синтаксис команды приведен ниже: option 150 ip 'TFTP server IP address' После того как телефон с помощью option 150 получил адрес TFTP сервера, он скачивает конфигурационный файл, содержащий параметры для подключения к CallManager. Если телефон был зарегистрирован на CallManager’е вручную, то он начинает проверять файл .cnf.xml, который определяет какую версию программного обеспечения должны использовать все телефоны, зарегистрированные в данном CallManager’е. Если обнаруживается, что загруженный образ не соответствует общепринятому, то телефон вновь обращается на TFTP сервер для получения корректного образа, хранящегося там в формате .bin. После обращения к TFTP, загрузив новый образ, телефон инициирует установление TCP соединения с CallManager’ом. Данное соединение открывает возможность использования функционала Cisco IP Phone в полной степени. Как видите, с того момента как наш IP Phone был подключен в один из портов коммутатора и до того момента, когда мы можем совершать звонки, он проходит еще множество всевозможных этапов загрузки, большинство из которых, конечный пользователь даже не заметит.
img
Если вы специалист по безопасности, то вам потребуется часто анализировать хосты, если будет замечена подозрительная активность. Чтобы дольше оставаться незамеченными, злоумышленники зачастую используют совершенно легитимные инструменты и процессы, которые можно найти в любой ОС Microsoft Windows. Поэтому важно понимать, как Windows обрабатывает процессы и какие встроенные инструменты может использовать специалист по безопасности для анализа активностей на хосте. Процессы, потоки и службы В Windows, когда приложение запущено, оно создает процесс. Обычно приложение может иметь один или несколько выделенных ему процессов. Процесс - это все ресурсы, необходимые для обеспечения возможности выполнения/запуска приложения в операционной системе хоста. Представьте, что вы открываете диспетчер задач, чтобы проверить производительность вашего компьютера. Операционная система создаст процесс со всеми необходимыми ресурсами для этого приложения. На следующем рисунке показаны текущие процессы на компьютере с Windows 10: Как показано на предыдущем рисунке, диспетчер задач - это служебная программа, которая предоставляет информацию о процессах, службах и производительности устройства. На вкладке «Процессы» вы увидите список всех запущенных в данный момент приложений в операционной системе хоста, список фоновых процессов и ресурсы, которые выделяются каждому приложению (ЦП, память). Фоновые процессы в Windows выполняются как службы. Служба - это программа, которая выполняется в фоновом режиме операционной системы, обеспечивая поддержку приложения и/или операционной системы. Эти службы можно настроить на автоматический запуск при загрузке Windows. Вы можете запускать, останавливать и перезапускать службу вручную. На следующем снимке экрана показано окно панели управления службами в операционной системе Windows 10: На предыдущем рисунке показан список служб в операционной системе хоста. Здесь вы можете настроить свойства службы в Windows. Дважды щелкнув на службу, откроется окно свойств. На следующем рисунке показано окно свойств службы: Как показано на предыдущем рисунке, вы можете настроить тип запуска службы. Каждое приложение создает родительский процесс с одним или несколькими дочерними процессами, иногда называемыми потоком. Каждый дочерний процесс или поток отвечает за функцию, обеспечивающую выполнение приложения. Когда приложение выполняется в операционных системах Microsoft Windows, родительский процесс использует системный вызов fork(), который позволяет родительскому процессу для запущенного приложения создать один или несколько дочерних процессов. Однако имейте в виду, что у дочернего процесса может быть только один родительский процесс, а у родительского процесса может быть несколько дочерних процессов. Когда приложение выполняется операционной системой или пользователем, операционная система задействует физическую память из оперативной памяти и создает виртуальную память для выделения запущенному процессу или дочернему процессу. Таким образом, процессы выполняются в виртуальном адресном пространстве операционной системы. Важное примечание! Операционная система Windows управляет выделением виртуальной памяти процессу. Иногда, когда приложение закрывается, родительский процесс и все дочерние процессы завершаются, тем самым высвобождая ресурсы обратно операционной системе. Однако родительский процесс может завершиться, пока дочерние процессы остаются активными. В этой ситуации виртуальная память и любые другие ресурсы по-прежнему выделяются каждому дочернему процессу. Дочерний процесс, у которого нет родительского процесса, называется сиротским процессом (orphan process). Пользователь может вручную завершить дочерний процесс в диспетчере задач или выполнить перезагрузку системы. Перезагрузка системы завершит все процессы и перезагрузит операционную систему. На следующем рисунке показан список всех запущенных процессов на вкладке «Подробности» в диспетчере задач: Как показано на предыдущем снимке экрана, мы можем видеть все процессы, идентификатор процесса (PID) для каждого процесса, статус, какой пользователь запускает процесс, и распределение ресурсов. Также в Microsoft Windows существует утилита Resource Monitor Монитор ресурсов предоставляет более подробную информацию обо всех процессах и о том, как они используют ЦП, память диск и сеть на устройстве. На следующем рисунке показан интерфейс монитора ресурсов на компьютере с Windows 10: Еще одним инструментом, который поможет вам определить адресное пространство и распределение памяти в Microsoft Windows, является инструмент RAMMap, который входит в набор инструментов Windows Sysinternals от Microsoft. На следующем рисунке показан сводный список и список подкачки на хосте, использующем RAMMap: Как показано на предыдущем снимке экрана, RAMMap показывает сводную информацию о выделении виртуальной памяти и ее использовании. Кроме того, вкладка Процессы содержит полный список всех процессов: Как показано на предыдущем рисункеа, на этой вкладке вы можете увидеть каждый запущенный процесс и распределение виртуальной памяти. Этот инструмент действительно полезен для демонстрации того, как ваша операционная система распределяет физическую память и сколько памяти используется в качестве кэша для данных на устройстве. Файл подкачки Windows= По мере того, как в память загружается больше приложений, операционная система выделяет части физической памяти (ОЗУ) каждому процессу, используя виртуальную память. Каждый родительский процесс и его дочерние процессы выполняются в одном виртуальном адресном пространстве в операционной системе хоста. Как уже упоминалось, за выделение памяти отвечает операционная система, однако есть некоторые приложения, которым для бесперебойной работы требуется намного больше памяти, чем другим, и это может создать нехватку доступной памяти для других приложений. Операционная система Windows использует часть памяти из другой области, с жесткого диска или SSD. Windows берет небольшую часть памяти с локального диска и преобразует ее в виртуальную память. Это называется файлом подкачки. Файл подкачки позволяет операционной системе хоста использовать эту часть памяти для загрузки приложений и, следовательно, снижает нагрузку на физическую память (ОЗУ) в системе. Чтобы получить доступ к настройкам файлов подкачки, выполните следующие действия: Щелкните значок Windows в нижнем левом углу экрана и выберете Система. Откроется окно «Система». Слева выберите пункт «Дополнительные параметры системы». Откроется окно «Свойства системы». Выберите пункт «Дополнительно» и нажмите «Параметры» в разделе «Быстродействие», как показано ниже: Откроется окно параметров быстродействия. Чтобы изменить размер файла подкачки, нажмите «Изменить…»: Вам будет предоставлена возможность настроить размер файла подкачки для всех дисков в локальной системе. Размер файла подкачки по умолчанию зависит от объема оперативной памяти хост-системы. Операционная система Windows 10 автоматически управляет размером файла подкачки в зависимости от конфигурации хоста и объема оперативной памяти в системе. Windows использует файл подкачки в качестве виртуальной памяти в случае, если в ОЗУ недостаточно физической памяти. Реестр Windows Вся информация о конфигурациях и настройках операционной системы Windows и ее пользователей хранится в базе данных, известной как реестр (registry). Самый высокий уровень реестра известен как куст. В реестре Windows есть пять кустов, и каждое значение данных хранится в разделе или подразделе куста. Древо (куст) реестра — это подмножество разделов, подразделов и параметров реестра, которому сопоставлен набор вспомогательных файлов, содержащих резервные копии этих данных. Часто для обозначения конкретных путей в реестре применяют термин ветка. Например ветка реестра HKEY_LOCAL_MACHINESYSTEM. Ниже перечислены пять кустов и их функции в Windows: HKEY_CLASSES_ROOT (HKCR): этот куст отвечает за правильное выполнение всех текущих приложений в проводнике Windows. Кроме того, этот куст содержит сведения о ярлыках и правилах перетаскивания в операционной системе хоста. HKEY_CURRENT_USER (HKCU): этот куст хранит информацию о текущей учетной записи пользователя в локальной системе. Эта информация будет включать настройки панели управления, настройки папок и настройки персонализации пользователя. HKEY_LOCAL_MACHINE (HKLM): этот куст отвечает за хранение специфичных для оборудования деталей операционной системы, таких как конфигурация системы и подключенные диски. HKEY_USERS (HKU): содержит данные конфигурации профилей пользователей в локальной системе. HKEY_CURRENT_CONFIG (HKCC): содержит подробную информацию о текущих конфигурациях системы. Для доступа к реестру используйте Registry Editor (regedit) в строке поиска Windows. На следующем рисунке показан редактор реестра Windows: Как показано на предыдущем рисунке, вы можете видеть, что каждый куст находится в верху своего уровня. Если вы развернете куст, вы увидите папки, а в каждой папке есть ключи, которые содержат сведения о конкретной функции или конфигурации в операционной системе. Реестр может предоставить ценную информацию во время расследования. В каждом реестре есть значение, известное как LastWrite, которое просто указывает время последнего изменения объекта или файла. Эта информация может использоваться для определения времени инцидента или события, связанного с безопасностью. В реестре также содержатся сведения о приложениях, которые запускаются автоматически со стартом системы - AutoRun. Для закрепления в системе, злоумышленники часто модифицируют ветки реестра, которые отвечают за автоматический запуск процессов и сервисов и добавляют в них ссылки на вредоносные программы, чтобы они каждый раз запускались со стартом системы и могли пережить перезагрузку. Ниже приведены основные ветки, отвечающие за автоматический старт приложений и сервисов: [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce] [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun] [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices] [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce] [HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogonUserinit] [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun] [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce] [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices] [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce] [HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows] Например, чтобы при каждом старте Windows запускался блокнот, в ветку [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun] можно добавить новое значение и указать в нём ссылку на исполняемый файл на компьютере - "Notepad"="c:windows otepad.exe" Windows Management Instrumentation Управлять несколькими компьютерами с ОС Windows в небольшой сети очень просто. Однако по мере роста сети и подключения все большего числа устройств на базе Windows управление политиками и службами на уровне приложений может стать сложной задачей. Windows Management Instrumentation (WMI) - это инструмент, встроенный в операционную систему Windows, который позволяет системному администратору или специалисту по безопасности управлять многими системами на базе Windows в корпоративной сети. WMI - это функция администрирования Windows, которая обеспечивает единую среду для локального и удаленного доступа к системным компонентам Windows, а также позволяет собирать статистическую информацию об удаленных компьютерах в вашей сети. Вы сможете собирать статистику как по оборудованию, так и по программному обеспечению и даже отслеживать состояние каждого устройства. Чтобы открыть WMI на компьютере с Windows, выполните следующие действия: Откройте приложение Computer Management (управление компьютером) в Windows 10/Server 2019. Слева разверните «Службы и приложения». Щелкните правой кнопкой мыши элемент управления WMI и выберите «Свойства». На следующем рисунке показан интерфейс свойств элемента управления WMI: Злоумышленники могут использовать инструментарий управления Windows (WMI) для удаленного управления. WMI работает через протоколы SMB и службу удаленного вызова процедур (RPCS) для удаленного доступа. RPCS работает через порт 135. WMI управляется через утилиту командной строки WMI command-line (WMIC). Пример команды - wmic process call create. Использование WMI должно быть ограничено и ограничиваться только авторизованными пользователями, внимательно следя за его использованием. Инструменты мониторинга В операционной системе Windows существует множество инструментов мониторинга, которые специалист по безопасности может использовать для мониторинга различных ресурсов и действий на устройстве. Одним из таких инструментов является Performance Monitor, который позволяет пользователю собирать более подробные данные, чем ранее упомянутый Resource Monitor. Монитор производительности (системный монитор) - это основной инструмент, используемый как в Windows 10, так и в Windows Server. Специалист по безопасности может использовать этот инструмент для сбора статистики о системе за различные периоды времени, например, часы или дни. Затем собранные данные можно проанализировать на предмет любых аномалий. На следующем рисунке показан монитор производительности в системе Windows 10/Server 2019: Еще одним отличным инструментом, встроенным в Windows, является Монитор стабильности системы. Монитор стабильности системы позволяет специалисту по безопасности просматривать историю проблем, возникших в основной системе в течение нескольких дней или недель. Пользователь может нажать на событие в инструменте, чтобы получить подробную информацию о проблеме, и существует система оценок от 1 до 10, отражающая серьезность проблемы. На следующем рисунке показан Монитор стабильности системы на компьютере с Windows 10: Как показано на предыдущем рисунке, в системе произошел ряд критических событий за определенный период времени. Выбрав событие, монитор покажет подробную информацию о службе или приложении, вызвавшем событие, сводку и время его возникновения. Специалист по безопасности может использовать статистику и информацию, найденные здесь, чтобы лучше понять, вызвало ли вредоносное ПО или неавторизованные приложения нарушение безопасности в хост-системе. Инструменты мониторинга Когда в системе Windows происходит какое-либо событие, создается сообщение журнала о данном событии. Инструмент, позволяющий анализировать данные события - Event Viewer. Event Viewet содержит журналы безопасности, приложений и системных событий. Представьте, что злоумышленник пытается войти в учетную запись пользователя с неверными учетными данными. Для каждой попытки создастся событие сообщения журнала, и по этим данным можно будет обнаружить атаку. Существует 4 основных журнала событий: Security Безопасность - хранит события безопасности Application Приложение - хранит журналы приложений в ситстеме и установленного ПО Setup Установка - хранит сведения об установке ОС System Система - хранит сведения о работе самой системы На следующем рисунке показан инструмент просмотра событий в Windows (Event Viewer): Если вы развернете категорию, такую как Безопасность, вы увидите список всех журналов, связанных с безопасностью. На следующем снимке экрана показаны сведения в окне просмотра событий входа в систему безопасности: Информация, содержащаяся в сообщениях журнала, помогает специалисту по безопасности определить, что, когда и как произошел инцидент в системе. Обратите внимание на код события - 4624. Этот код соответствует успешному входу в системе Windows. В случае неуспешного входа сгенерируется событие с кодом 4625. Данные события также будут содержать другую полезную информацию, такую как: имя пользователя, осуществляющего вход, информацию о системе с которой осуществляется вход, тип входа (интерактивный, удаленный, сетевой, вход сервиса), процесс входа, ID входа и другое. Другие важные коды событий в системах Windows, хранящиеся в журнале Безопасности/Security (начиная с версии 7): 4725 - Отключение Учетной записи 4723 - Изменение пароля учетной записи 4724 - Сброс пароля для учетной записи 47204726 - Созданиеудаление пользователя 4648 - вход с явным указанием учетных данных 4698 - Создание задачи через планировщик задач 4697 - Создание службы в системе 46884689 - Созданиезавершение процесса
img
Вакансии в сфере айти считаются престижными на рынке труда. Кандидатов привлекает возможность удаленной работы, высокие зарплаты и бесконечное поле для развития. Но что, если по образованию вы филолог, социолог или историк, и хотите попасть в информационную сферу? Означает ли, что без знания математики и умения кодить путь в айти навсегда закрыт? Предлагаем выяснить, можно ли попасть в техническую сферу, если математика в школе казалась сложной и непонятной, а из языков знаешь только английский. Технари и гуманитарии. Противостояние. Часть первая Так могла бы называться новая, еще не изданная книга, если бы мы собрали в нее все мифы про разделение людей на технарей и гуманитариев. На самом деле, определенных генов, отвечающих за склонность к тем или иным наукам, нет. Такое разделение представляет собой всего лишь упрощение, которое не отражает разнообразие интересов и способностей. В реальности многие профессионалы успешно интегрируют гуманитарные и технические компетенции в своей работе. Например, в сфере информационных технологий часто требуется не только техническое понимание, но и умение эффективно общаться и работать в команде, что является гуманитарными навыками. Так ли важна математика в айти? Вопрос, о который рушатся надежды новых специалистов. Постараемся внести ясность. В современном мире существует множество профессий, в которых основные задачи не требуют глубоких математических знаний. К тому же многие работодатели в IT ценят не только технические навыки, но и способность к креативному мышлению, коммуникации и решению проблем. Такие компетенции в основном предоставляет гуманитарное образование. В 2020 году ученые из университета Вашингтона провели исследование (Scientific Reports, 2020) и выяснили, что наиболее полезным навыком для программистов оказалась не математика, а способность к изучению языков. Испытуемые приняли участие в десяти 45-минутных сеансах обучения Python, а после каждого занятия проходили тест. Ученые отслеживали скорость обучения и результаты тестирования Оказалось, что лучше всего Python давался участникам с высокими способностями к языкам. Эти результаты обеспечивают новую основу для понимания способностей к программированию, предполагая, что важность математики может быть переоценена. Soft skills не спасут мир, но горящий проект возможно Все больше работодателей при найме сотрудников отмечают важность «мягких» навыков. Так, согласно опросу LinkedIn 92% респондентов из 35 стран приравняли важность soft skills к hard skills. Если HR-специалисту придется выбирать между кандидатами с одинаковым уровнем технических навыков, он будет обращать внимание на софты и предложит оффер тому, у кого они более развиты. Это кажется логичным, так как с прокачанными soft skills гораздо легче взаимодействовать с коллегами, руководством или клиентами. Long story short: учитесь понятной коммуникации. Коммуникация, сотрудничество и креативность Навыки, которые обычно приписывают гуманитариям, важны и для технических специалистов. Они необходимы для успешной работы в команде и взаимодействия с другими людьми. Для программиста важно иметь развитые навыки коммуникации, потому что способность эффективно общаться, слушать и сотрудничать с коллегами помогает достигать общих целей. Многие IT-специалисты в конечном итоге сталкиваются с задачей управления проектами или командами. Лидерские навыки, такие как умение принимать решения, мотивировать коллег и эффективно организовывать работу, играют здесь важную роль. Специальности, в которых не надо кодить Другим камнем преткновения становится умение кодить. Не каждый умеет или тем более готов обучаться языку программирования. Хочется развеять еще один миф, в айти есть ряд специальностей, для которых это совсем не обязательно. Для примера на том же хэдхантере много вакансий в категории IT Project Manager / IT Sales and Marketing / Data Analyst и другие. Также для гуманитариев подойдет работа в качестве копирайтера, технического писателя, маркетолога или даже UI/UX-дизайнера. Давайте подробнее рассмотрим эти специальности. Ниже дали краткий обзор и ориентировочную вилку зарплат. Менеджмент проектов в IT (IT Project Management) Такие специалисты координируют выполнение проектов, работают с командами и заказчиками. Знание основных технических аспектов важно, но написание кода может не требоваться. Зарплата проджекта зависит от его опыта и региона, в котором работает специалист. В столице доходы варьируются от от 50 000 до 320 000 руб. UX/UI-дизайн UX (User Experience) и UI (User Interface) дизайнер - это специалист, который создает удобные, функциональные и понятные пользовательские интерфейсы для веб-сайтов, мобильных приложений и прочих цифровых продуктов. Средний ежемесячный заработок UX/UI-дизайнера составляет 106 000 руб. Вилка зарплат по стране - от 40 000 до 200 000 руб. Аналитик данных (Data Analyst) Аналитики данных работают с большими объемами данных, чтобы выявлять тенденции, создавать отчеты и предоставлять бизнес-аналитику. Хотя знание SQL и инструментов анализа данных может быть полезным, это не всегда включает в себя написание кода. Выводы и результаты аналитика помогают принимать бизнес-решения. Как и в любой технической профессии аналитиков делят на три грейда: джуниор, мидл и сеньор. Новичок получает от 70 000 до 170 000 рублей. Middle - от 120 000 до 250 000 рублей. Senior - от 180 000 до 330 000 рублей. Продажи и маркетинг в IT (IT Sales and Marketing) Специалисты этой сферы занимаются продвижением и продажей IT-продуктов и услуг. Здесь не требуется написание кода, но может быть полезным понимание технических аспектов продукта. Маркетолог тесно сотрудничает с командой разработчиков и помогает представить продукт или услугу понятными для рынка. На hh.ru можно найти вилку зарплат от 80 000 до 200 000 руб. UX-писатель Его основной задачей является создание понятного текстового контента для цифровых продуктов. Это могут быть инструкции, подсказки и другие элементы интерфейса, направленные на улучшение восприятия пользователя. Райтер много общается с разработчикам, дизайнерами, клиентами и другими специалистами. Ему не нужно писать код, а вот разобраться в технических деталях придется. Зарплата также сильно зависит от региона и начинается от 40 000 рублей. в Москве такие специалисты получают 45 000 - 130 000 рублей. Подведем итоги Миф о разделении на гуманитариев и технарей все еще существует и оказывает влияние на выбор профессии. Но это совсем не значит, что в техническую специальность нельзя попасть с гуманитарным образованием. На рынке труда ценятся специалисты обладающие как "твердыми", так и "мягкими" навыками. Кроме того, описанное выше исследование показывает, что для написания кода важен не матан, а способность к изучению языков. В целом хотелось бы отметить, что если вы обнаружили у себя интерес к технической специальности, то все в ваших руках, а онлайн-образование придет на помощь!
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59