Cisco CyberOps Associate - System operacyjny Linux

1. Linux to system operacyjny open source, stworzony w 1991 roku. Jest szybki, niezawodny i wymaga minimalnych zasobów sprzętowych. Tworzony przez społeczność programistów, Linux jest używany na różnych platformach, od zegarków po superkomputery. Jako system zaprojektowany do pracy w sieci, ułatwia tworzenie aplikacji sieciowych. Dystrybucje Linuxa, takie jak Debian, Red Hat czy Ubuntu, zawierają jądro Linuxa i różne pakiety oprogramowania, dostępne często za darmo.

2. Cechy Linuxa:
  • Linux jest systemem open source - Każda osoba może nabyć Linuxa bez opłat i modyfikować go, aby dopasować do konkretnych potrzeb. Ta elastyczność pozwala analitykom i administratorom na dostosowanie systemu operacyjnego specjalnie do analizy bezpieczeństwa.
  • Interfejs wiersza poleceń (CLI) w Linuxie jest bardzo potężny - Chociaż GUI ułatwia wykonanie wielu zadań, dodaje złożoności i wymaga więcej zasobów komputerowych do działania. Interfejs wiersza poleceń (CLI) w Linuxie jest niezwykle potężny i umożliwia analitykom wykonywanie zadań nie tylko bezpośrednio na terminalu, ale także zdalnie.
  • Użytkownik ma większą kontrolę nad systemem operacyjnym - Użytkownik administratora w Linuxie, znany jako użytkownik root lub superuser, ma absolutną moc nad komputerem. W przeciwieństwie do innych systemów operacyjnych, użytkownik root może modyfikować dowolny aspekt komputera za pomocą kilku klawiszy. Ta zdolność jest szczególnie cenna podczas pracy z funkcjami niskiego poziomu, takimi jak stos sieciowy. Pozwala to użytkownikowi root na precyzyjną kontrolę nad sposobem obsługi pakietów sieciowych przez system operacyjny.
  • Umożliwia lepszą kontrolę komunikacji sieciowej - Kontrola jest nieodłączną częścią Linuxa. Ponieważ system operacyjny może być dostosowany praktycznie pod każdym względem, jest świetną platformą do tworzenia aplikacji sieciowych. To ta sama przyczyna, dla której wiele świetnych narzędzi oprogramowania opartego na sieci jest dostępnych tylko dla Linuxa.
3. Elastyczność, jaką oferuje Linux, jest świetną cechą dla Centrum Operacji Bezpieczeństwa (SOC). Cały system operacyjny może być dostosowany do stania się idealną platformą do analizy bezpieczeństwa. Na przykład, administratorzy mogą dodawać tylko niezbędne pakiety do systemu operacyjnego, czyniąc go szczupłym i wydajnym. Specyficzne narzędzia programowe mogą być instalowane i konfigurowane do współpracy, pozwalając administratorom na zbudowanie komputera dostosowanego idealnie do przepływu pracy w SOC.

Sguil, jest konsolą analityka cyberbezpieczeństwa w specjalnej wersji Linuxa o nazwie Security Onion. Security Onion to zestaw narzędzi open source, które współpracują ze sobą w celu analizy bezpieczeństwa sieci. 

Narzędzia, które często znajdują się w SOC:

 - Oprogramowanie do przechwytywania pakietów sieciowych:
  • Kluczowe narzędzie dla analityka SOC, ponieważ umożliwia obserwację i zrozumienie każdego szczegółu transakcji sieciowej.
  • Wireshark jest popularnym narzędziem do przechwytywania pakietów.
- Narzędzia do analizy malware:
  • Te narzędzia pozwalają analitykom bezpiecznie uruchamiać i obserwować wykonanie malware bez ryzyka skompromitowania podstawowego systemu.
- Systemy wykrywania intruzów (IDS):
  • Te narzędzia są używane do monitorowania ruchu w czasie rzeczywistym i inspekcji.
  • Jeśli jakikolwiek aspekt obecnie przepływającego ruchu pasuje do ustanowionych zasad, podejmowana jest z góry określona akcja.
- Firewalle:
  • To oprogramowanie jest używane do określania, na podstawie z góry ustalonych zasad, czy ruch jest dozwolony do wejścia lub wyjścia z sieci lub urządzenia.
- Menadżery logów:
  • Pliki logów są używane do rejestrowania zdarzeń.
  • Ponieważ sieć może generować bardzo dużą liczbę wpisów w logach, oprogramowanie menadżera logów jest zatrudniane do ułatwienia monitorowania logów.
  • Zarządzanie informacjami o bezpieczeństwie i zarządzanie zdarzeniami (SIEM)
- SIEMy zapewniają analizę w czasie rzeczywistym alertów i wpisów w logach generowanych przez urządzenia sieciowe, takie jak IDS i firewalle.

