Виртуальная машина своими руками

Что такое виртуальная машина и как её создать

В этой статье мы расскажем, что называется виртуальной машиной и для чего предназначена эта программа, а также покажем, как устанавливать VirtualBox.

Виртуальные машины с каждым годом все больше набирают популярность. Такой рост объясняется двумя основными причинами:

  • появление множества разных операционных систем со своими требованиями к параметрам компьютера,
  • увеличение затрат на администрирование и сложность обслуживания компьютеров с несколькими ОС (обеспечение надежности и безопасности работы).

Что такое виртуальная машина

Иногда требуется установить программу, созданную для ОС, которой нет на устройстве. Для этого можно воспользоваться технологией виртуализации. Виртуализация ― это возможность запуска нескольких операционных систем на одном физическом устройстве. То есть виртуальная машина позволяет создать на одном компьютере ещё один компьютер. Технология использует ресурсы устройства (память, процессор, устройство ввода и вывода), но при этом работает как отдельный компьютер.

Операционная система, на базе которой создаётся новая среда, называется хост-системой (host), а дополнительная операционная система — гостевой.

Виртуализация создается при помощи двух элементов: виртуальной машины и гипервизора.

Виртуальная машина (ВМ или VM) — программа, с помощью которой можно создать гостевую операционную систему на компьютере.

Гипервизор — программа, которая управляет физическими ресурсами вычислительной машины и распределяет эти ресурсы между несколькими различными операционными системами, позволяя запускать их одновременно. Благодаря гипервизору операционные системы не мешают друг другу.

Есть три вида гипервизоров:

Аппаратный. Такие гипервизоры используют Hyper-V, KVM, ESXi. Xen. Аппаратный гипервизор устанавливается прямо на «железо» и выполняет функции эмуляции физического аппаратного обеспечения. То есть такой гипервизор является минимальной операционной системой.

Хостовый гипервизор запускается на обычной ОС, как и другие приложения в системе. В этом случае гостевая ОС выполняется как процесс на хосте, а гипервизор разделяет гостевую ОС и ОС хоста. Примеры гипервизоров этого типа: VMware, VirtualBox и Parallels Desktop для macOS.

Гибридный. Смесь аппаратного и хостового гипервизора. Аппаратными средствами управляет первый тип гипервизора. Хостовый работает с остальными аппаратными компонентами. Такой вид управления имеет Hybrid, Type-1+.

Зачем нужна виртуальная машина и виртуализация

Для чего используют виртуализацию:

  • Чтобы загружать программы и компьютерные игры, которые предназначены для определенной ОС. Например, программы для Windows можно устанавливать на macOS;
  • Чтобы устанавливать две и более операционные системы на одном физическом устройстве. Например, на вашем компьютере установлена операционная система Windows 7, а на виртуальную машину вы установили Linux;
  • Для тестирования. Иногда разработчикам нужно узнать, корректно и безопасно ли работает приложение в другой ОС, например в разных версиях Windows. Покупать или арендовать для этого несколько физических серверов и устанавливать на них разные ОС долго, дорого и сложно;
  • Чтобы запускать программы, которые не совместимы с основной ОС. Например, применять Windows-программы на macOS или Linux;
  • Для безопасного запуска приложения (программы), которое не вызывает доверия. Простыми словами, если файл заражен, то он не сможет атаковать основную ОС;
  • Чтобы эмулировать компьютерные сети и сложные среды, не настраивая виртуальную машину каждый раз. Можно сохранить настройки и продолжить с того этапа, где остановились.

Преимущества и недостатки использования виртуальной машины

Сохранение текущего состояния машины. Если нужно выключить ПК или перейти к другой задаче, то машина сохранит все настройки. При следующей загрузке ВМ откроется в том состоянии, в котором находилась в момент выключения.

Создание снапшота при тестировании нестабильной программы. Если при тестировании софта произошла критическая ошибка, можно откатить ВМ до предыдущего состояния. По сравнению с основной системой, для виртуальной машины выделяется меньше места на дисковом пространстве, благодаря этому откат системы происходит быстрее.

Машину можно сохранять или дублировать как изолированную среду. Её можно будет запустить позднее или скопировать на другой ПК со всеми заданными конфигурациями.

Для переподключения на другую ОС не нужно перезагружать компьютер.

