Zabezpieczenie komputera/Fizyczne

Uruchamianie edytuj

Zabezpieczenia możemy zacząć już od samego przycisku włącznika. Jest to co prawda bardzo ekstremalny sposób (jesli posiadamy dyski hdd i podejdziemy z nim zbyt blisko moze sie rozmagnesowac co spowoduje utrate danych i zniszczenie nosnika) ale o takich będzie mówić również ta książka. Możemy się zdecydować na uruchamianie komputera... mangesem (więcej tutaj). Podcinamy kilka kabelków, wstawiamy drucik i gotowe. Możemy też tylko podciąć (lub po prostu w jakiś sposób zablokować włącznik) - wtedy możemy uruchamiać komputer za pomocą kombinacji klawiszy (ale tylko wtedy, jeśli jest ona podłączona pod gniazdo PS/2 w przeciwnym wypadku zapomnij.).

Niskopoziomowe edytuj

 
  • BIOS
    • Zabezpieczenie BIOSa hasłem uniemożliwi odpalenie nawet zwykłego MBR.
  • MBR
    • MBR na zewnętrznym nośniku uniemożliwi uruchomienie systemu (jeśli oczywiście zapomnimy go podpiąć)
  Wady
  • BIOS
    • Reset biosu powoduje usunięcie hasła
    • Istnieją uniwersalne hasła do BIOSU w przypadku gdy się go zapomni (co jest backdoorem…)
  • MBR
    • Zewnętrzny nośnik może ulec uszkodzeniu - trzeba pilnować kopii zapasowych
Zobacz głównie: BIOS/Podstawy.

Pierwsze co zrobimy to łatwizna - ustawimy za pomocą BIOS hasło do niego samego i systemu operacyjnego. Co prawda nie jest to zbyt dobre zabezpieczenie, bo i tak nic poza za fizycznym zabezpieczeniem na wiele się nie zda, które zresztą bardzo łatwo złamać - informacje w osobnym artykule. Sam autor nie zachęca do takiej zmiany, nawet jeśli to wydłuży czas potencjalnego włamania.

Kolejny podejrzany do MBR. Możemy go zaszyfrować hasłem (np. w GRUB czy LILO) ale zalecam inne rozwiązanie. MBR możemy zapisać na jakiejś dyskietkce, pendrive czy jakimkolwiek innym nośniku jakim nie jest dysk twardy. Wtedy uruchamianie stanie się niemal przezroczyste - wystarczy mieć tylko wciśnięty nośnik i chować kiedy niepotrzebny. Jak przygotować MBR na CD-ROM lub Pendrive:

ta część tekstu pochodzi z serwisu jakilinux.org (autorem jest arekb) na którym tekstu są udostępniane na licencji CC-BY 3.0.

GRUB wspiera tryb no emulation specyfikacji El Torito. Odtąd możemy odczytać cały CD-ROM startując z GRUB-a.

Aby wystartować z CD-ROM-u GRUB używa specjalnej fazy stage2 zwanej stage2_eltorito. Potrzebujemy właściwie tylko tego pliku, aby utworzyć CD-ROM startowy. Plik ‚menu.lst’ jest tu tylko opcjonalny. Nie potrzebujemy faz ‚stage1' lub ‚stage2', ponieważ El Torito działa zupełnie inaczej od standardowego procesu startowego.

  1. Utwórz nowy katalog pod obraz uruchomieniowy i nazwij go np. ‚CD_GRUB’
  2. mkdir /CD_GRUB

  3. Utwórz katalog dla GRUB-a
  4. mkdir -p /CD_GRUB/boot/grub

  5. Skopiuj tam plik ‚stage2_eltorito’ . W Debianie jest on położony w /lib/grub/i386-pc/
  6. cp /lib/grub/i386-pc/stage2_eltorito /CD_GRUB/boot/grub

  7. Jeśli sobie życzysz utwórz plik ‚menu.lst’ w ‚CD_GRUB/boot/grub’ lub skopiuj już istniejący, jak poniżej:
  8. cp /boot/grub/menu.lst /CD_GRUB/boot/grub

    Polecenie ‚savedefault’ dla każdego wystąpienia zapisów uruchamiających poszczególne systemy operacyjne nie zadziała z płyty CD. ‚savedefault’ zapisuje na dysku twardym do pliku w /boot/grub nazwę ‚default’ dla systemu, który był uruchomiony ostatnio. Nie możemy go użyć, gdy uruchamiamy GRUB-a z płyty CD, ponieważ nie możemy zapisać zmian na płycie z GRUB-em. Stąd musimy usunąć wszystkie wystąpienia polecenia savedefault.

  9. Teraz utwórz plik obrazu ISO9660 jak poniżej
  10. mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
    -boot-load-size 4 -boot-info-table -o cd_grub.iso /CD_GRUB

    -boot-load-size 4 bity są wymagane dla zgodności z BIOSem na wielu starszych komputerach.

  11. mkisofs właśnie przygotował dysk do uruchomienia z pliku boot/grub/stage2_eltorito. Wypal utworzony obraz .iso.