- Systemy ticketingowe:
  • Przypisywanie, edycja i rejestrowanie zadań ticketów odbywa się za pomocą systemu zarządzania ticketami. Alerty bezpieczeństwa są często przypisywane analitykom za pośrednictwem systemu ticketingowego.
4. Oprócz narzędzi specyficznych dla SOC, komputery z systemem Linux używane w SOC często zawierają narzędzia do testów penetracyjnych. Test penetracyjny, znany również jako PenTesting, to proces poszukiwania luk w sieci lub komputerze poprzez atakowanie go. Generatory pakietów, skanery portów i narzędzia do demonstracji konceptu są przykładami narzędzi PenTesting.

Kali Linux to dystrybucja Linuxa, która grupuje wiele narzędzi do testów penetracyjnych w jednej dystrybucji Linuxa. Kali zawiera świetny wybór narzędzi.

5. W systemie Linux użytkownik komunikuje się z systemem operacyjnym za pomocą interfejsu wiersza poleceń (CLI) lub graficznego interfejsu użytkownika (GUI). Linux często domyślnie uruchamia się w GUI, co ukrywa CLI przed użytkownikiem. Jednym ze sposobów dostępu do CLI z GUI jest użycie aplikacji emulującej terminal. Te aplikacje zapewniają użytkownikowi dostęp do CLI i często są nazywane różnymi wariantami słowa "terminal". W systemie Linux popularne emulatory terminali to Terminator, eterm, xterm, konsole i gnome-terminal.

Fabrice Bellard stworzył JSLinux, który pozwala na uruchomienie emulowanej wersji Linuxa w przeglądarce. Polecenie ls pozwala na wyświetlenie zawartości bieżącego katalogu. 

6. Polecenia w systemie Linux to programy stworzone do wykonywania konkretnych zadań. Aby uzyskać dokumentację dotyczącą poleceń, użyj polecenia man (skrót od manual). Na przykład man ls dostarcza dokumentację polecenia ls z podręcznika użytkownika.

Ponieważ polecenia są programami przechowywanymi na dysku, gdy użytkownik wpisze polecenie, powłoka musi je znaleźć na dysku, zanim będzie mogła je wykonać. Powłoka będzie szukać poleceń wpisanych przez użytkownika w określonych katalogach i próbować je wykonać. Lista katalogów sprawdzanych przez powłokę nazywana jest ścieżką (path). Ścieżka zawiera wiele katalogów powszechnie używanych do przechowywania poleceń. Jeśli polecenie nie znajduje się w ścieżce, użytkownik musi określić jego lokalizację, w przeciwnym razie powłoka nie będzie mogła go znaleźć. Użytkownicy mogą łatwo dodawać katalogi do ścieżki, jeśli jest to konieczne.

Podstawowe polecenia Linuxa:

  • mv - Przenosi lub zmienia nazwy plików i katalogów.
  • chmod - Modyfikuje uprawnienia plików.
  • chown - Zmienia właściciela pliku.
  • dd - Kopiuje dane z wejścia na wyjście.
  • pwd - Wyświetla nazwę bieżącego katalogu.
  • ps - Wyświetla listę procesów aktualnie działających w systemie.
  • su - Symuluje logowanie jako inny użytkownik lub staje się superużytkownikiem.
  • sudo - Uruchamia polecenie jako superużytkownik domyślnie lub inny nazwany użytkownik.
  • grep - Używane do wyszukiwania określonych ciągów znaków w pliku lub innych wyjściach poleceń. Aby przeszukać wyjście poprzedniego polecenia, grep musi być przekierowane na koniec poprzedniego polecenia.
  • ifconfig - Używane do wyświetlania lub konfigurowania informacji związanych z kartą sieciową. Jeśli wydane bez parametrów, ifconfig wyświetli bieżącą konfigurację karty(-t) sieciowej(-ych). Uwaga: Mimo że nadal jest powszechnie używane, to polecenie jest przestarzałe. Zamiast tego użyj ip address.
  • apt-get - Używane do instalowania, konfigurowania i usuwania pakietów w Debianie i jego pochodnych. Uwaga: apt-get jest przyjaznym dla użytkownika interfejsem wiersza poleceń dla dpkg, menedżera pakietów Debiana. Kombinacja dpkg i apt-get jest domyślnym systemem zarządzania pakietami we wszystkich pochodnych Linuxa Debiana, w tym Raspbianie.
  • iwconfig - Używane do wyświetlania lub konfigurowania informacji związanych z bezprzewodową kartą sieciową. Podobnie do ifconfig, iwconfig wyświetli informacje bezprzewodowe, gdy wydane bez parametrów.
  • shutdown - Wyłącza system, shutdown może być polecane do wykonania wielu zadań związanych z wyłączaniem, w tym restartu, zatrzymania, uśpienia lub wylogowania wszystkich obecnie podłączonych użytkowników.
  • passwd - Używane do zmiany hasła. Jeśli nie podano parametrów, passwd zmienia hasło dla bieżącego użytkownika.
  • cat - Używane do wyświetlania zawartości pliku i oczekuje nazwy pliku jako parametru. Polecenie cat jest zwykle używane na plikach tekstowych.
  • man - Używane do wyświetlania dokumentacji dla konkretnego polecenia.