Для одновременного запуска на ВМ нескольких операционных систем, нужно иметь соответствующие аппаратные ресурсы.

ОС в виртуальных машинах работают медленнее. Несмотря на постоянное развитие ВМ, работа виртуальных ОС ниже традиционных.

Виртуальная платформа поддерживает не весь функционал устройства. Например, VMware поддерживает USB 3.0, контроллеры портов COM и LPT и приводы CD-ROM, но виртуализация видеоадаптеров и поддержка функций ускорения трехмерной графики пока малодоступны.

Популярные виртуальные машины

Самыми популярным виртуальным машинам являются:

  • VMware,
  • VirtualBox,
  • Microsoft Hyper-V,
  • Parallels Desktop.

VMware

VMware — одна из самых популярных виртуальных машин для крупных задач. VMware имеет 2 вида: Player (бесплатная версия) и Workstation (платная версия). Для macOS есть специальная версия VMware Fusion и VMware Fusion Pro.

  • высокая надежность и функциональность,
  • поддерживает USB 3.0, CD/DVD-диски и сетевые интерфейсы,
  • до 8 ГБ оперативной памяти для одной виртуальной машины,
  • понятный интерфейс,
  • бесплатная версия VMware Player поддерживает ВМ, которые были созданы на платной версии VMware Workstation,
  • поддержка 3D-графики и DirectX 10,
  • поддерживает EFI.

VirtualBox

VirtualBox — простой и бесплатный инструмент для виртуализации от компании ORACLE. Можно установить самые популярные операционные системы (Windows, Linux-подобные ОС, FreeBSD, macOS). Также VirtualBox может работать с VM, которые были созданы в платной версии VMware Workstation.

  • можно управлять через графический интерфейс и командную строку,
  • интуитивно понятный интерфейс даже для новичков,
  • можно подключать USB-устройства к виртуальным компьютерам и работать с ними напрямую,
  • есть комплект SDK,
  • поддерживает протокол удалённого доступа RDP.
Читайте также:  Дорогой ужин своими руками

Microsoft Hyper-V

Microsoft Hyper-V — VM для Windows 10. Не работает на других ОС.

  • можно переносить файлы с основного ПК на виртуальный и обратно,
  • можно соединить виртуальный и реальный компьютеры по сети,
  • привычный интерфейс для пользователей Microsoft,
  • встроена в Windows 10 (Pro, Enterprise, и Education),
  • поддерживает старые версии Windows.

Parallels Desktop

Parallels Desktop — платная программа для создания виртуальной машины на macOS.

  • можно эмулировать операционные системы Windows, Linux, разные версии MacOS и другие ОС,
  • можно переносить информацию с ПК на виртуальную машину,
  • может работать с USB-накопителями, клавиатурами и мышками напрямую,
  • для виртуальных ОС есть персональный голосовой помощник Cortana.

Несмотря на развитость всех программ для виртуализации, самым часто используемым инструментом является VirtualBox. Он нашел свое применение частными лицами и организациями. Далее мы рассмотрим, как создать VM и установить операционную систему в программе VirtualBox.

Как создать виртуальную машину VirtualBox

Скачайте и установите VirtualBox на компьютер.

Откройте панель управления Oracle и нажмите Создать:

3. Введите название виртуальной машины (имя может быть любое). Кликните Далее:

4. Укажите объём памяти для машины. Для этого сдвиньте ползунок вправо. Нажмите Далее:

5. Выберите пункт «Создать новый виртуальный жёсткий диск» и кликните Создать:

6. Укажите тип файла «VDI (VirtualBox Disk Image)» и нажмите Далее:

7. Выберите формат хранения «Динамический виртуальный жёсткий диск». Нажмите Далее:

8. Укажите объём жёсткого диска 20 ГБ. Кликните Создать:

Готово, вы создали ВМ на VirtualBox. Теперь переходите к установке операционной системы:

Как установить операционную систему в VirtualBox

Рассмотрим, как установить операционную систему на примере Ubuntu 20.04.

Скачайте дистрибутив Ubuntu на компьютер.

Откройте панель управления Oracle и нажмите Настроить:

3. Перейдите в раздел Система. На вкладке «Материнская плата» поставьте галочку напротив пункта «Гибкий диск»:

4. На вкладке «Процессор» выберите 2 ядра:

5. Перейдите в раздел Дисплей. Поставьте галочку напротив пункта «Включить 3D-ускорение» и передвиньте ползунок вправо, чтобы выделить максимально возможный объём видеопамяти:

6. Перейдите в раздел Носители и выберите «Пусто». Затем нажмите на иконку ДискВыбрать образ оптического диска. Загрузите дистрибутив Ubuntu, который вы скачали на первом шаге.

7. После загрузки кликните Ок:

8. На главной странице нажмите Запустить:

9. Подождите, пока загрузится машина:

10. В приветственном окне выберите язык:

11. Нажмите установить Ubuntu:

12. Выберите раскладку клавиатуры «Russian». Нажмите Продолжить:

13. Выберите пункты «Обычная установка» и «Загрузить обновления во время установки Ubuntu». Затем кликните Продолжить:

14. Выберите тип установки «Стереть диск и установить Ubuntu» и нажмите Установить:

Затем кликните Продолжить:

15. Назначьте нужный регион и нажмите Продолжить:

16. Зарегистрируйтесь. Задайте имя и пароль, остальные поля будут заполнены автоматически. Нажмите Продолжить:

17. Дождитесь окончания установки и кликните Перезагрузить:

18. Дождитесь перезагрузки и нажмите Enter:

19. Выберите учётную запись, которую вы создали на шаге 15:

20. Введите пароль, который вы задали при создании учётной записи:

21. Примите предлагаемые настройки или нажмите Далее в правом верхнем углу экрана:

Готово, вы установили ОС Ubuntu 20.04 и можете приступать к работе:

Теперь вы знаете, что делает виртуальная машина и какими ресурсами виртуальной машины можно управлять с помощью программы VirtualBox.

Источник

Властелин виртуальных машин: практические советы по развертыванию виртуальной инфраструктуры

Содержание статьи

Современные процессоры настолько мощны, что позволяют эмулировать самих себя
практически без тормозов. В области системного администрирования это находит
большое практическое применение. Но не все так просто, и прежде, чем возводить
виртуальную систему, следует взвесить все аргументы за и против.

Двери в виртуальный мир

За последние годы на рынке появилось множество виртуальных машин — от
узкоспециализированных (Bochs, eEye) до эмуляторов общего
назначения (VMware, VirtualBox, QEMU, XEN,
Virtual PC
). Интерес к виртуализации растет, а сами эмуляторы по ходу дела
осваивают новые профессии, становясь все более и более привлекательными
игрушками в глазах системных администраторов. Именно «игрушками» – потому что к
введению в промышленную эксплуатацию существующие эмуляторы еще не готовы. Ущерб
от их использования намного превышает стоимость живого железа, которое они
призваны заменять (не говоря уже о том, что большинство эмуляторов
распространяются на коммерческой основе или, попросту, стоят денег).

Тем не менее, играться с виртуальными машинами можно и нужно! Есть все
основания ожидать, что в ближайшие несколько лет разработчики вылижут баги и
доведут эмуляторы до ума, а потому осваивать их надо прямо сейчас, чтобы потом
не разворачивать виртуальную инфраструктуру впопыхах.

Существует, по меньшей мере, три типа виртуальных машин (не считая
гибридов). К самым первым (и самым древним) относятся машины с полной
эмуляцией
. Классический пример — Bochs. Тормозит ужасно, зато позволяет
эмулировать «чужеродные» архитектуры, например, x86 на Мотороллере или x86-64 на
x86. Возвести многопроцессорную машину на однопроцессорной? Без проблем. Причем,
основная операционная система надежно изолирована от гостевых виртуальных машин
и причинить ей ущерб невероятно трудно. Bochs очень хорошо подходит для
экспериментов с вирусами, червями и прочим зловредным ПО. Также его можно
использовать для того, чтобы опробовать 64-разрядные операционные системы,
прежде чем решиться покупать x86-64 – но высокие накладные расходы на эмуляцию
(даже с учетом оптимизации и кэширования инструкций) предъявляют жесткие
требования к аппаратной оснастке базовой машины. И проблема здесь даже не в том,
что WinXP на P-4 под «Борщем» стартует около суток. Она вообще не стартует!
Поскольку куча операций отваливается по тайм-ауту, в частности, если процедура
инициализации драйвера выполняется свыше 10 секунд, система автоматически
выгружает драйвер со всеми вытекающими отсюда последствиями.

