🐧 ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ конфигурация ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Linux

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΌΠΈΡ€ Linux-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² (LXD/LXC) ΠΈ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ прСдоставим ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ руководство ΠΏΠΎ настройкС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Ρ†Π΅Π»Π΅ΠΉ тСстирования, Π² Ρ‚ΠΎΠΌ числС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ.

Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ – ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконфигурированныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для получСния систСмных ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ ΠΎΡΡ‚Ρ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ обСспСчСния бСзопасности ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

  • ΠžΠ±Π·ΠΎΡ€ Lxc ΠΈ Lxd
  • Различия ΠΌΠ΅ΠΆΠ΄Ρƒ Lxc ΠΈ Lxd
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Lxd
  • ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Lxd
  • Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?

 

LXC

LXC, ΠΈΠ»ΠΈ Linux Containers, – это тСхнология Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux.

Она позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ нСсколько нСзависимых Linux-систСм, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π½Π° ΠΎΠ΄Π½ΠΎΠΉ хост-машинС.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΏΠ°ΠΌΡΡ‚ΡŒ, сСтСвыС рСсурсы ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ физичСской машинС.

LXC ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ эффСктивный ΠΈ дСйствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΡ… экзСмпляров Linux Π½Π° ΠΎΠ΄Π½ΠΎΠΌ хостС с минимальной Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами.

Он вострСбован для развСртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, тСстирования систСм, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ построСния ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… инфраструктур.

LXC поддСрТиваСтся ядром Linux ΠΈ управляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки LXC (CLI) ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ графичСскиС интСрфСйсы.

Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² соотвСтствии с ΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ потрСбностями ΠΈ трСбованиями.

 

LXD

LXD, сокращСниС ΠΎΡ‚ Linux Container Daemon, – это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ LXC с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ интСрфСйса.

Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ LXC ΠΈ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ систСмныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

LXD ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ubuntu ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах Linux, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… snap-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.

LXD позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ REST API ΠΈ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

REST API позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π° интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки обСспСчиваСт эффСктивноС взаимодСйствиС с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ нСпосрСдствСнно ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

LXD извСстСн своСй ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ срСдствами Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π²Π·Π»ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ.

Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ высокотСхнологичныС срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ AppArmor ΠΈ SELinux, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ хосты.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, LXD ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΆΠΈΠ²ΡƒΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ хостами, Ρ‡Ρ‚ΠΎ позволяСт Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ срСды.

Π’ Ρ†Π΅Π»ΠΎΠΌ LXD – это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для управлСния Linux-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ бСзопасно ΠΈ эффСктивно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ прилоТСния.

 

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ LXC ΠΈ LXD

LXC (Linux Containers) ΠΈ LXD (Linux Container Daemon) – ΠΎΠ±Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Linux, Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ различия:

  • LXC – это интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ядра Linux, Π° LXD – это Π΄Π΅ΠΌΠΎΠ½, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ RESTful API для управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ LXC.
  • LXC ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для создания ΠΈ управлСния Π»Π΅Π³ΠΊΠΈΠΌΠΈ систСмными ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ LXD прСдставляСт собой ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ Тивая миграция, кластСризация ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ.
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, LXD прСдоставляСт Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ графичСский Π²Π΅Π±-интСрфСйс для управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ LXC полагаСтся Π½Π° инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для управлСния.
  • LXD являСтся Π±ΠΎΠ»Π΅Π΅ высокоуровнСвой абстракциСй LXC, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², созданиС ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… снимков ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ‚ΡŒΡŽ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ LXC.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ссли LXC обСспСчиваСт ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Linux, Ρ‚ΠΎ LXD строится Π½Π° Π΅Π΅ основС ΠΈ прСдставляСт собой ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом.

 

Настройка LxD

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ шаги ΠΏΠΎ установкС ΠΈ настройкС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° LXD Π² нашСй систСмС.

Π‘Π½Π°Ρ‡Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ β€˜apt’ ΠΌΡ‹ установим lxd ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ зависимости.

 

aptΒ installΒ lxd

 

 

 

aptΒ installΒ zfsutils-linux

 

ПослС установки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Π΅Π³ΠΎ зависимостСй ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€˜systemctl’.

 

systemctlΒ startΒ lxd

 

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ LXD