7. Wiele narzędzi wiersza poleceń jest domyślnie dołączonych do systemu Linux. Aby dostosować działanie polecenia, użytkownicy mogą przekazywać parametry i przełączniki wraz z poleceniem. Poniżej znajduje się lista kilku najczęściej używanych poleceń związanych z plikami i katalogami.
  • ls - Wyświetla pliki wewnątrz katalogu.
  • cd - Zmienia bieżący katalog.
  • mkdir - Tworzy katalog w bieżącym katalogu.
  • cp - Kopiuje pliki ze źródła do miejsca docelowego.
  • mv - Przenosi pliki do innego katalogu.
  • rm - Usuwa pliki.
  • grep - Wyszukuje określone ciągi znaków w pliku lub innych wyjściach poleceń.
  • cat - Wyświetla zawartość pliku i oczekuje nazwy pliku jako parametru.
8. Linux oferuje różnorodne edytory tekstu, zarówno graficzne, jak i oparte na wierszu poleceń, z funkcjami dostosowanymi do różnych zadań. Edytory wiersza poleceń, takie jak nano, są kluczowe dla użytkowników Linuxa, ponieważ umożliwiają edycję tekstów na zdalnych komputerach, nawet bez dostępu do interfejsu graficznego. Nano jest sterowany klawiaturą i zawiera pasek skrótów z najważniejszymi poleceniami, takimi jak zapisywanie pliku (CTRL+O) czy wyszukiwanie (CTRL+W).

9. W systemie Linux wszystko jest traktowane jako plik. Obejmuje to pamięć, dyski, monitor i katalogi. Na przykład, z punktu widzenia systemu operacyjnego, wyświetlanie informacji na ekranie oznacza zapisywanie do pliku, który reprezentuje urządzenie wyświetlające. Nie powinno więc dziwić, że komputer jest konfigurowany za pomocą plików. Znane jako pliki konfiguracyjne, są to zazwyczaj pliki tekstowe używane do przechowywania dostosowań i ustawień dla konkretnych aplikacji lub usług. Praktycznie wszystko w systemie Linux opiera się na plikach konfiguracyjnych, aby działać. Niektóre usługi mają nie jedną, ale kilka plików konfiguracyjnych.

Użytkownicy z odpowiednimi poziomami uprawnień mogą używać edytorów tekstu do zmiany zawartości plików konfiguracyjnych. Po dokonaniu zmian plik jest zapisywany i może być używany przez powiązaną usługę lub aplikację. Użytkownicy mogą dokładnie określić, jak chcą, aby dana aplikacja lub usługa się zachowywała. Po uruchomieniu usługi i aplikacje sprawdzają zawartość określonych plików konfiguracyjnych, aby odpowiednio dostosować swoje zachowanie.

Przykładowo plik hosts w Linuxie zawiera statyczne mapowania adresów IP hostów na nazwy. Nazwy służą jako skróty, które pozwalają łączyć się z innymi urządzeniami za pomocą nazwy zamiast adresu IP. Tylko superuser może zmienić plik hosta.

10. Serwery to komputery z zainstalowanym oprogramowaniem, które umożliwia świadczenie usług klientom w sieci. Istnieje wiele rodzajów usług. Niektóre dostarczają zewnętrzne zasoby, takie jak pliki, wiadomości e-mail lub strony internetowe na żądanie klientów. Inne usługi wykonują zadania konserwacyjne, takie jak zarządzanie logami, zarządzanie pamięcią, skanowanie dysków i inne. Każda usługa wymaga oddzielnego oprogramowania serwerowego

11. Aby komputer mógł być serwerem dla wielu usług, używane są porty. Port to zarezerwowany zasób sieciowy używany przez usługę. Mówi się, że serwer “nasłuchuje” na porcie, gdy został do niego przypisany.

Chociaż administrator może zdecydować, który port użyć z daną usługą, wiele klientów jest domyślnie skonfigurowanych do korzystania z określonego portu. Powszechną praktyką jest pozostawienie usługi działającej na jej domyślnym porcie. Poniższa tabela zawiera kilka powszechnie używanych portów i ich usług. Są one również nazywane “dobrze znanymi portami”.

  • 20/21 - Protokół transferu plików (FTP)
  • 22 - Secure Shell (SSH)
  • 23 - Usługa zdalnego logowania Telnet
  • 25 - Protokół prostego transferu poczty (SMTP)
  • 53 - System nazw domenowych (DNS)
  • 67/68 - Protokół dynamicznej konfiguracji hosta (DHCP)
  • 69 - Trywialny protokół transferu plików (TFTP)
  • 80 - Protokół transferu hipertekstu (HTTP)
  • 110 - Protokół pocztowy wersji 3 (POP3)
  • 123 - Protokół czasu sieciowego (NTP)
  • 143 - Protokół dostępu do wiadomości internetowych (IMAP)
  • 161/162 - Prosty protokół zarządzania siecią (SNMP)
  • 443 - HTTP Secure (HTTPS)