Читайте также:  Выставка группы своими руками

Динамические виртуальные машины (QEMU, VMware, VirtualBox) эмулируют
лишь привилегированные инструкции (равно, как и непривилегированные инструкции,
имеющие доступ к системным данным). За счет этого скорость эмуляции возрастает
на несколько порядков, и на P-III 733 уже можно комфортно работать в среде
виртуального Win2k3, а на P-4 все просто летает. Расплатой за скорость
становится принципиальная невозможность эмуляции «чужеродных» архитектур, плюс
потенциальный риск атаки на основную операционную систему из гостевой.
Теоретически, создать надежный динамический эмулятор вполне возможно, но
практически… это же тысячи строк на Си/Си++ и мегабайты кода! К тому же,
разработчики QEMU и VMware даже не пытались защитить основную систему от атаки
со стороны гостевых виртуальных машин, чем с успехом пользуются вирусы и черви.

Аппаратная виртуализация (поддерживаемая последними моделями
процессоров Intel и AMD) устраняет ляпы в x86-архитектуре, где системные данные
надежно защищены только от записи, но могут быть прочитаны с прикладного уровня
легальными непривилегированными командами. Это вынуждает эмулятор просматривать
блок кода перед его выполнением, на что расходуется время. В процессорах фирмы
Motorola таких дефектов нет, и потому динамическая эмуляция на них работает
намного быстрее (и без всякой новомодной аппаратной поддержки!). Но рынок
захватила x86-архитектура, вытеснив Motorol’у, и потому аппаратную виртуализацию
встречают с очень большим энтузиазмом. Теоретически, скорость эмуляции должна
вплотную приближаться к «живому» процессору, поскольку накладные расходы на
виртуализацию близки к нулю. Однако, помимо процессора, виртуальная машина
вынуждена эмулировать еще и оборудование. Без жестких дисков ведь не обойтись, а
давать прямой доступ к физическим хардам — самоубийство. В этом причина того,
что производительность виртуальных машин (даже с поддержкой аппаратной эмуляции)
существенно отстает от живого железа, но все-таки обгоняет динамическую
эмуляцию.

Естественно, за повышение скорости приходится платить. Во-первых, необходимо
приобрести процессор с поддержкой аппаратной виртуализации (ладно, это не
проблема, приобретем в ходе очередного планового апгрейда). Во-вторых (а вот это
уже действительно серьезно) — процессоры содержат кучу дефектов, позволяющих
воздействовать на основную операционную систему из гостевых виртуальных машин.
Исправить ошибку в процессоре намного сложнее, чем в полностью программном
эмуляторе! И что самое неприятное – спонтанные падения основной системы
происходят даже без всякой атаки со стороны вредоносного кода! Словом,
аппаратная виртуализация до сих пор остается плохо отлаженной игрушкой, не
готовой к промышленному внедрению. Несмотря на это, Microsoft уже включила
эмулятор с поддержкой аппаратной виртуализации в состав Win2k8, конкурирующий с
бесплатным проектом XEN.

Виртуальные сервера

Как можно использовать виртуальную машину в корпоративной или офисной сети?
Например, поднять виртуальный сервер. А что? Допустим, нам нужен публичный WEB и
приватный SQL. По соображениям безопасности, публичный сервер должен быть
расположен в так называемой демилитаризованной (DMZ) зоне, а приватный SQL –
внутри локальной сети, обнесенной по периметру глубоким защитным рвом
(брандмауэром). Что требует двух машин. А как быть, если в наличии имеется
только одна?

Теоретически (подчеркиваю!), можно поднять VMware или Virtual PC, разместив
публичный WEB-сервер на виртуальной машине, а приватный SQL – на основной. И это
как бы будет работать. «Как бы» – потому что для достижения приемлемого уровня
производительности даже при поддержке аппаратной виртуализации нам понадобится
довольно мощное железо, способное тянуть эмулятор с разумной скоростью. Значит,
много сэкономить все равно не удастся, а если добавить к этой сумме издержки от
неизбежных атак на виртуальную машину и сбои самой виртуальной машины, в
долгосрочной перспективе мы имеем весьма внушительные убытки. Купить два
отдельных физических сервера — дешевле, да и работать они будут намного
стабильнее. А если денег на железо нет, то лучше отказаться от DMZ-зон, поселив
публичные и приватные сервисы на одной машине и запретив приватным сервисам
принимать трафик с внешних интерфейсов. А для надежности – еще и закрыть порты
на брандмауэре. Как говорится, дешево и сердито, но это все-таки лучше, чем
возня с виртуальными машинами.

