This shows you the differences between two versions of the page.
uso:cursuri:curs-12 [2017/12/09 13:58] razvan.deaconescu |
uso:cursuri:curs-12 [2023/01/09 00:11] (current) sergiu.weisz |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Curs 12 - Considerente hardware. Mașini virtuale ======= | + | ====== Curs 12 - Administrarea spatiului de stocare ======= |
- | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-12/curs-12-handout.pdf | Slide-uri curs]] | + | * [[https://docs.google.com/presentation/d/1RXPvEXsuRNRrdo3VsfG_EtUHS9en4ncd/edit?usp=sharing&ouid=108131427433094834232&rtpof=true&sd=true| Slide-uri curs]] |
- | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-12/curs-12-handout-4on1-notes.pdf | Handout 4on1 and notes space]] | + | * **Cuvinte cheie**: HDD, SSD, Partiționare, Formatare, MBR, GPT, RAID, Back-up, LVM, mount, umount |
- | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-12/curs-12-handout-8on1.pdf | Handout 8on1]] | + | * **Suport de curs** |
- | * **Cuvinte cheie**: hardware, placă de bază, magistrală (//bus//), procesor, memorie (RAM), hard disk, \cmd{dd}, system on a chip, mașină virtuală, //host//, //guest//, //hypervisor//, VMware, VirtualBox, ''.vmdk'', ''.vmx'', ''.vdi'', ''.vbox'', ''vboxmanage'', NAT, //host-only//, //bridged//, Open Virtualization Format | + | * [[https://github.com/systems-cs-pub-ro/carte-uso/releases| Utilizarea sistemelor de operare]] |
+ | * Capitolul 10 - Administrarea spațiului de stocare | ||
+ | |||
+ | <HTML> | ||
+ | <center> | ||
+ | <iframe src="https://docs.google.com/presentation/d/e/2PACX-1vTTVzrqv76petP3yVxZ76OvlBZae1pPfMxV3IhLVta7DKdtACTsaZc11DM4ofRRuQ/embed?start=false&loop=false&delayms=3000" frameborder="0" width="480" height="389" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe> | ||
+ | </center> | ||
+ | </HTML> | ||
+ | |||
+ | /* | ||
+ | * [[https://drive.google.com/open?id=1aN0VW-LvefVPyJKyI_mFjFTlKEjbu8oM|Handouts 3on1 and notes space]] | ||
+ | * [[https://drive.google.com/open?id=1ilzrwOlni4nnUUgO6g_X_fB6Ktg0sqZD|Handouts 6on1]] | ||
+ | * **Cuvinte cheie**: | ||
+ | |||
+ | */ | ||
+ | |||
+ | /* | ||
+ | * **Suport de curs** | ||
+ | * [[http://elf.cs.pub.ro/uso/res/carte/uso_cap-13-auto.pdf|Capitolul 13: Automatizarea sarcinilor]] | ||
+ | */ | ||
+ | |||
+ | /* | ||
+ | |||
+ | ====== Curs 11 - Elemente de securitate ======= | ||
+ | |||
+ | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-11/curs-11-handout.pdf | Slide-uri curs]] | ||
+ | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-11/curs-11-handout-4on1-notes.pdf | Handout 4on1 and notes space]] | ||
+ | * [[http://elf.cs.pub.ro/uso/res/cursuri/curs-11/curs-11-handout-8on1.pdf | Handout 8on1]] | ||
+ | * **Cuvinte cheie**: securitate, privilegii, principii de securitate, agenți, obiecte, ''umask'', autentificare, autorizare, controlul accesului, ''root'', ''sudo'', parole, //password cracking//, //passphrase//, ''/etc/passwd'', ''/etc/shadow'', criptografie, criptare, decriptare, //plain text//, //ciphertext//, chei simetrice, chei asimetrice, semnătură digitală, semnare, verificare | ||
* **Suport de curs** | * **Suport de curs** | ||
* [[http://books.google.com/books?id=_JFGzyRxQGcC | Introducere în sisteme de operare]] | * [[http://books.google.com/books?id=_JFGzyRxQGcC | Introducere în sisteme de operare]] | ||
- | * [[http://books.google.com/books?id=_JFGzyRxQGcC&pg=PA185 | Capitolul 7 - Analiza hardware a sistemului]] | + | * [[http://books.google.com/books?id=_JFGzyRxQGcC&pg=PA279 | Capitolul 10 - Elemente de securitate]] |
- | * [[http://www.amazon.com/Virtual-Machines-Versatile-Platforms-Architecture/dp/1558609105 | Virtual Machines -- Versatile Platforms for Systems and Processes]] | + | |
- | * Capitolul 1 -- Introduction to Virtual Machines | + | |
- | * Capitolul 8 -- System Virtual Machines | + | |
- | * **Alte resurse** | + | |
- | * http://www.binarytides.com/linux-commands-hardware-info/ | + | |
- | * http://www.binarytides.com/linux-command-check-disk-partitions/ | + | |
- | * http://www.cyberciti.biz/faq/linux-command-to-find-the-system-configuration-and-hardware-information/ | + | |
- | * https://www.virtualbox.org/manual/ch08.html | + | |
<HTML> | <HTML> | ||
<center> | <center> | ||
- | <iframe src="https://docs.google.com/viewer?url=https://elf.cs.pub.ro/uso/res/cursuri/curs-12/curs-12-handout.pdf&embedded=true" width="600" height="480" style="border: none;"> | + | <iframe src="https://docs.google.com/viewer?url=http://elf.cs.pub.ro/uso/res/cursuri/curs-11/curs-11-handout.pdf&embedded=true" width="600" height="480" style="border: none;"> |
</iframe> | </iframe> | ||
</center> | </center> | ||
Line 58: | Line 78: | ||
</note> | </note> | ||
- | ==== Afișarea de informații despre placa de bază ==== | + | ==== Folosire umask pentru configurarea permisiunilor de creare ==== |
- | Placa de bază este suportul pentru alte componente hardware. Placa de bază dispune de socluri (''socket'', ''slot'') unde pot fi adăugate alte componente hardware (precum procesor sau module de memorie) sau controllere care fac legătura cu alte componente (precum controller SCSI pentru hard disk). | + | Unul dintre cele mai importante principii în securitate este principiul celui mai mic privilegiu (//least privilege//). Pentru aceasta, inclusiv în sistemul de fișiere (fișiere, directoare), se recomandă permisiuni (drepturi de acces minime). Acestea pot fi schimbate folosind comanda ''chmod''. Dorim, însă, să putem configura permisiunile implicite la crearea intrărilor în sistemul de fișiere. Pentru aceasta folosim comanda ''umask''. |
- | Comenzi prin care putem afișa informații despre componentele hardware conectate la magistralele (''bus'') plăcii de bază sunt ''lspci'' și ''lsusb''. Rularea acestor comenzi în mașina virtuală duce la afișarea componentelor hardware **virtuale** conectate la placa de bază:<code> | + | La o rulare simplă, comanda ''umask'' ne afișează valoarea sa:<code> |
- | student@uso-demo:~$ lspci | + | student@uso-demo:~$ umask |
- | 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) | + | 0022 |
- | 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] | + | |
- | 00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) | + | |
- | 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter | + | |
- | 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) | + | |
- | 00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service | + | |
- | 00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01) | + | |
- | 00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB | + | |
- | 00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) | + | |
- | 00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) | + | |
- | 00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02) | + | |
- | + | ||
- | student@uso-demo:~$ lsusb | + | |
- | Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet | + | |
- | Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub | + | |
</code> | </code> | ||
+ | Comanda ''umask'' indică permisiunile care vor fi **absente** în momentul creării unor intrări. Regulile de stabilire a permisiunilor de creare sunt: | ||
+ | * pentru fișiere: 666 & ~umask (adică 666 **ȘI logic** cu masca negată) | ||
+ | * pentru directoare: 777 & ~umask (adică 777 **ȘI logic** cu masca negată) | ||
- | În output-ul comenzii putem vedea informații despre hardware-ul expus de mașina virtuală, în special controllerele care se regăsesc pe placa de rețea. Observăm controllere pentru: | + | Pentru ''umask = 0022'', ''~umask = 7755''. Rezultă permisiunile de creare: |
- | * placa video (''VGA'') | + | * pentru fișiere: ''666 & 7755 = 0644'' |
- | * plăcile de rețea (''Ethernet'') de 1 Gb (gigabit): sunt două plăci de rețea, expuse prin interfețele de rețea ''eth0'' și ''eth1'' | + | * pentru directoare: ''777 & 7755 = 0755'' |
- | * SATA (controller pentru hard disk) | + | |
- | Pentru a afișa informații extinse hardware despre componentele sistemului, cel mai bine este să folosim comanda ''lshw''. Pentru început, pe mașina virtuală, trebuie să instalăm pachetul ''lshw'':<code> | + | Putem verifica acest lucru creând un fișier și un director:<code> |
- | student@uso-demo:~$ sudo apt-get install lshw | + | student@uso-demo:~$ touch test-file |
+ | student@uso-demo:~$ mkdir test-dir | ||
+ | student@uso-demo:~$ ls -l | ||
+ | total 4 | ||
+ | drwxr-xr-x 2 student student 4096 Jan 5 11:31 test-dir | ||
+ | -rw-r--r-- 1 student student 0 Jan 5 11:31 test-file | ||
</code> | </code> | ||
+ | Observăm că fișierul (''test-file'') a fost creat cu permisiunile ''%%rw-r--r--%%'' (adică ''644'') iar directorul (''test-dir'') a fost creat cu permisiunile ''%%rwxr-xr-x%%'' (adică ''755''). Adică valorile așteptate. | ||
- | Printr-o simplă rulare a comenzii ''lshw'' vom afișa informații despre întreg hardware-ul sistemului<code> | + | În ideea de //least privilege//, este uzual să oferim permisiuni doar utilizatorului (''user'') și nici o permisiune pentru ''group'' și ''others''. Pentru aceasta stabilim valoarea ''umask'' la ''077'', folosind comanda<code> |
- | student@uso-demo:~$ sudo lshw | + | student@uso-demo:~$ umask 077 |
- | uso-demo | + | student@uso-demo:~$ umask |
- | description: Computer | + | 0077 |
- | width: 32 bits | + | |
- | capabilities: smbios-2.5 | + | |
- | *-core | + | |
- | [...] | + | |
</code> | </code> | ||
+ | Observăm din a doua comandă că acum valoarea ''umask'' este alta. | ||
- | Pentru a afișa informații despre hardware în format tabelar, mai ușor de urmărit, folosim opțiunea ''-short'' la comanda ''lshw''<code> | + | Creăm un nou fișier și un nou director și verificăm aplicarea noii valori a ''umask'' pentru stabilirea permisiunilor de creare:<code> |
- | student@uso-demo:~$ sudo lshw -short | + | student@uso-demo:~$ touch test-file-2 |
- | H/W path Device Class Description | + | student@uso-demo:~$ mkdir test-dir-2 |
- | =================================================== | + | student@uso-demo:~$ ls -l |
- | system Computer | + | total 8 |
- | /0 bus Motherboard | + | drwxr-xr-x 2 student student 4096 Jan 5 11:31 test-dir |
- | /0/0 memory 500MiB System memory | + | drwx------ 2 student student 4096 Jan 5 11:36 test-dir-2 |
- | /0/1 processor Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz | + | -rw-r--r-- 1 student student 0 Jan 5 11:31 test-file |
- | /0/100 bridge 440FX - 82441FX PMC [Natoma] | + | -rw------- 1 student student 0 Jan 5 11:36 test-file-2 |
- | /0/100/1 bridge 82371SB PIIX3 ISA [Natoma/Triton II] | + | |
- | /0/100/1.1 storage 82371AB/EB/MB PIIX4 IDE | + | |
- | /0/100/2 display VirtualBox Graphics Adapter | + | |
- | /0/100/3 eth0 network 82540EM Gigabit Ethernet Controller | + | |
- | /0/100/4 generic VirtualBox Guest Service | + | |
- | /0/100/5 multimedia 82801AA AC'97 Audio Controller | + | |
- | /0/100/6 bus KeyLargo/Intrepid USB | + | |
- | /0/100/6/1 usb1 bus OHCI PCI host controller | + | |
- | /0/100/6/1/1 input USB Tablet | + | |
- | /0/100/7 bridge 82371AB/EB/MB PIIX4 ACPI | + | |
- | /0/100/8 eth1 network 82540EM Gigabit Ethernet Controller | + | |
- | /0/100/d storage 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] | + | |
- | /0/2 scsi0 storage | + | |
- | /0/2/0.0.0 /dev/sda disk 8589MB VBOX HARDDISK | + | |
- | /0/2/0.0.0/1 /dev/sda1 volume 7806MiB EXT4 volume | + | |
- | /0/2/0.0.0/2 /dev/sda2 volume 383MiB Extended partition | + | |
- | /0/2/0.0.0/2/5 /dev/sda5 volume 383MiB Linux swap / Solaris partition | + | |
- | /0/3 scsi2 storage | + | |
- | /0/3/0.0.0 /dev/cdrom disk DVD reader | + | |
</code> | </code> | ||
- | Ni se afișează informații despre componentele hardware ale sistemului: placă de bază, controllere, memorie RAM, hard disk. Putem afișa informații detaliate și despre fiecare componentă în parte, așa cum vom vedea mai jos. | + | Observăm că fișierul (''test-file-2'') a fost creat cu permisiunile ''%%rw-------%%'' (adică ''600'') iar directorul (''test-dir'') a fost creat cu permisiunile ''%%rwx------%%'' (adică ''700''). Adică valorile așteptate, rezultate în urma calculului: |
+ | * pentru fișier: ''%%666 & ~umask = 666 & ~0077 = 666 & 7700 = 600 = rw-------%%'' | ||
+ | * pentru director: ''%%777 & ~umask =777 & ~0077 = 777 & 7700 = 700 = rwx------%%'' | ||
+ | |||
+ | Valoarea ''umask'' este configurată funcție de nevoile utilizatorului ținând cont și de principiul celui mai mic privilegiu. | ||
<note> | <note> | ||
- | Alte comenzi care afișează informații despre componentele hardware ale sistemului sunt comenzile ''dmidecode'', ''inxi'' și ''hwinfo''. Dacă nu sunt instalate le puteți instala folosind comenzi precum cele de mai jos:<code> | + | Valoarea ''umask'' este pe 4 cifre în octal. Prima cifră este aferentă biților speciali (''setuid'', ''setgid'', ''sticky'') folosiți în permisiuni. Nu insistăm pe acest lucru. Puteți găsi informații în secțiunile aferente din [[http://man7.org/linux/man-pages/man1/chmod.1.html|pagina de manual a chmod]]. |
- | sudo apt-get install dmidecode | + | |
- | sudo apt-get install inxi | + | |
- | sudo apt-get install hwinfo | + | |
- | </code> | + | |
</note> | </note> | ||
<note> | <note> | ||
- | Detalii despre comnezile de afișare de informații despre hard discuri găsiți și la link-ul indicat ca resursă utilă în partea de sus a paginii: http://www.binarytides.com/linux-commands-hardware-info/ | + | Pentru configurarea persistentă a valorii ''umask'' se recomandă plasarea comenzii de configurare într-un fișier de configurare a sesiunii de shell (precum ''~/.bashrc''). |
</note> | </note> | ||
- | ==== Afișarea de informații despre procesor ==== | + | ==== Folosire John the Ripper pentru password cracking ==== |
- | Pentru a afișa informații despre procesorul sistemului putem folosi comanda ''lscpu''<code> | + | Din perspectiva atacatorului (sau a unui [[http://www.computerhope.com/jargon/e/ethihack.htm|hacker etic]]) este util să putem "sparge" parolele dintr-un sistem. Dacă ajungem să avem acces la baza de date cu parole a unui sistem putem încerca spargerea acestora. Un utilitar pentru acest lucru este [[http://www.openwall.com/john/|John the Ripper]]. |
- | student@uso-demo:~$ lscpu | + | |
- | Architecture: i686 | + | Pentru a folosi ''john'' întâi îl vom instala:<code> |
- | CPU op-mode(s): 32-bit | + | student@uso-demo:~$ sudo apt-get install john |
- | Byte Order: Little Endian | + | Reading package lists... Done |
- | CPU(s): 1 | + | Building dependency tree |
- | On-line CPU(s) list: 0 | + | [...] |
- | Thread(s) per core: 1 | + | Setting up john-data (1.8.0-2) ... |
- | Core(s) per socket: 1 | + | Setting up john (1.8.0-2) ... |
- | Socket(s): 1 | + | |
- | Vendor ID: GenuineIntel | + | |
- | CPU family: 6 | + | |
- | Model: 42 | + | |
- | Model name: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz | + | |
- | Stepping: 7 | + | |
- | CPU MHz: 2491.852 | + | |
- | BogoMIPS: 4983.70 | + | |
- | Hypervisor vendor: KVM | + | |
- | Virtualization type: full | + | |
- | L1d cache: 32K | + | |
- | L1i cache: 32K | + | |
- | L2 cache: 256K | + | |
- | L3 cache: 3072K | + | |
</code> | </code> | ||
- | Comanda ne afișează tipul procesorului expus de mașina virtuală. Acesta este un procesor single core, și este mapat direct peste procesorul fizic (adică al sistemului fizic peste care rulează mașina virtuală). De aceea, output-ul acestei comenzi va diferi depinzând de sistemul fizic pe care rulează mașina virtuală. | + | John vine în mod implicit cu un dicționar de parole comune de folosit în fișierul ''/usr/share/john/password.lst''<code> |
+ | student@uso-demo:~$ head -20 /usr/share/john/password.lst | ||
+ | #!comment: This list has been compiled by Solar Designer of Openwall Project | ||
+ | #!comment: in 1996 through 2011. It is assumed to be in the public domain. | ||
+ | #!comment: | ||
+ | #!comment: This list is based on passwords most commonly seen on a set of Unix | ||
+ | #!comment: systems in mid-1990's, sorted for decreasing number of occurrences | ||
+ | #!comment: (that is, more common passwords are listed first). It has been | ||
+ | #!comment: revised to also include common website passwords from public lists | ||
+ | #!comment: of "top N passwords" from major community website compromises that | ||
+ | #!comment: occurred in 2006 through 2010. | ||
+ | #!comment: | ||
+ | #!comment: Last update: 2011/11/20 (3546 entries) | ||
+ | #!comment: | ||
+ | #!comment: For more wordlists, see http://www.openwall.com/wordlists/ | ||
+ | 123456 | ||
+ | 12345 | ||
+ | password | ||
+ | password1 | ||
+ | 123456789 | ||
+ | 12345678 | ||
+ | 1234567890 | ||
+ | student@uso-demo:~$ wc -l /usr/share/john/password.lst | ||
+ | 3559 /usr/share/john/password.lst | ||
+ | </code> | ||
+ | Există fișiere de parole mai bune care, în general, costă bani. | ||
- | În output-ul comenzii ne sunt afișate informații despre procesor, precum numărul de core-uri, numărul modelului, frecvența, dimensiunea memoriei cache. | + | Aceste parole sunt parole frecvente folosite de utilizatori și care pot fi ușor sparte cu John. |
- | Aceste informații pot fi afișate și cu ajutorul comenzii ''lshw''<code> | + | Pentru verificare, să creăm doi utilizatori (''ana'' și ''bogdan'') cu parole relativ comune ''test123'' și ''qazwsx'':<code> |
- | student@uso-demo:~$ sudo lshw -class cpu | + | student@uso-demo:~$ sudo useradd -m -d /home/ana -s /bin/bash ana |
- | *-cpu | + | student@uso-demo:~$ sudo useradd -m -d /home/bogdan -s /bin/bash bogdan |
- | product: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz | + | student@uso-demo:~$ less /usr/share/john/password.lst |
- | vendor: Intel Corp. | + | student@uso-demo:~$ echo "ana:test123" | sudo chpasswd |
- | physical id: 1 | + | student@uso-demo:~$ echo "bogdan:qazwsx" | sudo chpasswd |
- | bus info: cpu@0 | + | student@uso-demo:~$ id ana |
- | version: 6.10.7 | + | uid=1001(ana) gid=1001(ana) groups=1001(ana) |
- | serial: 0002-06A7-0000-0000-0000-0000 | + | student@uso-demo:~$ id bogdan |
- | size: 2500MHz | + | uid=1002(bogdan) gid=1002(bogdan) groups=1002(bogdan) |
- | width: 32 bits | + | |
- | capabilities: fpu fpu_exception wp vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 rdtscp constant_tsc nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm | + | |
</code> | </code> | ||
- | Informațiile despre procesor sunt accesibile, în mod tradițional, în sistemul de fișiere ''/proc'', prin intermediul fișierului ''/proc/cpuinfo'':<code> | + | Mai sus am creat cei doi utilizatori cu parolele dorite. |
- | student@uso-demo:~$ cat /proc/cpuinfo | + | |
- | processor : 0 | + | |
- | vendor_id : GenuineIntel | + | |
- | cpu family : 6 | + | |
- | model : 42 | + | |
- | model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz | + | |
- | [...] | + | |
- | </code> | + | |
<note> | <note> | ||
- | Folosirea oricăror dintre cele trei comenzi de mai sus este aproximativ echivalentă. O folosim pe cea cu care ne simțim cel mai confortabil. | + | Comanda ''chpasswd'' este o comandă care schimbă/actualizează parola unuia sau mai mulți utilizatori. Parola primește la intarea standard linii în forma ''<username>:<password>'' și actualizează parola utilizatorului ''<username>'' cu valoarea ''<password>''. |
</note> | </note> | ||
- | Dacă ne interesează să aflăm pe scurt, numărul de core-uri/procesoare din sistem, respectiv arhitectura hardware a sistemului, folosim comenzile<code> | + | Parolele utilizatorilor sunt stocate în forma criptată (//hash//) în fișierul ''/etc/shadow'', accesibil doar cu permisiuni privilegiate<code> |
- | student@uso-demo:~$ nproc | + | student@uso-demo:~$ tail -2 /etc/shadow |
- | 1 | + | tail: cannot open ‘/etc/shadow’ for reading: Permission denied |
+ | student@uso-demo:~$ ls -l /etc/shadow | ||
+ | -rw-r----- 1 root shadow 1276 Jan 5 11:59 /etc/shadow | ||
+ | student@uso-demo:~$ sudo tail -2 /etc/shadow | ||
+ | ana:$6$Lz4VGpO.$NhGn3XzSJ8dRd.EURfPRnPPlU3rvTG5C7xEvvh8taiPCLEFb0V2LAFG.6s.GlXWZqby326wvZm91QMDoCXCoU0:16805:0:99999:7::: | ||
+ | bogdan:$6$AJ8cjSHz$QdI1KrolofQtAk4F2bHweL7vxzGYcM3gHxfLgRiUzR7UtEugUZyWARc66zo8YMEiMmAWob5PJMlaoUyA8rfCx.:16805:0:99999:7::: | ||
+ | </code> | ||
+ | Dacă avem acces la hash-urile parolelor putem încerca spargerea lor cu John. În cazul de față vom reuși pentru că parolele sunt foarte simple:<code> | ||
+ | student@uso-demo:~$ sudo tail -2 /etc/shadow > shadow-entries | ||
+ | student@uso-demo:~$ cat shadow-entries | ||
+ | ana:$6$Lz4VGpO.$NhGn3XzSJ8dRd.EURfPRnPPlU3rvTG5C7xEvvh8taiPCLEFb0V2LAFG.6s.GlXWZqby326wvZm91QMDoCXCoU0:16805:0:99999:7::: | ||
+ | bogdan:$6$AJ8cjSHz$QdI1KrolofQtAk4F2bHweL7vxzGYcM3gHxfLgRiUzR7UtEugUZyWARc66zo8YMEiMmAWob5PJMlaoUyA8rfCx.:16805:0:99999:7::: | ||
- | student@uso-demo:~$ arch | + | student@uso-demo:~$ /usr/sbin/john -wordlist:/usr/share/john/password.lst shadow-entries |
- | i686 | + | Created directory: /home/student/.john |
+ | Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/32]) | ||
+ | Press 'q' or Ctrl-C to abort, almost any other key for status | ||
+ | test123 (ana) | ||
+ | qazwsx (bogdan) | ||
+ | 2g 0:00:00:33 100% 0.05959g/s 62.93p/s 71.51c/s 71.51C/s pretty..celtic | ||
+ | Use the "--show" option to display all of the cracked passwords reliably | ||
+ | Session completed | ||
</code> | </code> | ||
+ | Mai sus, pentru început, am extras cele două intrări din ''/etc/shadow'' și apoi am folosit John ca să încercăm spargerea lor. În mod așteptat, parolele fiind simple, John a reușit spargerea lor. | ||
+ | |||
+ | În general, un atacator va încerca să obțină accesul la baza de date cu parole. Chiar dacă acestea sunt criptate, atacatorul va încerca să le spargă. Doar parolele puternice (cu multe caractere dintr-un set mai mare) pot supraviețui suficient de mult timp unui atacator. Chiar și așa, se recomandă actualizarea parolelor după o perioadă de 6 luni sau 1 an. | ||
<note> | <note> | ||
- | La fel cum am precizat mai sus, informații depsre procesor putem afla și folosind comenzile ''dmidecode'', ''inxi'' și ''hwinfo''. | + | John are diverse opțiuni care permit scheme de alterare a parolelor din wordlist-uri. Aceste scheme prelungesc posibilitățile de parole încercate; de exemplu înlocuirea ''a'' cu ''@'' sau ''e'' cu ''3''. Cu un word list bun, multe parole pot fi sparte relativ rapid. |
</note> | </note> | ||
+ | ==== Criptare/decriptare folosind chei simetrice ==== | ||
- | Dacă dorim să vedem încărcarea sistemului și utilizarea procesorului, putem folosi comanda ''top'' sau ''htop''. Aceste comenzi au avantajul că ne afișează și procesele sistemului și putem identifica procesele care consumă procesor și care afectează performanța sistemului (așa numitele //CPU hogs//). | + | Pentru securizarea informației transmise sau stocate este recomandat ca aceasta să fie criptată. În Internet, foarte multe site-uri folosesc acum ''HTTPS'' (HTTP securizat). Pentru date locale se pot folosi utilitare de criptare. |
- | Pentru a afișa sumar informații despre utilizarea procesorului putem folosi comanda ''mpstat'':<code> | + | Un utilitar folosit pentru criptare (și alte operații criptografice) este ''openssl''. Cu ''openssl'' putem cripta și folosind chei simetrice și chei asimetrice. |
- | student@uso-demo:~$ mpstat | + | |
- | Linux 3.16.0-4-586 (uso-demo) 12/05/2015 _i686_ (1 CPU) | + | |
- | 06:02:14 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle | + | Pentru testare, să creăm un fișier //plain text// (ușor de citit):<code> |
- | 06:02:14 PM all 0.25 0.00 0.13 0.70 0.00 0.02 0.00 0.00 0.00 98.91 | + | student@uso-demo:~$ echo "This is my life's biggest secret: I have no life" > plain.txt |
+ | student@uso-demo:~$ cat plain.txt | ||
+ | This is my life's biggest secret: I have no life | ||
</code> | </code> | ||
- | În output-ul de mai sus, mare parte din procesor este liberă (''idle''): ''98.91%'' din timpul de procesor este marcat ''idle''. | ||
- | ==== Afișarea de informații despre memorie ==== | ||
- | Pentru a afla informații despre memoria RAM a sistemului putem folosi comanda ''lshw'':<code> | + | Pentru a cripta accest fișier, folosim algoritmul ''AES'' (//Advanced Encryption Standard//), un standard de facto de criptare, cu ajutorul comenzii<code> |
- | student@uso-demo:~$ sudo lshw -class memory | + | student@uso-demo:~$ openssl enc -e -aes-256-cbc -in plain.txt -out encrypted.dat |
- | *-memory | + | enter aes-256-cbc encryption password: |
- | description: System memory | + | Verifying - enter aes-256-cbc encryption password: |
- | physical id: 0 | + | student@uso-demo:~$ ls -l encrypted.dat |
- | size: 500Mi | + | -rw------- 1 student student 80 Jan 5 12:17 encrypted.dat |
+ | student@uso-demo:~$ xxd encrypted.dat | ||
+ | 0000000: 5361 6c74 6564 5f5f 6b32 c1b2 6580 bcfe Salted__k2..e... | ||
+ | 0000010: f988 bd4d 4432 9aa3 8925 0097 4262 1732 ...MD2...%..Bb.2 | ||
+ | 0000020: 119a c5c8 f5de bca0 3a9e 4d96 57c7 1e1f ........:.M.W... | ||
+ | 0000030: 3e22 e8ec eeec 3905 4e93 3ee8 fb5e c04a >"....9.N.>..^.J | ||
+ | 0000040: e443 955f c693 7171 fa10 f5ac ded1 f947 .C._..qq.......G | ||
</code> | </code> | ||
+ | În prima comandă am realizat criptarea fișierului ''plain.txt'' în fișierul ''encrypted.dat''. Utilitarul ne-a cerut cheia de criptare și apoi a realizat criptarea în fișierul ''encrypted.dat''. Fișierul este un fișier binar; putem urmări conținutul său folosind comanda ''xxd''. | ||
- | Din păcate comanda ne oferă informații minimale despre memoria RAM. Dacă ne interesează viteza de acces, numărul de module și alte informații, putem folosi comanda ''dmidecode''. Din păcate, pe mașina virtuală nu afișează informații extinse, dar putem afla informații mai multe rulând comanda pe un sistem Linux instalat nativ:<code> | + | De obicei vom șterge fișierul ''plain.txt'' și apoi vom decripta, la nevoie, fișierul ''encrypted.dat''. Facem acest lucru folosind comenzile de mai jos<code> |
- | razvan@einherjar:~$ sudo dmidecode --type memory | + | student@uso-demo:~$ rm plain.txt |
- | # dmidecode 3.0 | + | student@uso-demo:~$ openssl enc -d -aes-256-cbc -in encrypted.dat -out plain.txt |
- | Getting SMBIOS data from sysfs. | + | enter aes-256-cbc decryption password: |
- | SMBIOS 2.6 present. | + | student@uso-demo:~$ cat plain.txt |
- | + | This is my life's biggest secret: I have no life | |
- | Handle 0x0005, DMI type 16, 15 bytes | + | |
- | Physical Memory Array | + | |
- | Location: System Board Or Motherboard | + | |
- | Use: System Memory | + | |
- | Error Correction Type: None | + | |
- | Maximum Capacity: 8 GB | + | |
- | Error Information Handle: Not Provided | + | |
- | Number Of Devices: 2 | + | |
- | + | ||
- | Handle 0x0006, DMI type 17, 28 bytes | + | |
- | Memory Device | + | |
- | Array Handle: 0x0005 | + | |
- | Error Information Handle: Not Provided | + | |
- | Total Width: 64 bits | + | |
- | Data Width: 64 bits | + | |
- | Size: 4096 MB | + | |
- | Form Factor: SODIMM | + | |
- | Set: None | + | |
- | Locator: ChannelA-DIMM0 | + | |
- | Bank Locator: BANK 0 | + | |
- | Type: DDR3 | + | |
- | Type Detail: Synchronous | + | |
- | Speed: 1333 MHz | + | |
- | Manufacturer: Samsung | + | |
- | Serial Number: 66313530 | + | |
- | Asset Tag: Unknown | + | |
- | Part Number: M471B5273CH0-CH9 | + | |
- | Rank: Unknown | + | |
- | [...] | + | |
</code> | </code> | ||
- | În output-ul comenzii ''dmidecode'' putem afla numărul de sloturi (''bank''), fabricantul, viteza, tipul. | + | Observăm că, după ștergerea fișierului //plain text// inițial, și după operația de decriptare căreia i-am transmis cheia folosită la pasul anterior, am obținut fișierul inițial. |
- | Tot cu ajutorul comenzii ''dmidecode'' putem afișa informații despre memoria cache a sistemului:<code> | + | <note> |
- | razvan@einherjar:~$ sudo dmidecode -t cache | + | Sunt și alți algoritmi posibili pentru criptare simetrică folosind comanda ''openssl''. Pentru a-i determina folosim comanda<code> |
+ | student@uso-demo:~$ openssl enc -help | ||
</code> | </code> | ||
+ | </note> | ||
- | Dacă ne interesează informații despre utilizarea memoriei sistemului, putem folosi comanda ''free'':<code> | + | Dacă dorim să stocăm fișierul criptat într-o formă de fișier text (dar tot criptat) putem realiza o codificare [[https://en.wikipedia.org/wiki/Base64|base64]] a acestuia. Pentru aceasta, folosim pentru criptare și decriptare comenzile în forma de mai jos:<code> |
- | student@uso-demo:~$ free -m | + | student@uso-demo:~$ openssl enc -e -base64 -aes-256-cbc -in plain.txt -out encrypted.dat |
- | total used free shared buffers cached | + | enter aes-256-cbc encryption password: |
- | Mem: 500 270 230 4 24 196 | + | Verifying - enter aes-256-cbc encryption password: |
- | -/+ buffers/cache: 48 451 | + | student@uso-demo:~$ cat encrypted.dat |
- | Swap: 382 0 382 | + | U2FsdGVkX18HD7U8AkSTfWFQEryHAjfJ7hQlWZQSdMvmdwZSES76zQz7JioIultg |
- | </code> | + | x4sLDHbAA6xTo8ioX3gG/L+7REMUuN46hUXCBB+G1c4= |
- | Comanda afișează totalul de memorie RAM a sistemului și cât din acesta este folosit. În cazul nostru avem ''500'' de MB de memorie RAM, dintre care sunt folosiți ''270'' MB și sunt disponibili ''230'' MB. | + | |
- | Detalii despre utilizarea memoriei RAM găsim în fișierul ''/proc/meminfo'':<code> | + | student@uso-demo:~$ openssl enc -d -base64 -aes-256-cbc -in encrypted.dat -out plain.txt |
- | student@uso-demo:~$ cat /proc/meminfo | + | enter aes-256-cbc decryption password: |
- | MemTotal: 512596 kB | + | student@uso-demo:~$ cat plain.txt |
- | MemFree: 236044 kB | + | This is my life's biggest secret: I have no life |
- | MemAvailable: 468944 kB | + | |
- | Buffers: 25296 kB | + | |
- | Cached: 201248 kB | + | |
- | [...] | + | |
</code> | </code> | ||
- | Informații despre utilizarea memoriei sistemului aflăm și prin folosirea comenzilor ''top'' sau ''htop''. Aceste comenzi au avantajul că ne afișează și procesele sistemului și putem identifica procesele care consumă memorie și care afectează performanța sistemului (așa numitele //memory hogs//). | + | Observăm mai sus că avem o formă ASCII a fișierului criptat ''encrypted.dat''. |
- | ==== Afișarea de informații despre discuri ==== | + | ==== Criptare/decriptare folosind chei asimetrice ==== |
- | La fel ca mai sus pentru afișa informații detaliate despre discurile sistemului putem folosi comanda ''lshw'':<code> | + | Criptarea cu chei simetrice are avantajul vitezei dar dezavantajul că trebuie știută (și partajată între cel care criptează și cel care decriptează) cheia de criptare. Mai mult, dacă acea cheie este slabă, un atacator poate sparge cheia și decripta fișierul. |
- | student@uso-demo:~$ sudo lshw -class disk -class storage -class volume -short | + | |
- | H/W path Device Class Description | + | |
- | =================================================== | + | |
- | /0/100/1.1 storage 82371AB/EB/MB PIIX4 IDE | + | |
- | /0/100/d storage 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] | + | |
- | /0/2 scsi0 storage | + | |
- | /0/2/0.0.0 /dev/sda disk 8589MB VBOX HARDDISK | + | |
- | /0/2/0.0.0/1 /dev/sda1 volume 7806MiB EXT4 volume | + | |
- | /0/2/0.0.0/2 /dev/sda2 volume 383MiB Extended partition | + | |
- | /0/2/0.0.0/2/5 /dev/sda5 volume 383MiB Linux swap / Solaris partition | + | |
- | /0/3 scsi2 storage | + | |
- | /0/3/0.0.0 /dev/cdrom disk DVD reader | + | |
- | </code> | + | |
- | Alte comenzi cu un output similar sunt:<code> | + | Criptarea cu chei asimetrice folosește cheia publică pentru criptare; oricine poate astfel cripta. Pentru decriptare se folosește cheia privată și doar cel care o deține poate decripta. |
- | student@uso-demo:~$ sudo fdisk -l | + | |
- | Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors | + | Pentru aceasta, vom folosi tot utilitarul ''openssl''. Vom folosi algoritmul ''RSA'' (//Rivest-Shamir-Adleman//) pentru criptarea asimetrică. Pentru început vom genera cheia privată și cheia publică:<code> |
- | Units: sectors of 1 * 512 = 512 bytes | + | student@uso-demo:~$ openssl genrsa -out privkey 2048 |
- | Sector size (logical/physical): 512 bytes / 512 bytes | + | Generating RSA private key, 2048 bit long modulus |
- | I/O size (minimum/optimal): 512 bytes / 512 bytes | + | ......................................................+++ |
- | Disklabel type: dos | + | .....................+++ |
- | Disk identifier: 0x1aaa7728 | + | e is 65537 (0x10001) |
+ | student@uso-demo:~$ cat privkey | ||
+ | -----BEGIN RSA PRIVATE KEY----- | ||
+ | MIIEowIBAAKCAQEA4o1PEkzZawYItZFdxsPwA/7kbffcDLQOSCtbdORA23uO6zk8 | ||
+ | [...] | ||
+ | -----END RSA PRIVATE KEY----- | ||
+ | student@uso-demo:~$ openssl rsa -pubout -in privkey -out pubkey | ||
+ | writing RSA key | ||
+ | student@uso-demo:~$ cat pubkey | ||
+ | -----BEGIN PUBLIC KEY----- | ||
+ | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4o1PEkzZawYItZFdxsPw | ||
+ | A/7kbffcDLQOSCtbdORA23uO6zk8+4WLYrc1tgh827N2qcW28UsIxaA2YlowXJu7 | ||
+ | [...] | ||
+ | -----END PUBLIC KEY----- | ||
+ | </code> | ||
- | Device Boot Start End Sectors Size Id Type | + | Mai sus am generat cheia privată în fișierul ''privkey'' și cheia publică în fișierul ''pubkey''. Cheia publică este derivată din cheia privată. Formatul în care sunt stocate cele 2 cheie se numește PEM (//Privacy-enhanced Electronic Mail//). |
- | /dev/sda1 * 2048 15988735 15986688 7.6G 83 Linux | + | |
- | /dev/sda2 15990782 16775167 784386 383M 5 Extended | + | |
- | /dev/sda5 15990784 16775167 784384 383M 82 Linux swap / Solaris | + | |
- | student@uso-demo:~$ sudo parted -l | + | Ca să criptăm fișierul ''plain.txt'' folosind cheia publică din fișierul ''pubkey'', vom rula comanda<code> |
- | Model: ATA VBOX HARDDISK (scsi) | + | student@uso-demo:~$ openssl rsautl -encrypt -in plain.txt -out encrypted.dat -pubin -inkey pubkey |
- | Disk /dev/sda: 8590MB | + | |
- | Sector size (logical/physical): 512B/512B | + | |
- | Partition Table: msdos | + | |
- | Disk Flags: | + | |
- | Number Start End Size Type File system Flags | + | student@uso-demo:~$ xxd encrypted.dat |
- | 1 1049kB 8186MB 8185MB primary ext4 boot | + | 0000000: 97e7 bc72 4d76 708f 5b2b 7437 b698 2937 ...rMvp.[+t7..)7 |
- | 2 8187MB 8589MB 402MB extended | + | [...] |
- | 5 8187MB 8589MB 402MB logical linux-swap(v1) | + | 00000f0: dfd0 3bfc f5b1 9a17 9655 2b9b e441 7bba ..;......U+..A{. |
- | + | ||
- | + | ||
- | student@uso-demo:~$ sudo lsblk | + | |
- | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | + | |
- | sda 8:0 0 8G 0 disk | + | |
- | ├─sda1 8:1 0 7.6G 0 part / | + | |
- | ├─sda2 8:2 0 1K 0 part | + | |
- | └─sda5 8:5 0 383M 0 part [SWAP] | + | |
- | sr0 11:0 1 1024M 0 rom | + | |
- | + | ||
- | student@uso-demo:~$ sudo lsblk -f | + | |
- | NAME FSTYPE LABEL UUID MOUNTPOINT | + | |
- | sda | + | |
- | ├─sda1 ext4 4c03932f-ebdc-4d7d-bf4e-aa65f3889d73 / | + | |
- | ├─sda2 | + | |
- | └─sda5 swap 709a57ff-ffc5-4cf2-bfd7-2850a842e41f [SWAP] | + | |
- | sr0 | + | |
- | + | ||
- | student@uso-demo:~$ sudo hwinfo --block --short | + | |
- | disk: | + | |
- | /dev/sda VBOX HARDDISK | + | |
- | partition: | + | |
- | /dev/sda1 Partition | + | |
- | /dev/sda2 Partition | + | |
- | /dev/sda5 Partition | + | |
- | cdrom: | + | |
- | /dev/sr0 VBOX CD-ROM | + | |
</code> | </code> | ||
- | Comenzile de mai sus ne afișează partițiile sistemului, cu diverse informații precum numele lor, spațiul ocupat, tipul de sistem de fișiere cu care este formatată partiția. | + | Fișierul criptat este un fișier binar; îl putem vizualiza folosind comanda ''xxd''. |
- | Dacă dorim să afișăm informații despre utilizarea spațiului despre partițiile sistemului putem face acest lucru doar pentru partițiile montate folosim comanda ''df'':<code> | + | Pentru a decripta fișierul ''encrypted.dat'' înapoi în fișierul ''plain.txt'' folosind cheia privată din fișierul ''privkey'' vom rula comanda de mai jos:<code> |
- | student@uso-demo:~$ df -hT | + | student@uso-demo:~$ openssl rsautl -decrypt -in encrypted.dat -out plain.txt -inkey privkey |
- | Filesystem Type Size Used Avail Use% Mounted on | + | student@uso-demo:~$ cat plain.txt |
- | /dev/sda1 ext4 7.4G 1.6G 5.5G 23% / | + | This is my life's biggest secret: I have no life |
- | udev devtmpfs 10M 0 10M 0% /dev | + | |
- | tmpfs tmpfs 101M 4.4M 96M 5% /run | + | |
- | tmpfs tmpfs 251M 0 251M 0% /dev/shm | + | |
- | tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock | + | |
- | tmpfs tmpfs 251M 0 251M 0% /sys/fs/cgroup | + | |
</code> | </code> | ||
- | |||
- | O afișare ceva mai estetică obținem cu ajutorul comenzii ''pydf''. Pentru aceasta instalăm în prealabil pachetul ''pydf'':<code> | ||
- | student@uso-demo:~$ sudo apt-get install pydf | ||
- | [...] | ||
- | |||
- | student@uso-demo:~$ pydf | ||
- | Filesystem Size Used Avail Use% Mounted on | ||
- | /dev/sda1 7555M 1589M 5560M 21.0 [##########......................................] / | ||
- | </code> | ||
- | |||
- | Comenzile ''df'' sau ''pydf'' ne afișează dimensiunea totală a unei partiții spațiul ocupat și spațiul disponibil, împreună cu un procent de utilizare a spațiului. | ||
<note> | <note> | ||
- | Detalii despre comnezile de afișare de informații despre hard discuri găsiți și la link-ul indicat ca resursă utilă în partea de sus a paginii: http://www.binarytides.com/linux-command-check-disk-partitions/ | + | Cheia privată, la fel cum este cheia/parola în criptare simetrică, trebuie ținută în siguranță. O recomandare este ca o cheie privată să fie protejată și de un passphrase. Introducerea passphrase-ului condiționează folosirea cheii private. O altă recomandare este folosirea unui [[http://lifehacker.com/5529133/five-best-password-managers|Password manager]] care să rețină toate parolele și cheile în mod sigur (să nu fie scrise plain text undeva) sub protecția unui master password. |
</note> | </note> | ||
- | ==== Generarea de fișiere folosind comanda dd ==== | + | ==== Semnare/verificare folosind chei asimetrice ==== |
- | Pentru situații de testare putem avea nevoie de fișiere de diferite dimensiuni. Pentru a genera astfel de fișiere putem folosi comanda ''dd'' și intrările speciale ''/dev/urandom'' și ''/dev/zero''. | + | Un alt scenariu de folosire a cheilor asimetrice este pentru semnarea unor mesaje. Semnarea se face cu ajutorul cheii private (doar posesorul are acces) iar verificarea cu ajutorul cheii publice (oricine poate verifica). De obicei se transmite mesajul în plain text dar este de știut că cel care a trimis mesajul chiar este cel care l-a trimis, și pentru aceea se atașează fișierul de tip semnătură mesajului. |
- | De exemplu, dacă dorim să generăm un fișier de ''10MB'' plin cu zero-uri, vom folosi comanda<code> | + | Vom folosi tot cheia privată ''privkey'' și cheia publică ''pubkey'' de mai sus. |
- | student@uso-demo:~$ dd if=/dev/zero of=zero-1OMB bs=1M count=10 | + | |
- | 10+0 records in | + | |
- | 10+0 records out | + | |
- | 10485760 bytes (10 MB) copied, 0.0233232 s, 450 MB/s | + | |
- | student@uso-demo:~$ ls -lh zero-1OMB | + | Pentru semnarea mesajului vom folosi<code> |
- | -rw-r--r-- 1 student student 10M Dec 5 18:09 zero-1OMB | + | student@uso-demo:~$ openssl rsautl -sign -in plain.txt -out signature -inkey privkey |
- | </code> | + | student@uso-demo:~$ xxd signature |
- | Comanda ''dd'' citește din intrarea specială ''/dev/zero'' zero-uri și le scrie în fișierul ''zero-1OMB''. Face acest lucru în ''10'' copieri de blocuri de câte ''1M'' (''bs'' înseamnă //block size//). | + | 0000000: 910f be3f 6a47 b150 f239 8105 3d64 a60d ...?jG.P.9..=d.. |
- | + | ||
- | Dacă dorim să generăm un fișier de ''5MB'' plin cu date aleatoare, vom folosi comanda<code> | + | |
- | student@uso-demo:~$ dd if=/dev/urandom of=random-5MB bs=1M count=5 | + | |
- | 5+0 records in | + | |
- | 5+0 records out | + | |
- | 5242880 bytes (5.2 MB) copied, 0.56655 s, 9.3 MB/s | + | |
- | + | ||
- | student@uso-demo:~$ ls -lh random-5MB | + | |
- | -rw-r--r-- 1 student student 5.0M Dec 5 18:11 random-5MB | + | |
- | </code> | + | |
- | Comanda ''dd'' citește din intrarea specială ''/dev/urandom'' date aleatoare și le scrie în fișierul ''random-5MB''. Face acest lucru în ''5'' copieri de blocuri de câte ''1M'' (''bs'' înseamnă //block size//). | + | |
- | + | ||
- | Putem folosi comanda ''dd'' și pentru dispozitive fizice. De exemplu, dacă vrem să extragem sectorul 0 de pe un hard disc (adică primii 512 octeți) folosim comanda:<code> | + | |
- | student@uso-demo:~$ sudo dd if=/dev/sda of=mbr count=1 | + | |
- | 1+0 records in | + | |
- | 1+0 records out | + | |
- | 512 bytes (512 B) copied, 0.00355612 s, 144 kB/s | + | |
- | + | ||
- | student@uso-demo:~$ ls -lh mbr | + | |
- | -rw-r--r-- 1 root root 512 Dec 5 18:13 mbr | + | |
- | </code> | + | |
- | Comanda ''dd'' citește din intrarea specială ''/dev/sda'' date și le scrie în fișierul ''random-5MB''. Face acest lucru într-o singură copiere de bloc de date; dimensiunea blocului este în mod implicit ''512'' așa că se vor copia exact ''512'' octeți. A fost nevoie de permisiuni de ''root'' (prefixarea comenzii folosind ''sudo'') pentru că doar cu permisiuni dedicate putem citi de pe dispozitivile ce identifică discul sistemului. | + | |
- | + | ||
- | Putem valida că am extras sectorul 0 al hard discului folosind comanda ''xxd'' (care face //dump// în hexadecimal). Întrucât sectorul 0 este sectorul de boot acesta se va încheia cu semnătura de sector de boot, adică ''0x55aa'', lucru observabil în output-ul comenzii ''xxd'':<code> | + | |
- | student@uso-demo:~$ xxd mbr | + | |
[...] | [...] | ||
- | 00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U. | + | 00000f0: 7ffd 183f 26e4 221f c9dc 90b5 9510 7eca ...?&.".......~. |
</code> | </code> | ||
- | Tot folosind comanda ''dd'' un sistem ce posedă unitate de CD și are un CD în unitate poate crea o imagine de tip ''.iso'' a CD-ului. Pentru aceasta folosim comanda<code> | + | Pentru verificarea semnăturii vom folosi comanda<code> |
- | dd if=/dev/cdrom of=myimage.iso | + | student@uso-demo:~$ openssl rsautl -verify -in signature -pubin -inkey pubkey |
+ | This is my life's biggest secret: I have no life | ||
</code> | </code> | ||
- | Cu această comandă creăm fișierul ''myimage.iso'' ca fișier imagine al CD-ului aflat în unitatea de CD. | ||
- | |||
- | <note warning> | ||
- | Atenție la folosirea comenzii ''dd'' și care este fișierul destinație (în care se scrie). Există riscul să vă corupeți (potențial iremediabil) hard discul dacă folosiți ''/dev/sda'' pe post de fișier destinație. | ||
- | </note> | ||
- | ==== Crearea unei mașini virtuale în VirtualBox ==== | ||
- | |||
- | Pentru crarea unei mașini virtuale în VirtualBox folosim, de regulă, interfața grafică a VirtualBox. Pentru aceasta urmăm ca pași principali: | ||
- | * Crearea specificațiilor mașinii virtuale: memorie, hard disc, tip de sisteme de operare | ||
- | * Alegerea unui mediu de boot, de obicei o imagine de CD bootabil în format ''.iso'' | ||
- | * Pornirea mașinii virtuale (bootarea acesteia) și pornirea procesului de instalare | ||
- | |||
- | Acești pași sunt descriși în video-ul de tip screencast de mai jos, accesibil direct la adresa https://youtu.be/xFkkeVoOC_A. | ||
- | |||
- | <html> | ||
- | <center> | ||
- | <iframe width="560" height="315" src="https://www.youtube.com/embed/xFkkeVoOC_A" frameborder="0" allowfullscreen> | ||
- | </iframe> | ||
- | </center> | ||
- | </html> | ||
- | |||
- | ==== Afișarea de informații despre mașinile virtuale VirtualBox ==== | ||
<note> | <note> | ||
- | Comenzile indicate mai jos pot fi rulate doar pe un sistem fizic (Linux sau Windows) în cadrul căruia a fost instalat VirtualBox. | + | Pentru criptare/decriptare și semnare/verifcare cu chei asimetrice putem folosi și suita [[https://www.gnupg.org/|GnuPG]] (//GNU Privacy Guard//). |
</note> | </note> | ||
- | În afara interfeței grafice în VirtualBox putem folosi comanda ''vboxmanage'' pentru a afișa informații și pentru a configura mașini virtuale VirtualBox. | + | */ |
- | + | ||
- | De exemplu, pentru a afișa mașinile virtuale existente în VirtualBox, rulăm comanda<code> | + | |
- | razvan@einherjar:~$ vboxmanage list vms | + | |
- | "Windows-7" {2a9b2719-2c6c-42df-9f19-5febff6172bf} | + | |
- | "Debian" {18565cc7-101d-4ac4-91b4-2ee317b7f9ae} | + | |
- | "Debian 32 bit" {562696b3-efb8-42e4-8a66-519a98aa5ac8} | + | |
- | "Xubuntu-14.04" {cd57aa75-82b0-4f07-8236-81517f2ee87d} | + | |
- | "SSS - Debian 32bit" {fa9dd108-fe13-4d12-adcd-84e29bcc3232} | + | |
- | "SSS - Windows 7 32bit" {4f27ec11-33a8-400d-a898-d252169ab52f} | + | |
- | "Training - Linux Kernel Dev" {3645e7b4-482e-4bd2-aa73-f29e8b15288f} | + | |
- | "GSR Debian" {409a6ad1-3998-443b-9297-e46aa1d944e5} | + | |
- | "USO Demo" {e04f00a6-7530-45d0-95e6-56ba46d6810a} | + | |
- | "IOCLA Linux" {5ee0048a-6bd1-4dc6-bf1b-daffc1729066} | + | |
- | "USO Linux" {845446cb-0210-4f3b-8df0-91cd1c67b5e2} | + | |
- | </code> | + | |
- | Comanda afișează mașinile virtuale existente în sistemul gazdă împreună cu un identificator unic al acestora (numit UUID -- //Universally Unique Identifier//). | + | |
- | + | ||
- | Dacă vrem să afisăm doar mașinile virtuale care rulează, folosim comanda<code> | + | |
- | razvan@einherjar:!$ vboxmanage list runningvms | + | |
- | "USO Demo" {e04f00a6-7530-45d0-95e6-56ba46d6810a} | + | |
- | <code> | + | |
- | + | ||
- | Dacă ne interesează să aflăm informații detaliate despre o mașină virtuală rulăm comanda<code> | + | |
- | razvan@einherjar:~$ vboxmanage showvminfo "USO Demo" | + | |
- | Name: USO Demo | + | |
- | Groups: / | + | |
- | Guest OS: Debian (32-bit) | + | |
- | UUID: e04f00a6-7530-45d0-95e6-56ba46d6810a | + | |
- | Config file: /home/razvan/vm/vbox/USO Demo/USO Demo.vbox | + | |
- | Snapshot folder: /home/razvan/vm/vbox/USO Demo/Snapshots | + | |
- | Log folder: /home/razvan/vm/vbox/USO Demo/Logs | + | |
- | Hardware UUID: e04f00a6-7530-45d0-95e6-56ba46d6810a | + | |
- | Memory size: 512MB | + | |
- | [...] | + | |
- | </code> | + | |
- | Comanda afișează o multitudine de informații despre mașina virtuală, practic tot ceea ce o definește. | + | |
- | + | ||
- | <note> | + | |
- | Comanda ''vboxmanage'' are o mulțime de subcomenzi care pot fi folosite pentru inspectarea și configurarea mașinilor virtuale. Puteți folosi comanda<code> | + | |
- | vboxmanage --help | + | |
- | </code> | + | |
- | pentru a le parcurge pe toate, sau puteți consulta pagina de manual a comenzii<code> | + | |
- | man vboxmanage | + | |
- | </code> sau puteți accesa [[https://www.virtualbox.org/manual/ch08.html|documentația VirtualBox]]. | + | |
- | </note> | + | |
- | + | ||
- | ==== Sumar comenzi Linux legate de hardware ==== | + | |
- | + | ||
- | Mai jos este un sumar al comenzilor Linux folosite pentru inspectarea componentelor harware ale sistemului. Sunt indicate comenzile pe tipuri de componente. | + | |
- | + | ||
- | ^ Componentă hardware ^ Comenzi pentru specificații ^ Comenzi pentru monitorizare ^ | + | |
- | ^ Toate | ''sudo lshw'' | | | + | |
- | | ::: | ''sudo lshw -short'' | ::: | | + | |
- | | ::: | ''sudo dmidecode'' | ::: | | + | |
- | | ::: | ''sudo hwinfo'' | ::: | | + | |
- | | ::: | ''%%sudo hwinfo --short%%'' | ::: | | + | |
- | | ::: | ''inxi'' | ::: | | + | |
- | | ::: | ''inxi -F'' | ::: | | + | |
- | ^ Magistrale/Controllere | ''sudo lscpi'' | | | + | |
- | | ::: | ''sudo lsusb'' | ::: | | + | |
- | ^ Procesor | ''lspcu'' | ''top'' | | + | |
- | | ::: | ''sudo lshw -class cpu'' | ''htop'' | | + | |
- | | ::: | ''sudo dmidecode -t processor'' | ''mpstat'' | | + | |
- | | ::: | ''%%sudo hwinfo --cpu%%'' | | | + | |
- | | ::: | ''%%sudo hwinfo --cpu --short%%'' | ::: | | + | |
- | | ::: | ''%%inxi -Cxx%%'' | ::: | | + | |
- | | ::: | ''%%cat /proc/cpuinfo%%'' | ::: | | + | |
- | | ::: | ''%%nproc%%'' | ::: | | + | |
- | | ::: | ''%%arch%%'' | ::: | | + | |
- | ^ Memorie | ''sudo lshw -class memory'' | ''free -m'' | | + | |
- | | ::: | ''sudo dmidecode -t memory'' | ''cat /proc/meminfo'' | | + | |
- | | ::: | ''sudo dmidecode -t cache'' | ''top'' | | + | |
- | | ::: | ''%%sudo hwinfo --memory%%'' | ''htop'' | | + | |
- | | ::: | ''sudo inxi -m'' | | | + | |
- | ^ Disc | ''sudo lshw -class disk -class storage -class volume -short'' | ''df -hT'' | | + | |
- | | ::: | ''sudo fdisk -l'' | ''pydf'' | | + | |
- | | ::: | ''sudo parted -l'' | | | + | |
- | | ::: | ''sudo lsblk'' | ::: | | + | |
- | | ::: | ''sudo lsblk -f'' | ::: | | + | |
- | | ::: | ''%%sudo hwinfo --block --short%%'' | ::: | | + | |
- | | ::: | ''inxi -DdoP'' | ::: | | + |