12. Klienci to programy lub aplikacje zaprojektowane do komunikacji z określonym typem serwera. Znane również jako aplikacje klienckie, klienci używają dobrze zdefiniowanego protokołu do komunikacji z serwerem. Przeglądarki internetowe to klienci sieciowi, które są używane do komunikacji z serwerami internetowymi za pomocą protokołu Hyper Text Transfer Protocol (HTTP) na porcie 80. Klient Protokołu Transferu Plików (FTP) to oprogramowanie używane do komunikacji z serwerem FTP. 

13. W systemie Linux usługi są zarządzane za pomocą plików konfiguracyjnych. Wspólne opcje w plikach konfiguracyjnych to numer portu, lokalizacja zasobów hostowanych oraz dane autoryzacji klienta. Gdy usługa zostaje uruchomiona, przeszukuje swoje pliki konfiguracyjne, wczytuje je do pamięci i dostosowuje się do ustawień w tych plikach. Modyfikacje plików konfiguracyjnych często wymagają ponownego uruchomienia usługi, aby zmiany zaczęły obowiązywać.

Ponieważ usługi często wymagają uprawnień superużytkownika do działania, pliki konfiguracyjne usług również często wymagają uprawnień superużytkownika do edycji.

Nginx jest lekkim serwerem internetowym dla systemu Linux.

# Example Nginx configuration file
server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html;
    }

    location /images/ {
        alias /var/www/images/;
    }
}

W powyższym przykładzie konfiguracji Nginx:
  • Serwer nasłuchuje na porcie 80.
  • Domena serwera to example.com.
  • Lokalizacja zasobów dla ścieżki / to /var/www/html, a plik index.html jest używany jako strona główna.
  • Lokalizacja zasobów dla ścieżki /images/ to /var/www/images/.
Przykładowa konfiguracja dla protokołu czasu sieciowego (NTP):

# Przykładowy plik konfiguracyjny NTP
driftfile /var/lib/ntp/ntp.drift

# Dostawcy czasu
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

# Dostęp do serwera NTP
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Lokalny zegar jako rezerwowy
server 127.127.1.0
fudge 127.127.1.0 stratum 10

W tym przykładowym pliku konfiguracyjnym:
  • driftfile określa lokalizację pliku, który przechowuje informacje o błędzie dryfu zegara.
  • server wskazuje serwery NTP, z których klient ma synchronizować czas.
  • restrict definiuje poziom dostępu do serwera NTP dla innych komputerów.
  • fudge pozwala na ręczne ustawienie parametrów dla serwera czasu.
Snort jest systemem wykrywania intruzów (IDS) opartym na systemie Linux, który używa plików konfiguracyjnych do określania, jak ma monitorować ruch sieciowy i reagować na potencjalne zagrożenia. 

# Przykładowy plik konfiguracyjny Snort
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

include $RULE_PATH/snort.rules
include $SO_RULE_PATH/bad-traffic.rules
include $PREPROC_RULE_PATH/preprocessor.rules

# Konfiguracja wyjścia alertów
output alert_fast: alert.fast

# Definicje sieci domowej i zewnętrznej
ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET

# Konfiguracja preprocessors
preprocessor stream5_global: track_tcp yes, \
                             track_udp yes, \
                             track_icmp no, \
                             max_tcp 262144, \
                             max_udp 131072, \
                             max_active_responses 2, \
                             min_response_seconds 5

preprocessor http_inspect: global iis_unicode_map unicode.map 1252

W tym przykładzie:
  • RULE_PATH, SO_RULE_PATH i PREPROC_RULE_PATH to zmienne określające ścieżki do różnych zestawów reguł.
  • include wskazuje pliki, które mają być załączone do konfiguracji.
  • output określa format i lokalizację, gdzie alertów będą zapisywane.
  • ipvar definiuje zmienne IP dla sieci domowej (HOME_NET) i zewnętrznej (EXTERNAL_NET).
  • preprocessor konfiguruje różne preprocessory, które analizują ruch sieciowy przed przetworzeniem przez reguły Snort.
14. Zabezpieczanie urządzenia polega na wdrażaniu sprawdzonych metod zabezpieczania urządzenia i ochrony dostępu administracyjnego. Niektóre z tych metod obejmują utrzymanie haseł, konfigurowanie zaawansowanych funkcji zdalnego logowania oraz wdrażanie bezpiecznego logowania za pomocą SSH. Definiowanie ról administracyjnych pod względem dostępu jest kolejnym ważnym aspektem zabezpieczania urządzeń infrastrukturalnych, ponieważ nie wszyscy pracownicy technologii informacyjnej powinni mieć ten sam poziom dostępu do urządzeń infrastrukturalnych.

