VirtualBox používám často k vytváření virtuálních strojů pro testování nových verzí Fedory, nových aplikačních programů a spousty administrativních nástrojů, jako je Ansible. Dokonce jsem použil VirtualBox k testování vytvoření hostujícího hostitele Windows.
Nikdy jsem nepoužil Windows jako svůj primární operační systém na žádném ze svých osobních počítačů nebo dokonce ve virtuálním počítači k provádění nějakého obskurního úkolu, který nelze provést s Linuxem. Jsem však dobrovolníkem pro organizaci, která používá jeden finanční program, který vyžaduje Windows. Tento program běží na počítači vedoucího kanceláře v systému Windows 10 Pro, který byl předinstalován.
Tato finanční aplikace není speciální a lepší linuxový program by ji mohl snadno nahradit, ale zjistil jsem, že mnoho účetních a pokladníků se extrémně zdráhá provádět změny, takže se mi zatím nepodařilo přesvědčit ty v naší organizaci, aby migrovali .
Tento soubor okolností spolu s nedávným bezpečnostním děsem způsobil, že bylo velmi žádoucí převést hostitele se systémem Windows na Fedoru a spustit Windows a účetní program na virtuálním počítači na tomto hostiteli.
Je důležité pochopit, že mám extrémní odpor k Windows z několika důvodů. Primární z nich, které se vztahují na tento případ, jsou, že bych nerad platil za další licenci Windows – Windows 10 Pro stojí asi 200 $ – za instalaci na nový VM. Windows 10 také vyžaduje dostatek informací při nastavování v novém systému nebo po instalaci, aby umožnil crackerům ukrást něčí identitu, pokud by byla porušena databáze Microsoftu. Při registraci softwaru by nikdo neměl uvádět své jméno, telefonní číslo a datum narození.
Začínáme
Fyzický počítač již měl nainstalované 240GB NVMe m.2 úložné zařízení v jediném dostupném m.2 slotu na základní desce. Rozhodl jsem se nainstalovat nový SATA SSD do hostitele a použít stávající SSD s Windows na něm jako úložné zařízení pro Windows VM. Kingston má na svých webových stránkách vynikající přehled o různých zařízeních SSD, tvarových faktorech a rozhraních.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Tento přístup znamenal, že nebudu muset provádět zcela novou instalaci systému Windows nebo jakéhokoli stávajícího aplikačního softwaru. Znamenalo to také, že vedoucí kanceláře, který pracuje na tomto počítači, bude používat Linux pro všechny běžné činnosti, jako je e-mail, webový přístup, vytváření dokumentů a tabulek pomocí LibreOffice. Tento přístup zvyšuje bezpečnostní profil hostitele. Jediný čas, kdy by byl použit virtuální počítač Windows, je spuštění účetního programu.
Nejprve zálohujte
Než jsem udělal cokoli jiného, vytvořil jsem záložní obraz ISO celého úložného zařízení NVMe. Vytvořil jsem oddíl na 500GB externím úložném disku USB, vytvořil jsem na něm souborový systém ext4 a poté jsem tento oddíl připojil na /mnt . Použil jsem dd příkaz k vytvoření obrázku.
Nainstaloval jsem nový 500GB SATA SSD do hostitele a nainstaloval na něj Fedora 32 Xfce spin z Live USB. Při počátečním restartu po instalaci byly v zaváděcí nabídce GRUB2 k dispozici jednotky Linux i Windows. V tomto okamžiku by hostitel mohl být duálně zaváděn mezi Linuxem a Windows.
Hledání pomoci na všech internetových místech
Nyní jsem potřeboval nějaké informace o vytvoření virtuálního počítače, který jako úložné zařízení používá fyzický pevný disk nebo SSD. V dokumentaci VirtualBoxu a internetu obecně jsem rychle objevil spoustu informací o tom, jak to udělat. Ačkoli mi dokumentace VirtualBoxu pomohla začít, není úplná a vynechává některé důležité informace. Většina dalších informací, které jsem našel na internetu, je také docela neúplná.
S kritickou pomocí jednoho z našich korespondentů Opensource.com, Joshua Holma, se mi podařilo prolomit zádrhel a zajistit, aby to fungovalo v opakovatelném postupu.
Aby to fungovalo
Tento postup je ve skutečnosti poměrně jednoduchý, i když k jeho fungování je nutný jeden tajemný hack. Operační systémy Windows a Linux už byly na svém místě, když jsem byl na tento krok připraven.
Nejprve jsem nainstaloval nejnovější verzi VirtualBoxu na hostitele Linuxu. VirtualBox lze nainstalovat ze softwarových úložišť mnoha distribucí, přímo z úložiště Oracle VirtualBox nebo stažením požadovaného souboru balíčku z webové stránky VirtualBox a místní instalací. Rozhodl jsem se stáhnout verzi AMD64, což je ve skutečnosti instalační program a ne balíček. Tuto verzi používám k obejití problému, který s tímto konkrétním projektem nesouvisí.
Postup instalace vždy vytvoří vboxusers skupina v /etc/group . Přidal jsem uživatele, kteří mají spouštět tento virtuální počítač, do vboxusers a disk skupiny v /etc/group . Je důležité přidat stejné uživatele na disk skupinu, protože VirtualBox běží jako uživatel, který jej spustil, a také vyžaduje přímý přístup k /dev/sdx speciální soubor zařízení pro práci v tomto scénáři. Přidávání uživatelů na disk group poskytuje takovou úroveň přístupu, kterou by jinak neměli.
Poté jsem vytvořil adresář pro uložení virtuálních počítačů a dal mu vlastnictví root.vboxusers a 775 oprávnění. Použil jsem /vms pro adresář, ale může to být cokoliv chcete. Ve výchozím nastavení VirtualBox vytváří nové virtuální stroje v podadresáři uživatele, který vytváří virtuální počítač. To by znemožnilo sdílení přístupu k virtuálnímu počítači mezi více uživatelů, aniž by došlo k masivní bezpečnostní chybě. Umístění adresáře virtuálního počítače do přístupného umístění umožňuje sdílení virtuálních počítačů.
Spustil jsem VirtualBox Manager jako uživatel bez oprávnění root. Poté jsem použil VirtualBox Preferences ==> General nastavte výchozí složku počítače na adresář /vms .
Vytvořil jsem VM bez virtuálního disku. Typ by měl být Windows a Verze by měl být nastaven na Windows 10 64-bit . Nastavte přiměřené množství paměti RAM pro virtuální počítač, ale to lze později změnit, pokud je virtuální počítač vypnutý. Na Pevném disku na stránce instalace jsem zvolil "Nepřidávat virtuální pevný disk" a kliknul na Vytvořit . Nový virtuální počítač se objevil v okně VirtualBox Manager. Tento postup také vytvořil /vms/Test1 adresář.
Udělal jsem to pomocí Pokročilé a provedli všechny konfigurace na jedné stránce, jak je vidět na obrázku 1. Režim s průvodcem získá stejné informace, ale vyžaduje více kliknutí, aby prošel oknem pro každou položku konfigurace. Poskytuje trochu více textu nápovědy, ale to jsem nepotřeboval.
Obrázek 1:Vytvořte nový virtuální počítač, ale nepřidávejte pevný disk.
Pak jsem potřeboval vědět, které zařízení bylo Linuxem přiřazeno k surovému disku Windows. Jako root v terminálové relaci použijte lshw příkaz ke zjištění přiřazení zařízení pro disk Windows. V tomto případě je zařízení, které představuje celé úložné zařízení, /dev/sdb .
# lshw -short -class disk,volume
H/W path Device Class Description
=========================================================
/0/100/17/0 /dev/sda disk 500GB CT500MX500SSD1
/0/100/17/0/1 volume 2047MiB Windows FAT volume
/0/100/17/0/2 /dev/sda2 volume 4GiB EXT4 volume
/0/100/17/0/3 /dev/sda3 volume 459GiB LVM Physical Volume
/0/100/17/1 /dev/cdrom disk DVD+-RW DU-8A5LH
/0/100/17/0.0.0 /dev/sdb disk 256GB TOSHIBA KSG60ZMV
/0/100/17/0.0.0/1 /dev/sdb1 volume 649MiB Windows FAT volume
/0/100/17/0.0.0/2 /dev/sdb2 volume 127MiB reserved partition
/0/100/17/0.0.0/3 /dev/sdb3 volume 236GiB Windows NTFS volume
/0/100/17/0.0.0/4 /dev/sdb4 volume 989MiB Windows NTFS volume
[root@office1 etc]#
Místo virtuálního úložného zařízení umístěného v /vms/Test1 VirtualBox potřebuje mít způsob, jak identifikovat fyzický pevný disk, ze kterého se má bootovat. Tato identifikace se provádí vytvořením *.vmdk soubor, který ukazuje na nezpracovaný fyzický disk, který bude použit jako úložné zařízení pro virtuální počítač. Jako uživatel bez oprávnění root jsem vytvořil vmdk soubor, který ukazuje na celé zařízení Windows, /dev/sdb .
$ VBoxManage internalcommands createrawvmdk -filename /vms/Test1/Test1.vmdk -rawdisk /dev/sdb
RAW host disk access VMDK file /vms/Test1/Test1.vmdk created successfully.
Potom jsem použil Soubor VirtualBox Manager ==> Virtual Media Manager dialogové okno pro přidání vmdk disku na dostupné pevné disky. Kliknul jsem na Přidat a výchozí /vms umístění bylo zobrazeno v dialogovém okně správy souborů. Vybral jsem Test1 adresář a poté Test1.vmdk soubor. Poté jsem kliknul na Otevřít a Test1.vmdk soubor byl zobrazen v seznamu dostupných pevných disků. Vybral jsem ji a kliknul na Zavřít .
Dalším krokem bylo přidání tohoto vmdk disku na úložná zařízení pro náš VM. V nabídce nastavení pro Test1 VM , vybral jsem Úložiště a kliknutím na ikonu přidejte pevný disk. Tím se otevřelo dialogové okno, které zobrazilo Test1vmdk soubor virtuálního disku v seznamu s názvem Nepřipojeno. Vybral jsem tento soubor a kliknul na Vybrat knoflík. Toto zařízení je nyní zobrazeno v seznamu úložných zařízení připojených k virtuálnímu počítači Test1 . Jediným dalším úložným zařízením na tomto virtuálním počítači je prázdná jednotka CD/DVD-ROM.
Kliknul jsem na OK k dokončení přidávání tohoto zařízení do virtuálního počítače.
Než bude nový virtuální počítač fungovat, bylo potřeba nakonfigurovat ještě jednu položku. Pomocí Nastavení správce VirtualBox dialogové okno pro Test1 VM , přešel jsem na Systém ==> Základní deska stránku a zaškrtli políčko Povolit EFI . Pokud to neuděláte, VirtualBox vygeneruje chybu, že při pokusu o zavedení tohoto virtuálního počítače nemůže najít zaváděcí médium.
Virtuální počítač se nyní spouští z nezpracovaného pevného disku Windows 10. Nemohl jsem se však přihlásit, protože jsem v tomto systému neměl běžný účet a také jsem neměl přístup k heslu k účtu správce systému Windows.
Odemknutí disku
Ne, tato část není o prolomení šifrování pevného disku. Spíše jde o obejití hesla pro jeden z mnoha účtů administrátorů Windows, které nikdo v organizaci neměl.
I když jsem mohl spustit virtuální počítač s Windows, nemohl jsem se přihlásit, protože jsem na tomto hostiteli neměl žádný účet a žádat lidi o jejich hesla je hrozné narušení bezpečnosti. Přesto jsem se potřeboval přihlásit k virtuálnímu počítači, abych mohl nainstalovat Doplňky pro hosty VirtualBox , což by zajistilo bezproblémové zachycení a uvolnění ukazatele myši, umožnilo mi změnit velikost virtuálního počítače na větší než 1024x768 a v budoucnu provádět běžnou údržbu.
Toto je perfektní případ použití schopnosti Linuxu měnit uživatelská hesla. I když pro spuštění přistupuji k účtu předchozího správce, v tomto případě již tento systém nebude podporovat a nebudu schopen rozeznat jeho heslo ani vzory, které používá k jejich generování. Jednoduše vymažu heslo pro předchozího správce systému.
Speciálně pro tento úkol existuje velmi pěkný softwarový nástroj s otevřeným zdrojovým kódem. Na hostiteli Linuxu jsem nainstaloval chntpw , což pravděpodobně znamená něco jako „Změnit heslo NT.“
# dnf -y install chntpw
Vypnul jsem VM a poté připojil /dev/sdb3 oddíl na /mnt . Zjistil jsem, že /dev/sdb3 je správný oddíl, protože je to první velký oddíl NTFS, který jsem viděl ve výstupu z lshw příkaz, který jsem provedl dříve. Ujistěte se, že nepřipojujete oddíl, když je virtuální počítač spuštěný; které by mohly způsobit značné poškození dat na úložném zařízení virtuálního počítače. Pamatujte, že správný oddíl se může na jiných hostitelích lišit.
Přejděte na /mnt/Windows/System32/config adresář. Soubor chntpw obslužný program nefunguje, pokud to není aktuální pracovní adresář (PWD). Spusťte program.
# chntpw -i SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive <SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 131072 [20000] bytes, containing 11 pages (+ 1 headerpage)
Used for data: 367/44720 blocks/bytes, unused: 14/24560 blocks/bytes.
<>========<> chntpw Main Interactive Menu <>========<>
Loaded hives: <SAM>
1 - Edit user data and passwords
2 - List groups
- - -
9 - Registry editor, now with full write support!
q - Quit (you will be asked if there is something to save)
What to do? [1] ->
Soubor chntpw používá TUI (textové uživatelské rozhraní), které poskytuje sadu možností nabídky. Když je vybrána jedna z primárních položek nabídky, obvykle se zobrazí sekundární nabídka. Podle jasných názvů nabídek jsem nejprve zvolil položku nabídky 1 .
What to do? [1] -> 1
===== chntpw Edit User Info & Passwords ====
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator | ADMIN | dis/lock |
| 03ec | john | ADMIN | dis/lock |
| 01f7 | DefaultAccount | | dis/lock |
| 01f5 | Guest | | dis/lock |
| 01f8 | WDAGUtilityAccount | | dis/lock |
Please enter user number (RID) or 0 to exit: [3e9]
Dále jsem vybral náš účet správce, john , zadáním RID na výzvu. Zobrazí informace o uživateli a nabízí další položky nabídky pro správu účtu.
Please enter user number (RID) or 0 to exit: [3e9] 03eb
================= USER EDIT ====================
RID : 1003 [03eb]
Username: john
fullname:
comment :
homedir :
00000221 = Users (which has 4 members)
00000220 = Administrators (which has 5 members)
Account bits: 0x0214 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[X] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |
Failed login count: 0, while max tries is: 0
Total login count: 47
- - - - User Edit Menu:
1 - Clear (blank) user password
2 - Unlock and enable user account [probably locked now]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] > 2
V tomto okamžiku jsem zvolil položku nabídky 2 , „Odemknout a povolit uživatelský účet“, který odstraní heslo a umožní mi přihlásit se bez hesla. Mimochodem – jedná se o automatické přihlášení. Poté jsem program ukončil. Nezapomeňte odpojit /mnt než budete pokračovat.
Já vím, já vím, ale proč ne! Zabezpečení na tomto disku a hostiteli jsem již obešel, takže na tom nezáleží. V tuto chvíli jsem se přihlásil ke starému administrativnímu účtu a vytvořil si nový účet s bezpečným heslem. Poté jsem se přihlásil jako já a smazal jsem starý účet správce, aby ho nikdo jiný nemohl používat.
Na internetu jsou také pokyny pro použití účtu správce systému Windows (01f4 v seznamu výše). Mohl jsem smazat nebo změnit heslo k tomuto účtu, pokud by neexistoval účet správce organizace. Všimněte si také, že tento postup lze provést z živého USB běžícího na cílovém hostiteli.
Reaktivace systému Windows
Takže jsem teď měl Windows SSD spuštěný jako VM na mém hostiteli Fedora. Při frustrujícím obratu událostí se však po několika hodinách v systému Windows zobrazila varovná zpráva oznamující, že musím "Aktivovat Windows."
Po sledování mnoha dalších slepých webových stránek jsem se konečně vzdal pokusu o reaktivaci pomocí existujícího kódu, protože se zdálo, že byl nějak zničen. Nakonec při pokusu o sledování jedné z online virtuálních relací chatu podpory virtuální aplikace „Získat pomoc“ uvedla, že moje instance Windows 10 Pro již byla aktivována. Jak se to může stát? Stále to chtělo, abych to aktivoval, ale když jsem to zkusil, řeklo to, že už je aktivován.
Nebo ne
Když jsem během tří dnů strávil několik hodin výzkumem a experimentováním, rozhodl jsem se vrátit k bootování původního SSD do Windows a vrátit se k tomu později. Ale pak Windows – i když byl spuštěn z původního úložného zařízení – požadoval reaktivaci.
Hledání na webu podpory společnosti Microsoft nebylo užitečné. Poté, co jsem se musel obtěžovat se stejnou automatickou podporou jako předtím, zavolal jsem na uvedené telefonní číslo, jen abych mi sdělil automatický systém odpovědí, že veškerá podpora pro Windows 10 Pro je poskytována pouze přes internet. Touto dobou jsem měl téměř jednodenní zpoždění se spuštěním a instalací počítače zpět v kanceláři.
Zpět do budoucnosti
Nakonec jsem to vysával, koupil kopii Windows 10 Home – asi za 120 $ – a vytvořil VM s virtuálním úložným zařízením, na které jsem ho mohl nainstalovat.
Zkopíroval jsem velké množství souborů dokumentů a tabulek do domovského adresáře vedoucího kanceláře. Přeinstaloval jsem jeden program pro Windows, který potřebujeme, a ověřil jsem u vedoucího kanceláře, že funguje a všechna data tam byla.
Poslední myšlenky
Takže můj cíl byl splněn, doslova o den později a asi 120 USD, ale za použití standardnějšího přístupu. Stále provádím několik úprav oprávnění a obnovuji adresář Thunderbirdu; Mám nějaké zálohy CSV, ze kterých mohu pracovat, ale *.mab soubory obsahují velmi málo informací na jednotce Windows. Dokonce jsem použil Linux find příkaz k vyhledání všech na původním úložném zařízení.
Prolezl jsem řadou králičích nor a pokaždé jsem se musel vyprostit a začít znovu. Narazil jsem na problémy, které s tímto projektem přímo nesouvisely, ale ovlivnily mou práci na něm. Tyto problémy zahrnovaly zajímavé věci, jako je připojení oddílu Windows na /mnt na mém Linuxovém boxu a dostanu zprávu, že oddíl byl nesprávně uzavřen systémem Windows (ano – na mém hostiteli Linuxu) a že nekonzistenci vyřešil. Ani Windows to nedokázal po několika restartech prostřednictvím svého takzvaného „recovery“ režimu.
Možná jste si všimli nějakých vodítek ve výstupních datech z chntpw užitečnost. Z bezpečnostních důvodů jsem vyškrtl některé další uživatelské účty, které se zobrazovaly na mém hostiteli, ale z těchto informací jsem viděl, že všichni uživatelé byli správci. Netřeba dodávat, že jsem to změnil. Stále mě překvapují špatné administrativní postupy, se kterými se setkávám, ale myslím, že bych neměl být.
Nakonec jsem byl nucen zakoupit licenci, ale takovou, která byla alespoň o něco levnější než originál. Jedna věc, kterou vím, je, že tato část Linuxu fungovala perfektně, jakmile jsem našel všechny potřebné informace. Problém se týkal aktivace Windows. Někteří z vás mohli být úspěšní při opětovné aktivaci systému Windows. Pokud ano, přesto by mě zajímalo, jak jste to udělali, tak prosím přidejte své zkušenosti do komentářů.
To je další důvod, proč nemám rád Windows a používám Linux pouze na svých vlastních systémech. Je to také jeden z důvodů, proč převádím všechny počítače organizace na Linux. Chce to jen čas a přesvědčit. Zůstal nám pouze tento jeden účetní program a musím spolupracovat s pokladníkem, abychom našli ten, který jí vyhovuje. Chápu to – mám rád své vlastní nástroje a potřebuji, aby fungovaly způsobem, který je pro mě nejlepší.