dyskietka edytuj

Tworzenie dyskietki startowej z GRUB-em

Musimy zapisać na dyskietce obie fazy: stage1 i stage2. W Debianie pliki GRUBa rezydują w /lib/grub/i386-pc/

Metoda – 1

   cd /lib/grub/i386-pc/
   instalacja stage1
    if=stage1 of=/dev/fd0 bs=512 count=1
   1+0 records in
   1+0 records out
   512 bytes transferred in 1.152603 seconds (444 bytes/sec)
   instalacja stage2
   dd if=stage2 of=/dev/fd0 bs=512 seek=1
   211+1 records in
   211+1 records out
   108168 bytes transferred in 6.406743 seconds (16883 bytes/sec)
   Ostrzeżenie: Wykonanie tej procedury usunie wszystkie dane na dyskietce.
   Metoda – 2 (z użyciem polecenia grub-floppy)
   grub-floppy jest programem do tworzenia ogólnych dyskietek startowych. Takie dyskietki po starcie dostarczają interfejs linii komend GRUBa. grub-floppy może tworzyć inne ogólne dyskietki ograniczone tylko architekturą.
   grub-floppy /dev/fd0
   Uwaga: grup-floppy ma status ‚deprecated’. Przy próbie uruchomienia prawdopodobnie napotkasz komunikat: ‚This program is broken, unsupported upstream, and has been deprecated in favour
   of grub-mkrescue (grub-pc package).’ – dop.tłum.
   Metoda – 3 (dyskietka startowa z /boot/grub)
   Możemy też stworzyć dyskietkę startową GRUBa z systemem plików i plikiem menu.lst jak poniżej (z konta roota)
   mke2fs /dev/fd0 (utworzenie systemu plików ext2 na dyskietce)
   mount -t ext2 /dev/fd0 /mnt/floppy (zamontowanie dyskietki na /mnt/floppy)
   grub-install –root-directory=/mnt/floppy fd0 (instalacja GRUBa i utworzenia katalogu /boot/grub na dyskietce)
   cp /boot/grub/menu.lst /mnt/floppy/boot/grub/ (skopiowanie menu.lst)
   umount /mnt/floppy (dyskietka jest gotowa, zdemontowanie ją)

Metoda – 4 (z linii komend GRUBa, w trybie nieinteraktywnym, tworzy także /boot/grub)

Zaloguj się jako root

   mke2fs /dev/fd0
   mount -t ext2 /dev/fd0 /mnt/floppy
   mkdir /mnt/floppy/boot
   cp -R /boot/grub /mnt/floppy/boot
   /sbin/grub –batch –device-map=/dev/null < < eof
   device (fd0) /dev/fd0
   root (fd0)
   setup (fd0)
   quit
   EOF
   Krok 5 jest właściwie wykonywany w trybie wsadowym interfejsu linii komend GRUBa. Poniżej jest rezultat wyjściowy kroku 5
   debian:# /sbin/grub --batch --device-map=/dev/null < < EOF
   > device (fd0) /dev/fd0
   > root (fd0)
   > setup (fd0)
   > quit
   > EOF
   GNU GRUB version 0.97 (640K lower / 3072K upper memory)
   [ Minimal BASH-like line editing is supported. For the first word, TAB
   lists possible command completions. Anywhere else TAB lists the possible
   completions of a device/filename. ]
   grub> device (fd0) /dev/fd0
   grub> root (fd0)
   Filesystem type is ext2fs, using whole disk
   grub> setup (fd0)
   Checking if "/boot/grub/stage1" exists... yes
   Checking if "/boot/grub/stage2" exists... yes
   Checking if "/boot/grub/e2fs_stage1_5" exists... yes
   Running "embed /boot/grub/e2fs_stage1_5 (fd0)"...
   failed (this is not fatal)
   Running "embed /boot/grub/e2fs_stage1_5 (fd0)"...
   failed (this is not fatal)
   Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2
   p /boot/grub/menu.lst"... succeeded
   Done.
   grub> quit
   Możesz modyfikować/usunąć menu.lst z /mnt/floppy/boot/ lub zachować dla menu konkretnego komputera
   umount /mnt/floppy

Metoda – 5 (z linii komend GRUBa, w trybie interaktywnym, mając /boot/grub)

Zaloguj się jako root

   mke2fs /dev/fd0
   mount -t ext2 /dev/fd0 /mnt/floppy
   mkdir /mnt/floppy/boot
   cp -R /boot/grub /mnt/floppy/boot
   umount /mnt/floppy
   odpal interfejs linii komend GRUBa i wykonaj: root (fd0)