W zależności od dystrybucji Linuxa, wiele usług jest domyślnie włączonych. Niektóre z tych funkcji są włączone z historycznych powodów, ale nie są już wymagane. Zatrzymanie takich usług i zapewnienie, że nie będą się automatycznie uruchamiać podczas startu systemu, jest kolejną techniką zabezpieczania urządzenia.

Aktualizacje systemu operacyjnego są również niezwykle ważne dla utrzymania zabezpieczonego urządzenia. Każdego dnia odkrywane są nowe podatności. Twórcy systemów operacyjnych regularnie tworzą i wydają poprawki i łatki. Komputer aktualny jest mniej narażony na kompromitację.

Najlepsze praktyki zabezpieczania urządzeń:

  • Zapewnienie fizycznego bezpieczeństwa
  • Minimalizacja zainstalowanych pakietów
  • Wyłączanie nieużywanych usług
  • Używanie SSH i wyłączanie logowania konta root przez SSH
  • Aktualizacja systemu
  • Wyłączanie automatycznego wykrywania USB
  • Wymuszanie silnych haseł
  • Wymuszanie okresowych zmian haseł
  • Zapobieganie użytkownikom przed ponownym używaniem starych haseł

Istnieje wiele innych kroków, które często zależą od konkretnej usługi lub aplikacji.

15. Pliki logów to zapisy, które komputer przechowuje, aby śledzić ważne wydarzenia. Zdarzenia związane z jądrem systemu, usługami i aplikacjami są wszystkie rejestrowane w plikach logów.

W systemie Linux pliki logów można podzielić na:
  • Logi aplikacji
  • Logi zdarzeń
  • Logi usług
  • Logi systemowe
Niektóre logi zawierają informacje o demonach działających w systemie Linux. Demon to proces działający w tle, który działa bez potrzeby interakcji użytkownika. Na przykład, Demon Usług Bezpieczeństwa Systemowego (SSSD) zarządza zdalnym dostępem i uwierzytelnianiem dla możliwości pojedynczego logowania.
  • /var/log/messages - Ten katalog zawiera ogólne logi aktywności komputera. Jest głównie używany do przechowywania informacyjnych i niekrytycznych komunikatów systemowych. W komputerach opartych na Debianie, katalog /var/log/syslog pełni tę samą funkcję.
  • /var/log/auth.log - Ten plik przechowuje wszystkie zdarzenia związane z uwierzytelnianiem w komputerach Debian i Ubuntu. Wszystko, co dotyczy mechanizmu autoryzacji użytkownika, można znaleźć w tym pliku.
  • /var/log/secure - Ten katalog jest używany przez komputery RedHat i CentOS zamiast /var/log/auth.log. Śledzi również logowania sudo, logowania SSH i inne błędy zarejestrowane przez SSSD.
  • /var/log/boot.log - Ten plik przechowuje informacje związane z uruchamianiem i komunikaty zarejestrowane podczas procesu startowego komputera.
  • /var/log/dmesg - Ten katalog zawiera komunikaty bufora pierścieniowego jądra. Informacje związane z urządzeniami sprzętowymi i ich sterownikami są tutaj rejestrowane. Jest to bardzo ważne, ponieważ ze względu na ich niskopoziomowy charakter, systemy logowania takie jak syslog nie działają, gdy te zdarzenia mają miejsce i dlatego często są niedostępne dla administratora w czasie rzeczywistym.
  • /var/log/kern.log - Ten plik zawiera informacje zarejestrowane przez jądro.
  • /var/log/cron Cron to usługa używana do planowania zautomatyzowanych zadań w Linuxie i ten katalog przechowuje jego zdarzenia. Za każdym razem, gdy uruchamiane jest zaplanowane zadanie (nazywane również zadaniem cron), wszystkie jego istotne informacje, w tym status wykonania i komunikaty o błędach, są tutaj przechowywane.
  • /var/log/mysqld.log lub /var/log/mysql.log - To jest plik logów MySQL. Wszystkie komunikaty debugowania, niepowodzenia i sukcesu związane z procesem mysqld i demonem mysqld_safe są tutaj rejestrowane. Dystrybucje Linuxa RedHat, CentOS i Fedora przechowują logi MySQL w pliku /var/log/mysqld.log, podczas gdy Debian i Ubuntu utrzymują log w pliku /var/log/mysql.log.
16. Istnieje wiele różnych rodzajów systemów plików, które różnią się właściwościami takimi jak szybkość, elastyczność, bezpieczeństwo, rozmiar, struktura, logika i inne. To od administratora zależy, który typ systemu plików najlepiej pasuje do systemu operacyjnego i plików, które ma przechowywać.

Systemy plików, które są powszechnie spotykane i obsługiwane przez Linuxa:

ext2 był domyślnym systemem plików w kilku głównych dystrybucjach Linuxa, aż został zastąpiony przez ext3:
  • ext2 jest nadal systemem plików wybieranym dla nośników pamięci flash, ponieważ brak dziennika zwiększa wydajność i minimalizuje liczbę zapisów.
  • Z uwagi na fakt, że urządzenia pamięci flash mają ograniczoną liczbę operacji zapisu, minimalizacja operacji zapisu zwiększa żywotność urządzenia.
  • Jednak współczesne jądra Linuxa obsługują również ext4, jeszcze nowocześniejszy system plików, o lepszej wydajności, który może również działać w trybie bez dziennika.
  • ext3 (trzeci rozszerzony system plików)
ext3 to system plików z dziennikowaniem zaprojektowany w celu ulepszenia istniejącego systemu plików ext2:
  • Dziennik, główna funkcja dodana do ext3, to technika używana do minimalizacji ryzyka uszkodzenia systemu plików w przypadku nagłego zaniku zasilania.
  • System plików prowadzi dziennik (lub log) wszystkich zmian, które mają zostać wprowadzone do systemu plików.
  • Jeśli komputer ulegnie awarii przed zakończeniem zmiany, dziennik może być użyty do przywrócenia lub poprawienia ewentualnych problemów stworzonych przez awarię.
  • Maksymalny rozmiar pliku w systemach plików ext3 wynosi 32 TB.
ext4:
  • Zaprojektowany jako następca ext3, ext4 został stworzony na podstawie serii rozszerzeń do ext3.
  • Podczas gdy rozszerzenia poprawiają wydajność ext3 i zwiększają obsługiwane rozmiary plików, deweloperzy jądra Linuxa byli zaniepokojeni problemami ze stabilnością i byli przeciwni dodawaniu rozszerzeń do stabilnego ext3.
  • Projekt ext3 został podzielony na dwa; jeden zachowany jako ext3 i jego normalny rozwój, a drugi, nazwany ext4, zawierał wspomniane rozszerzenia.
NFS (Network File System):
  • NFS to system plików oparty na sieci, umożliwiający dostęp do plików przez sieć.
  • Z punktu widzenia użytkownika nie ma różnicy między dostępem do pliku przechowywanego lokalnie a na innym komputerze w sieci.
  • NFS to otwarty standard, który pozwala każdemu na jego implementację.
CDFS (Compact Disc File System):
  • CDFS został stworzony specjalnie dla nośników dysków optycznych.
Swap File System:
  • System plików swap jest używany przez Linuxa, gdy zabraknie mu RAM.
  • Technicznie rzecz biorąc, jest to partycja swap, która nie ma określonego systemu plików, ale jest istotna dla dyskusji o systemie plików.
  • Gdy to się zdarzy, jądro przenosi nieaktywną zawartość RAM do partycji swap na dysku.
  • Chociaż partycje swap (znane również jako przestrzeń swap) mogą być przydatne dla komputerów Linuxa z ograniczoną ilością pamięci, nie powinny być traktowane jako główne rozwiązanie.
  • Partycja swap jest przechowywana na dysku, który ma znacznie niższe prędkości dostępu niż RAM.
HFS Plus lub HFS+ (Hierarchical File System Plus):
  • System plików używany przez Apple w swoich komputerach Macintosh.
  • Jądro Linuxa zawiera moduł do montowania HFS+ do operacji odczytu i zapisu.
APFS (Apple File System):
  • Zaktualizowany system plików, który jest używany przez urządzenia Apple. Zapewnia silne szyfrowanie i jest zoptymalizowany dla flash i dysków SSD.
Master Boot Record (MBR):
  • Znajdujący się w pierwszym sektorze skomputeryzowanego komputera, MBR przechowuje wszystkie informacje o sposobie, w jaki zorganizowany jest system plików.
  • MBR szybko przekazuje kontrolę funkcji ładowania, która ładuje system operacyjny.
Montowanie to termin używany do procesu przypisywania katalogu do partycji. Po udanej operacji montowania, system plików zawarty na partycji jest dostępny przez określony katalog. W tym kontekście katalog nazywany jest punktem montowania dla tego systemu plików. Użytkownicy systemu Windows mogą być zaznajomieni z podobnym pojęciem; litera dysku.

17. W Linuxie większość jednostek systemowych jest traktowana jako pliki. Aby zorganizować system i narzucić granice w komputerze, Linux używa uprawnień do plików. Uprawnienia do plików są wbudowane w strukturę systemu plików i dostarczają mechanizmu do definiowania uprawnień dla każdego pliku. Każdy plik w Linuxie posiada swoje uprawnienia do plików, które definiują akcje, które właściciel, grupa i inni mogą wykonać z plikiem. Możliwe prawa do uprawnień to Odczyt, Zapis i Wykonanie. Komenda ls z parametrem -l wyświetla dodatkowe informacje o pliku.


18. Twardy link to inny plik, który wskazuje na to samo miejsce co oryginalny plik. Polecenie ln, służy do utworzyć twardy link. 
np.
ln space.txt space.hard.txt