Загон для вирусов

Достаточно часто виртуальные машины используются для экспериментов с
потенциально небезопасным программным обеспечением, полученным из ненадежных
источников. Антивирусная проверка — не слишком-то хорошее средство для поиска
неизвестных или модифицированных червей, вирусов и руткитов. Вредителям хорошо
известно, как «ослепить» проактивные технологии и эвристические анализаторы.
Утилиты, ориентированные на поиск руткитов, хорошо работают лишь в первые дни
своего появления, а затем хакеры находят обходной путь.

Прямое сравнение дисковых образов палит все руткиты, червей и вирусы без
исключения (конечно, при условии, что они вносят изменения в файловую систему, а
не ограничиваются заражением одной лишь оперативной памяти, умирая при
перезагрузке). Алгоритм поиска заразы выглядит так: снимаем образ стерильной
системы, сохраняя его в надежном месте, устанавливаем новое программное
обеспечение, снимаем еще один образ. Монтируем оба образа на заведомо не
зараженную систему и сравниваем их. Тривиальное пофайловое сравнение выявляет
до 90% малвари
. Остальные 10% обнаруживает побайтовое сравнение,
«вытягивающее» вирусы, прячущиеся в NTFS-потоках или других местах (работая с
диском на низком уровне, мы должны знать все базовые структуры файловой системы,
подробно описанные в моей книге «Техника восстановления данных», электронную
копию которой можно бесплатно скачать здесь:

nezumi.org.ru/recover-full-rus.zip).

Естественно, проводить подобные эксперименты лучше всего под эмулятором. Так
намного проще оперировать образами виртуальных жестких дисков, да и выделять
отдельную (физическую) машину не потребуется. Удобство, простота и экономия —
налицо. Но простота хуже воровства, и экономия на выделенной машине до добра не
доводит. Если виртуальная машина соединена с основной системой виртуальной
сетью, то черви могут атаковать базовую операционную систему, используя дыры в
сетевых службах. Администратору следует либо своевременно устанавливать все
заплатки, либо отключить вирусный загон от Сети вообще – не забывая про
расшаренные ресурсы. Виртуальная машина VMware поддерживает их в обход
Ethernet-адаптера. Шары продолжают работать даже после удаления виртуальной
сетевой карты, и подвержены сразу двум типам атак — через дыры в сервисе «общих
папок» и путем засылки червей, модифицирующих шаблон папки, автоматически
«подхватываемый» Проводником. То же самое относится и ко всем остальным типам
носителей. Это существенно затрудняет обмен данными между виртуальной и основной
машинами. Самое надежное — копировать данные через CD-ROM (не обязательно
физический — подойдет и виртуальный, просто берем любую программу для создания
iso-образов и монтируем ее на основную систему и на VMware).

Читайте также:  Замена теплоносителя своими руками

Важно: по умолчанию VMware автоматически распознает все подключаемые
USB-устройства и дает виртуальным машинам к ним полный доступ. Допустим, мы
подключаем FLASH, внешний жесткий диск с USB-интерфейсом или другой девайс
подобного рода, на котором тут же поселяется вирус, вырвавшийся из застенков
виртуальной машины. Чтобы предотвратить вторжение, достаточно отключить
USB-контроллер в свойствах виртуальной машины.

Однако проблемы на этом не заканчиваются. Руткиты уже давно научились
распознавать виртуальные машины
, отказываясь от заражения в их присутствии,
что ломает весь концепт. Мы устанавливаем программное обеспечение с руткитом на
виртуальную машину, сравниваем образы, ничего не находим и, довольные собой,
запускаем руткита в основную систему. Выходит, гарантировано обнаружить
современных руткитов при помощи виртуальных машин невозможно! А если еще учесть
большое количество дыр в эмуляторах, то руткит имеет все шансы заразить основную
систему из гостевой машины. Выход? Либо использовать выделенную живую машину,
либо надежную виртуальную машину с полной эмуляцией (например, Bochs). Это
предотвратит вирусное вторжение, но, увы, не спасет от детекции виртуальной
машины руткитом. Bochs содержит множество мелких дефектов эмуляции (ведет себя
не как настоящий процессор), которые не препятствуют работе нормальных программ,
но могут быть использованы для детекта эмулятора. К тому же, ЛЮБОЙ эмулятор
несет на своем борту довольно специфический набор виртуального железа, по
которому его легко опознать. И хотя при наличии исходных текстов мы можем
воспрепятствовать этому — купить живой компьютер намного дешевле, чем корежить
виртуальное железо.