grub> root (fd0) Filesystem type is ext2fs, using whole disk

7) Zainstaluj GRUBa poprzez setup (fd0)

grub> setup (fd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/fat_stage1_5" exists... yes Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal) Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal) Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded Done.

8 ) Wyjdź z GRUBa

Możesz modyfikować/usunąć menu.lst z /mnt/floppy/boot/ lub zachować dla menu konkretnego komputera.

pendrive edytuj

Tworzenie startowego pendrive’u USB

Zaloguj się jako root

Zidentyfikuj nod urządzenia, który twój system przypisał do pendrive’u USB. Wykonaj tail -f /var/log/messages i włóż napęd do gniazda USB. Tak to wygląda u mnie:

debian:# tail -f /var/log/messages

SCSI device sda: 248321 512-byte hdwr sectors (127 MB) sda: Write Protect is off SCSI device sda: 248321 512-byte hdwr sectors (127 MB) sda: Write Protect is off sda: sda1 Attached scsi removable disk sda

A więc /dev/sda jest nodem urządzenia dla pendriv’u USB a /dev/sda1 wskazuje partycję na tym napędzie.

Teraz stwórzmy katalog i zamontujmy tam napęd USB.

mkdir /mnt/USB_drive mount -t vfat /dev/sda1 /mnt/USB_drive

System plików na moim napędzie USB to FAT i z tej przyczyny użyłem opcji -t vfat. Zmień system plików na odpowiedni dla twego napędu.

Zidentyfikujmy oznaczenie napędu, które GRUB przypisał do napędu USB. Tu jest mój:

grub> null ( Possible disks are: fd0 hd0 hd1 cd

GRUB rozpoznał mój napęd USB jako hd1.

Metoda – 1 (z /boot/grub)

   Zainstaluj GRUBa na napedzie USB poprzez wykonanie polecenia:
   grub-install –root-directory=/mnt/USB_drive hd1
   debian:# grub-install --root-directory=/mnt/USB_drive hd1
   Probing devices to guess BIOS drives. This may take a long time.
   Installation finished. No error reported.
   This is the contents of the device map
   /mnt/USB_drive//boot/grub/device.map.
   Check if this is correct or not. If any of the lines is incorrect,
   fix it and re-run the script `grub-install'.
   (fd0) /dev/fd0
   (hd0) /dev/hda
   (hd1) /dev/sda
   (Opcjonalnie) Skopiuj menu.lst aby otrzymać menu startowe komputera
   cp /boot/grub/menu.lst /mnt/USB_drive/boot/grub/
   Upewnij się, czy w napędzie USB istnieje /boot/grub
   grub> find /boot/grub/stage1
   (hd0,2)
   (hd1,0)
   Zdemontuj napęd

unmount /mnt/USB_drive

Metoda – 2 (używając interpretera poleceń powłoki GRUBa w trybie interaktywnym, mając /boot/grub)

   mkdir /mnt/USB_drive/boot
   cp /boot/grub /mnt/USB_drive/boot
   umount /mnt/USB_drive
   Odpal powłokę GRUBa i wykonaj root (hd1,0)
   grub> root (hd1,0)
   Filesystem type is fat, partition type 0x6
   Zainstaluj GRUBa poleceniem setup (hd1)
   grub> setup (hd1)
   Checking if "/boot/grub/stage1" exists... yes
   Checking if "/boot/grub/stage2" exists... yes
   Checking if "/boot/grub/fat_stage1_5" exists... yes
   Running "embed /boot/grub/fat_stage1_5 (hd1)"...
   15 sectors are embedded.
   succeeded
   Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p
   (hd1,0)/boot/grub/stage2
   /boot/grub/menu.lst"... succeeded
   Done.
   Wyjdź z GRUBa

Możesz modyfikować/usunąć menu.lst z /mnt/USB_drive/boot/ lub zachować dla menu konkretnego komputera.

Metoda – 3 (w interpeterze poleceń powłoki GRUBa)

   mkdir /mnt/USB_drive/boot
   cp /boot/grub /mnt/USB_drive/boot
   umount /mnt/USB_drive
   Poniżej mamy polecenia wsadowe dla napędu USB

/sbin/grub –batch –device-map=/dev/null < < EOF device (hd1) /dev/sda root (hd1,0) setup (hd1) quit EOF

debian:# /sbin/grub --batch --device-map=/dev/null < < EOF > device (hd1) /dev/sda > root (hd1,0) > setup (hd1) > quit > EOF

GNU GRUB version 0.95 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] grub> device (hd1) /dev/sda grub> root (hd1,0) Filesystem type is fat, partition type 0x6 grub> setup (hd1) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/fat_stage1_5" exists... yes Running "embed /boot/grub/fat_stage1_5 (hd1)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit

Możesz modyfikować/usunąć menu.lst z /mnt/USB_drive/boot/ lub zachować dla menu konkretnego komputera.