Oba pliki wskazują na to samo miejsce w systemie plików. Jeśli zmienisz jeden plik, zmieni się również drugi. 

Link symboliczny, zwany również symlink lub soft link, jest podobny do twardego linku, w tym sensie, że wprowadzanie zmian do linku symbolicznego zmienia również oryginalny plik. Jak pokazano poniżej w wyjściu polecenia, użyj opcji polecenia ln -s, aby utworzyć link symboliczny. Np.

ln -s test.txt mytest.txt

19. Aplikacje dla użytkowników końcowych to często skomplikowane programy napisane w skompilowanych językach. Linux używa menedżerów pakietów, które ułatwiają instalację tych programów. Menedżery pakietów różnią się w zależności od dystrybucji Linuxa. Na przykład, Arch Linux używa pacman, a Debian i Ubuntu używają dpkg i apt. Wszystkie te narzędzia pomagają w aktualizacji lokalnej bazy danych pakietów i instalacji najnowszych wersji pakietów.

20. Polecenia apt-get install, apt-get update i apt-get upgrade są używane w systemach Linux opartych na Debianie, takich jak Ubuntu, do zarządzania pakietami. 
  1. apt-get update: Używane do pobrania listy pakietów z repozytorium pakietów i aktualizacji lokalnej bazy danych pakietów. To polecenie nie aktualizuje samego oprogramowania, ale informuje system o dostępnych aktualizacjach.

  2. apt-get upgrade: Używane do aktualizacji wszystkich obecnie zainstalowanych pakietów do ich najnowszych wersji. Zwykle jest używane po apt-get update.

  3. apt-get install: Używane do instalacji nowych pakietów. Możesz podać nazwę pakietu, który chcesz zainstalować jako argument dla tego polecenia.

Przykładowe użycie tych poleceń:

sudo apt-get update # aktualizuje listę dostępnych pakietów
sudo apt-get upgrade # aktualizuje wszystkie zainstalowane pakiety
sudo apt-get install firefox # instaluje przeglądarkę Firefox

Należy posiadać uprawnienia administratora (sudo) do wykonania tych poleceń. Zawsze jest dobrą praktyką uruchamiać apt-get update przed apt-get upgrade lub apt-get install, aby upewnić się, że instalujesz najnowsze wersje pakietów.

21. Proces to uruchomiona instancja programu komputerowego. Systemy operacyjne wielozadaniowe mogą jednocześnie wykonywać wiele procesów.

Forking (rozwidlenie) to metoda, której jądro używa, aby pozwolić procesowi na stworzenie swojej kopii. Procesy potrzebują sposobu na tworzenie nowych procesów w systemach operacyjnych wielozadaniowych. Operacja fork jest jedynym sposobem na to w Linuxie.

Rozwidlenie jest ważne z wielu powodów. Jednym z nich jest skalowalność procesów. Dobrym przykładem jest popularny serwer sieciowy Apache. Rozwidlając się, Apache jest w stanie obsłużyć dużą liczbę żądań przy mniejszym zużyciu zasobów systemowych niż serwer oparty na pojedynczym procesie.

Gdy proces wywołuje fork, proces wywołujący staje się procesem nadrzędnym, a nowo utworzony proces jest nazywany jego procesem potomnym. Po fork, procesy są do pewnego stopnia niezależnymi procesami; mają różne identyfikatory procesów, ale wykonują ten sam kod programu.

Polecenia, które są używane do zarządzania procesami.

  • ps - używane do wyświetlania procesów działających na komputerze w momencie jego wywołania. Może być skonfigurowane do wyświetlania działających procesów, które należą do bieżącego użytkownika lub innych użytkowników. Podczas wyświetlania procesów nie są wymagane uprawnienia roota, ale zabijanie lub modyfikowanie procesów innych użytkowników już tak. 
  • top - używane do wyświetlania działających procesów, ale w przeciwieństwie do ps, top dynamicznie wyświetla działające procesy. 
  • kill - używane do modyfikacji zachowania konkretnego procesu. W zależności od parametrów, kill usunie, zrestartuje lub zatrzyma proces. W wielu przypadkach użytkownik uruchomi ps lub top przed uruchomieniem kill. Robi się to, aby użytkownik mógł dowiedzieć się o PID procesu przed uruchomieniem kill. 

22. Złośliwe oprogramowanie Linux obejmuje wirusy, konie trojańskie, robaki i inne typy złośliwego oprogramowania, które mogą wpływać na system operacyjny. Ze względu na szereg elementów konstrukcyjnych, takich jak struktura systemu plików, uprawnienia do plików i ograniczenia kont użytkowników, systemy operacyjne Linux są ogólnie uważane za lepiej chronione przed złośliwym oprogramowaniem.