Для Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° создадим Π½ΠΈΠ·ΠΊΠΎΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€˜pentest’ ΠΈ Π΄Π°Π΄ΠΈΠΌ Π΅ΠΌΡƒ ΠΏΡ€Π°Π²ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ lxd.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€˜useradd’.

Команда β€˜-p’ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, β€˜-s’ – shell ΠΈ β€˜-m’ – ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

 

useraddΒ -pΒ β€˜Password1’ -sΒ β€˜/bin/bash’ -mΒ pentest

 

ПослС создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€˜usermod’ для добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ lxd.

Π­Ρ‚ΠΎ дСйствиС даст ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ β€˜pentest’ ΠΏΡ€Π°Π²ΠΎ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ.

 

usermodΒ —appendΒ —groupsΒ lxdΒ pentest

 

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» root.txt Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ эксплойт, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² этот Ρ„Π°ΠΉΠ».

 

echoΒ β€˜WeΒ GotΒ Root’ >Β root.txt

 

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ pentest Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ lxd

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

 

Эксплуатация Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконфигурированного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ настройка Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° хранСния.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ lxd init.

lxdΒ init

 

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ созданный Π½Π°ΠΌΠΈ ΠΏΡƒΠ» хранСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ lxc.

lxcΒ storageΒ list

 

ПослС создания ΠΏΡƒΠ»Π° хранСния Π½Π°ΠΌ понадобится любой скомпилированный ΠΎΠ±Ρ€Π°Π· для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с GitHub.

Π’ нашСм сцСнарии хост-машина ΠΈΠΌΠ΅Π΅Ρ‚ доступ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½ΠΎ Ссли это Π½Π΅ Ρ‚Π°ΠΊ, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнный скомпилированный ΠΎΠ±Ρ€Π°Π· для lxd ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° хост-ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ β€˜lxd-alpine-builder’ ΠΈ собСрСм ΠΎΠ±Ρ€Π°Π·.

gitΒ cloneΒ https://github.com/saghul/lxd-alpine-builder.git
cdΒ lxd-alpine-builder/
./build-alpine

 

ПослС выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΡ‹ скомпилировали ΠΎΠ±Ρ€Π°Π· для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скомпилированный ΠΎΠ±Ρ€Π°Π· Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ lxc для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π· alpine ΠΊΠ°ΠΊ β€˜Myimage’.

lxcΒ imageΒ importΒ ./Β alpine-v3.17-x86_64-20230302_1107.tar.gzΒ —aliasΒ MyImage
lxcΒ imageΒ list

 

Наш скомпилированный ΠΎΠ±Ρ€Π°Π· ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ lxc, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ для нашСго скомпилированного ΠΎΠ±Ρ€Π°Π·Π°.

 

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с использованиСм ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° (MyImage).

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (с ΠΈΠΌΠ΅Π½Π΅ΠΌ Itsec), послС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ бСзопасности созданному экзСмпляру.

 

lxcΒ initΒ MyImageΒ itsecΒ -cΒ security.privileged=true

 

Π‘ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хост-ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ( / ) Π² качСствС алиаса (HostDir) Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ lxd ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ β€˜/mnt/’

lxcΒ configΒ deviceΒ addΒ itsecΒ HostDirΒ diskΒ source=/Β path=/mnt/rootΒ recursive=true

 

Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

lxc start itsec

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd.

lxcΒ execΒ itsecΒ /bin/sh

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd

id
Hostname

 

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ доступ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ lxd, ΠΈ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ статусС ΠΌΡ‹ смонтировали ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хост-ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (/) Π² ΠΏΠ°ΠΏΠΊΡƒ /mnt/ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Оказавшись Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /mnt/root ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС рСсурсы хост-ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ root.txt, созданному Ρ€Π°Π½Π΅Π΅, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ² Ρ‚Π΅ΠΌ самым ΠΏΡ€Π°Π²Π° root-доступа.

cdΒ /mnt/root/root
ls

 

Π’ этом руководстС ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ простая Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ конфигурация ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° lxd позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ ΡΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю систСму ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ root shell Π½Π° хост-машинС.

Π”Ρ€ΡƒΠ·ΡŒΡ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ этому ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒ доступнСС Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях.

НС ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈ ΠΌΠΈΠΌΠΎ ΠΆΠΌΠ°ΠΊΠ½ΠΈ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΡƒ Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½!