Резюмируя вышесказанное, делаем вывод: виртуальные машины – не слишком-то
надежный загон для вирусов, хотя если не быть параноиком, то (с учетом низкого
качества подавляющего большинства вирусов и руткитов) лучше использовать
виртуальную машину, чем всецело полагаться на антивирусы.

Инструмент выявления сетевых атак

Офисные сети обычно не испытывают необходимости в сенсорах и датчиках,
детектирующих вторжение, а если и испытывают, то дело обычно ограничивается
приобретением коммерческой IDS/IPS-системы, встраиваемой в брандмауэр и спокойно
работающей на шлюзе в интернете или на одном из узлов локальной сети.

С ростом сети появляется желание установить специализированную систему
обнаружения вторжений, например, Snort (бесплатный) или AMP (коммерческий). И
разместить ее на выделенном узле, поскольку для установки того же AMP
администратор должен предоставить его поставщикам удаленный shell на свою
машину. Причем, AMP будет не только автоматом скачивать свежие сигнатуры из
Сети, но и отправлять весь подозрительный трафик для анализа на серверы компании
Endeavor, которая и является его разработчиком.

Доверие — это прекрасно, но отдавать свой трафик в чужие руки… Нет, лучше
размесить эту штуку на отдельном узле, отключенном от основной локальной сети,
но запитанном от того же самого ISP – то есть ловящего тех же вирусов и червей,
что и основные узлы локальной сети. Можно ли использовать для этой цели
виртуальную машину? Конечно! Главное, надежно изолировать ее от корпоративной
сети.

Наибольшую проблему представляют виртуальные сетевые карты, через
которые гостевая операционная система легко доберется до основной. Все
виртуальные карты в обязательном порядке должны быть отключены! Но… если у нас
нет сети, как же тогда общаться с внешним миром и ловить трафик? Вариантов
много. Вот только один из них: ADSL-модем с USB-интерфейсом, подключенный к
виртуальной машине с выдернутой сетевой картой и заблокированными шарами.

Какую именно виртуальную машину следует использовать? VMware очень известна и
слишком дырява. Bochs невероятно медленно работает. Virtual PC – неплохой выбор,
но учитывая большое количество дыр в процессорах, его использование крайне
небезопасно. Реально остается только VirtualBox, XEN или QEMU, хотя первый из
них все еще достаточно сырой и до сих пор не отлаженный.

Зеркальный сервер

Вредоносная природа червей и вирусов вполне объяснима. Они как раз для этого
и писались. Увы, честное программное обеспечение зачастую наносит намного
больший урон. Взять хотя бы обновления безопасности или новые версии. Всем
администраторам хорошо известно, что их установка порой приводит к
трудноразрешимым конфликтам, потерям данных, а то и полному краху операционной
системы!

Аналогичным образом дела обстоят с кручением настроек, смысла которых
администратор до конца не понимает и действует методом тыка. Одно неверное
движение руки — и система отказывается загружаться, а чтобы поднять ее,
требуются знания и квалификация, вырабатываемые только в борьбе с вот такими
взлетами и падениями. По книжкам всего не выучишь… И здесь виртуальные машины –
незаменимы.

Просто устанавливаем систему со всеми приложениями и сервисными службами на
VMware/Virtual PC/VirtualBox/etc, и все новые заплатки, обновления, настройки, в
первую очередь, обкатываем на гостевой операционной системе, наблюдая за ее
реакцией. Если полет нормальный — переносим изменения на основную машину. Если
же нет — соображаем, что здесь не так, и где косяк.

Итого

Виртуальные машины открывают практически неограниченные возможности для
экспериментов. Главное — правильно ими воспользоваться, предусмотрев максимум
возможных побочных эффектов и разработав план по их устранению.


Полную версию статьи
читай в октябрьском номере
Хакера!

Источник

Оцените статью