Chociaż można argumentować, że Linux jest lepiej chroniony, nie jest odporny na złośliwe oprogramowanie. W Linuxie znaleziono i wykorzystano wiele luk bezpieczeństwa. Zasięg tych luk obejmuje od oprogramowania serwerowego po luki w jądrze. Atakujący są w stanie wykorzystać te luki i skompromitować cel. Ponieważ Linux jest oprogramowaniem open source, poprawki i łatki są często dostępne w ciągu kilku godzin od odkrycia takich problemów.

Jeśli zostanie wykonany złośliwy program, spowoduje on szkody, niezależnie od platformy. Częstym wektorem ataku na Linuxa są jego usługi i procesy. Luki są często znajdowane w kodzie serwera i procesu działającym na komputerach podłączonych do sieci. Na przykład przestarzała wersja serwera internetowego Apache mogłaby zawierać niezałataną lukę, którą może wykorzystać atakujący. Atakujący często sondują otwarte porty, aby ocenić wersję i charakter serwera działającego na tym porcie. Mając te informacje, atakujący mogą zbadać, czy są znane problemy z tą konkretną wersją tego konkretnego serwera, aby wspomóc atak. Jak w przypadku większości luk, utrzymanie komputera zaktualizowanego i zamknięcie wszelkich nieużywanych usług i portów to dobry sposób na zmniejszenie możliwości ataku na komputerze z Linuxem. 

23. Rootkit to rodzaj złośliwego oprogramowania zaprojektowanego w celu zwiększenia uprawnień nieautoryzowanego użytkownika lub udzielenia dostępu do części oprogramowania, które zazwyczaj nie powinny być dozwolone. Rootkity są również często używane do zabezpieczenia tzw. tylnych drzwi do skompromitowanego komputera.

Instalacja rootkita może być zautomatyzowana (wykonywana jako część infekcji) lub atakujący może ręcznie zainstalować go po skompromitowaniu komputera. Rootkit jest destrukcyjny, ponieważ zmienia kod jądra i jego moduły, zmieniając najbardziej podstawowe operacje samego systemu operacyjnego. Z tak głębokim poziomem kompromitacji, rootkity mogą ukryć włamanie, usunąć ślady instalacji, a nawet manipulować narzędziami do rozwiązywania problemów i diagnostyki, tak aby ich wyniki teraz ukrywały obecność rootkita. Chociaż kilka luk bezpieczeństwa w historii Linuxa pozwoliło na instalację rootkita za pomocą zwykłych kont użytkowników, zdecydowana większość kompromitacji rootkita wymaga dostępu roota lub administratora.

Ponieważ sama natura komputera jest skompromitowana, wykrycie rootkita może być bardzo trudne. Typowe metody wykrywania często obejmują uruchomienie komputera z zaufanych mediów, takich jak diagnostyczny system operacyjny live CD. Skompromitowany dysk jest montowany, a z zestawu narzędzi zaufanego systemu, można uruchomić zaufane narzędzia diagnostyczne do inspekcji skompromitowanego systemu plików. Metody inspekcji obejmują metody oparte na zachowaniu, skanowanie sygnatur, skanowanie różnic i analizę zrzutu pamięci.

Usunięcie rootkita może być skomplikowane i często niemożliwe, zwłaszcza w przypadkach, gdy rootkit znajduje się w jądrze; reinstalacja systemu operacyjnego jest zazwyczaj jedynym prawdziwym rozwiązaniem problemu. Rootkity firmware zazwyczaj wymagają wymiany sprzętu.

chkrootkit to popularny program oparty na Linuxie, zaprojektowany do sprawdzania komputera pod kątem znanych rootkitów. Jest to skrypt powłoki, który używa powszechnych narzędzi Linuxa, takich jak strings i grep, do porównywania sygnatur podstawowych programów. Przeszukuje również system plików /proc w poszukiwaniu nieścisłości, porównując znalezione tam sygnatury z wynikiem ps.

Pomimo że jest pomocny, należy pamiętać, że programy do sprawdzania rootkitów nie są w 100% niezawodne.

np. sudo ./chkrootkit 

24. Chociaż narzędzia linii poleceń są zazwyczaj zaprojektowane do wykonywania konkretnego, dobrze zdefiniowanego zadania, wiele poleceń można łączyć w celu wykonywania bardziej złożonych zadań za pomocą techniki zwanej potokiem (piping). Potok polega na łączeniu poleceń, kierując wyjście jednego polecenia na wejście innego.

Na przykład, polecenie ls służy do wyświetlania wszystkich plików i katalogów danego katalogu. Polecenie grep przeszukuje plik lub tekst w poszukiwaniu określonego ciągu znaków. Jeśli ciąg zostanie znaleziony, grep wyświetla całą zawartość folderu, w którym znaleziono ciąg.

Dwa polecenia, ls i grep, można połączyć w potok, aby odfiltrować wyjście ls. Jest to pokazane na wyjściu polecenia ls -l | grep host i polecenia ls -l | grep file.

np. ls -l | grep host