🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.os.linux.newbie
Article #139623

Zabezpieczenie Sys. Debian-Ubuntu

#139623
From: Jacek Marcin Jaworski
Date: Sat, 03 Aug 2024 11:43
4646 lines
172533 bytes
                    Zabezpieczenie Sys. Debian-Ubuntu

                                                             autor:

    [1]Jacek Marcin Jaworski

                                                         pseudonim:

    [2]Energo Koder Atlant

                                                  pomocnicy autora:

    BRAK

                                                         utworzono:

    2020-07-12

                                               wersja: 5220 z dnia:

    2024-08-03

                                                           miejsce:

    Gdynia, Pruszcz Gdański

                                                            system:

    Linuks (distro: Kubuntu oraz Tiskel)

                                                           program:

    LibreOffice

    Spis treści

    [3]Streszczenie 5

    [4]O autorze 5

    [5]Treść tej monografii 7

    [6]Cele tej monografii 7

    [7]Założenia wstępne 7

    [8]Grupa docelowa 8

    [9]Czego nie opisałem w tej monografii 8

    [10]Brak gwarancji 100% bezpieczeństwa sys. 8

    [11]Forma tej monografii 9

    [12]Słownik pojęć 9

    [13]Konwencje w tekście 9

    [14]Podstawowe skróty edytora tekstu Nano 10

    [15]1 Mechanizmy bezpieczeństwa w sys. Linuks 11

    [16]1.1  Logiczny  podział  dysku  twardego:  partycje  i plik
    /etc/fstab 11

    [17]1.2 Użytkownicy w sys. Linuks 12

    [18]1.3 Sys. uprawnień w sys. Linuks 13

    [19]1.4 Piaskownice 14

    [20]1.4.1 AppArmor 14

    [21]1.4.2 Snap 14

    [22]1.4.3 AppImage 15

    [23]1.4.4 Ogniste Więzienie czyli Firejail 15

    [24]1.5 Zapory sieciowe 16

    [25]1.6 Co jest nie tak z VPN? 16

    [26]1.7 Co jest nie tak z siecią Tor? 16

    [27]2 Budowa sieci Internet 18

    [28]2.1 Struktura sieci Internet 18

    [29]2.2 Protokoły w sieci Internet 18

    [30]2.2.1 Protokół IP 18

    [31]2.2.2 Protokół UDP 18

    [32]2.2.3 Protokół TCP 19

    [33]2.3 Sieć lokalna 19

    [34]2.4 NAT czyli lokalna brama do globalnej sieci Internet 19

    [35]2.5 Sieć globalna, czyli Internet 20

    [36]3 Ideologia używania sys. Linuks w sieci Internet 20

    [37]3.1  Urządzenia  sieciowe:  skompromitowane i potencjalnie
    bezpieczne 20

    [38]3.2 Fakty o Sys. Linuks 21

    [39]3.3 Ideologia wynikająca z faktów 22

    [40]3.3.1 Schemat codziennej pracy z sys. Linuks 22

    [41]3.3.2 Comiesięczne czynności konserwatorskie w sys. Linuks
    23

    [42]3.3.3 Skrypty konfiguracyjne uruchamiane po instalacji sys.
    24

    [43]3.3.4  Skrypt  czyszczący  uruchamiany przed zalogowaniem,
    przed uśpieniem i przed restartem 24

    [44]3.3.5 Skrypt aktualizacyjny 24

    [45]3.3.6 Skrypt konf. zaporę sieciową UFW 25

    [46]3.3.7 Skrypt konf. Ogniste Więzienie 25

    [47]4 Wybór modelu bezpieczeństwa w pracy z sys. Linuks 25

    [48]4.1 Sys. online 25

    [49]4.2 Sys. offline ale online na żądanie 26

    [50]4.3 Sys. z lustrzanym repo 26

    [51]5 Przygotowanie do instalacji sys. Linuks 29

    [52]5.1 Jaką dystrybucję wybrać? 29

    [53]5.1.1 Wybierz dystrybucję pozwalającą na instalację bez
    dostępu do sieci Internet 29

    [54]5.1.2  Są dystrybucje bez zamkniętych pakietów - ale czy
    warto je instalować? 29

    [55]5.2  Jak prawidłowo zainstalować sys. Linuks mając tylko
    skompromitowany sys. komp. 29

    [56]5.3 Pobieranie obrazu instalki sys. Linuks 30

    [57]5.3.1 Pobranie sum kontrolnych 30

    [58]5.3.2 Odłącz komp. od sieci 30

    [59]5.3.3 Spr. pobranego obrazu 30

    [60]5.3.4 Nagrywanie obrazu 31

    [61]5.3.4.1 Rozpoznawanie napędów w sys. Linuks 31

    [62]5.3.4.2 Zapis obrazu na pamięć USB 31

    [63]5.3.4.3 Spr. poprawności zapisu na pamięć USB 32

    [64]5.4 Uruchomienie instalki 32

    [65]5.5 Partycjonowanie dysku 32

    [66]5.6 Pamięć wymiany 34

    [67]5.7 Generowanie silnego hasła 34

    [68]5.7.1 cracklib-check 35

    [69]5.7.2 John the Ripper 36

    [70]5.7.3 Zmiana hasła 36

    [71]6 Instalacja sys. Linuks 37

    [72]6.1 Nie łącz się z siecią lokalną ani z Internet 37

    [73]6.2 Wybierz punkty montowania przygotowanych partycji 37

    [74]6.3 Wprowadź hasło jakie wygenerowałeś 37

    [75]7 Konfiguracja po instalacji sys. Linuks 38

    [76]7.1 Skonfiguruj sudo 38

    [77]7.1.1 Dodaj siebie do grupy sudo 38

    [78]7.1.2 Ustaw sudo tylko dla siebie 38

    [79]7.1.3 Włącz sobie użycie sudo bez hasła 38

    [80]7.2 Skonfiguruj zaporę sieciową UFW 38

    [81]7.2.1 Domyślne blokowanie całego ruchu sieciowego 39

    [82]7.2.2 Odblokowanie możliwości łączenia się z serwerami DNS
    39

    [83]7.2.3  Odblokowanie  synchronizacji zegara z serwerem czasu
    NPT 40

    [84]7.2.4 Odblokowanie możliwości łączenia z repo Ubuntu 40

    [85]7.2.5 Odblokowanie możliwości łączenia z serwerami Google
    41

    [86]7.2.6   Odblokowanie  możliwości  łączenia  z  serwerem
    duckduckgo.com 41

    [87]7.3 Konfiguracja prog. gł. sys. Linuks 41

    [88]7.4 Skonfiguruj partycje 42

    [89]7.5 Wyłącz plik wymiany 43

    [90]7.6 Włącz automatyczne ubijanie zbyt żarłocznego procesu 43

    [91]7.7 Zaostrz prawa dostępu do katalogów użytkowników 44

    [92]7.7.1 Katalogi domowe 44

    [93]7.7.2 UMASK 45

    [94]7.7.2.1 UMASK globalny 45

    [95]7.7.2.2 Problemy z globalnym UMASK 45

    [96]7.7.2.3 UMASK lokalny 46

    [97]7.7.3 DIR_MODE 46

    [98]7.7.4 Ważne pliki sys. 46

    [99]7.8 Usuń pliki bez właściciela 46

    [100]7.9 Usuń uszkodzone linki symboliczne 46

    [101]7.10 Wyłącz konsolę dla nowych użytkowników 47

    [102]7.11 Konfiguracja sys. Linuks dla programisty 47

    [103]7.11.1 Włącz zrzuty obrazów pam. prog. 47

    [104]7.12 Konfiguracja sys. Linuks dla nie programisty 48

    [105]7.12.1 Wyłącz zrzuty prog. gł. i pozostałych prog. 48

    [106]7.13 Konfiguracja użytkowników 48

    [107]7.14 Konfiguracja grup użytkowników 48

    [108]7.15 Ogniste Więzienie 49

    [109]7.15.1 Instalacja Ogniste Więzienie 49

    [110]7.15.2 Włączenie Ogniste Więzienie 49

    [111]7.15.3 Uruchamianie prog. w piaskownicy Ogniste Więzienie
    i bez niej 50

    [112]7.15.4  Spr.  czy  prog.  jest  uruchomiony  w piaskownicy
    Ogniste Więzienie 50

    [113]7.15.5 Strojenie Ogniste Więzienie 50

    [114]7.15.6 Dodawanie brakujących profili Ogniste Więzienie 52

    [115]7.15.7 Globalne wyłączenie Ogniste Więzienie 52

    [116]7.16 SSH 53

    [117]7.16.1 Instalacja ssh 53

    [118]7.16.2 Konfiguracja sshd 53

    [119]7.16.2.1 Wygeneruj parę kluczy 54

    [120]7.16.2.2 Załaduj publiczne klucze SSH na serwer 54

    [121]7.16.3 Wykonaj instrukcję SSH Hardening Guides 55

    [122]7.16.4 Użyj ssh-audit by spr. konf. serwera ssh 55

    [123]7.17 Skonfiguruj CUPS 55

    [124]7.18 Skonfiguruj zegary 56

    [125]7.19 Skonfiguruj sieć 56

    [126]7.20 Awaryjne połączenie z siecią Internet 59

    [127]7.21 Postarzanie prog. gł. 59

    [128]7.21.1 Blokada aktualizacji prog. gł. 59

    [129]7.21.2 Instalacja najstarszego prog. gł. w repo 59

    [130]7.21.3 Uruchom ponownie sys. komp. wybierając w boot menu
    starą wer. prog. gł. 60

    [131]7.21.4 Wyłączenie blokad usuwania zbędnych wer. prog. gł.
    60

    [132]7.21.5 Usuwanie zbędnych prog. gł. 60

    [133]7.22 Skrypt aktualizujący sys. 61

    [134]8 Ręczna diagnostyka bezpieczeństwa 61

    [135]8.1 Diagnostyka transmisji w sieci Internet 61

    [136]8.2 Testy zapory sieciowej 62

    [137]8.2.1 Test skanowania portów 62

    [138]8.2.2 Test dostępu do otwartego portu zablokowanego przez
    UFW 62

    [139]8.3 Skaner debsums (spr. sumy kontrolne pakietów) 63

    [140]8.4 Skaner Lynis (skaner bezpieczeństwa) 63

    [141]8.4.1 Instalacja 63

    [142]8.4.2 Skanowanie 63

    [143]8.4.3 Interpretacja wyników 63

    [144]8.5 Skaner Rkhunter (poszukuje rotkitów) 64

    [145]8.5.1 Instalacja 64

    [146]8.5.2 Aktualizacja 64

    [147]8.5.3 Skanowanie 64

    [148]8.5.4 Interpretacja wyników 64

    [149]8.6 Skaner Debsecan (poszukuje exploit-ów) 65

    [150]8.6.1 Instalacja 65

    [151]8.6.2 Skanowanie i interpretacja wyników 65

    [152]8.7 Skaner Fail2ban (pokazuje nieudane próby logowania) 65

    [153]8.8 Skanery sieciowe 66

    [154]9 Automatyzacja monitorowania bezpieczeństwa 68

    [155]9.1 Skrypt monitorujący nawiązywanie i rozłączanie poł.
    przychodzących i wychodzących 68

    [156]9.2 Skrypt monitorujący odrzucanie poł. przychodzących i
    wychodzących 68

    [157]9.3 Skrypt monitorujący stan aktywnych połączeń w sieci
    Internet 68

    [158]10 Skryte korzystanie z sys. Linuks 69

    [159]10.1 Skrypt czyszczący 69

    [160]10.2 Wyłącz raporty o błędach 70

    [161]10.3 Wyłącz raporty popularności pakietów 70

    [162]10.4 Wyłącz informowanie o obecności w sieci 71

    [163]11 Skryte korzystanie z sieci Internet 72

    [164]11.1 Przeszkody w skrytym korzystaniu z Internetu 72

    [165]11.1.1 Przeglądarki mają pełen dostęp do kat. domowych
    wszystkich użytkowników w sys. Linuks. 72

    [166]11.1.2 Wysyłanie ID sys. op. i ID przeglądarki 72

    [167]11.1.3 Operatorzy handlują historią odwiedzanych s. WWW 73

    [168]11.1.4 Operatorzy publikują zakresy adresów IP 73

    [169]11.1.5 Sprawa Amejzon 73

    [170]11.1.6 Brak manifestów do s. HTML 73

    [171]11.2 Serwery DNS 74

    [172]11.3 Przeglądarka Tor 74

    [173]11.4 Przeglądarka Wodny Lis 75

    [174]11.5 Poprawa prywatności w Przeglądarce Tor, Wodny Lis i
    Ognisty Lis 76

    [175]11.5.1 Włącz kasowanie ciasteczek przy zamykaniu 76

    [176]11.5.2 Włącz kasowanie całej historii przy zamykaniu 76

    [177]11.5.3 Zainstaluj dodatek HTTPS Everywhere 76

    [178]11.5.4 Zainstaluj dodatek Privacy Badger 76

    [179]11.6 Przeglądarka Chromium 76

    [180]11.7 Poprawa prywatności w Chromium i Chrome 77

    [181]11.7.1 Włącz kasowanie ciasteczek przy zamykaniu 77

    [182]11.7.2 Włącz kasowanie całej historii przy zamykaniu 77

    [183]11.7.3 Zainstaluj dodatek HTTPS Everywhere 77

    [184]11.7.4 Zainstaluj dodatek Privacy Badger 77

    [185]11.7.5 Autouzupełniaj wyszukiwania i adresy URL 77

    [186]11.7.6 Ulepsz wyszukiwanie i przeglądanie 77

    [187]11.7.7  Wyczyść  pliki  cookie  i dane witryn w momencie
    zamknięcia Chromium/Chrome 78

    [188]11.7.8  Wysyłaj  żądanie  „Bez  śledzenia” podczas
    przeglądania 78

    [189]11.7.9 Kontynuuj działanie aplikacji w tle po zamknięciu
    Chromium 78

    [190]11.8 Wyłączenie obsługi JavaScript w przeglądarkach 78

    [191]11.8.1 Przeglądarka Tor, Wodny Lis, Ognisty Lis 78

    [192]11.8.2 Chromium, Chrome 78

    [193]11.9 Inne przydatne dodatki 78

    [194]11.9.1 I don't care about cookies 78

    [195]11.9.1.1 Przeglądarka Tor, Wodny Lis i Ognisty Lis 78

    [196]11.9.1.2 Chromium i Chrome 78

    [197]11.9.2 Otwieranie linku i przejście do nowej karty jednym
    mlaskiem środkowego przycisku myszy 79

    [198]11.9.2.1 Przeglądarka Tor, Wodny Lis i Ognisty Lis 79

    [199]11.9.2.2 Chromium i Chrome 79

    [200]11.10 Wyszukiwarki 79

    [201]11.10.1 DuckDuckGo.com 79

    [202]11.10.2 Google.com 79

    [203]11.11 Skryte przeglądanie sieci na co dzień 79

    [204]12 Lektura uzupełniająca 81

    Streszczenie

    Niniejsza monografia opisuje następujące zagadnienia dotyczące
    zabezpieczenia  stacji roboczej z sys. Linuks (Debian, Ubuntu i
    pochodne):
      * Budowa sieci Internet;
      * Niebezpieczeństwa związane z korzystaniem z sieci Internet;
      * Bezpieczeństwo w sieci lokalnej;
      * Mechanizmy bezpieczeństwa w sys. Linuks;
      * Koncepcja  użycia komputera z sys. Linuks działającego w
        sieci Internet;
      * Przygotowania do instalacji sys. Linuks;
      * Instalacja sys. Linuks;
      * Konfiguracja sys. Linuks po instalacji;
      * Konfiguracja sys. Linuks dla programisty
      * Konfiguracja sys. Linuks dla nie programisty
      * Ręczna diagnostyka bezpieczeństwa sys. Linuks;
      * Automatyzacja monitorowania bezpieczeństwa w sys. Linuks;
      * Skryte korzystanie z sys. Linuks;
      * Skryte korzystanie z sieci Internet.

    Miejmy świadomość, że ta monografia powstała tylko z dwóch
    powodów:
     1. Mi nie jest wszystko jedno!
     2. Tysiącom polskich adminów jest wszystko jedno co się dzieje
        z waszymi kompami.

    O autorze

    Programuję  komputery  od  lutego  1997r.  Mam tytuł Technika
    Elektronika  spec.  Systemy  Komputerowe.  Zaliczyłem  3  lata
    studiów  informy  na  polibudzie  (jednak  dyplomu  inż.  nie
    zrobiłem).

    W latach 1999-2017 byłem programistą aplikacji w C++ dla sys.
    Windows. W latach 2018-2022 byłem programistą aplikacji w C++
    na sys. Linuks i Android.

    Jeśli chodzi o mój kierunek rozwoju, to chcę być jak najlepszym
    inżynierem i architektem sys. i to nie tylko komputerowych.

    Moje zainteresowania zawodowe to przede wszystkim:

    🟒Studia nad architekturą wzorcowych sys. komp.🟒Studia nad
    nowymi algorytmami (Jednak nie SI)🟒Studia nad bezpieczeństwem
    współczesnych sys. komp.🟒Studia nad prywatnością użytkowników
    współczesnych sys. komp;

    🟒Podnoszenie jakości, efektywności i bezpieczeństwa w pracy
    przez realizację racjonalizatorskich projektów;

    🟒Programowanie w językach: Asembler, C++ i D.

    Wystrzegam się jak mogę „produktów” wielkich korpo które z
    niejawnych     powodów     wynajdują    tylko    patologiczne
    wynalazki[205]^1.

    Jestem poszukiwaczem i kolekcjonerem "dobrych zasad życiowych"
    i "dobrych zasad inżynierskich". Dzięki tym zwięzłym, hasłowym
    zasadom często widzę sens podejmowania większego wysiłku by
    uzyskać obiektywnie dobry efekt zamiast stosowania półśrodków.

    Zdrowe  zasady  pozwalają  zostawiać  za  sobą  działające
    rozwiązania zamiast partactw.

    Treść tej monografii

    Cele tej monografii
     1. Stworzenie  dobrego, sprawdzonego i szybkiego do wdrożenia
        przepisu na prawidłową konfigurację stacji roboczej z sys.
        Linuks w domu i w pracy.
        Prawidłowa    konfiguracja    zapewnia:   bezpieczeństwo,
        prywatność i wydajność;
     2. Stworzenie  dobrego, sprawdzonego i szybkiego do wdrożenia
        przepisu na prawidłową konfigurację sieci domowej;
     3. Propagowanie  wiedzy  o  alternatywnych sposobach używania
        komputerów i sieci.

    Wizja

    Maksymalne bezpieczeństwo, prywatność i wydajność pracy na
    komputerze z sys. Linuks.

    Strategia

    Zero  zaufania  do:  producentów  sprzętu,  oprogramowania  i
    dostawców usług telekomunikacyjnych.

    Taktyka

    Blokowanie wszystkiego co zbędne i podejrzane.

    Kasowanie wszystkiego co zbędne i podejrzane.

    Założenia wstępne

    Aby osiągnąć w. postawione cele muszę przyjąć pewne założenia:
     1. Komputer     działa    normalnie    i    fizycznie    jest
        bezpieczny[206]^2, czyli jest godny zaufania;
     2. Instalowana  dystrybucja  sys. Linuks to Debian, Ubuntu lub
        ich pochodne;
     3. Zaraz po instalacji sys. Linuks jest źle skonfigurowany;
     4. Prog.  gł.  sys.  Linuks  działa  normalnie i nie zawiera
        tylnych furtek[207]^3, czyli jest godny zaufania;
     5. Programy  narzędziowe:  sha256, dig, whois, ufw i firejail
        działają normalnie i nie zawierają tylnych furtek, czyli są
        godne zaufania;
     6. Aplikacje działające w przestrzeni użytkownika mogą mieć
        tylne furtki, czyli nie są godne zaufania.

    Grupa docelowa

    Grupa  docelowa  to  użytkownicy  sys.  Linuks  którzy  chcą
    zmaksymalizować swoje bezpieczeństwo, prywatność i wydajność
    podczas  korzystania  ze  swoich  stacji roboczych wpiętych do
    sieci Internet.

    W szczególności obejmuje to osoby:
      * Entuzjaści sys. Linuks - głównie użytkownicy domowi;
      * Zawodowi    użytkownicy    sys.    Linuks   nie   będący
        administratorami.

    Czego nie opisałem w tej monografii

    Nie  udaję, że znam się na wszystkich odmianach sys. Linuks,
    dlatego piszę tylko o dystrybucji Debian, Ubuntu i pochodnych,
    bo ich na co dzień używam.

    Skupiam się na użytkowniku stacji roboczej z sys. Linuks. Opis
    zabezpieczania serwerów pozostawmy certyfikowanym adminom.

    Nie poruszam kwestii usług VPN, bo uważam że tylko spowalniają
    dostęp do sieci. Bo nie ma co wierzyć, że dostawca VPN „jest
    niezależny” i wolny od układów ze „spec. światkiem”.

    Nie poruszam kwestii skanerów w czasie rzeczywistym takich jak
    Snort, bo po prostu wiara, że włamywacz będzie tak miły, że
    pozwoli wysłać wiad. el. że coś się złego dzieje, to jakaś
    kompletna głupota. A tak działają te sys.

    W zakresie poczty el. też są interesujące i kluczowe tematy w
    zakresie  prywatności: chodzi o podpisy el. wiad. el. oraz ich
    szyfrowanie. Jednak poziom kultury prywatności i bezpieczeństwa
    jest  w  Polsce  tak niski, że nawet nikt nic nie mówi o tych
    sprawach - nawet w firmach nikogo to nie obchodzi - w ogóle nie
    znam   nikogo  kto  by  chciał  wymieniać  się  szyfrowanymi
    wiadomościami!!! Jak coś się zmieni to będzie aktualizacja tego
    dok. Na razie szkoda słów, czasu i szarpaniny…

    Brak gwarancji 100% bezpieczeństwa sys.

    Starałem się opracować jak najlepszą instrukcję zasad pracy z
    sys. Linuks głównie po to by samemu z niej korzystać w domu i w
    pracy. Jednak nie będę ukrywał, że zagadnieniami bezpieczeństwa
    informatycznego zajmuję się głównie po godzinach. Dlatego:

    AUTOR  NIE BIERZE ODPOWIEDZIALNOŚCI ZA WYKONYWANIE PONIŻSZYCH
    CZYNNOŚCI NA KOMPUTERZE CZYTELNIKA.

    AUTOR  NIE  GWARANTUJE  100%  BEZPIECZEŃSTWA  SYS.  LINUKS  PO
    ZASTOSOWANIU PONIŻSZYCH INSTRUKCJI.

    AUTOR   NIE   GWARANTUJE  100%  PRYWATNOŚCI  W  INTERNECIE  PO
    ZASTOSOWANIU PONIŻSZYCH INSTRUKCJI.

    Forma tej monografii

    Słownik pojęć

    Na potrzeby tej monografii wprowadzam wygodne skróty myślowe:
      * Intruz  =  włamywacz  komputerowy  lub  inaczej kraker lub
        inaczej  "etyczny haker" czyli kanalia na etacie rządowym.
        Osoba ta włamuje się zarówno przez sieć, jak też gdy ma
        fizyczny dostęp do komputera;
      * prog. = program;
      * bibl. = biblioteka;
      * prog. gł. = program główny = jądro = w j. ang. kernel.
      * Linuks  =  Ubuntu,  Debian  (ale  nie Redhat, Fedora, Suse,
        Gento, Arch);
      * sys. = system;
      * sys. op. = tak jak j.w. Linuks;
      * sys.  komp.  =  system  komputerowy, komputer lub sterownik
        mikroprocesorowy;
      * el. = elektronika, elektroniczny;
      * pam. = pamięć;
      * proc. = procesor;
      * konsola  =  emulator  terminala  Konsole  lub  Terminal lub
        XTerm;
      * $USER = twój login w sys. Linuks;
      * $HOME   =   twój  katalog  domowy  w  sys.  Linuks.  Czyli
        /home/$USER;
      * $TWOJE_IP  = twoje IP: takie jakie sobie wymyślisz i takie
        jakie  zwraca  polecenie  ip  a  po  poprawnej konfiguracji
        sieci;
      * edytor = edytor tekstu Nano;
      * konf. = konfiguracja;
      * wiad. el. = wiadomość elektroniczna.

    Konwencje w tekście
      * Myślę po polsku, mówię po polsku, od urodzenia mieszkam w
        Polsce, więc piszę i programuję po polsku.
        Piszę  Linuks,  bo w szkole podstawowej uczono mnie, że w
        polskim  alfabecie nie ma x – jego rolę pełni ks. Więc
        logiczne  jest,  że  pisząc po polsku używam wyłącznie
        polskiego alfabetu;
        Obcych nazw takich jak Linuks, Ubuntu, Debian, Internet nie
        odmieniam przez przypadki. Bo logiczne jest, że obce słowa
        nie podlegają polskim zasadom odmiany przez przypadki;
        Wszędzie   gdzie  to  możliwe  stosuję  polskie  terminy
        techniczne i dla jasności podaję jak się je pisze w j. ang.
      * Nie używam upiększających znaków dolara przed poleceniami,
        by zwiększyć szybkość kopiowania tych poleceń (wystarczy
        dwumlask[208]^4);
      * Polecenia wymienione w tekście wykonuje się w konsoli;
      * Objętości plików będę podawał w starym dobrym stylu gdzie
        1KB = 1024 bajtów, 1MB = 1KB * 1024, 1GB = 1MB * 1024, 1TB
        = 1GB * 1024;
      * Szybkości  transferu  danych będę podawał w jednostkach
        wielkości  plików  na  sekundę.  Czyli  np. 1MB/s (czyli
        1024*1024  bajtów/s),  a  nie jak podają oszuści 1Mbit/s
        (czyli 1000 000 / 8 = 125 000 bajtów/s).
      * Ważniejsze terminy i treści w tekście są pogrubiane.
      * Uwagi  krytyczne  są  w  kolorze  czerwonym,  pogrubione i
        wyśrodkowane.

    Podstawowe skróty edytora tekstu Nano
      * Do  wprowadzania  zmian w sys. będzie nam potrzebny edytor
        tekstu.   Nano   jest   chyba   dostępny   we   wszystkich
        dystrybucjach.  A  na  pewno  jest  dostępny  w Debianie i
        Ubuntu.
      * Nie zakładam, że znasz j. ang.: więc podam niezbędne skróty
        klawiszowe edytora Nano:

    Zaznacz tekst

    Prawy Alt + a

    Kopiuj zaznaczony tekst

    Prawy Alt + 6

    Wklej tekst ze schowka Nano

    Ctrl + u

    Wklejanie tekstu ze schowka XWindows

    Ctrl + Shift + v

    Wytnij

    Ctrl+k

    Zapis pliku

    Ctrl + s

    Wyjście z edytora Nano

    Ctrl + x

                1Mechanizmy bezpieczeństwa w sys. Linuks

    W sys. Linuks można wyróżnić hierarchię ograniczeń jakie można
    nakładać na użytkowników i na uruchamiane prog.:
     1. Partycje,    plik    /etc/fstab:    umożliwia   zezwolenie
        użytkownikom   na  montowanie  partycji  w  sys.  plików,
        umożliwia   blokowanie  uruchamiania  prog.  i  skryptów,
        umożliwia   blokowanie   tworzenia  urządzeń  blokowych,
        wyłączenie aktualizacji czasu dostępu do kat. i plików;
     2. Sys. plików atrybuty drwxrwxrwx: umożliwiają nadawanie praw
        odczytu,  zapisu  i  wykonania  na  plikach  i  katalogach.
        Podział uprawnień jest trójstopniowy: właściciel, grupa i
        pozostali.
     3. Piaskownica  Firejail:  Umożliwia ograniczenie dostępu do
        kat.   i  plików  dla  danego  prog.  uruchamianego  przez
        użytkownika. Działa to w oparciu o mechanizm chroot (prog.
        widzi  spreparowany  kat. jako kat. główny czyli "/" (bez
        cudzysłowu)).

    DLA  KAŻDEGO PROG. firejail pozwala na pełne przedefiniowanie
    konf. sieci (łącznie z adresami IP i MAC).

    Jednak kontrola ruchu sieciowego jest ustalana na poziomie sys.
    op. (a nie piaskownicy w której działa dany prog.).
     4. Zapora sieciowa UFW: Umożliwia globalną kontrolę w sys. op.
        (niezależnie od firejail) gdzie się można łączyć i skąd się
        można łączyć.

1.1Logiczny podział dysku twardego: partycje i plik /etc/fstab

    Dysk komputerowy, HDD, SSD lub NVM, wygodnie jest podzielić na
    mniejsze, logiczne części i wykorzystywać je do różnych celów.

    Wydzieloną, logiczną część dysku nazywamy partycją.

    Dzięki temu można zainstalować wiele sys. op. na jednym sys.
    komp.

    Okazuje się, że z punktu widzenia bezpieczeństwa warto mieć
    specjalne partycje. Umożliwia to kontrolę ważnych katalogów w
    sys.   op.:   /boot  (prog.  gł.  sys.  Linuks),  /tmp  (pliki
    tymczasowe) , /var (dane sys. op.), /opt (prog. od zewnętrznych
    dostawców),  /usr/local  (prog. i bibl. instalowane w sys. op.
    przez użytkownika) . Kontrola ta dotyczy przede wszystkim:
     1. Kontroli maks. wielkości tych katalogów;
     2. Kontroli z jakich partycji można uruchamiać prog.

    Plik  /etc/fstab  definiuje  punkty montowania napędów w sys.
    Linuks.

    Napędy pojawiają się w sys. jako pliki w kat. /dev natomiast
    dostęp do ich zawartości uzyskuję dopiero gdy je zamontuję je
    do jakiegoś katalogu w sys. plików.

    Ten  katalog  wcześniej  nawet nie musi być pusty. Montowanie
    napędów omówimy na poniższym przykładzie. Wybrałem go bo do
    montowania tej partycji używałem kilka niestandardowych opcji.
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /var        ext2 defaults,noex
ec,nosuid,nodev        0       2
     1. Pierwsze pole to nazwa urządzenia lub adres sieciowy dysku.
        Dawniej w tym miejscu pojawiało się urządzenie z kat. /dev
        (np.:  /dev/hda1  ).  Problem jaki kogoś zabolał, to brak
        rozróżniania napędów w sys. op. Dlatego teraz stosuje się
        identyfikatory  UUID  lub  LABEL  .  LABEL  to  znana z DOS
        etykieta  partycji.  Natomiast  UUID  to  wynalazek  w sys.
        Linuks który jest rodzajem sumy kontrolnej identyfikującej
        jednoznacznie daną partycję (nie ma takiej drugiej na Ziemi
        ani  w  Kosmosie).  Stosowanie  LABEL  lub  UUID  daje  nam
        możliwość stosowania dokładnie określonych opcji montownia
        dla określonych partycji na urządzeniach podłączanych do
        komp. z sys. Linuks.
     2. Druga opcja to kat. montowania w sys. plików. Tutaj jest to
        /var .
     3. Trzecia opcja to sys. plików. Tutaj jest to ext2. ext2 nie
        ma  dziennika  zmian  na  dysku,  co  oznacza, że powinien
        działać szybciej niż nowsze sys. plików. Ja go stosuję
        wszędzie tam, gdzie dane się nie zmieniają lub ich utrata
        nie ma znaczenia.
     4. Czwarta  opcja  to zbiór flag montowania. Tu są to flagi:
        domyślna,  zakaz  uruchamiania  prog. z tej partycji, brak
        możliwości tworzenia plików z atrybutem suid (uruchamiania
        prog. jako właściciel pliku) ani sgid (uruchamiania prog.
        jako członek grupy właściciela pliku), i brak możliwości
        tworzenia  urządzeń  (blokowych  ani  znakowych)  na  tej
        partycji.
     5. Piąta  opcja  jest przeznaczona dla prog. kopi zapasowej i
        określa czy ma być robiona kopia tej partycji (1) czy nie
        (0). Tu zaznaczono, że nie ma podlegać archiwizacji.
     6. Szósta opcja określa czy sys. plików tej partycji ma być
        spr. w trakcie uruchamiania sys. operacyjnego. Dla partycji
        montowanej  w  korzeniu, czyli w katalogu / powinna to być
        wartość  1.  Natomiast  dla  pozostałych  partycji  2. W
        dokumentacji  nie podano uzasadnienia tej numerologii liczb
        magicznych.

1.2Użytkownicy w sys. Linuks

    Główny podział użytkowników w sys. Linuks to: root (czyli super
    użytkownik) i użytkownicy.

    Zasada   jest   taka:   root   (teoretycznie)  może  wszystko,
    użytkownicy mogą tylko tyle by móc normalnie pracować.

    Użytkownicy w sys. Linuks należą do grup użytkowników. Daje to
    im różne przywileje. Np. dostęp do stacji dyskietek, napędu
    CD-ROM,  drukarki, używania polecenia sudo (czyli uruchamiania
    poleceń z prawami root), albo możliwość montowania patyków USB
    albo katalogów sieciowych[209]^5.

    W  praktyce dziś nie pracuje się na koncie root. Zamiast tego
    korzysta się z kont jakie należą do grupy sudo.

    Polecenie  sudo pozwala na wykonanie polecenia z prawem root-a.
    Najczęściej  są  to  polecenia dotyczące instalacji prog. z
    sieciowych repozytoriów poleceniami apt.

    sudo  jest  też używany do uruchamiania edytora tekstu w celu
    edycji systemowyuch plików konfiguracyjnych.

1.3Sys. uprawnień w sys. Linuks

    Sys. Linuks na poziomie katalogów i plików rozróżnia 3 grupy
    uprawnień:
      * Właściciel (nie wiadomo czemu po ang. jest to: user);
      * Grupy do których należy właściciel (w j. ang.: group);
      * Pozostali użytkownicy sys. (w j. ang.: others) należący do
        grup do jakich nie należy właściciel.

    Każda z tych grup ma 3 stopnie dostępu:
      * Odczyt (w j. ang.: read, w skrócie r);
      * Zapis (w j. ang.: write, w skrócie w);
      * Wykonanie  (w  j. ang.: execute, w skrócie x): dla plików
        oznacza możliwość uruchomienia takiego pliku (z prog. lub
        skryptem)

    Flaga wykonania ma inne znaczenie dla pliku i dla katalogu.

    W  przypadku katalogu ustawiona flaga odczytu pozwala na odczyt
    zawartości  katalogu.  Jednak aby odczytać metadane plików w
    katalogu (wielkości plików i ich czasy) musi mieć on ustawioną
    flagę wykonania.

    Katalog  to plik z ustawioną flagę d. Format pliku opisujący
    zaw. katalogu jest ściśle zdefiniowany, a jego dane dostępne są
    za  pośrednictwem  sys.  operacyjnego  (w  naszym przypadku to
    Linuks).

    Jakie są prawa dostępu do pliku dowiesz się dzięki poleceniu
    ls, np:
$ ls -al /home
razem 28
drwxr-xr-x  4 root        root         4096 paź 11 18:28 .
drwxr-xr-x 20 root        root         4096 lip 18  2017 ..
drwx------ 57 energokoder energokoder  4096 sty 30 08:02 energokoder
drwx------  2 root        root        16384 gru 19  2019 lost+found

    Domyślnie prawa dostępu do katalogu domowego są takie:
drwxr-xr-x

    Tak więc domyślnie katalog domowy (czytając od lewej):
      * Jest katalogiem: flaga d;
      * Właściciel może pobierać listę plikówl, dodawać i usuwać
        pliki oraz odczytywać ich metadane: rwx;
      * Grupa  może pobierać listę plikówl oraz odczytywać ich
        metadane: r-x;
      * Pozostali może pobierać listę plikówl oraz odczytywać ich
        metadane: r-x;

    Te domyślne prawa dosępu drwxr-xr-x są złe, bo umożliwiają
    pełen wgląd w katalog domowy innym użytkownikom (nie tylko z
    grup   do   których  należysz  ale  wszystkim  w  twoim  sys.
    Linuks).[210]^6

    Dlatego domyślne prawa należy zaostrzyć. Jak widać ja już to
    zrobiłem   bo  prawa  dostępu  do  mojego  katalogu  domowego
    (/home/energokoder)  to drwx------, czyli ja i root mamy pełen
    dostęp, a reszta żaden. Jak to zrobić podam niżej.

1.4Piaskownice

    Domyślny  sys. praw dostępu w sys. Linuks powoduje, że prog.
    uruchomiony przez użytkownika ma pełen dostęp do jego katalogu
    domowego. Nie trzeba być wielkim fatalistą by wyobrazić sobie
    wysyłanie  listy  moich prywatnych plików na nieznane serwery
    gdzieś na Świecie. Jasne jest, że to samo może się stać z
    zawartością co ciekawszych z pośród moich plików.

    Piaskownica umożliwia wydzielenie elementów sys. operacyjnego,
    które  są niezbędne do prawidłowego działania uruchamianej
    aplikacji.   To  znacznie  zwiększa  możliwości  kontroli  i
    świadomość  tego  co  (w najgorszym przypadku) może zrobić
    podejrzany prog.

    Brzmi to pięknie, ale:

    Trzeba  tworzyć  brakujące  profile  piaskownicy  dla  nowych
    aplikacji.

    Profile trzeba dostosowywać do zmieniających się aplikacji.

    Profile  trzeba dostosowywać do zmian wprowadzanych w własnej
    strukturze kat. $HOME.

   1.4.1AppArmor

    AppArmor pozwala zaostrzyć prawa dostępu dla konkretnych prog.
    Można  dokładnie określić do jakich konkretnie katalogów i
    plików prog. ma dostęp.

    Prawa  dostępu  określa  dla każdej aplikacji specjalny plik
    profilu  AppArmor.  Dostępne  są  takie pliki z profilami dla
    popularnych prog.

   1.4.2Snap

    Snap  jest to sys. pakietów firmy Canonical[211]^7 z prog. dla
    sys. Linuks. Sys. obejmuje też dystrybucję paczek Snap w sieci
    Internet. Oficjalnie paczki Snap powstały by wprowadzić w sys.
    Linuks   zunifikowany   format  paczek  -  wspólny  dla  wielu
    dystrybucji.  Wymaga  to  dodawania  do paczki części bibl. z
    jakich  ona korzysta. Dodatkowo wmawia się ludziom, że paczki
    Snap są bezpieczniejsze, bo aplikacje działają w piaskownicy.

    Wewnętrznie piaskownice Snap są oparte na profilach AppArmor.

    Dużą wadą paczek Snap jest fakt, że użytkownik nie wie do czego
    prog.  ma  dostęp.  Wynika  to z faktu, że jego manifest jest
    tajny.

    Dlatego należy założyć, że paczki Snap żądają pełnego dostępu
    do kat. domowego.

    W POWAŻNYCH ZASTOSOWANIACH JEST TO NIE DO PRZYJĘCIA!!!

    Z paczkami Flatpack[212]^8 jest prawdopodobnie tak samo.

    DLATEGO  SAM  NIE UŻYWAM I NIE ZALECAM UŻYCIA PACZEK SNAP ANI
    FLATPACK.

    Poza tym sys. paczek Snap ma wielką wadę: jest b. wolny gdyż
    zakodowano go w j. skryptowym Pyton.

    W sys. Debian możesz sys. Snap zainstalować poleceniem:
sudo apt install snapd
sudo snap refresh

    W Sys. Ubuntu i pochodnych Snap jest zainstalowany domyślnie.

   1.4.3AppImage

    To  popularne  paczki z prog. które nie wymagają instalacji i
    działają w trybie: 1 paczka to 1 aplikacja. By uruchamiać je w
    piaskownicy należy używać profili firejail z przełącznikiem
    --appimage .

    Dziwną wadą paczek AppImage jest konieczność montowania zaw.
    paczki  do  sys. plików przy każdym uruchomieniu prog. I to w
    sytuacji  gdy  jest  to b. wolne, bo przed zamontowaniem paczki
    należy ją rozpakować i to mimo że paczkę montuje się w trybie
    tylko  do  odczytu.  Dlatego są lagi przy uruchamianiu prog. z
    paczki AppImage.

   1.4.4Ogniste Więzienie czyli Firejail

    Jest to piaskownica ograniczająca prog. dostęp do zasobów sys.
    op., do plików użytkownika i do Internetu. Na chwilę obecną na
    sys.  rodz.  Debian/Ubuntu  firejail może kontrolować prog. z
    paczek *.deb i *.AppImage.

    Ogniste Więzienie nie zadziała z prog. instalowanymi z paczek
    Snap ani z paczkami Flatpack.

    Ogniste Więzienie działa w oparciu o AppArmor lub SELinuks. Ma
    własny format plików z profilami jakie definiują ograniczenia
    uruchamianych prog.

    Ogniste   Więzienie   wymaga  konfiguracji  sys.  Linuks  oraz
    konfiguracji katalogu użytkownika.

    Konfiguracja  sys. polega na utworzeniu linków symbolicznych w
    kat.  /usr/local/bin  z  nazwami  prog.  jakie maja działać w
    piaskownicy   firejail.   Wszystkie   te   linki  wskazują  na
    /usr/bin/firejail .

    Trik polega na tym, że jak wpisuje się skrócone polecenie (bez
    pełnej ścieżki), to prog. umieszczone "/usr/local/bin" mają
    priorytet nad tymi z "/usr/bin" (bez cudzysłowów).

    Konfiguracja katalogu użytkownika polega na modyfikacji plików
    "*.desktop"  (i  paru  innych) tak by używały one skróconych
    poleceń, czyli bez ścieżki /usr/bin.

    W katalogu /etc/firejail znajdują się profile prog.

    W  sys.  Debian  pojawia się problem starych profili firejail.
    Dlatego  zdarza  się  też  że profile są nie aktualne i nie
    działają prog. do jakich są one przypisane. Zdarza się, że do
    nowych   prog.   nie  ma  profili.  Ale  jest  na  to  sposób:
    repozytorium kodu źródłowego firejail na github.com !

    [213]https://github.com/netblue30/firejail/tree/master/etc/prof
    ile-a-l

    [214]https://github.com/netblue30/firejail/tree/master/etc/prof
    ile-m-z

    Na  tych  stronach  należy  szukać  aktualnych i brakujących
    profili. Należy je po prostu ściągnąć na dysk i skopiować do
    podanego wyżej katalogu.

    Jednak  nawet  gdy  nie  ma  profili  dla  danego prog., a jest
    potrzeba by go jakoś ograniczyć, to można bardzo łatwo stworzyć
    odpowiedni profil firejail. Niżej pokażę jak to zrobić.

1.5Zapory sieciowe

    Do  kontroli  ruchu  sieciowego  używa  się specjalnego prog.
    ograniczającego  ruch  sieciowy:  zapory sieciowej[215]^9. Aby
    omówić ścianę sieciową musimy przedstawić sieć Internet.

1.6Co jest nie tak z VPN?

    VPN  jest  to  tunelowanie  ruchu  w sieci lokalnej przez sieć
    publiczną. Jest to potrzebne dużym, wielooddziałowym firmom by
    spinać oddziałowe sieci lokalne w jedną dużą sieć lokalną.

    Natomiast ludziom wmawia się, że usługi VPN mogą poprawić ich
    prywatność. Jednak jest to trudne, bo nie ma podstaw by wierzyć
    w  dobrą  wolę  usługodawcy  VPN. On normalnie ma obowiązek
    udzielać Policji historię poł. z ost. 90 dni. Obecnie policja
    na całym świecie ma umowy które pozwalają jej na uzyskanie tych
    danych z zagranicy.

    Wydaje  się,  że  jedynym  sensownym  użyciem  VPN  było by
    skorzystanie  z  usług  firmy  z  kraju  neutralnego.  Ale bez
    większych nadziei na 100% poufność. Lista krajów neutralnych w
    2024r.:   Szwajcaria,  Ks.  Liechtenstein,  Andorra,  Irlandia,
    Meksyk, Monako, San Marino[216]^10[217]^11.

    Należy przy tym wiedzieć, że są dostępne listy adresów IP
    wszystkich firm świadczących usługi VPN. Tak, że część serwerów
    odrzuca poł. z tych adresów (np. news.chmruka.net).

1.7Co jest nie tak z siecią Tor?

    Sieć Tor działa w ten sposób, że klient się z nią łączy, jego
    zapytanie  przechodzi  przez  sieć  serwerów Tor i wychodzi w
    zupełnie innym miejscu świata jako zapytanie zupełnie innego
    komputera w sieci Internet (inne IP).

    Nie można opłacić usługi dostępu do sieci Tor, można jedynie
    płacić datki. Ta usługa wypełnia def. gratisu (podobnie jak
    darmowe  dystrybucje  Linuksa)  i to jest nienormalne i dlatego
    jest to podejrzane.

    Cytat z mojej „Ideologii Geniuszy-Mocarzy”:„Definicja gratisu
    jest prosta:
     1. Gratis nie podlega reklamacji;
     2. Gratis   nie  gwarantuje  niczego.  W  szczególności  nie
        gwarantuje    bezpieczeństwa,    ani   prywatności,   ani
        przydatności do czegokolwiek;
     3. Gratis może ulec zmianie w każdej chwili bez uprzedzenia. W
        szczególności gratis może ulec degradacji uniemożliwiającej
        jego dalsze użycie.”

    Należy przy tym wiedzieć, że są dostępne listy adresów IP
    wszystkich serwerów sieci Tor. Tak, że część serwerów odrzuca
    poł. z tych adresów (np. news.chmruka.net).

                          2Budowa sieci Internet

    Cała sieć Internet (czyli ziemska komputerowa sieć globalna)
    działa dzięki kom. z sys. rodziny Uniks (w tym sys. Linuks).

    Internet został stworzony jako sieć dla sys. op. Uniks podobnie
    jak język C został stworzony do ich zaprogramowania.

2.1Struktura sieci Internet

    Obecnie  sieć  Internet  jest  podzielona  na 3 obszary: sieć
    lokalna,   Internet   IPv4   i   Internet  IPv6.  Bezpośrednia
    komunikacja między tymi sieciami jest niemożliwa. Ale istnieją
    usługi pośredniczące umożliwiające wymianę danych między tymi
    sieciami.

    Sieć IPv4 wykorzystuje liczby 32 bitowe do numerowania urządzeń
    w tej sieci. Czyli może ich być 4G = 4*1024*1024*1024.

    Sieć  IPv6  wykorzystuje  liczby  128  bitowe  do  numerowania
    urządzeń sieciowych. Czyli może być ich 4G*4G*4G*4G.

    Ilość adresów w IPv6 jest absurdalnie wielka, a same adresy nie
    są możliwe do zapamiętania przez człowieka.

2.2Protokoły w sieci Internet

   2.2.1Protokół IP[218]^12

    IP  jest protokołem bezpołączeniowym, przesyłającym paczki
    danych między punktami w sieci Internet. IP nie przejmuje się
    zagubionymi  pakietami.  W wersji IPv4 ma sumę kontrolną, a w
    wersji  IPv6  jej nie ma. Wynika to z wiary w znaczną poprawę
    jakości  kabli  sieciowych  od  lat  70. XXw (wtedy powstawał
    protokół IPv4).

    Z protokołu IP nie korzysta się bezpośrednio. Jest on używany
    do przenoszenia pakietów protokołów UDP i TCP.

   2.2.2Protokół UDP[219]^13

    Protokół UDP jest przesyłany paczkami IP. UDP jest protokołem
    bezpołączeniowym.  UDP dodaje informacje o numerze portu. UDP
    nie gwarantuje kolejności ani poprawności przesyłania pakietów.

    Z UDP korzysta się do implementacji usług sieciowych w których
    wydajność jest ważniejsza niż poprawność. Są to usługi typu RIP
    (trasowanie   pakietów  w  Internecie),  DNS  (mapowanie  nazw
    domenowych na adresy IP), NTP (synchronizowanie czasu z zegarem
    atomowym),  DHCP  (automatyczne  przydzielanie  adresów  IP  w
    sieciach lokalnych), strumieniowanie dźwięku i filmów w sieci
    Internet.

   2.2.3Protokół TCP[220]^14

    TCP   jest   przesyłany  paczkami  IP.  TCP  jest  protokołem
    połączeniowym.  TCP  dodaje  informacje  o numerze portu. TCP
    gwarantuje    prawidłową    kolejność   pakietów   i   ich
    poprawność[221]^15.

    Najbardziej widocznym zastosowaniem protokołu TCP jest protokół
    HTTP(S)    do    przesyłania   plików   HTML   oraz   plików
    pomocniczych[222]^16.

2.3Sieć lokalna

    Sieć  lokalną fizycznie tworzy router z portami LAN (kable) i
    antenami  WLAN (fale radiowe). Sieć ta wykorzystuje specjalnie
    zarezerwowane adresy IPv4[223]^17 lub/i IPv6:

    Wymienię   tu  pule  adresów  prywatnych  przeznaczonych  dla
    prywatnych sieci IPv4 i IPv6:

    IP

                                 Sieć

                              Maska sieci

                         Maks. liczba kompów

                                  v4

    10.0.0.0 – 10.255.255.255

    255.0.0.0

    24 bity = 16M

                                  v4

    172.16.0.0 – 172.31.255.255

    255.240.0.0

    20 bitów = 1M

                                  v4

    192.168.0.0 – 192.168.255.255

    255.255.0.0

    16 bitów = 64K

                                  v6

    fd00::/8

    64 bity = 4G* 4G

    Komp. może należeć do wielu sieci lokalnych jednocześnie oraz
    może  jednocześnie  mieć  wiele adresów IP[224]^18 zarówno
    lokalnych jak i publicznych.

    Np.  sprytny  tel.  może mieć publiczny adres IP przydzielony
    przez  operatora  tel.  radiowej  (LTE), a dodatkowo może być
    połączony w lokalnej sieci radiowej (WiFi) i mieć przydzielony
    adres IP w tej sieci lokalnej. W tym przypadku są to 2 różne
    karty  sieciowe.  Jednak nawet jedna karta sieciowa może mieć
    wiele adresów IP.

2.4NAT czyli lokalna brama do globalnej sieci Internet

    By  dostać  dostęp  do globalnej sieci komputerowej (czyli do
    sieci Internet) potrzebny jest komp. z funkcją NAT. Tą funkcję
    pełni router w którym działa sys. Linuks. On jest pośrednikiem
    który „udaje”, że to on wysyła zapytania do serwerów jakie
    wywołuję,  a odebrane dane przekazuje do mojego kompa w sieci
    lokalnej.

    Mówi się, że „router tuneluje połączenia z komp. z sieci
    lokalnej do sieci Internet”.

    Aby w ogóle się móc połączyć z Internet trzeba mieć włączoną na
    routerze usługę DHCP lub samodzielnie poprzydzielać statyczne
    adresy   IP  urządzeniom  w  sieci  lokalnej.  Czasem  ręczne
    przydzielanie  statycznych  adresów  IP  jest konieczne: np. w
    przypadku serwerów i drukarek. Można to zrobić na 2 sposoby:
     1. Ustawić  ręcznie  adresy  IP  na  każdym z komp. w sieci
        lokalnej;
     2. W routerze, w konfiguracji DHCP zdefiniować jakie adresy IP
        przydzielać adresom MAC.

    Pamiętaj, by ustawić w routerze zakres adresów używanych przez
    DHCP,  tak by nie kolidował on z adresami statycznymi IP jakie
    nadałeś twoim urządzeniom.

    Znacznie lepiej samemu ponadawać adresy IP swoim urządzeniom w
    sieci, gdyż w takim przypadku mogę bez zastanawiania się łączyć
    się z własnymi kompami i mam przynajmniej częściową kontrolę
    nad symboliką numerów IP.

2.5Sieć globalna, czyli Internet

    W sieci globalnej IPv4 jest podzbiorem IPv6.

    W praktyce komp. w sieci Internet dzielą się na 3 grupy:
      * Routery:  one  spinają  całą  sieć.  One tworzą graf z
        cyklami[225]^19.  To  powoduje,  że  sieć jest odporna na
        awarie. Bo gdy zostanie przerwana jedna linia to ruch może
        zostać skierowany inną;
      * Serwery: one świadczą usługi z jakich się najczęściej
        korzysta. One są najbardziej widoczne dla ludzi;
      * Pozostałe:  Mogą  to być zwykłe stacje robocze albo np.
        sprytne tel. z dostępem do sieci Internet. Mogą to też być
        proste mikrokontrolery z czujnikami lub różne sterowniki.

    Praktycznie  cały  Internet  jest oparty o kable. Tylko punkty
    dostępowe tej sieci bywają bezprzewodowe. Czyli to, że wysyłasz
    list  el.  z  komp.  w  sieci  lokalnej  przez  WiFi,  albo  ze
    „sprytnego tel.”, to i tak przy najbliższej okazji jest on
    pchany  w  kabel  i  leci  w  ziemi  do  odbiorcy.  I nie ma tu
    znaczenia, że ten odbiorca też może mieć WiFi czy „sprytny
    tel.” połączone z siecią radiowo.

    Niektórzy nawet dziś wierzą, że tel. komórkowy wykorzystuje
    satelity. Ale to jest całkowity nonsens i głupota[226]^20.

            3Ideologia używania sys. Linuks w sieci Internet

3.1Urządzenia sieciowe: skompromitowane i potencjalnie bezpieczne

    Urządzenia  kupione,  takie  jak  routery, sprytne TV, sprytne
    tel.,  tablety  itp. należy uznać za łatwy łup dla każdego
    intruza.

    Należy też uznać, że te wszystkie „sprytne” urządzania
    pracujące w mojej lokalnej sieci Wi-Fi szpiegują i wysyłają
    wszystko co się da w Świat. Wynika to po prostu z faktu zerowej
    możliwości ich konfiguracji.

    Urządzenia sieciowe bez możliwości konf. sieci należy uznać za
    skompromitowane i pod obcą kontrolą.

    Sys.  samodzielnie  zainstalowane,  samodzielnie skonfigurowane
    można nazwać sys. POTENCJALNIE bezpiecznymi.

    W zasadzie każda „odchyłka” od normalności w prog. działających
    w sys. komp. podłączonych do sieci oznacza obecność intruza
    (etycznego krakera z tajnej policji).

3.2Fakty o Sys. Linuks

     1. Sys.  Linuks  rodziny  Ubuntu to są gratisy. Cytat z mojej
        monografi "Ideologia Geniuszy-Mocarzy":

    „Dzieła kultury na kredyt: Ktoś zaciąga ogromne kredyty by
    dawać  ludziom  darmowe  dzieła  kultury.  Youtube Premium za
    25,99zł (w mar. 2024r.), to też chyba za półdarmo, bo nawet
    internet w sprytnym tel. więcej kosztuje.

    Definicja gratisu jest prosta:
     1. Gratis nie podlega reklamacji;
     2. Gratis   nie  gwarantuje  niczego.  W  szczególności  nie
        gwarantuje    bezpieczeństwa,    ani   prywatności,   ani
        przydatności do czegokolwiek;
     3. Gratis może ulec zmianie w każdej chwili bez uprzedzenia. W
        szczególności gratis może ulec degradacji uniemożliwiającej
        jego dalsze użycie.

    Dzięki p. 1-3 rządy uzyskują kontrolę w dziedzinie kultury i
    oprogramowania.”

    To że nie używam komercyjnego sys. Linuks wynika wyłącznie z
    faktu,  że nie ma normalnej, komercyjnej, polskiej dystrybucji
    sys. Linuks.
     2. Domyślnie wszyscy użytkownicy sys. Linuks mają pełen wgląd
        w  katalogi  wszystkich  innych użytkowników. Łącznie z
        możliwością kopiowania dowolnych plików oraz z możliwością
        przeglądania  metadanych  wszystkich  plików  - np.: data
        utworzenia i data ostatniej modyfikacji i wielkość pliku;
     3. Sys. op. Linuks gromadzą dane o działaniach użytkownika.
        Najczęściej  w formie plików tekstowych. Często nawet w
        plikach  konf.[227]^21. Usuwanie tego nie powoduje żadnych
        zauważalnych efektów;

    Z  nieznanych  powodów  w wielu plikach z kat. $HOME/.config i
    $HOME/.local   prog.   w   sys.  Linuks  umieszczają  unikalne
    identyfikatory  UID.  Tak  jakby  ktoś chciał wiedzieć jakie
    dokładnie   funkcje   i   czynnności   są  wykonywane  przez
    użytkowników.
     4. Nie wiadomo po co są w sys. Linuks dziesiątki plików cache.
        Usuwanie tego nie powoduje żadnych zauważalnych efektów.
     5. Nie  wiadomo po co do sys. Linuks pakuje się masę starych
        plików:   prastarzy   użytkownicy  sys.,  prastare  grupy
        użytkowników, kalendarze z przed dziesiątek lat ze świętami
        z całego świata[228]^22, Usuwanie tego nie powoduje żadnych
        zauważalnych efektów.

    Po  usunięciu  zbędnych  użytkowników  i  ich grup, są one
    przywracane  "w magiczny sposób" po restarcie komp. CZEMU JEST
    TO WAŻNE I KOMU NA TYM ZALEŻY???
     6. Sys.   op.  Linuks  domyślnie  w  bramie  sieciowej  niema
        włączonych blokad na ruch przychodzący ani wychodzący;
     7. W sieci Internet[229]^23 agenci wpływu wmawiają, że problem
        prywatności dotyczy jedynie społecznościowych serwerów WWW.
        Podczas gdy:

    Domyślnie prog. uruchamiane przez użytkownika mają pełen dostęp
    do jego katalogu domowego i mogą te dane wysyłać gdzie im się
    podoba;
     8. Poradniki  w sieci Internet pokazują jak włączyć bramę
        sieciową blokującą ruch przychodzący. Ale zupełnie ignorują
        problem wysyłania w świat danych użytkownika przez prog.
        szpiegujące na jego komp.;
     9. Dane   użytkownika   wysyłają   w  świat  nawet  strony
        internetowe[230]^24.   Nawet   piaskownica  przed  tym  nie
        chroni.   Eksperymenty   z   prog.   ulimit  pokazują  że
        najprawdopodobniej   dzieje   się   to   przez  atak  typu
        przepełnienie  bufora przez skrypt z Jawa Skrypt pobierany
        przez strony HTML.
    10. Zapotrzebowanie na pamięć sys. Linuks jest niemożliwe do
        uzasadnienia: przykład sys. Amiga.

3.3Ideologia wynikająca z faktów

    MOIM GŁÓWNYM CELEM W WALCE Z SYS. LINUKS I Z POWŁOKĄ BASZ JEST
    ZAPEWNIENIE SOBIE SPOKOJU W PRACY Z KOMP.

    DRUGIM CELEM JEST SWOBODNE ROZSZERZANIE MOJEGO ŚWIATOPOGLĄDU,
    WIEDZY I UMIEJĘTNOŚCI W CELU NOWYCH, REWELACYJNYCH DOKONAŃ.

    BO  CELEM  SZPIEGOSTWA SYS. KOMP. JEST NAMIERZANIE I ELIMINACJA
    AMBITNYCH  OSÓB.  BO  SPECJALNIACY  PARANOICZNIE  WIERZĄ, ŻE
    MYŚLENIE LUDZI IM ZAGRAŻA.

    TO JEST POWODEM CAŁEJ AWANTURY O BEZPIECZEŃSTWO I KONIECZNOŚCI
    SKRYTEJ PRACY I KONIECZNOŚCI PROWADZENIA SKRYTEGO ŻYCIA.

   3.3.1Schemat codziennej pracy z sys. Linuks

     1. Konf. sys. po instalacji należy przeprowadzić skryptem (by
        za każdym razem się nie grzebać).
     2. Przy  starcie  sys. (przed logowaniem) powinien uruchamiać
        się skrypt czyszczący.
     3. Używane  prog.  należy  uruchamiać w piaskownicy Ogniste
        Więzienie  (konieczne  jest  zakodowanie  skryptu  konf. i
        profili lokalnych zaostrzających ograniczenia tych prog.).
        Zapobiega  to  wysyłaniu  w  Świat  moich  plików  przez
        szpiegujące prog..
     4. W  skrypcie  do  konf.  zapory  sieciowej  UFW odblokowuję
        konieczne adresy IP serwerów z jakimi muszę pracować (np.
        serwer  poczty  el.,  serwer  grup  dyskusyjnych, serwery z
        repo). Zapobiega to wysyłaniu w Świat moich plików przez
        szpiegujące prog..

    W przypadku serwerów HTTP które nie ujawniają jakich adresów
    wymagają ich s. WWW do ich przeglądania należy po prostu używać
    skompromitowanego sprytnego tel.
     5. Pod koniec dnia pracy należy wypchnąć skryptem wszystkie
        zmienione w ciągu dnia repo.
     6. Przed  wyłączeniem  sys. powinien się uruchamiać skrypt
        czyszczący.

   3.3.2Comiesięczne czynności konserwatorskie w sys. Linuks

     1. Co  miesiąc należy wykonywać kopię zapasową prywatnych
        plików.
     2. Spr. czy działa skrypt czyszczący, np.:

    sudo journalctl -u czysc.service

    ls -l /var/cache/man; ls -l /var/lib/man-db
     3. Spr. czy w moim kat. prywatnym są nowe pliki z sumami UID,
        md5 i sha (różnych wer.).
     4. Spr. konf. UFW.
     5. Zaktualizować sys.
     6. Spr. czy są w menu zbędne prog. i je usunąć.
     7. Spr.  działanie  piaskownicy Ogniste Więzienie (co widzą
        prog. które on kontroluje).

    Praca  z komp. ma za zadanie automatyzację czynności. Dlatego
    praca z sys. Linuks wymaga umiejętności programowania skryptów
    w Baszu.

    WSZYSTKIE PONIŻSZE SKRYPTY ZAPROGRAMOWAŁEM I ONE DZIAŁAJĄ -
    więc ta monografia to nie żadne wzięte z sufitu filozofowanie.

    Pamiętaj: JA CI SPRZEDAJĘ WIEDZĘ, A NIE SKRYPTY.

    W tym dokumencie pokazuję wszystkie polecenia na jakich należy
    oprzeć te skrypty. Jednak składni powłoki Basz nie uczę. Nie
    uczę  też  zasad  proceduralnego  programowania  - bo Basz to
    skryptowy język proceduralny.

    Poniższe skrypty powinny być tajnym skarbem każdego użytkownika
    sys. Linuks.

    PO  ZA  SKRYPTAMI  JAKIE MAJĄ CZYŚCIĆ SYS. WSZYSTKIE SKRYPTY
    ODPALAM RĘCZNIE I OBSERWUJĘ CZY NAPOTYKAJĄ JAKIEŚ PROBLEMY.

    Wynika  to  z  faktu,  że w tych gratisowych sys. Linuks na co
    dzień dzieją się cuda i nie można samemu przewidzieć wszystkich
    możliwych problemów.

    Proponuję zakodować następujące skrypty:

   3.3.3Skrypty konfiguracyjne uruchamiane po instalacji sys.

     1. Konf.   Basza:   konfiguracja   plików   $HOME/.profile  ,
        $HOME/.bash_aliases , $HOME/.bashrc ;
     2. Tworzenie linków symbolicznych w kat. $HOME/bin do własnych
        skryptów.
     3. Konf. kart sieciowych;
     4. Konf. bramy sieciowej UFW;
     5. Konf. piaskownicy Ogniste Więzienie[231]^25.

   3.3.4Skrypt czyszczący uruchamiany przed zalogowaniem, przed uśpieniem
   i przed restartem

    Skrypt ten ma czyścić:
     1. Zbędne katalogi i pliki w sys. Linuks i w kat. $HOME;
     2. Naprawiać plik $HOME/.config/user-dirs.dirs;
     3. Usuwać zaw. kat. lost+found
     4. Występować ze zbędnych grup użytkowników;
     5. Usuwać zbędnych użytkowników;
     6. Usuwać zbędne grupy użytkowników;
     7. Zaostrzać uprawnienia użytkownika;
     8. Usuwać  identyfikatory  UID  i  sumy  kontrolne  z plików
        tekstowych z kat. $HOME;
     9. Usuwać pliki cache podręcznika man.

   3.3.5Skrypt aktualizacyjny

    Skrypt aktualizacyjny powinien:
     1. Zaostrzać uprawnienia użytkowników;
     2. Zaostrzać uprawnienia w sys. Linuks.;
     3. Usuwać pliki bez właściciela;
     4. Usuwać uszkodzone linki symboliczne;
     5. Wyłączać konsolę dla nowych użytkowników;
     6. apt update;
     7. Konf. Ogniste Więzienie;
     8. Wyłączać aktualizację rdzenia sys. Linuks;
     9. Usuwać niepotrzebne pakiety;
    10. Wyłączenie niepotrzebnych demonów;
    11. apt upgrade -y;
    12. Instalować pakiety potrzebne wszystkim użytkownikom;
    13. Instalować   pakiety   potrzebne   programistom  (w  razie
        potrzeby);
    14. Usuwać  pakiety  zainstalowane  przez  inne pakiety i już
        niepotrzebne.

   3.3.6Skrypt konf. zaporę sieciową UFW

    Jest to najważniejszy skrypt w zestawie skryptów użytkownika
    sys. Linuks.

    Ten skrypt należy tak zaprogramować aby:
     1. Domyślnie blokował cały sieciowy ruch przychodzący;
     2. Domyślnie blokował cały sieciowy ruch wychodzący;
     3. Standardowo odblokowywał podstawowe serwery UDP (np. DNS z
        Cloudflare)   i   TCP  (np.  drukarki  i  serwery  w  sieci
        lokalnej);
     4. Odblokowywał  profile sieciowe podane w lini komend (repo,
        google, poczta, praca, zakupy, nowości).

   3.3.7Skrypt konf. Ogniste Więzienie

    Ten skrypt należy tak zaprogramować aby:
     1. Kopiował do /etc/firejail moje profile dla prog. jakie chcę
        kontrolować Ognistym Więzieniem;
     2. Tworzył kopię
        /usr/lib/x86_64-linux-gnu/firejail/firecfg.config;
     3. Dodawał moje profile do
        /usr/lib/x86_64-linux-gnu/firejail/firecfg.config;
     4. Kopiował      moje     lokalne     profile     do     kat.
        $HOME/.config-firejail;
     5. Po jego wykonaniu należy wywołać dla każdego użytkownika
        sudo -u $USER firecfg –fix.

           4Wybór modelu bezpieczeństwa w pracy z sys. Linuks

4.1Sys. online

    Założenia tego sys.:
     1. Instalacja  na  stacji  roboczej  wybranego distro i pełna
        konfiguracja zgodna z zaleceniami tego dokumentu;
     2. Całkowita blokada w UFW poł. przych. i wych.;
     3. Odblokowywanie  w UFW grup zaufanych adresów UDP i TCP dla
        poł.  wych. (np.: serwer z lokalnym repo GIT, DNS, poczta,
        Google, Wikipedia);
     4. Używanie piaskownicy Ogniste Więzienie do kontroli prog.:
        Grzmiący  Ptak[232]^26, Ognisty Lis[233]^27, Ryś[234]^28,
        wget.

    Użycie sieci Internet:
     5. Do  wariackich  s.  WWW  (które  wymagają  do  działania
        dodatkowych, nieznanych serwerów) należy używać sprytnego
        tel. Pliki z tych wariackich s. należy przenosić na komp.
        za pomocą patyków USB.

    Problemem jaki pozostaje w przypadku takiego sys. op. jest fakt
    używania przeglądarki WWW i klienta poczty el. Problemy z nimi
    są nast.:
     1. Brak jakiegokolwiek audytu/weryfikacji tych podst. klientów
        sieciowych.
     2. Czemu  przeglądarki  i  klient  poczty  mają  monstrualne
        rozmiary? Czy jest w nich szpiegująca SI?
     3. Czemu tak często powstają nowe wer. przeglądarki i klienta
        poczty? Czemu bez końca się przy nich majstruje?

    Pójdźmy krok dalej:

4.2Sys. offline ale online na żądanie

    Od  poprzedniego  modelu  ten różni się jednym szczegółem:
    łączenie z siecią Internet odbywa się jedynie na czas sesji.
    Np. na czas instalacji potrzebnego prog.

    Jednak taki model się nie sprawdzi w firmie gdzie często trzeba
    odbierać i wysyłać pocztę.

4.3Sys. z lustrzanym repo

    Utworzenie własnego, lokalnego repo używanego distro jest fajną
    opcją, bo dzięki temu można się zabezpieczyć przed psuciem
    distro w kol. aktualizacjach oraz przed wył. oficjalnego repo.
    Dla osoby pracującej serwerek taki to nie duży wydatek. Jednak
    trzeba wiedzieć o wadach tego rozwiązania:
     1. Aktualizacja  lustrzanego  repo wymaga dodatkowego serwera:
        wynika  to z faktu, że nie można wykluczyć wysyłania na
        serwery źródłowe jakichś archiwalnych danych z serwerów
        lustrzanych.   Dlatego   pozostaje   duplikacja  fizycznego
        serwera,  lub  kasowanie i instalacja całego repo od zera.
        Można też by się bawić w kasowanie niektórych polików, ale
        słabym p. jest to, że nawet jak dziś pokasujesz wszystko co
        trzeba, to jutro będzie to za mało.
     2. Firmowe  repo  z  paczkami  deb: Zrobienie lustrzanych kopi
        wszystkich  firmowych repo z paczkami deb (z poza Canonical
        i z poza Debian) było by istotnym udogodnieniem.
        Na ten moment nie wiem jak można by zrobić lustrzane kopie
        wszystkich  firmowych  repo z paczkami deb. A to było by w
        pełni komfortowym rozw.
        Szczegóły: Niedawno (w 2022r.) dowiedziałem się o istnieniu
        skryptu  get-deb.sh z github.com . Służy on do instalacji
        paczek  deb  z  firmowych  repo. Nie znam się na tworzeniu
        własnych repo, ale po rzucie oka na kod skryptu widać, że
        konfiguracja  tych  repo  to  coś  zupełnie  innego  niż
        konfiguracja  domyślnego  repo instalowanego z sys. Ubuntu
        czy Debian.
     3. Paczki  Snap:  Sys.  tworzenia  i  dystrybucji  paczek Snap
        stworzył Canonical (wydawca distro rodziny Ubuntu). Głównym
        celem  jego  stworzenia  było  zwiększenie przenośności
        oprogramowania (przez włączanie do paczki części wymaganych
        bibl.)     (to    zwiększenie    przenośności    chciano
        najprawdopodobniej chciano zapewnić paczkom na sprytny tel.
        jaki    Canonical   chciało   opracować)   oraz   poprawa
        bezpieczeństwa przez wbudowaną piaskownicę.
        Nie można wykonać lustrzanej kopi repo z paczkami Snap.
        Można  jednak  pobierać  pojedyncze  paczki  Snap z sieci
        Internet i instalować na chronionej stacji roboczej. Jednak
        trzeba mieć na uwadze, że interesujące paczki Snap mogą
        wymagać innych paczek Snap;
     4. Paczki   Flatpack:  Sys.  tworzenia  i  dystrybucji  paczek
        Flatpack stworzył Red Hat jako konkurencję dla paczek Snap.
        Nie znalazłem w sieci Internet żadnych informacji na temat
        możliwości tworzenia lustrzanych repo z paczkami Flatpack.
        Paczki  Flatpack  mogą  mieć 2 formy: „zwykłą” oraz
        "Single-file  bundles".  Tylko  ta druga postać pozwala na
        dystrybucję  i instalację bez dostępu do sieci Internet.
        „Zwykłe” paczki Flatpack też można przekonwertować do
        "Single-file bundles". Jednak prawdopodobnie może to zrobić
        tylko   wydawca  prog.  Moje  podejrzenie  wynika  z  faktu
        stosowania podpisów cyfrowych w tych paczkach.
     5. Paczki  AppImage:  Sys. tworzenia paczek AppImage stworzył
        Niemiec   Peter  Simon  o  pseudonimie  Probono[235]^29.  W
        porównaniu   do  sys.  Snap  i  Flatpack  AppImage  wypada
        rewelacyjnie:  Prosta  koncepcja:  jedna  paczka  to  jeden
        prog.;   Prosta,  tradycyjna  koncepcja  tworzenia  paczek;
        Podobna  odporność  paczek  na  zmiany  w sys. op. (przez
        włączanie do paczki części wymaganych bibl.).
        Nie znalazłem w sieci Internet żadnych informacji na temat
        możliwości tworzenia lustrzanych repo z paczkami AppImage.
        By skopiować wszystkie paczki prawdopodobnie należało by
        dać stówę appimagehub.com za taką możliwość.

    Założenia tego sys.:
     1. Masz łącze światłowodowe (tak rurę do sieci Internet). W
        przeciwnym wypadku możesz się nie doczekać na pobranie kopi
        repo.
     2. Na  serwer  wystarczył  by  stary komp stacjonarny. Jednak
        problem jest taki, że stare kompy mają stare procki które
        zużywają dużo energii nawet w stanie bezczynności[236]^30.
        Można to zignorować jeśli po pobraniu kopi lustrzanej repo
        możesz sobie pozwolić na włączanie serwera tylko gdy to
        niezbędne.

    Serwer musi mieć dysk w macierzy RAID.
     3. Konfiguracja  sieci lokalnej tak by mogły w niej działać
        serwer  z lustrzaną kopią repo Ubuntu i stacja robocza na
        której się pracuje;

    Konfiguracja serwera:
     4. Instalacja na stacji roboczej Ubuntu Serwer[237]^31 i pełna
        konfiguracja zgodna z zaleceniami tego dokumentu.

    Ubuntu  Serwer od lat ma wadę w instalatorze gdyż partycje na
    dyskach należy zakładać od nowa za każdym razem.
     5. Całkowita blokada w UFW poł. przych. i wych.;
     6. Odblokowywanie w UFW poł. przych. ze stacji roboczej;
     7. Odblokowywanie  w  UFW  niezbędnych  adresów  UDP  i  TCP
        wychodzących (np.: DNS, repo Ubuntu).

    Przygotowanie kopi lustrzanej:
     8. Skonfiguruj apache2 tak by użytkownik www-data miał kat. z
        dokumentami na partycji /home/www-data. Jak to zrobisz to:

    By  uniknąć problemów utwórz jakiś plik w /home/www-data i
    spróbuj go pobrać wget - jak to zadziała, to przejdź dalej.
     9. Skonfiguruj   apt-mirror   tak   by  lustrzane  repo  było
        zapisywane do kat. /home/www-data;
    10. Należy wykonać kopię lustrzaną repo wybranego distro prog.
        apt-mirror;
    11. Pobrać instalkę wybranego distro z Linksem;
    12. Repo  aktualizować  w  ostateczności  –  zgodnie z pow.
        zaleceniami.

    Konfiguracja stacji roboczej:
    13. Instalacja  na  stacji  roboczej  wybranego distro i pełna
        konfiguracja zgodna z zaleceniami tego dokumentu;
    14. Całkowita blokada w UFW poł. przych. i wych.;
    15. Odblokowywanie  w UFW grup zaufanych adresów UDP i TCP dla
        poł.  wych.  (np.: lokalne lustrzane repo distro, serwer z
        lokalnym repo GIT, DNS, poczta, Google, Wikipedia);
    16. Konfiguracja apt do pracy z repo na lokalnym serwerze;

    Użycie sieci Internet:
    17. Do  wariackich  s.  WWW  (które  wymagają  do  działania
        dodatkowych, nieznanych serwerów) należy używać sprytnego
        tel. Pliki z tych wariackich s. należy przenosić na komp.
        za pomocą patyków USB.

                 5Przygotowanie do instalacji sys. Linuks

    Aby  w  ogóle  mieć sys. Linuks musisz pobrać najpierw prog.
    instalacyjny  w  postaci obrazu ISO. Ten plik następnie trzeba
    zweryfikować i nagrać na patyk USB. Podam tu instrukcje jak to
    zrobić:

5.1Jaką dystrybucję wybrać?

   5.1.1Wybierz dystrybucję pozwalającą na instalację bez dostępu do
   sieci Internet

    Sys. podczas instalacji jest bezbronny.

    Podłączanie  komp. do sieci podczas instalacji i późniejsze
    zabezpieczanie nie ma żadnego sensu.

   5.1.2Są dystrybucje bez zamkniętych pakietów - ale czy warto je
   instalować?

    FSF rozróżnia całkowicie wolne dystrybucje od tych co dodają
    pakiety z zamkniętym oprogramowaniem[238]^32.

    Zamknięte  oprogramowanie  dotyczy  nawet  samego rdzenia sys.
    Linuks - do jego pakietów pakowane są np. binarne mikrokody.

    Te  mikrokody  nabierają praktycznego znaczenia w momencie gdy
    trzeba skorzystać z urządzeń które ich wymagają. Np. zdarzyło
    mi się, że nowo kupiony tuner TV ich wymagał, co spowodowało
    konieczność przesiadki z w pełni wolnej i otwartej dystrybucji
    Triksel na Kubuntu.

    Otwarte     dystrybucje     są    wymienione    na    stronie:
    [239]https://www.gnu.org/distros/free-distros.html .

    Natomiast  uzasadnienie dla których inne popularne dystrybucje
    są   uznawane   za   nie  w  pełni  wolne  jest  na  stronie:
    [240]https://www.gnu.org/distros/common-distros.html .

5.2Jak prawidłowo zainstalować sys. Linuks mając tylko skompromitowany
sys. komp.

    Jeśli do tej pory nie przejmowałeś się zabezpieczeniem swojego
    sys. komp., to możesz śmiało założyć, że jest on spenetrowany.
    Wtedy pojawia się pytanie: czy mając taki skompromitowany sys.
    można   postawić   nowy  zabezpieczony?  Tak!  Jednak  trzeba
    postępować w sposób logiczny eliminując możliwość modyfikacji
    instalki dystrybucji przez intruza. To oznacza:
     1. Ściągnięcie instalki dystrybucji sys. Linuks (pliku ISO);
     2. Ściągnięcie  pliku  z sumami kontrolnymi (koniecznymi do
        weryfikacji oryginalności pliku ISO;
     3. Odłączenie komp. od sieci;
     4. Spr. obrazu ISO;
     5. Nagranie obrazu ISO na USB;
     6. Spr. poprawności zapisu obrazu ISO na USB.
     7. BEZ WŁĄCZANIA SIECI uruchomić komp. z USB w celu instalacji
        sys. Linuks.

    Jak to wszystko zrobić podaję poniżej.

5.3Pobieranie obrazu instalki sys. Linuks

    By pobrać instalkę Ubuntu, np.:
wget https://releases.ubuntu.com/20.04.5/ubuntu-20.04.5-desktop-amd64.is
o

    Oczywiście powinieneś pobrać aktualnie najnowsze wersje twojej
    ulubionej dystrybucji sys. Linuks (zamiast tej powyższej).

   5.3.1Pobranie sum kontrolnych

    Generalnie  sumy  kontrolne są publikowane na serwerach w tych
    samych katalogach w jakich są pliki obrazów ISO. Czasem trzeba
    trochę poklikać na stronie dystrybucji by do nich dotrzeć.

   5.3.2Odłącz komp. od sieci

    Bardzo  ważne  jest  by  nikt  nawet  teoretycznie  nie mógł
    zmodyfikować  pobranego  pliku  ISO po jego weryfikacji ani po
    nagraniu na USB.

    W RAZIE GDYŚ POTRZEBOWAŁ JAKICHŚ PROG. JAKIE TRZEBA POBRAĆ Z
    SIECI  INTERNET  W  CELU  SPR.  I  NAGRANIA  PLIKU  ISO NA USB,
    INSTALACJĘ SYS. LINUKS POWINIENEŚ ZACZĄĆ OD TEGO MIEJSCA.

   5.3.3Spr. pobranego obrazu

    Po pobraniu obrazu należy go spr.:

    Ubuntu oferuje na swojej stronie gotowe polecenie. np.:
echo "b45165ed3cd437b9ffad02a2aad22a4ddc69162470e2622982889ce5826f6e3d *
ubuntu-20.04.1-desktop-amd64.iso" | shasum -a 256 --check

    Można też to zrobić "normalnie":
sha256sum ubuntu-20.04.1-desktop-amd64.iso

    I  porównać  wzrokowo  wynik  z  zawartością pliku z sumami
    kontrolnymi od dostawcy distro.

   5.3.4Nagrywanie obrazu

    Obraz z sys. należy nagrać na pamięć USB. Musi ona mieć co
    najmniej 4GB.

    Tu znowu musimy się trochę zastanowić. Czy użyć choinkowego i
    idiotoodpornego Etcher-a? Czy może się wysilić, zaryzykować i
    użyć dd?

    Odpowiedź to: dd.

    Dlatego,  że  jest  to  prog. z otwartymi źródłami w które
    (teoretycznie) patrzyło wiele osób pracujących przy różnych
    wielu  dystrybucjach  sys.  Linuks.  Natomiast  nikt nie wie co
    siedzi  w  100MB  paczce Etcher. Dlatego dla świętego spokoju
    lepiej  użyć  dd. Natomiast jeśli używasz Windows to raczej
    lepszego rozwiązania niż Etcher nie znajdziesz…

     5.3.4.1Rozpoznawanie napędów w sys. Linuks

    W  sys. Linuks początkujący mogą czuć się zakłopotani jak
    rozpoznać to gdzie jest podpięta ich pamięć USB (na którą
    trzeba nagrać obraz ISO z instalką).

    W sys. Linuks standardowo dyski USB pojawiają się jako pliki w
    katalogu /dev w momencie gdy je wtykasz do portu USB. Mają one
    nazwy sd* gdzie * to a, b, c itd.

    Jednak w ten sam sposób są oznaczane są dyski SSD. Dlatego aby
    ustalić nazwę pamięci USB należy:
     1. Wyjąć pamięć USB z portu USB (jeśli była włożona);
     2. Użyć polecenia:
ls /dev/sd*
ls: nie ma dostępu do '/dev/sd*': Nie ma takiego pliku ani katalogu
        Ja  akurat  mam  inny  dysk  niż  SSD, tak więc u mnie to
        polecenie zwraca błąd.
     3. Wpiąć pamięć USB i ponownie wywołać
ls /dev/sd*
/dev/sda  /dev/sda1
     4. Wtedy wpis którego wcześniej nie było będzie nazwą naszej
        pamięci USB.

    Napędem (tu: pamięć USB) jest tylko wpis bez cyfry. Cyfry po
    nazwie  dysku oznaczają partycje jakie na nim się znajdują i
    może być ich wiele. Czyli w powyższym przykładzie pamięcią USB
    jest /dev/sda i ma on jedną jedyną partycję /dev/sda1 .

     5.3.4.2Zapis obrazu na pamięć USB

    JAK POMYLISZ NAPĘD SSD Z USB TO MOŻESZ SOBIE WYMAZAĆ DYSK ZE
    STARYM SYS. OP. TAK WIĘC SPR. 3x CZY ZAPISUJESZ OBRAZ NA PAMIĘĆ
    USB.
dd if=./ubuntu-20.04.1-desktop-amd64.iso of=/dev/sda bs=300M status=prog
ress

    Za if= podajesz ścieżkę do pliku ISO, of= to pamięć USB na
    którą   zapisujemy  obraz,  bs=  to  wielkość  pojedynczego
    kopiowanego  pakietu,  status=progress  będzie  informował  o
    postępie kopiowania.

     5.3.4.3Spr. poprawności zapisu na pamięć USB

    Robimy to nietypowym wywołaniem polecenia shasum:
sudo shasum -a 256 /dev/sda1

    Tu są ważne 2 sprawy:
     1. Ścieżka do nowo utworzonej partycji na pamięci USB.
     2. Algorytm  użyty do wygenerowania sumy kontrolnej. Tu sha w
        wersji 256.

    To kiedyś działało, ale obecnie (wrz. 2022) wydawcy dystrybucji
    robią  więcej  partycji w instalkach i ja osobiście nie znam
    sposobu by uzyskać z nich sumę kontrolną taką jaka powstaje
    przy spr. pliku ISO.

5.4Uruchomienie instalki

    Instalację należy rozpocząć w trybie próbnego uruchomienia sys.
    Linuks[241]^33.  W  tym  trybie  musimy  przygotować  się  do
    instalacji przygotowując partycje i przygotowując silne hasło.

5.5Partycjonowanie dysku

    Partycje na dysku to podział dysku na logiczne części. Każdą
    taką część definiuje się osobno i osobno na nich zakłada się
    sys.  plików.  Dopiero  po  podziale  dysku  na  partycje i po
    założeniu na nich sys. plików można instalować sys. op.

    Rozwój sys. plików ciągle trwa i wiąże się z nimi duże nadzieje
    głównie  w  zakresie  bezpieczeństwa  (szyfrowanie  w locie,
    odporność na uszkodzenia nośnika, większa odporność na awarie
    zasilania) i wydajności (kompresja w locie).

    Współczesne sys. Linuks oferują wygodne prog. do manipulacji
    partycjami  np.  w KDE „Zarządzanie partycjami”, a w Gnome
    gparted.

    Proponuję przygotować następujące partycje:

    Punkt montowania

                                Rozmiar

                                  Typ

                             Przeznaczenie

    Bios Grub

                                  1MB

                            [BRAK][242]^34

    Prog. rozruchowy Grub.

    Wymagana do uruchomienia sys. z dyskami GPT na starych komp. z
    BIOS.

    /efi

                                 300MB

                             Fat32[243]^35

    Firmware i prog. rozruchowy.

    Wymagana do uruchomienia sys. na nowych komp. z UEFI jaki jest
    następcą BIOS.

    /boot

                              2GB[244]^36

                                 Ext2

    Pliki z obrazami rdzenia sys. Linuks

    Wymagana do uruchomienia startych komp. z dużymi dyskami.

    Zabezpiecza przed zapełnieniem dysku przez zbyt dużo starych
    rdzeni sys. Linuks.

    /tmp

                             20GB[245]^37

                                 Ext2

    Pliki tymczasowe (domyślnie do 10 dni).

    Zabezpiecza przed zapełnieniem dysku przez zbyt duże pliki
    tymczasowe.

    /var

                                 20GB

                                 Ext2

    Pliki różne: w tym kat. /var/tmp (domyślnie do 30 dni),
    /var/log, /var/cache .

    Zabezpiecza przed zapełnieniem dysku przez zbyt duże pliki
    tymczasowe w kat. /var/tmp , /var/log i /var/cache.

    /opt

                                 20GB

                                 Ext2

    Pakiety z oprogramowaniem firm 3. Jak np. Google Chrome, albo
    sterowniki urządzeń drukująco-skanujących.

    Zabezpiecza przed zapełnieniem dysku przez zbyt duże pakiety
    nieznanych firm.

    /usr/local

                                 20GB

                                 Ext2

    Bibl. i prog. samodzielnie budowane i instalowane poleceniami:
rm -fr ./budowa; mkdir ./budowa; cd ./budowa && cmake .. && make -j9; cd
  ..
cd ./budowa && sudo make install && cd ..

    Zabezpiecza przed zapełnieniem dysku przez zbyt duże prog. i
    bibl. instalowane przez użytkownika.

    /

                                 100GB

                                 Ext2

    Prog. i ustawienia sys. op.

    /home

                               (reszta)

                                 Ext4

    Katalogi użytkowników.

    Powodem dla którego partycje /, /boot, /opt, /usr/local, /tmp i
    /var mają typ EXT2 jest to, że:
     1. EXT2 nie obsługuje transakcji przy zapisie danych[246]^38;
     2. Prawdopodobnie transakcje spowalniają zapis na dysk w sys.
        plikowych Ext3 i Ext4;
     3. Na  partycjach  /,  /boot,  /opt i /usr/local normalnie nie
        dokonuje się zapisu;
     4. Na  partycji  /tmp  nie  zapisuje  się nic wartego ochrony
        transakcyjnej;
     5. Jedyny problem jest z kat. /var/log który potencjalnie może
        utracić  dane  w  wyniku  zawieszenia  sys.  Linuks  przez
        intruza.

    Na  partycji /home zalecam używać Ext4 gdyż ma on transakcje
    przy zapisie i jest nowszy od Ext3 (który też ma transakcje).
    Sys.  plików  serii  Ext są oficjalnymi sys. plików dla sys.
    Linuks.

    Partycji nigdy nie należy przesuwać, bo z nieznanych powodów ta
    operacja nigdy się nie udaje, bo trwa w nieskończoność. Jest
    tak  nawet  na  komp.  z  dziesiątkami  GB RAM. Prowadzi to do
    konieczności   awaryjnego   przerwania   operacji  przesuwania
    partycji  w  wyniku  czego dochodzi do ich zniszczenia i utraty
    danych.

    UWAGA  z  d.  2022-12-23:  Po  zainstalowaniu sys. i ustawieniu
    partycji /tmp i /var z blokadą uruchamiania prog. okazało się,
    że niemożna aktualizować ani instalować pakietów.

5.6Pamięć wymiany[247]^39

    Partycja   swap  lub  plik  swap  realizuje  funkcję  pamięci
    wirtualnej. Część dysku pracuje wtedy jako przedłużenie pamięci
    RAM. Jest to ratunek dla sys. op. gdy prog. zaczynają zajmować
    całą pamięć operacyjną.

    Gdy zdarza się, że sys. bardzo zamula to znak, że włącza się
    swap.  W takiej sytuacji należy dokupić fizyczne rozszerzenie
    pamięci RAM.

    Innym rozwiązaniem sytuacji gdy kończy się pamięć RAM jest
    zamykanie najbardziej pamięciożernych procesów.

    W sys. Linuks pamięć wymiany może mieć postać partycji swap lub
    pliku swap.

    Partycja swap działa szybciej niż plik swap. Jest tak dla tego,
    że używając partycji swap nie ma potrzeby dostępu do dysku za
    pośrednictwem f. sys. plików.

    Partycja swap może szybko zabić dysk SSD, NVM i patyk USB. Jest
    tak gdyż są one pamięcią typu Flasz której cechą jest to, że ma
    ograniczoną liczbę zapisów i odczytów.

    Współczesne komp. powinny mieć tyle pamięci RAM by nie było
    konieczności włączania pamięci wymiany. Obecnie pamięć RAM jest
    b. tania w porównaniu do lat 90. XXw.

5.7Generowanie silnego hasła

    Generalnie  mamy  4  rodzaje  haseł.  Wymieńmy  je wg stopnia
    komplikacji:
     1. Wyłącznie z małych lub wyłącznie z wielkich liter;
     2. Wyłącznie z małych lub wielkich liter;
     3. Wyłącznie z liter lub cyfr;
     4. Z dowolnych znaków drukowanych.

    Hasła o długości do 6 znaków są łatwe do złamania. Dlatego
    wszystkie  piny  nie  są dłuższe (ma to znaczenie dla tajnej
    policji).

    Są w sys. Linuks prog. do generowania haseł: makepasswd, pwgen
    oraz bardziej zaawansowany apg.

    Instalują je polecenia:
sudo apt install makepasswd
sudo apt install pwgen
sudo apt install apg

    W śród tych prog. apg wyróżnia się tym, że domyślnie generuje
    hasła podobne do angielskich słów. Przez co niektórym może być
    łatwiej je zapamiętać.
apg -m 12 -x 12

octyangyitDa

RyclacpesIl5

GimpitBogLux

lurAgzizamhy

VewedjitCet4

sasGentOicks

    Jednak  wydaje  się,  że opcja -a 1 generuje dużo silniejsze
    hasła, bo używa bardziej różnorodnych kombinacji znaków.
apg -m 12 -x 12 -a 1

n9>H*nM1h}oO

Z.0m\#f<|JSJ

lWw*r}_Y9Ir5

w%:-PgrR=0Qs

ng,uD{O0jb<N

LXpzqE+=!>$_


    Oczywiście tych generatorów haseł możesz używać do generowania
    silnych  haseł do wszystkich możliwych celów (szczególnie w
    sieci Internet).

   5.7.1cracklib-check

    Mogło się zdarzyć, że nie skorzystałeś z generatora haseł tylko
    sam je sobie wymyśliłeś. W takim przypadku warto spr. jak hasło
    jest silne.
sudo apt install cracklib-runtime

    Zanim wywołasz polecenie sprawdzające twoje hasło zwróć uwagę
    by  je  rozpocząć  spacją  (poniżej  jest ona zaznaczona na
    czerwono).

    Polecenie  poprzedzone  spacją nie zostanie dodane do historii
    poleceń powłoki[248]^40.

    Teraz sprawdź swoje hasło poleceniem:
  echo "TWOJE HASŁO" | /usr/sbin/cracklib-check

    Możesz  w  ten sposób sprawdzać wszelkie inne używane przez
    Ciebie hasła (np. hasła do banków czy do sklepów Internet).

    W razie gdybyś zapomniał poprzedzić pow. polecenie spacją: w
    konsoli, jeśli naciśniesz strzałkę w górę i zobaczysz polecenia
    spr. twoje hasła oznacza to, że zostały dodane do historii. W
    takim przypadku powinieneś wyczyścić historię konsoli wydając
    poniższe polecenia:
history -c
rm ~/.bash_history

   5.7.2John the Ripper

    Po  instalacji  i  konfiguracji sys. Linuks możesz od czasu do
    czasu sprawdzić siłę haseł użytkowników w sys. prog. John the
    Ripper. Ten łamacz haseł działa na plikach z sumami obliczonymi
    z haseł (w przeciwieństwie do cracklib-check który działał
    bezpośrednio na hasłach).

    Oto polecenia instalujące tego łamacza haseł wraz ze słownikiem
    polskim:
sudo apt install john -y
sudo apt install wpolish

    Aby sprawdzić siłę haseł w sys. należy skopiować plik z hasłami
    do katalogu tmp:
sudo /usr/sbin/unshadow /etc/passwd /etc/shadow > /tmp/crack.password.db

    A następnie uruchomić łamacza:
john /tmp/crack.password.db

    Przy dobrych hasłach ten prog. nie powinien sam się zakończyć
    (powinien bez końca analizować silne hasła).

    Po tej operacji należy usunąć plik tymczasowy:
sudo rm -f /tmp/crack.password.db

    Tej ostatniej operacji nie można zapomnieć, gdyż potencjalnie
    /tmp/crack.password.db może być luką bezpieczeństwa.

    Prog.  John  the Ripper to taka ciekawostka historyczna, bo ten
    prog.  nie wykorzystuje proc. wielordzeniowych, czyli działa w
    jednym wątku, co jest kompletnym anachronizmem.

   5.7.3Zmiana hasła

    Jeśli kiedyś będziesz chciał zmienić swoje hasło w sys. użyj
    polecenia
passwd

    Wtedy podaj stare hasło i 2x nowe.

    passwd nie pozostawia haseł w historii poleceń powłoki.

                         6Instalacja sys. Linuks

6.1Nie łącz się z siecią lokalną ani z Internet

    Nawet  gdy  do  tego  zachęcają. Podczas instalacji sys. jest
    bezbronny.

6.2Wybierz punkty montowania przygotowanych partycji

    Wybierz ręczny podział na partycje.

    A  tam  ustaw  katalogi montowania dla każdej z nich. Zrób to
    zgodnie  z  podziałem  dysku na partycje jaki wprowadziłeś w
    ramach przygotowań do instalacji.

6.3Wprowadź hasło jakie wygenerowałeś

                 7Konfiguracja po instalacji sys. Linuks

7.1Skonfiguruj sudo

   7.1.1Dodaj siebie do grupy sudo

    Jest  to  konieczne byś mógł normalnie wykonywać czynności
    administracyjne  w  sys.  Linuks  bez  używania konta root ani
    polecenia su. Robisz to poleceniem:
su -
usermod -aG sudo $USER

    Wynik możesz sprawdzić poleceniem:
id $USER

   7.1.2Ustaw sudo tylko dla siebie

    Dbaj o to by żaden inny użytkownik w twoim sys. nie należał do
    grupy sudo. Aby to spr. należy użyć polecenia:
getent group sudo

    Powinno dać w wyniku tylko Ciebie.

    Aby usunąć użytkownika z grupy sudo należy użyć polecenia:
sudo gpasswd -d UŻYTKOWNIK sudo

   7.1.3Włącz sobie użycie sudo bez hasła

    Zrób kopię pliku /etc/sudoers:
sudo etc/sudoers /etc/sudoers.org
sudo nano /etc/sudoers

    Dodaj linię:
$USER ALL=(ALL) NOPASSWD:ALL

    Tylko zamiast $USER podaj swój login.

7.2Skonfiguruj zaporę sieciową UFW

    Niektóre prog. podają na s. podręcznika man z jakich serwerów
    korzystają. Taj robi np. whois.

    Ruch sieciowy mogę obserwować dzięki prog. netstat, tcpdump i
    Rekin z Drutu[249]^41.

    By się dowiedzieć gdzie prog. usiłuje się łączyć, można użyć
    strace[250]^42.

   7.2.1Domyślne blokowanie całego ruchu sieciowego

    Ja na swoich komp. konfiguruję UFW tak:

    Instaluję, resetuję i włączam zaporę sieciową UFW:
sudo apt install ufw
sudo ufw reset
sudo ufw enable

    Konfiguruję ufw tak by domyślnie blokował cały ruch wchodzący i
    wychodzący:
sudo ufw default deny incoming
sudo ufw default reject outgoing

    Różnica  między  deny  i  reject polega na tym, że deny nie
    odpowiada, natomiast reject odrzuca połączenia. Oznacza to, że
    reject zachowuje się kulturalnie, ale zdradza obecność kompa w
    sieci.

    Dodatkowo  dom.  odrzucanie poł. wych. ma tą zaletę, że nie
    trzeba czekać na limit czasowy związany z trasowaniem pakietów
    i rozwiązywaniem nazw przez DNS - oznacza to, że prog. którego
    blokujemy  od razu wznawia normalne działanie, bez oczekiwania
    na coś co i tak nie nastąpi.

    Odblokowuję możliwość łączenia z serwerem w mojej sieci przez
    ssh:

    Na stacji roboczej:
sudo ufw allow out from "$TWOJE_IP" to to 192.168.XXX.XXX port 22 proto
tcp

    Gdzie 192.168.XXX.XXX to adres serwera w sieci lokalnej.

    Na serwerze:
sudo ufw allow in from "$TWOJE_IP" to to 192.168.XXX.XXX port 22 proto t
cp

    Zamiast  allow można użyć limit zabezpiecza to przed atakiem
    odmowy  dostępu[251]^43  (czyli  przed  zbyt  dużą ilością
    jednoczesnych połączeń przychodzących). Jednak problemem wtedy
    są  skrypty  które  używają  SSH  (np. skrypt do wypychania
    wszystkich repo git na koniec dnia).

   7.2.2Odblokowanie możliwości łączenia się z serwerami DNS[252]^44

    Trochę  pomęczyłem  google.pl  i  duckduckgo.com  w  sprawie
    zalecanych serwerów DNS. Mi chodziło, czy są jakieś "wolne"
    serwery  DNS  lub  chociaż zalecane przez EFF lub GNU, ale nic
    takiego  nie znalazłem. Dlatego wybrałem po prostu najszybsze
    serwery DNS od Cloudflare z Kaliforni w SZAP.

    Serwery DNS nasłuchują na porcie 53.

    Wynikowe polecenia odblokowujące serwery DNS od Cloudflare są
    takie:
sudo ufw allow out from "$TWOJE_IP" to 1.1.1.1 port 53 proto udp
sudo ufw allow out from "$TWOJE_IP" to 1.0.0.1 port 53 proto udp

   7.2.3Odblokowanie synchronizacji zegara z serwerem czasu NPT

    Aby się nie rozdrabniać serwer czasu też wybrałem Cloudflare.
    Aby używać tych serwerów należy wyedytować plik:
sudo nano /etc/sys.d/timesyncd.conf

    I zmienić w nim linię:
#NTP=

    Na:
NTP=time.cloudflare.com

    Następnie należy zrestartować demona synchronizacji zegara:
sudo systemctl restart sys.d-timesyncd.service

    Następnie należy odblokować w UFW możliwość łączenia z serwerem
    time.cloudflare.com,  dlatego  najpierw  należy spr. jaki jest
    jego adres IP.

    Aby ustalić adresy IP nazw domenowych używam prog. dig.
$ dig time.cloudflare.com
time.cloudflare.com.    31      IN      A       162.159.200.1
time.cloudflare.com.    31      IN      A       162.159.200.123

    Serwery NPT nasłuchują na porcie 123.

    Wynikowe polecenia odblokowujące serwery NPT od Cloudflare są
    takie:
sudo ufw allow out from "$TWOJE_IP" to 162.159.200.1 port 123 proto udp
sudo ufw allow out from "$TWOJE_IP" to 162.159.200.123 port 123 proto ud
p

    Dokończenie konfiguracji ufw będzie omówione po połączeniu z
    Internet.

   7.2.4Odblokowanie możliwości łączenia z repo Ubuntu

dig archive.ubuntu.com
[...]
archive.ubuntu.com.     54      IN      A       91.189.91.39
archive.ubuntu.com.     54      IN      A       185.125.190.36
archive.ubuntu.com.     54      IN      A       185.125.190.39
archive.ubuntu.com.     54      IN      A       91.189.91.38
[...]

dig security.ubuntu.com
[...]
security.ubuntu.com.    24      IN      A       91.189.91.38
security.ubuntu.com.    24      IN      A       91.189.91.39
security.ubuntu.com.    24      IN      A       185.125.190.36
security.ubuntu.com.    24      IN      A       185.125.190.39
[...]

    Jak widać oba adresy mają takie same numery IP (jedynie w innej
    kolejności). Ja osobiście tego nie rozumiem, ale widać takie
    szaleństwa też są możliwe.

    Wynikowe  polecenia  odblokowujące  te adresy na portach http,
    czyli 80 i https czyli 443 są takie:
sudo ufw allow out from "$TWOJE_IP" to 91.189.91.39 port 80 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 185.125.190.36 port 80 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 185.125.190.39 port 80 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 91.189.91.38 port 80 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 91.189.91.39 port 443 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 185.125.190.36 port 443 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 185.125.190.39 port 443 proto tcp
sudo ufw allow out from "$TWOJE_IP" to 91.189.91.38 port 443 proto tcp

   7.2.5Odblokowanie możliwości łączenia z serwerami Google

    Tego nie da się zrobić ręcznie. Do skryptu konf. UFW należy
    dodać kod który:
     1. Odblokowuje  w  UFW  adresu  IP  do  jakiego kieruje domena
        www.gstatic.com;
     2. Pobiera listę zakresów IP serwerów Google:

    https://www.gstatic.com/ipranges/goog.json
    https://www.gstatic.com/ipranges/cloud.json
     3. Wyciąga wszystkie zakresy IP z pow plików;
     4. Odblokowuje zakresy adresów Google w UFW;
     5. Usuwa pliki goog.json i cloud.json.

   7.2.6Odblokowanie możliwości łączenia z serwerem duckduckgo.com

dig duckduckgo.com
[...]

duckduckgo.com.         125     IN      A       40.114.177.156
[...]

    Wynikowe polecenie odblokowujące ten adres jest takie:
sudo ufw allow out from "$TWOJE_IP" to 40.114.177.156 proto tcp

7.3Konfiguracja prog. gł. sys. Linuks

    Aby dostroić sam prog. gł. sys. Linuks należy wyedytować plik:
sudo nano /etc/sysctl.d/20-energo-prog-gl.conf

    I uzupełnij go taką treścią:
# Losowe przydzielanie adresów pamięci (mmap, sterta i stos):
kernel.randomize_va_space= 2
# Ponowne uruchomienie po 10s po zawieszeniu jądra:
kernel.panic= 10
# Włączenie IP spoofing protection:
net.ipv4.conf.all.rp_filter= 1
# Zablokowanie IP source routing:
net.ipv4.conf.all.accept_source_route= 0
net.ipv6.conf.all.accept_source_route= 0
# Ignorowanie rozgłoszeń broadcasts:
net.ipv4.icmp_echo_ignore_broadcasts= 1
# Logowanie fałszowanych pakietów:
net.ipv4.conf.all.log_martians= 1
# Wyłączanie przekazywania pakietów:
net.ipv4.ip_forward= 0
# Brak komunikatów o podejrzanych błędach ICMP:
net.ipv4.icmp_ignore_bogus_error_responses= 1

    Następnie wydaj polecenie:
sudo /lib/systemd/systemd-sysctl

    Aby  spr.  aktualne ustawienia związane z rdzeńem sys. Linuks
    użyj polecenia:
sudo sysctl --system

7.4Skonfiguruj partycje

    W przypadku gdy się zdecydujemy na proponowany powyżej podział
    na  partycje  można  ograniczyć  możliwości intruza. Ja tak
    konfiguruję partycje:
sudo nano /etc/fstab
     1. Wyłączam czasy i montowanie przez użytkownika na partycji
        /:
UUID=XXX...XXX /               ext2    defaults,noatime,nodiratime,noive
rsion,norelatime,nostrictatime,lazytime,nouser 0       1
     2. Wyłączam lepki bit, tworzenie urządzeń, czasy i montowanie
        przez użytkownika na partycjach: /home, /boot, /usr/local,
        /opt, /tmp i /var:
UUID=XXX...XXX /home ext4 defaults,nosuid,nodev,noatime,nodiratime,noive
rsion,norelatime,nostrictatime,lazytime,nouser 0 2
     3. Wyłączam uruchamianie, lepki bit, tworzenie urządzeń, czasy
        i montowanie przez użytkownika w pamięci współdzielonej:
none /run/shm                                             tmpfs   rw,noe
xec,nosuid,nodev,noatime,nodiratime,noiversion,norelatime,nostrictatime,
lazytime,nouser 0 0

7.5Wyłącz plik wymiany

    Jak podałem wyżej plik wymiany może zabić dysk SSD, dlatego w
    razie  gdyby  komp.  zamulał należy dokupić pam. RAM, a swap
    należy wyłączyć.

    Na czas bieżącej sesji swap można wyłączyć poleceniem:
sudo swapoff -a

    Natomiast na trwale wyłacza się go edytując plik:
sudo nano /etc/fstab

    Tam trzeba zakomentować (znakiem #) linię:
# /swapfile     none            swap sw              0       0

    Na Ubuntu Serwer jest to:
# /swap.img      none    swap    sw      0       0

    Ta zmiana zostanie uwzględniona po ponownym uruchomieniu sys.

    Potem usuń pliki wymiany. Na stacji roboczej:
sudo rm /swapfile

    Na Ubuntu Serwer:
sudo rm /swap.img

7.6Włącz automatyczne ubijanie zbyt żarłocznego procesu

    Nie wiem też nic na temat ustawienia które przy wyczerpywaniu
    pamięci ubija najbardziej żarłoczny proces.

    Powłoka Basz może działać w kilku trybach: logowania, wsadowym
    i interaktywnym.

    W   przypadku   trybu  logowania:  cytat:  "[...]  w  pierwszej
    kolejności  czyta  i  wykonuje polecenia z pliku /etc/profile,
    jeśli   takowy  istnieje.  Po  odczytaniu  tego  pliku,  szuka
    ~/.bash_profile,    ~/.bash_login    i    ~/.profile,   w   tej
    kolejności"[253]^45  Czyli  te  skrypty są uruchamiane raz po
    zalogowaniu użytkownika.

    W  przypadku trybu wsadowego: cytat: "[...] szuka w środowisku
    zmiennej BASH_ENV, interpretuje jej wartość, jeśli ją znalazł,
    i  używa otrzymanej wartości jako nazwy pliku do odczytania i
    wykonania"[254]^46.

    W  przypadku  trybu  interaktywnego: cytat: "[...] bash czyta i
    wykonuje polecenia z /etc/bash.bashrc i ~/.bashrc, jeśli takie
    pliki istnieją"[255]^47.

    Te tryby i uruchamiane skrypty mają takie praktyczne znaczenie,
    że  umożliwiają  konf.  powłoki  globalnie  dla  wszystkich
    użytkowników  z  rozróżnieniem  trzech powyższych trybów.
    Umożliwia to ustawienie np. limitów pamięciowych dla wszystkich
    użytkowników w pliku /etc/profile . Dodatkowo rozróżnia się
    limity  "miękkie"  i  "twarde".  Twarde są nieprzekraczalne a
    miękkie są standardowo ustawione. Limity miękkie można zmieniać
    w $HOME/.profile.

    Polecenie  ulimit pozwala na określenie różnych limitów dla
    uruchamianych  prog.  Aby  ustawić limit pamięci wirtualnej w
    prog. należy wyedytować plik:
nano /etc/profile       # Dla wszystkich użytkowników.

    lub
nano $HOME/.profile     # Dla konkretnego użytkownika.

    Należy dodać takie linie:
ulimit -v $((80*1024*1024))

    [256]^48Moim zdaniem nie jest to wielkość pam. wirt. (w sensie
    swap) tylko całkowita ilość zaalokowanej pamięci przez proces
    użytkownika  (czyli  tyle  pamięci  proces zażądał od sys.
    operacyjnego).
ulimit -m $((20*1024*1024))

    To  jest  limit  rzeczywistego  użycia  pamięci  przez proces
    użytkownika.

    Jak jakiś prog. nagle zostanie zamknięty, to znaczy, że ulimit
    -v lub ulimit -m jest za mały. Oznacza to, że właśnie miałeś
    próbę włamania typu "przepełnienie bufora"[257]^49.

    Warto też dodać limit na ilość uruchamianych przez użytkownika
    procesów (licząc wątki - jeden prog. może uruchamiać wiele
    wątków):
ulimit -u 1024

7.7Zaostrz prawa dostępu do katalogów użytkowników

   7.7.1Katalogi domowe

    Prawa dostępu do kat. domowych użytkowników są domyślnie zbyt
    słabe bo pozwalają każdemu zalogowanemu w sys. na przeglądanie
    i kopiowanie moich prywatnych danych.

    Wyłączam  grupom  i pozostałym użytkownikom dostęp do kat.
    domowych użytkowników i root:
sudo chmod go-rwx /home/* /root

    Gdybym chciał wyłączyć grupom i innym użytkownikom dostęp do
    mojego kat. domowego wydałbym polecenie:
chmod -R go-rwx $HOME

    Przypisuję  dla  siebie  wszystkie  pliki  i  katalogi  w moim
    katalogu:
chown -R $USER:$USER $HOME

    Tego polecenia należy użyć dla każdego użytkownika na naszym
    komp.

    W  tym  celu  najpierw zaloguj się na konsolę każdego z nich
    poleceniem:
su - LOGIN

    Gdzie LOGIN to login użytkownika.

    Po  tych  poleceniach  udostępnianie  plików  bezpośrednio z
    katalogów domowych nie będzie działać. Bo to wymaga dostępu
    użytkowników z grup do jakich należę (np. samba, ftp czy www).

    Po   tych   poleceniach   nadal   normalnie  będzie  działać
    przeglądarka, klient pocztowy[258]^50.

   7.7.2UMASK

    Maska UMASK definiuje, dla każdego użytkownika osobno, jakich
    uprawnień nie mają mieć nowe pliki i katalogi.

    Czyli  gdy  ma  ona  wartość  077  to ani grupa ani pozostali
    użytkownicy nie będą mieli prawa odczytu, zapisu ani wykonania.

    Natomiast  Ty  będziesz miał te (pełne) prawa, czyli 600 dla
    nowych plików i 700 dla nowych katalogów.

     7.7.2.1UMASK globalny

    W pliku

    sudo nano /etc/login.defs

    ustaw:
UMASK   077
USERGROUPS_ENAB no

    Ta druga opcja, jeśli jest włączona, powoduje że efektywnie
    UMASK ma wartość 007, a nie o to chodzi…

     7.7.2.2Problemy z globalnym UMASK

    Po  globalnym  zaostrzeniu flagi UMASK pojawią się problemy z
    menadżerami  pakietów  APT  i  pip  (Python 2 i 3) i pewnie z
    innymi.

    Rozwiązania znam 3:
     1. Konfigurować umask lokalnie dla każdego użytkownika zamiast
        globalnie.
     2. W przypadku pip można instalować skrypty Pytona bez sudo,
        czyli  lokalnie,  w  katalogu użytkownika, czyli tylko dla
        siebie;
     3. W przypadku pip można instalować skrypty globalnie w sys.,
        dla  wszystkich  użytkowników  poleceniem sudo pip3 XXX .
        Następnie wywołać takie polecenie:
sudo chmod -R go+rx /usr/local/lib/python3.8

     7.7.2.3UMASK lokalny

    Warto  rozważyć  ustawianie  umask  tylko  sobie  i  zwykłym
    użytkownikom, a root-a zostawić w spokoju. W tym celu w pliku:
nano $HOME/.profile

    Nalezy dodać linię:
umask 077

   7.7.3DIR_MODE

    DIR_MODE określa domyślne prawa dostępu do nowo tworzonego kat.
    użytkownika (podkatalogi z nazwami użytkowników w kat /home).
    Domyślnie jest to 0755 czyli wszyscy mają możliwość odczytu
    łącznie z atrybutami plików. Aby ten nonsens zmienić edytuję:
sudo nano /etc/adduser.conf

    ustawiam:
DIR_MODE=0700

    Czyli zapewniam wyłącznie sobie odczyt, zapis i wykonanie.

   7.7.4Ważne pliki sys.

sudo chmod 0440 /etc/sudoers
sudo chmod 0600 /etc/sysctl.conf
sudo chmod 0600 /etc/cups/cupsd.conf

7.8Usuń pliki bez właściciela

sudo find / -xdev \( -nouser -o -nogroup \) -print0 | xargs -0 -ixxx sud
o rm -r xxx

    To polecenie może kasować konteneray Dokera.

7.9Usuń uszkodzone linki symboliczne

    Po  usunięciu  oryginalnego  pliku do którego prowadził link
    symboliczny   ten   link   pozostaje   w  sys.  Jest  on  wtedy
    „uszkodzonym linkiem symbolicznym”. Generalnie należy się ich
    pozbyć:
sudo find / -xtype l -delete

    To polecenie może kasować kontenery Dokera.

7.10Wyłącz konsolę dla nowych użytkowników

    W pliku:
sudo nano /etc/default/useradd

    zmień SHELL na:
SHELL=/usr/sbin/nologin

    W pliku
sudo nano /etc/adduser.conf

    zmień DSHELL na:
DSHELL=/usr/sbin/nologin

7.11Konfiguracja sys. Linuks dla programisty

   7.11.1Włącz zrzuty obrazów pam. prog.

    Ponieważ  czasem  interesują mnie powody nagłego, awaryjnego
    zatrzymania prog. włączam zrzuty pamięci dla prog. W pliku
sudo nano /etc/security/limits.conf

    ustawiam opcję:
* - core 4194304 # 4GB w KB

    To  powoduje, że hard[259]^51 i soft[260]^52 limit dla pliku z
    zrzutem pamięci wynosi 4GB.

    Edytuję plik:
sudo nano /etc/sysctl.d/20-energo-zrzut-zaw-prog.conf

    I dodaję do niego taką zawartość:
# Wyłączenie flagi dającej uprawnienia root-a
fs.suid_dumpable=0
# Podanie katalogu i formatu nazwy pliku dla zrzutów pamięci
# %u to użytkownik, %e to nazwa programu, %p to PID (numer procesu), .co
re to rozszerzenie pliku
kernel.core_pattern=/var/crash/%u-%e-%p.core

    Następnie  wydaję polecenie wprowadzające powyższe zmiany w
    działającym rdzeniu sys. Linuks:
sudo /lib/systemd/systemd-sysctl

    Aby  spr.  aktualne ustawienia związane z rdzeniem sys. Linuks
    użyj polecenia:
sudo sysctl --system

7.12Konfiguracja sys. Linuks dla nie programisty

   7.12.1Wyłącz zrzuty prog. gł. i pozostałych prog.

    Wyedytuj:
sudo nano /etc/security/limits.conf

    I ustaw:
* - core 0

7.13Konfiguracja użytkowników

    Razem  z sys. Linuks jest instalowana cała masa niepotrzebnych
    użytkowników.  Zalecam  dodanie  takiej sekwencji poleceń do
    własnego skryptu aktualizacji sys.:
sudo deluser games

sudo deluser mail

sudo deluser news

sudo deluser proxy

sudo deluser www-data

sudo deluser backup

sudo deluser list

sudo deluser irc

sudo deluser gnat

sudo deluser gnats

sudo deluser speech-dispatcher

sudo deluser hplip

sudo deluser uucp

sudo deluser man

7.14Konfiguracja grup użytkowników

    Warto sprawdzić do jakich grup się należy:
groups

    Dla normalnego użytkownika wcale nie jest potrzebne należenie
    do  sambashare  (udostępnianie  plików  w sieci SMB czyli dla
    Windows)  ani  do  dip  (używanie  modemów  tel.icznych). Aby
    wystąpić z tych grup należy użyć polecenia:
sudo gpasswd -d $USER GRUPA

    Na pewno należy usunąć te grupy z sys.:
sudo delgroup games
sudo delgroup mail
sudo delgroup news
sudo delgroup proxy
sudo delgroup www-data
sudo delgroup backup
sudo delgroup list
sudo delgroup irc
sudo delgroup speech-dispatcher
sudo delgroup hplip
sudo delgroup uucp
sudo delgroup man
sudo delgroup landscape
sudo delgroup pollinate
sudo delgroup saned
sudo delgroup colord
sudo delgroup gnat

7.15Ogniste Więzienie

    Koncepcja  ograniczania prog. komp. tak by nie mogły kraść i
    wysyłać moich prywatnych danych w świat jest bardzo dobra. Te
    prog.  nazywane  są piaskownicami. Prog. te bazują na plikach
    profili które szczegółowo definiują co prog. może robić a czego
    mu  nie wolno. Do tych prog. zaliczamy Ogniste Więzienie (w j.
    ang. Friejail). Jest on przykrywką dla AppArmor (Debian/Ubuntu)
    i SeLinux (RedHat).

    Przykładowo gdy uruchomimy Grzmiący Ptak w Ogniste Więzienie,
    to Grzmiący Ptak będzie miał dostęp tylko do kat. $HOME/Pobrane
    i  paru  plików  w  $HOME. Tak więc nic nie jest w stanie nam
    ukraść.

    Ogniste  więzienie  nie  pozwala na konf. zapory sieciowej dla
    każdego prog. z osobna.

   7.15.1Instalacja Ogniste Więzienie

sudo apt install firejail

   7.15.2Włączenie Ogniste Więzienie

    Włączenie Ogniste Więzienie jest dwu etapowe:
     1. Najpierw    trzeba    zlinkować   ograniczane   prog.   do
        /usr/local/bin . Robi się to dlatego, że prog. uruchamiany
        w   skróconej   formie   jest   wyszukiwany   najpierw   w
        /usr/local/bin  a  jak  tam  go  nie  ma  to szukany jest w
        /usr/bin .

sudo firecfg
     2. Następnie trzeba usunąć ścieżki /usr/bin ze wszystkich
        poleceń  w  plikach  *.desktop[261]^53 by uruchamiały one
        prog.  z  /usr/local/bin  (bo  ma  on wyższy priorytet nad
        /usr/bin). Robi to polecenie:

firecfg --fix

   7.15.3Uruchamianie prog. w piaskownicy Ogniste Więzienie i bez niej

    Po tych zabiegach uruchamianie prog. odbywa się wg schematu:
/usr/bin/thunderbird    # Grzmiący Ptak uruchomi się bez piaskownicy
thunderbird             # Grzmiący Ptak uruchomi się w piaskownicy

    Czyli podając pełną ścieżkę (tu: /usr/bin/XXXXX) pomija sie
    Ogniste Więzienie. Natomiast wydając skrótowe polecenie prog.
    uruchamiany jest w piaskownicy.

   7.15.4Spr. czy prog. jest uruchomiony w piaskownicy Ogniste Więzienie

firejail --list

   7.15.5Strojenie Ogniste Więzienie

    Uprawnienia  prog. zdefiniowane w kat. /etc/firejail są bardzo
    restrykcyjne, a czasem wręcz nieżyciowe. Dla niektórych prog. w
    ogóle brak profilów Ogniste Więzienie.

    To że profile Ogniste Więzienie nie odpowiadają w 100% naszym
    potrzebom nie znaczy, że Ogniste Więzienie jest zły. Oznacza
    to,  że  Ogniste  Więzienie  trzeba  dostrajać  zamiast się
    niepotrzebnie denerwować.

    Ogniste      Więzienie      dostrajamy      tworząc     pliki
    $HOME/.config/firejail/*.local  .  Pliki  te  mają taką samą
    składnię jak pliki /etc/firejail/*.profile .

    Tu podam kilka przykładów jak dostrajam Ogniste Więzienie:
     1. Kate - edytor tekstów - powinien nie mieć dostępu do sieci
        Internet i powinien mieć dostęp do wszystkich plików w kat.
        domowym.  Dlatego w pliku $HOME/.config/firejail/kate.local
        mam taki wpis:

net none

noblacklist ${HOME}
read-write ${HOME}

blacklist /opt

    Tak samo mam skonfigurowanego Qt Creatora - IDE do prog. w C++.
     2. Libreoffice - pakiet biurowy - nie powinien mieć dostępu do
        sieci  Internet i powinien mieć dostęp do kat. Dokumenty,
        Ściągnięte      i     Szablony,     wiec     w     pliku
        $HOME/.config/firejail/libreoffice.local mam taki wpis:

net none

whitelist ${HOME}/Dokumenty
whitelist ${HOME}/Ściągnięte
whitelist ${HOME}/Szablony

blacklist /opt
     3. Ognisty Lis - przeglądarka stron www - powinien mieć dostęp
        do     kat.     $HOME/Ściągnięte     więc    w    pliku
        $HOME/.config/firejail/firefox.local mam taki wpis:

whitelist ${HOME}/Ściągnięte

blacklist /opt
     4. Grzmiący   Ptak   -   powinien   mieć   dostęp  do  kat.
        $HOME/Ściągnięte i do kat. $HOME/.gnupg, a dodatkowo w tym
        profilu   musi  działać  Google  Chrome,  więc  w  pliku
        $HOME/.config/firejail/thunderbird.local mam taki wpis:

whitelist ${HOME}/+Ściągnięte

ignore noexec /tmp
ignore noexec ${HOME}
ignore caps.drop all
ignore ipc-namespace
ignore no3d
ignore nonewprivs
ignore noroot
ignore novideo
ignore protocol
ignore seccomp
ignore private-bin
ignore private-etc
ignore private-tmp
ignore dbus-user none
ignore dbus-system none
ignore memory-deny-write-execute

noblacklist ${HOME}/.cache/BraveSoftware
noblacklist ${HOME}/.config/BraveSoftware
noblacklist ${HOME}/.config/brave
noblacklist ${HOME}/.config/brave-flags.conf
noblacklist ${HOME}/.gnupg
noblacklist /proc/config.gz
noblacklist ${HOME}/.pki
noblacklist ${HOME}/.local/share/pki

mkdir ${HOME}/.cache/BraveSoftware
mkdir ${HOME}/.config/BraveSoftware
mkdir ${HOME}/.config/brave
whitelist ${HOME}/.cache/BraveSoftware
whitelist ${HOME}/.config/BraveSoftware
whitelist ${HOME}/.config/brave
whitelist ${HOME}/.config/brave-flags.conf
whitelist ${HOME}/.gnupg

caps.keep sys_admin,sys_chroot

whitelist /opt/google

   7.15.6Dodawanie brakujących profili Ogniste Więzienie

    Procedura  dodawania pliku *.profile dla nowego prog. (nazwijmy
    go "nazwa_programu") jest taka:
     1. Tworzenie pliku profile:

    Plik ten musi mieć nazwę: nazwa_progarmu.profile.
     2. Kopiowanie pliku profile:

    Plik nazwa_progarmu.profile musi trafić do katalogu:
/etc/firejail
     3. Dodawanie  nazwa_progarmu  do  listy  prog.  kontrolowanych
        przez Ogniste Więzienie:

    Do    pliku   /usr/lib/x86_64-linux-gnu/firejail/firecfg.config
    należy dodać wpis "nazwa_programu" (bez cudzysłowu).

    Zwróć uwagę, że ten plik jest posortowany. Więc by uniknąć
    problemów należy dodać nazwę prog. we właściwym miejscu w tym
    pliku  (programując  skrypt  należy  zrobić kopię zapasową
    firecfg.config następnie na jego koniec dodać nazwa_progarmu i
    przepuścić przez rurkę sort|uniq).
     4. Ponowna konfiguracja Ogniste Więzienie:

sudo firecfg --clean
sudo firecfg
firecfg --fix

   7.15.7Globalne wyłączenie Ogniste Więzienie

    Normalnie nie jest potrzebne wyłączanie Ogniste Więzienie.

    By go ominąć wystarczy podać pełną ścieżkę do prog. np.:
/usr/bin/thunderbird    # Grzmiący Ptak uruchomi się bez piaskownicy
thunderbird             # Grzmiący Ptak uruchomi się w piaskownicy

    Jednak gdy chcesz koniecznie wyłączyć Ogniste Więzienie, to
    znam dwie metody:
sudo firecfg --clean
reboot

    albo:
sudo apt remove --purge firejail
reboot

7.16SSH

   7.16.1Instalacja ssh

    Tam podano niektóre czynności dotyczące serwerów i klientów
    linuksowych.

    Na stacji roboczej instaluję klienta ssh poleceniem:
sudo apt install openssh-client

    Na serwerze instaluję demona sshd i klienta ssh poleceniem:
sudo apt install ssh

    Na serwerze oprócz demona sshd mam jeszcze klienta gdyż używam
    go przez gita by zaciągać moje proj.

   7.16.2Konfiguracja sshd

    Gdy używasz SSHD na serwerze samodzielnie trzeba skonfigurować
    tego demona. Wynika to oczywiście ze zbyt łagodnych ustawień
    domyślnych:
sudo nano /etc/ssh/sshd_config

    Należy dodać następujące linie:
# Wymuszenie protokołu w wersji 2:
Protocol 2
# Blokada logowania roota:
PermitRootLogin no
# Blokada pustych haseł:
PermitEmptyPasswords no
# Wymuszenie uwierzytelniania za pomocą klucza publicznego:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
# Blokada identyfikacji po nazwie komp.:
IgnoreRhosts yes
HostbasedAuthentication no
# Wyłączenie przekierowań ruchu TCP
AllowTCPForwarding no
# Blokada uruchamiania prog. graf.:
X11Forwarding no
# Adres na jakim nasłuchuje sshd (chodzi o to żeby nie nasłuchiwał na pu
blicznym IP):
ListenAddress 192.168.20.XXX

# Obsługa użytkowników wyłącznie z sieci lokalnej:
AllowUsers *@192.168.20.YYY
# albo dla wszystkich komp. w sieci lokalnej: AllowUsers *@192.168.20.0/
24

# Ustawienie kat. chroot w celu ograniczenia dost. do wybranego kat.
Match User git
ChrootDirectory /home/git/projekty

    XXX zastępuję końcówką adresu IP swojego serwera.

    YYY zastępuję końcówką adresu IP swojej stacji roboczej.

    Aby to wszystko zadziałało bez ponownego uruchamiania sys. na
    serwerze należy wydać polecenia:
sudo systemctl stop ssh.service
sudo systemctl start ssh.service

     7.16.2.1Wygeneruj parę kluczy

    Uwierzytelnianie należy opierać na kluczach szyfrujących (a nie
    na  hasłach).  Nowszym  algorytmem  (tego  SSH w Debian 10 nie
    rozpoznaje):
ssh-keygen -t ed25519

    Lub starszym (tego rozpoznaje SSH w Debian 10):
ssh-keygen -t rsa -b 4096

     7.16.2.2Załaduj publiczne klucze SSH na serwer[262]^54

    Aby załadować klucz publiczny na serwer trzeba odblokować na
    chwilę możliwość logowania hasłem. Jest to dziwne bo wiele
    poradników karze od razu skonfigurować demona sshd tak by nie
    można było się logować hasłem tylko kluczami cyfrowymi.

    Jeśli nie chcesz ryzykować, to można poniższe pliki skopiować
    ze  stacji  roboczej  na patyk USB i następnie z patyka USB na
    serwer.

    Klucze cyfrowe trafiają do pliku $HOME/.ssh/authorized_keys na
    serwerze.

    Aby użyć ssh-copy-id do kopiowania kluczy wykonaj następującą
    procedurę:
     1. Na serwerze odblokuj na chwilę możliwość logowania hasłem:

sudo nano /etc/ssh/sshd_config

    Ustaw:
PasswordAuthentication yes
     2. Na serwerze zrestartuj demona sshd:

sudo systemctl restart sshd
     3. Na stacji roboczej w zależności od użytego algorytmu:

ssh-copy-id -i $HOME/.ssh/id_ed25519.pub UŻYTKOWNIK@SERWER

    lub:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub UŻYTKOWNIK@SERWER

    Gdzie UŻYTKOWNIK to login na zdalnym serwerze. Natomiast SERWER
    to adres IP lub nazwa domenowa serwera.
     4. Na serwerze zablokuj możliwość logowania hasłem:

sudo nano /etc/ssh/sshd_config

    Ustaw:
PasswordAuthentication no
     5. Na serwerze zrestartuj demona sshd:

sudo systemctl restart sshd

   7.16.3Wykonaj instrukcję SSH Hardening Guides

    [263]https://www.ssh-audit.com/hardening_guides.html

   7.16.4Użyj ssh-audit by spr. konf. serwera ssh

ssh-audit 192.168.20.24

7.17Skonfiguruj CUPS

    CUPS  to  demon  drukowania.  Udostępnia  on zbędną usługę
    konfiguracji przez stronkę WWW. Jest to zbędne bo to samo można
    robić z poziomu menadżera okien. Aby to wyłączyć edytujemy
    plik:
sudo nano /etc/cups/cupsd.conf

    Szukam lini:
WebInterface Yes

    I zmieniam na:
WebInterface Off

    Następnie zrestartuj cups:
sudo systemctl stop cups.service
sudo systemctl start cups.service

7.18Skonfiguruj zegary

    W  sys.  Linuks zegary uruchamiają regularnie różne zadania.
    Część  z  tych  zadań  jest  nadmiarowa. Do kontroli zadań
    okresowych służy cron i systemd. Zegary z systemd tak naprawdę
    powielają to co oferuje cron.

    Aby przejrzeć zad. cron, należy spr. zaw. nast. kat.:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

    Z tych kat. należy usunąć (czyli przesunąć do kat. domowego)
    pliki zadań takich jak:
      * Budowanie bazy man-db (jej brak nic widocznego nie powoduje
        – prawdopodobnie służy celom szpiegowskim);
      * Zadania  apt  (ich brak nic nie powoduje – prawdopodobnie
        służą celom szpiegowskim).

    Zad. zegarowe systemd listuje komenda:
sudo systemctl status *.timer

    Tu podobnie należy usunąć (czyli przesunąć do kat. domowego):
    man-db.timer,    apt-dialy-update.timer    i   apt-dialy.timer.
    Znajdują się one w kat.:
/usr/lib/systemd/system

    Świadomie podaję, że należy kasować te pliki, bo standardowa
    komenda:
sudo systemctl disable man-db.timer

    Po   prostu   nie  działa  (zegar  jest  natychmiast  ponownie
    uruchamiany).

7.19Skonfiguruj sieć

    Pamiętaj  $TWOJE_IP  to  adres  twojego kompa jaki teraz sobie
    wymyślisz  i  jaki  będzie  zwracać  polecenie ip a gdy już
    pomyślnie skonfigurujesz sieć i do niej się połączysz.

    Zalecam  konfigurację statycznego IP. Ma to plus taki, że jak
    pamiętasz swoje IP, to łatwo stwierdzić, czy inne kompy widzą
    twojego  sys. Linuks, czy nie (prog. ping). Drugą sprawą jest
    to, że można sobie zapewnić lepszą symbolikę niż przy DHCP.

    Aby skonfigurować sieć musisz podjąć parę decyzji:
     1. Jak chcesz skonfigurować sieć w twoim sys. Linuks?
        Odradzam konfigurację sieci z poziomu pulpitu, bo:

     1. Nie zadziała dla wszystkich użytkowników;
     2. Nie  zadziała  też  w  sytuacji  awaryjnej,  gdy  nie  ma
        możliwości uruchomienia pulpitu.

    Najsensowniejszą znaną mi konfiguracją sieci w sys. Linuks w
        2023r.  jest  netplan.  Tą  konfigurację definiuje się w
        plikach *.yaml i kopiuje się je do kat. /etc/netplan .
     1. Jaki ma być adres twojej sieci prywatnej?
        Do wyboru masz parę sieci wymieniłem je w roz. "[264]Budowa
        sieci Internet".
     2. Jakich typów masz karty sieciowe?
        Konfiguracja  się  różni  w  przypadku  kart kablowych i
        radiowych.
     3. Jak się nazywają twoje karty sieciowe w sys. Linuks?

sudo lshw -C network
[...]
logical name: XXXXXXXX

[...]

    XXXXXXXX jest nazwą twojej karty sieciowej w sys. Linuks.
     5. Jak skonfigurować karty sieciowe?

    Przykładowy  plik  dla  karty sieci kablowej może mieć taką
    postać:
network:
   ethernets:
     eXXXXX:
       addresses:
         - TWOJE_IP/24
       activation-mode: manual
       dhcp4: no
       dhcp6: no
       nameservers:
         addresses: [1.1.1.1,1.0.0.1]
   version: 2
   renderer: NetworkManager

    eXXXXX to nazwa karty sieciowej. TWOJE_IP/24 oznacza adres IP i
    sieć. Sieć jest rozpoznawana przez maskę bitową, tu są to 24
    bity czyli 3 bajty. Oznacza to, że część adresu dotycząca sieci
    to  24bity  z 32, a adresy komp. w tej sieci to reszta, czyli 8
    bitów z 32. Gdy mamy 8 bitów, to znaczy, że mamy do dyspozycji
    255  wart. (jednak w IP są zarezerwowane wart. specjalne takie
    jak 255). Reszta jest chyba jasna.

    Przykładowy  plik  dla  karty sieci radiowej może mieć taką
    postać:
network:
   wifis:
     wXXXXXX:
       access-points:
         "TWOJA_SIEĆ_WIFI":
           password: "XXXXXXXXXXX"
       activation-mode: manual
       dhcp4: yes
       dhcp6: no
       dhcp4-overrides:
         use-dns: no
       nameservers:
         addresses: [1.1.1.1,1.0.0.1]
   version: 2
   renderer: NetworkManager

    wXXXXXX   to   nazwa  karty  sieciowej,  "TWOJA_SIEĆ_WIFI"  to
    identyfikator    sieci   Wi-Fi   (TAK!   Z   tymi   podwójnymi
    apostrofami.).  "XXXXXXXXXXX"  to hasło do sieci Wi-Fi (TAK! Z
    tymi podwójnymi apostrofami.). Reszta jest chyba jasna.

    Konfigurację  standardowo  kończymy  poleceniem  aktywującym
    zmiany:
sudo netplan apply /etc/netplan/TWÓJ_PLIK_KONF.yaml

    TERAZ NALEŻY PODNIEŚĆ POŁĄCZENIE SIECIOWE W CELU UZYSKANIA POŁ.
    Z INTERNET.

7.20Awaryjne połączenie z siecią Internet

    Może  się  zdarzyć,  że padnie sieć w twoim komp. i nie ma
    możliwości  samodzielnego  naprawienia  jej,  bo  np. brakuje
    pakietów z repo dystrybucji.

    Może też się zdarzyć, że aby w ogóle normalnie połączyć się z
    siecią lokalną musisz skompilować najpierw sterownik do karty
    sieciowej.  Tego nie zrobisz bez instalacji gcc , make i innych
    pakietów.

    Na  te  awaryjne  sytuacje dziś jest już prosta rada: należy
    podłączyć sprytny tel. z Androidem kablem USB do kompa. Wtedy
    wystarczy skonfigurować w sprytnym tel. port USB by udostępniał
    sieć dla kompa i już można doprowadzić sys. do porządku.

    W  przypadku  gdy sys. sam nie skonfiguruje tego połączenia -
    jest  tak  np.  na  Ubuntu  Serwer  - wtedy można sobie łatwo
    poradzić tworząc profil netplan:
nano /etc/netplan/usb.yaml

    Wklej:
network:
   ethernets:
     usb0:
       activation-mode: manual
       dhcp4: yes
       dhcp6: no
       dhcp4-overrides:
         use-dns: no
       nameservers:
         addresses: [1.1.1.1,1.0.0.1]
   version: 2
   renderer: NetworkManager

    Niestety na sys. Android 11 nie można na stałe ustawić adresu
    sieci więc najprościej ustawić DHCP j.w.

    Zainstaluj profil poleceniem:
sudo netplan apply /etc/netplan/usb.yaml

7.21Postarzanie prog. gł.

   7.21.1Blokada aktualizacji prog. gł.

    Mnie  osobiście  bardzo  dziwi  i bardzo niepokoi cotygodniowa
    aktualizacja prog. gł. w dystrybucjach bazujących na Debianie.
    Nie  wnikam  co  tam oni mieszają, tylko po instalacji wydaję
    polecenie:
sudo apt-mark hold linux-*

   7.21.2Instalacja najstarszego prog. gł. w repo

    Listę dostępnych prog. gł. podaje polecenie:
apt list | grep -P 'linux-image-\d+.*'

    Instaluję też najstarszy prog. gł. Linuksa w repo - u mnie to
    wer. 5.4.0-26:
sudo apt install $(apt list | grep 'linux-[^-]*-5.4.0-26-generic' | cut
-d '/' -f1 | tr '\n' ' ')

    Widać, że jest to operacja dla wtajemniczonych, bo jak się poda
    jedynie pakiet linux-image-5.4.0-26-generic , to zgłosi błąd!
    Dopiero ręcznie poda się pełną listę zależności, to można
    zainstalować wybrany rdzeń.

    Do powyższego należy dodać:
sudo apt install linux-modules-extra-5.4.0-26-generic

    Bo bez tego X-y nie odpalą.

   7.21.3Uruchom ponownie sys. komp. wybierając w boot menu starą wer.
   prog. gł.

   7.21.4Wyłączenie blokad usuwania zbędnych wer. prog. gł.

sudo nano /etc/apt/apt.conf.d/01autoremove

    I zakomentuj wszystko w sekcji NeverAutoRemove:
   NeverAutoRemove
   {
#       "^firmware-linux.*";
#       "^linux-firmware$";
#       "^linux-image-[a-z0-9]*$";
#       "^linux-image-[a-z0-9]*-[a-z0-9]*$";
   };

   7.21.5Usuwanie zbędnych prog. gł.

    Np. aby usunąć prog. gł. Linuksa w wer. 5.4.0-96 należy wykonać
    polecenie:
sudo apt remove --purge $(apt list | grep 'linux-[^-]*-5.4.0-96-generic'
  | cut -d '/' -f1 | tr '\n' ' ')

    Widać, że jest to operacja dla wtajemniczonych, bo jak się poda
    jedynie pakiet linux-image-5.4.0-96-generic , to zgłosi błąd!
    Dopiero ręcznie poda się pełną listę zależności, to można
    zainstalować wybrany rdzeń. Stąd powyższy skrypt.

    Zauważyłem, że z jakiegoś powodu nawet po usunięciu rdzenia w
    kat.  /boot  zostają  niektóre  jego  pliki. Rozpoznasz je po
    numerach  tych  rdzeni jakie usunąłeś. Usuń z kat. /boot te
    pliki, np. z kerelem w wer. 5.4.0-96 powiązane są takie pliki:
/boot/System.map-5.4.0-96-generic
/boot/config-5.4.0-96-generic

7.22Skrypt aktualizujący sys.

    Aktualizacja sys., to nie tylko banalne:
sudo apt update && sudo apt upgrade

    Konieczne jest wykonanie dużo większej ilości działań. Dlatego
    proponuję napisać skrypt w którym dzieją się rzeczy opisane w
    p. Skrypt aktualizacyjny.

                   8Ręczna diagnostyka bezpieczeństwa

8.1Diagnostyka transmisji w sieci Internet

    Do  monitorowania  ruchu  sieciowego  służy  monitor tcpdump.
    Wywołuje się go:
sudo tcpdump

    Jednak gdy chcesz zobaczyć tylko nowe połączenia. By wiedzieć
    co się dzieje z twoim komp. należy użyć opcji pokazujące tylko
    pakiety IP/TCP z flagą SYN:
sudo tcpdump 'tcp[tcpflags] & (tcp-syn) != 0'

    Gdy chcesz monitorować tylko rozpoczynanie i kończenie połączeń
    trzeba dodać flagę FIN:
sudo tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'

    tcpdump   jest  świetnym  prog.,  ale  wyświetla  nieczytelne
    komunikaty. Jednak ma w sobie zabezpieczenie[265]^55[266]^56 by
    nie mógł działać w skryptach.

    Do wyświetlania otwartych gniazd Internet TCP, podawania nazwy
    procesu  (gdy to możliwe), bez obcinania adresu, z dodatkowymi
    informacjami, ze wszystkimi gniazdami i z powtarzaniem - należy
    użyć polecenia:
sudo netstat -tpWeea --numeric-ports

    Gdy uruchmisz netstat bez sudo nie zobaczysz nazw prog.!

    Gdy chcesz ciągle monitorować otwarte połączenia prog. netstat,
    użyj opcji --continuous :
sudo netstat -tpWeea --numeric-ports --continuous

8.2Testy zapory sieciowej

    Jak już skończysz konfigurację sys. i podłączysz go do sieci
    można  wykonać  podstawowe  testy zapory: blokadę skanowania
    portów i blokadę dostępu do nie otwartych portów.

    Testy te wymagają drugiego komp. w tej samej sieci lokalnej.

   8.2.1Test skanowania portów

    Po pierwsze należy ustalić adres ip twojego komp.

    Na nowo zainstalowanym sys. Linuks wywołaj:
ip a

    Interesuje cię linia w stylu:
inet 192.168.XXX.XXX/24 brd 192.168.XXX.255 scope global noprefixroute I
D_KARTY_SIECIOWEJ

    To  co  za inet i przed /24, czyli 192.168.XXX.XXX (oczywiście
    zamiast  XXX.XXX będą konkretne numery) to właśnie aktualny
    Internet adres karty sieciowej.

    Mogę  spr.  jakie  są  otwarte  porty  na  moich sys. w sieci
    lokalnej. Robi to polecenie:
nmap -Pn 192.168.XXX.XXX

    To  skanowanie z opcjami -Pn ma taką wadę, że obejmuje tylko
    pierwsze 1K portów. Użyłem ich dlatego, że pełne skanowanie,
    czyli   opcja  -p-,  w  ogóle  nie  wykrywa  komp.  z  zaporą
    skonfigurowaną w podany w tej monografii sposób.

   8.2.2Test dostępu do otwartego portu zablokowanego przez UFW

    Blokadę  portów  sprawdzimy stawiając na nowym sys. Linuks z
    zaporą sieciową UFW testowy serwer WWW na zablokowanym porcie i
    próbując się do niego łączyć z drugiego komp. Na twoim nowym
    sys. Linuks uruchom:
python3 -m http.server 1234

    Natomiast na drugim komp. wywołaj polecenie:
telnet 192.168.XXX.XXX 1234

    Gdy jest ok możliwe są 2 rezultaty:
     1. Polecenie powinno zakończyć się błędem przekroczenia czasu
        (deny):

Connecting to 192.168.XXX.XXX:1234... failed: Connection timed out.

Retrying.
     2. Polecenie powinno zakończyć się błędem odmowy dostępu
        (reject):

Trying 192.168.XXX.XXX...
telnet: Unable to connect to remote host: Connection refused

8.3Skaner debsums (spr. sumy kontrolne pakietów)

    Wszystkie   pakiety   jakie   pochodzą   z  repozytoriów  APT
    (oficjalnych  i nieoficjalnych) mają sumy kontrolne wszystkich
    plików  jakie  zawierają. To powoduje, że przy superszybkich
    dyskach SSD błyskawicznie można spr. integralność pakietów
    zainstalowanych w sys. op. Oczywiście pod warunkiem, że intruz
    pozostawi debsums w spokoju.

    Ten  skaner  podaje  listę  plików  jakie  uległy zmianie po
    instalacji. Domyślnie listuje on wszystkie sprawdzane pliki co
    jest trochę przytłaczające. Wtedy pomaga opcja -s czyli tryb
    cichy. Dodatkowo warto włączyć spr. plików ustawień (opcja -a),
    bo domyślnie są one pomijane. Przykładowe wywołanie może być
    takie:
sudo debsums -as

8.4Skaner Lynis (skaner bezpieczeństwa)

    Lynis to rozszerzalne narzędzie do kontroli bezpieczeństwa sys.
    komp.  z  sys.  op.  Linux,  FreeBSD, macOS, OpenBSD, Solaris i
    innymi pochodnymi Uniksa.[267]^57

   8.4.1Instalacja

sudo apt install lynis

   8.4.2Skanowanie

sudo lynis audit system

   8.4.3Interpretacja wyników

$ sudo cat /var/log/lynis-report.dat | grep suggestion | most
suggestion[]=BOOT-5122|Set a password on GRUB boot loader to prevent alt
ering boot configuration (e.g. boot in single user mode without password
)|-|-|

suggestion[]=BOOT-5264|Consider hardening sys. services|Run '/usr/bin/sy
s.d-analyze security SERVICE' for each service|-|

suggestion[]=KRNL-5820|If not required, consider explicit disabling of c
ore dump in /etc/security/limits.conf file|-|-|

suggestion[]=PROC-3614|Check process listing for processes waiting for I
O requests|-|-|

suggestion[]=AUTH-9229|Check PAM configuration, add rounds if applicable
  and expire passwords to encrypt with new values|-|-|

suggestion[]=AUTH-9230|Configure minimum encryption algorithm rounds in
/etc/login.defs|-|-|

suggestion[]=AUTH-9230|Configure maximum encryption algorithm rounds in
/etc/login.defs|-|-|

suggestion[]=AUTH-9262|Install a PAM module for password strength testin
g like pam_cracklib or pam_passwdqc|-|-|

[…]

    Ciekawą opcją Lynis-a jest możliwość uzyskania szczegółowych
    informacji na temat danego testu.

    Przykładowo polecenie:
$ sudo lynis show details BOOT-5122
2020-07-05 20:01:21 Performing test ID BOOT-5122 (Check for GRUB boot pa
ssword)

2020-07-05 20:01:21 Found file /boot/grub/grub.cfg, proceeding with test
s.

2020-07-05 20:01:21 Test: check if we can access /boot/grub/grub.cfg (es
caped: /boot/grub/grub.cfg)

2020-07-05 20:01:21 Result: file is owned by our current user ID (0), ch
ecking if it is readable

2020-07-05 20:01:21 Result: file /boot/grub/grub.cfg is readable (or dir
ectory accessible).

2020-07-05 20:01:21 Result: did not find hashed password line in this fi
le

2020-07-05 20:01:21 Result: File '/boot/grub/custom.cfg' does not exist

2020-07-05 20:01:21 Found file /etc/grub.d/00_header, proceeding with te
sts.

2020-07-05 20:01:21 Test: check if we can access /etc/grub.d/00_header (
escaped: /etc/grub.d/00_header)

[…]

8.5Skaner Rkhunter (poszukuje rotkitów)

    rkhunter   jest   skanerem  root  kitów.  Rootkit-y  to  prog.
    umieszczane na komp. ofiary celem pełnej kontroli nad nim (np.
    do kopania krypto-walut, albo ataków na inne komp.).

   8.5.1Instalacja

sudo apt install rkhunter

   8.5.2Aktualizacja

sudo rkhunter --propupd

   8.5.3Skanowanie

sudo rkhunter --check

   8.5.4Interpretacja wyników

sudo cat /var/log/rkhunter.log | grep -e 'Warning' | most
[11:51:46]   /usr/bin/lwp-request                            [ Warning ]


[11:51:46] Warning: The command '/usr/bin/lwp-request' has been replaced
  by a script: /usr/bin/lwp-request: Perl script text executable

[11:54:06]   Checking for suspicious (large) shared memory segments [ Wa
rning ]

[11:54:06] Warning: The following suspicious (large) shared memory segme
nts have been found:

[11:55:14]   Checking for passwd file changes                [ Warning ]


[11:55:14] Warning: User 'test' has been removed from the passwd file.

[11:55:14]   Checking for group file changes                 [ Warning ]


[11:55:14] Warning: Group 'test' has been removed from the group file.

[11:55:14]   Checking if SSH protocol v1 is allowed          [ Warning ]


[11:55:14] Warning: The SSH and rkhunter configuration options should be
  the same:

8.6Skaner Debsecan (poszukuje exploit-ów)

    Exploit  –  prog. mający na celu wykorzystanie istniejących
    błędów w oprogramowaniu.[268]^58

   8.6.1Instalacja

sudo apt install debsecan

   8.6.2Skanowanie i interpretacja wyników

sudo debsecan | grep -e 'medium urgency\|high urgency' | most

    Może  się zdarzyć, że nasz sys. jest na tyle czysty, że to
    polecenie nic nie zwróci.

    Gdy nas to nie satysfakcjonuje można użyć polecenia:
$ sudo debsecan | grep -e 'low urgency' | most

CVE-2012-6655 accountsservice (low urgency)

CVE-2016-1585 apparmor (low urgency)

CVE-2016-1585 apparmor-utils (low urgency)

CVE-2018-10910 bluez (low urgency)

CVE-2018-10910 bluez-cups (low urgency)

CVE-2018-10910 bluez-obexd (low urgency)

CVE-2020-5291 bubblewrap (low urgency)

CVE-2016-2781 coreutils (low urgency)

CVE-2020-12802 fonts-opensymbol (low urgency)

CVE-2020-12803 fonts-opensymbol (low urgency)

CVE-2019-14855 gnupg1 (low urgency)

CVE-2019-14855 gnupg1-l10n (low urgency)

CVE-2019-9904 graphviz (low urgency)

CVE-2019-11470 imagemagick (low urgency)

[…]

8.7Skaner Fail2ban (pokazuje nieudane próby logowania)

    Jest to skaner poszukujący w logach nieudanych prób logowania
    na udostępniane usługi (np. SSH). Jednak tutaj pominę ten temat
    z uwagi na:
      * Opis  konfiguracji  serwera  sys. Linuks jest poza zakresem
        tej monografii,
      * Z  SSH  należy  pracować  w oparciu o klucze a nie hasła
        (logowanie   oparte   na  hasłach  blokujemy  w  rozdziale
        opisującym konfigurację SSHD).

    Więcej o fail2ban np. tu:
    [269]https://linuxize.com/post/install-configure-fail2ban-on-ub
    untu-20-04/

8.8Skanery sieciowe

    Wymienimy  tu narzędzia do skanowania komp. w sieci z krótkim
    opisem. Tak byś mógł wiedzieć czego szukać w razie potrzeby.

    Skaner

                             Zastosowanie

    nmap

    Rozpoznawanie sys. operacyjnego zdalnych komp. Wykrywanie
    otwartych portów.

    xprobe

    Rozpoznawanie sys. operacyjnego zdalnych komp.

    p0f[270]^59
      * Rozpoznawanie sys. operacyjnego zdalnych komp.;
      * Wykrywanie obecności firewall i NAT;
      * Wykrywanie obecności load balancer;
      * Wykrywanie odległości od zdalnego komp.;
      * Wykrywanie czasu pracy zdalnego hosta.

    knocker

    Rozpoznawanie sys. operacyjnego zdalnych komp. Wykrywanie
    otwartych portów.

    isic

    Tester integralności stosu IP/TCP.

    hping2
      * Testowanie firewall;
      * Zaawansowane skanowanie protów;
      * Testowanie sieci różnymi protokołami;
      * Wykrywanie MTU;
      * Zaawansowane traceroute (różnymi protokołami);
      * Rozpoznawanie sys. operacyjnego zdalnych komp.;
      * Wykrywanie czasu pracy zdalnego hosta;
      * Tester integralności stosu IP/TCP;
      * Przydatne narzędzie edukacyjne do nauki protokołu IP/TCP.

    icmpush

    Pozwala generować własne pakiety ICMP.

    nbtscan

    Skanowanie usług SMB i NetBIOS (Windws).

    fragrouter

    Przechwytywanie i modyfikacja ruchu w sieci. Prog. wydaje się
    niepraktyczny gdy HUB LAN (kablowe) wyszły z użycia (zastąpiły
    je router z wbudowanymi switch LAN (kablowe) i WLAN (radiowe)).

    strobe (pakiet netdiag)

    Wykrywanie otwartych portów.

    irpas

    Zestaw programów:
      * ass: autonomiczny skaner sys.;
      * cdp: generator pakietów;
      * file2cable: wrzuca plik w sieć jako ramkę IP/TCP;
      * igrp: wstrzykuje pakiety do przestarzałego protokołu
        trasowania IGRP;
      * irdpresponder: wysyła pakiety irdpresponder;
      * itrace: podobny do traceroute używa ICMP echo;
      * tctrace: podobny do traceroute używa TCP SYN.

               9Automatyzacja monitorowania bezpieczeństwa

    Kiedyś  była  wypasiona,  francuska  dystrybucja sys. Linuks,
    Mandrake/Mandriva, która miała taki bajer i np. informowała w
    czasie rzeczywistym np. o skanowaniu portów przez intruza.

    Kiedyś bardzo się zdziwiłem jak dostałem na pulpit ostrzeżenie,
    że z komp. mojej macochy ktoś dokonuje skanowania portów mojej
    stacji  roboczej.  Nie muszę dodawać, że moja macocha nie ma
    nawet pojęcia jak włączyć/wyłączyć sieć w swojej Windzie, tak
    więc skanowanie portów było i jest poza jej zasięgiem.

    Nie  wiem  nic  by  w  Ubuntu były jakieś prog. monitorujące
    podejrzany  ruch  sieciowy.  Jednak  sam  opracowałem  skrypty
    monitorujące sieć:

9.1Skrypt monitorujący nawiązywanie i rozłączanie poł. przychodzących i
wychodzących

    Skrypt  ten  jest  oparty na tcpdump. Zakodowałem go w Baszu i
    jestem pewnien jego poprawności (2022-09-10 i 2022-09-11 parę
    godzin  go  testowałem).  Skrypt ten nie działa gdyż tcpdump
    blokuje się gdy używa się go w skryptach. Więcej na ten temat
    było wyżej.

9.2Skrypt monitorujący odrzucanie poł. przychodzących i wychodzących

    Skrypt  ten jest oparty na monitorowaniu pliku /var/log/ufw.log
    prog.  tail  jaki  podaje  dane na wejście prog. read w pętli
    while. Ładnie to działa i wszystko widać jak na dłoni.

9.3Skrypt monitorujący stan aktywnych połączeń w sieci Internet

    Skrypt  jest  oparty  na  prog. netstat i wywołuje go co parę
    sekund. Jego wyjście po przekształceniu jest czytelne ale nie
    do oglądania w czasie rzeczywistym bo raz, że to atrakcja jak
    wędkowanie, a dwa ekran miga jak diabli.

                    10Skryte korzystanie z sys. Linuks

10.1Skrypt czyszczący

    Należy sobie zaprogramować skrypt czyszczący gdyż nie wiadomo
    po  co  w  sys. Linuks są gromadzone dane o historii działań
    użytkownika.

    Nie  wiadomo  też dlaczego w sys. jest mnóstwo plików cache.
    Usuwanie tych plików nie wprowadza żadnych opóźnień w działaniu
    sys. ani prog.!!!

    Ten  skrypt  przed  niczym  nie  zabezpiecza, ale daje święty
    spokój. Czyścić należy:
      * Historię poleceń konsoli;
      * Historię edytowanych plików;
      * Historię odwiedzanych stron WWW;
      * Kasować katalogi i pliki tmp, cache i hist;
      * Archiwa w katalogach ukrytych w $HOME/.*;
      * Zbędne logi;
      * Usuwać  należy  nr UID, sumy MD5 i SHA (wszystkich wer. -
        począwszy od najdłuższych sha512).

    Programując ten skrypt należy przejrzeć pliki konfiguracyjne w
    $HOME/.config  ,  $HOME/.local  oraz  pozostałe  pliki  i kat.
    zaczynające się kropką w kat $HOME.

    Należy też przejrzeć pliki w kat. /var .

    W kat. /var należy zostawić w spokoju wszystkie pliki związane
    z apt i dpkg!!! Ich kasowanie grozi nieodwracalnym uszkodzeniem
    sys.  op. tak, że niczego nie będzie można zainstalować ani
    odinstalować (mimo, że reszta będzie normalnie działać).

    Skrypt czyszczący należy uruchamiać gdy:
      * Uruchamia   się   sys.   op.   -   robi   to   spec.  plik
        czyszczenie.service:

    Przy  proponowanym podziale na partycje może się okazać, że
    partycja  $HOME  nie  jest  zamontowana w momencie uruchomienia
    skryptu  czyszczącego.  Dlatego  należy  go kopiować do kat.
    /usr/bin (i w inne miejsca gdzie jest on potrzebny).
[Unit]
Description=czysc.sh
Before=network.target

[Service]
Type=idle
ExecStart=/usr/bin/czysc.sh
Restart=on-failure
RestartSec=120
KillMode=process

[Install]
WantedBy=multi-user.target

    Należy go zainstalować:
systemctl daemon-reload
cp -f "$lKatZrudlowy/czysc.service" "/etc/systemd/system/"
sed -i -r 's|ExecStart=.*|ExecStart=/usr/bin/czysc.sh|g' "/etc/systemd/s
ystem/czysc.service"
systemctl daemon-reload
systemctl enable czysc.service

    Dodatkowo    należy    wprowadzić    poprawkę    do    pliku
    /lib/systemd/system/systemd-networkd.service, tak by czekał on
    na  wykonanie czysc.sh. Polega to na dodaniu czysczenie.service
    do zmiennej After=:
cp /lib/systemd/system/systemd-networkd.service /lib/systemd/system/syst
emd-networkd.service.org
sed -i -r 's|After=(.*)|After=\1 czysc.service|g' /lib/systemd/system/sy
stemd-networkd.service
    systemctl daemon-reload
      * Gdy    zamyka    się    sys.    -    wywołując    kopię
        /lib/sys.d/sys.-shutdown/czysc.sh;
      * Gdy    usypia    się    sys.    -    wywołując    kopię
        /lib/sys.d/sys.-sleep/czysc.sh;
      * Gdy uruchamia się pulpit (chodzi o przypadek gdy użytkownik
        się przelogowuje – wtedy sys. też powinien być czyszczony).

10.2Wyłącz raporty o błędach

sudo systemctl stop apport.service
sudo systemctl disable apport.service
sudo systemctl mask apport.service
sudo apt remove --purge -y ubuntu-report
sudo systemctl stop whoopsie.service
sudo systemctl disable whoopsie.service
sudo systemctl mask whoopsie.service
sudo apt remove --purge -y whoopsie

10.3Wyłącz raporty popularności pakietów

sudo apt remove --purge -y popularity-contest

    Aby zablokować użytkownikom dostęp do tej usuniętej usługi
    edytuję plik:
sudo nano /etc/dconf/profile/userfile

    I dodaję w nim zawartość:
user-db:user
system-db:local

    Następnie wprowadzam zmiany w życie:
sudo dconf update

10.4Wyłącz informowanie o obecności w sieci

    Dotyczy  to  chyba  wyłącznie  starszych wersji Ubuntu (przed
    20.04).

    Aby to wyłączyć należało wyedytować plik:
sudo nano /var/lib/NetworkManager/NetworkManager-intern.conf

    I zmienić w nim flagę:
[connectivity]
set.enabled=false

                  11Skryte korzystanie z sieci Internet

11.1Przeszkody w skrytym korzystaniu z Internetu

   11.1.1Przeglądarki mają pełen dostęp do kat. domowych wszystkich
   użytkowników w sys. Linuks.

    W  Ubuntu  dom.  prawa dostępu do kat. innego użytkownika są
    ustawione tak by łatwo można mu było wszystko ukraść.

    W tym dok. podaję jak sobie z tym radzić. Oczywiście mówię o
    zaostrzaniu uprawnień użytkownika i użyciu piaskownicy Ogniste
    Więzienie.  W  normalnej  sytuacji  wszyscy  klienci  sieciowi
    powinni  działać  w  piaskownicy  (podobnie  jak wiele innych
    popularnych prog.).

    O tym że przeglądarki to trojany zdradza ich zachowanie:
     1. Problemem  dotyczącym Chrome i Fire Fox to nie tolerowanie
        ustawień   ulimit   (omówionych   w   tym  dok.).  ulimit
        potencjalnie może pomóc w razie ataku typu przepełnienie
        bufora;
     2. Przeglądarka Chromium z kolei jest dystrybuowane w postaci
        paczek  Snap  nad  których piaskownicą użytkownik nie ma
        żadnej kontroli, tak więc spokojnie może wysłać w świat
        cały  kat. domowy i to nie tylko twój ale też wszystkich
        innych użytkowników z twojego sys. Linuks (j. w.);
     3. Inny znany problem dotyczy przeglądarki Water Fox, która ma
        zabezpieczenia przed pracą w piaskownicy Ogniste Więzienie.
        Czyli też może robić co jej twórcom się podoba.

    Tak więc cała gadka o ciągłym łataniu przeglądarek jest tylko
    hype (legendą dla frajerów), bo łatanie to tylko pierwszy poz.
    obrony.

    Nat. twórcy przeglądarek b. starają się uniemożliwić kontrolę
    użytkownika nad przeglądarkami.

   11.1.2Wysyłanie ID sys. op. i ID przeglądarki

    Przeglądarka WWW łącząc się z serwerem WWW zawsze wysyła przez
    protokół HTTP(S) ID sys. op. i ID samej przeglądarki. Jest to
    tak strategicznie ważne, że obecnie (2023-11) w żadnej znanej
    mi przeglądarce nie ma żadnej ogólnodostępnej metody jak to
    zmienić lub wyłączyć.

    Normalnie jedyną inf. wysyłaną do serwera WWW powinien być j. w
    jakim ma być zwrócona s.

    Normalnie w „przeglądarkach bez śledzenia” czyli Chromium,
    Water  Fox  lub Fire Wolf powinny mieć wtyczkę która powinna
    pozwalać na pełną edycję danych identyfikacyjnych, oraz ich
    maskowanie (wart. stałymi lub losowanymi).

    Niestety  obecnie  (2023r.)  nikt  nie chce nawet gadać na ten
    temat.  Pisałem  do  EFF  (d. 2022-04-01, pią.) i na polskich
    grupach dyskusyjnych (pl.comp.os.linux w d. 2022-04-01, pią.).
    EFF    odp.    „Skierujemy   sprawę   do   naszego   działu
    programistycznego.” - jednak do dziś (2024-04-21, nie. nic w
    tej sprawie nie zrobili). Natomiast na w.w. grupie odzywali się
    jedynie  „skretyniali agenci wpływu”, którzy histerycznie
    wrzeszczą  że  „prywatność,  to  jedynie  kwestia portali
    społecznościowych”.

   11.1.3Operatorzy handlują historią odwiedzanych s. WWW

    Tzw. „zgody maketingowe” – za 5zł.- pozwalają na sprzedaż całej
    historii  odwiedzanych  s.  i  przych. i wych. nr tel. i SMS. W
    normalnym kraju powinno to być zabronione.

   11.1.4Operatorzy publikują zakresy adresów IP

    Publicznie są dostępne są bazy adresów IP z podziałem na kraje
    i operatorów. W normalnym kraju powinno to być tajne, a adresy
    IP powinny wędrować do kol. op. razem z użytkownikiem (tak jak
    nr tel.).

    Nie trzeba być geniuszem, by stwierdzić, że mając info z 3.
    pow.  p.  mamy  komplet  info  na temat kto, gdzie i jak długo
    siedzi w Internecie.

    Więc  fakty  są  takie,  że  prowadzi się stały monitoring
    aktywności cywili w sieci.

   11.1.5Sprawa Amejzon

    Takie firmy jak Google czy Amejzon używają dużej l. adresów IP.
    Może się zdarzyć, że chcemy je odblokować w UFW. Dobre jest to,
    że  obie  firmy,  jako  nieliczne,  publikują pliki z listami
    zakresów używanych przez nie adresów IP. Google się wycwaniło i
    wcześnie wykupiło zakresy adresów IP wer. 4. Natomiast Amejzon
    zrobił to później, gdy było już ich mało. Dlatego musiał
    skupywać małe pule tych adresów. Dlatego lista zakresów IP w
    pliku  od Amejzona jest b. długa. Jej załadowanie do UFW trwa
    chyba  ponad  godzinę na procku Intel i7 z zegarem niemal 5GHz
    (piszę  „chyba  ponad godzinę” bo tylko raz spróbowałem
    odblokować w UFW Amejzona, to się udało ale trwało b. długo).

    Nie jest to jedynie niezręczność, bo wiele innych s. WWW nie
    wiedzieć po co odwołuje się do dostawców chmurowych takich jak
    Amejzon.

    W  dodatku  sklep  Amejzon do prawidłowego działania powinien
    wymagać małej puli adresów IP.

   11.1.6Brak manifestów do s. HTML

    Obecnie s. HTML mają linki które zaciągają treści z innych
    serwerów  (niż ten na który wchodzę). Robią to z różnych
    powodów, np. w celu ładowania skryptów, reklam, albo filmów, a
    nawet zwykłych obrazków. Jest to poważny problem w sytuacji gdy
    chcemy odblokować jedynie możliwość łączenia z jednym, wybranym
    serwerem.  W  praktyce  jest  to  wykonalne jedynie w przypadku
    wielkich  korpo  (jak Gogle i Amejzon), albo dla amatorskich s.
    Żadne komercyjne portale nie publikują wymaganych zakresów IP.

    Nawet  wikipedia.org  przestała  publikować listę wymaganych
    adresów IP. Stało się to wkrótce po moim pyt. Z 2023-01-12,
    czw. „How to get actual all Wikipedia IP servers list?”. Wtedy
    grzecznie podali mi s. z tymi adresami:
    [271]https://foundation.wikimedia.org/wiki/Archive:Wikipedia_Ze
    ro . Natomiast 2023-09-28, czw. zauważyłem, że wikipedia.org
    używa  nie  zadeklarowanego  adresu IP 185.15.59.224. Gdy o to
    spytałem, odp. mi „The Wikpedia Zero project has been retired,
    we no longer maintain that list:
    [272]https://foundation.wikimedia.org/wiki/Archive:Wikipedia_Ze
    ro”.

    Ponad to z moich doświadczeń wynika, że wikipedia.pl dokonuje
    ataków krakerskich.

    Dlatego  nigdy  nie  należy  używać  adresu  wikipedia.pl do
    wchodzenia na pl.wikipedia.org .

    Systemowym rozw. tego prob. są manifesty dobrze znane twórcom
    paczek  na sys. Android. Ten manifest powinien zawierać info o
    adresach jakie są wymagane do prawidłowego działania s. Oprócz
    tego manifest s. powinien deklarować to czego chce używać s.
    Wtedy  manifest był by ładowany przed otwarciem s. i możliwe
    było by spr. jakie wymagania ma dana s. i podjęcie świadomej
    decyzji  czy  chce  się  ją  otworzyć  czy nie. Wtedy można
    odblokować w UFW możliwość łączenia z wymaganymi serwerami na
    czas  sesji  z  serwerem  WWW.  Można  sobie  wyobrazić,  że
    przeglądarka  może  automatyzować  cały proces z wyjątkiem
    kliknięcia przycisku „Otwórz s. WWW” lub „Odrzuć manifest”.

11.2Serwery DNS

    Serwery  DNS  tłumaczą  nazwy  domenowe  takie jak wp.pl albo
    onet.pl na numery IP. Oczywiście serwerów DNS jest pełno bo ich
    właścicielom dają dużo informacji o tym co jest popularne w
    sieci. Kiedyś wierzyłem w większą anonimowość OpenDNS, ale
    teraz po prostu wybieram najszybsze serwery DNS od Cloudflalre:
    1.1.1.1 i 1.0.0.1 . Należy je ustawić konfigurując sieć netplan
    na każdym kompie w sieci oraz na routerze w sieci lokalnej.

    DNSCrypt nie udało mi się uruchomić na Kubuntu 20.04, choć moim
    zdaniem  powinien  być  domyślnie instalowany i uruchamiany w
    każdym sys. op.

11.3Przeglądarka Tor[273]^60

    Przeglądarka  Tor  to zmodyfikowana przeglądarka Ognisty Lis.
    Usunięto  z  niej  kod  odpowiedzialny  za śledzenie i dodano
    klienta sieci Tor.

    Sieć Tor (z którego korzysta Przeglądarka Tor) tworzy wirtualną
    i  szyfrowaną  podsieć  w  obrębie  sieci Internet i maskuje
    aktywność rzeczywistego klienta tej sieci (czyli moją stację
    roboczą). Tak więc jak używam Tor, to mój dostawca Internet nie
    wie jakie strony odwiedzam. Serwer WWW z jakim się łączę też
    nie wie skąd się łączę. Jedyne co można podsłuchać, to ruch
    między końcówką sieci Tor a serwerem WWW z jakim się łączysz
    (ale  tylko wtedy, gdy serwer nie obsługuje https). Działa to
    tak:
      * Uruchamiasz Przeglądarka Tor
      * Przeglądarka   Tor   wchodzi  do  wirtualnej,  szyfrowanej
        podsieci Tor;
      * Podajesz adres serwera WWW;
      * Żądanie dostępu do serwera przechodzi przez sieć Tor;
      * Serwer WWW zamiast twojego komp. widzi końcówkę sieci Tor
        tak jakbyś był w zupełnie innym miejscu na świecie.

    W praktyce spec. służby potrafią inwigilować użytkowników sieci
    Tor  (najprawdopodobniej  nie  jest  to  wina  sieci  Tor tylko
    szpiegostwa  telepatycznego).  Wiadomo, że amerykańskie sądy
    posługują się dowodami zebranymi przez te służby.

    Przeglądarkę Tor najprościej zainstalować poleceniem:
sudo apt install torbrowser-launcher

    To polecenie instaluje jakiegoś demona Tor a nie Przeglądarkę
    Tor. Moim zdaniem jest to podejrzane.

    Dlatego nie zalecam używania pakietu torbrowser-launcher.

    tor-launcher przy pierwszym uruchomieniu pobierze i zainstaluje
    przeglądarkę Tor z oficjalnej strony.

    Dlatego lepiej samodzielne pobrać Przeglądarkę Tor z oficjalnej
    strony projektu.

    Gdy  używasz Przeglądarkę Tor w kat. domowym partycja z kat.
    $HOME nie może być montowana z flagą noexec (plik /etc/fstab).

    Przeglądarkę Tor należy zawsze uruchamiać w piaskownicy Ogniste
    Więzienie.

    Wielkie  korpo  szykanują  użytkowników sieci Tor (po prostu
    odrzucając ruch ze wszystkich końcówek sieci Tor).

    Ja osobiście nie korzystam już z sieci Tor z tego powodu, że
    nie ma możliwości określenia jednego p. wejścia do tej sieci
    (jego  IP), a to powoduje brak kontroli nad ruchem wychodzącym
    (UFW), a to jest niedopuszczalne.

    Z  koli  sens  używania  Przeglądarki Tor na skompromitowanym
    terminalu  podważa  fakt,  że key-logery to podst. narzędzie
    szpiegowskie  (moim zdaniem wszystko co się wklepuje w sprytne
    tel.y  leci  od  razu do SZAP na serwery Google i dalej do CIA,
    NSA i reszty).

    Trzeba też mieć świadomość, że za korzystanie z Tor złoty
    pieniążek się należy.

11.4Przeglądarka Wodny Lis[274]^61

    Wodny  Lis  to zmodyfikowana przeglądarka FireFox. Usunięto z
    niej kod odpowiedzialny za śledzenie. Dodatkowo ma ona wsparcie
    dla starszych wtyczek używanych dawniej w FireFox.

    Paczka  dla  sys.  Linuks  ma postać zwykłego archiwum bzip2.
    Dlatego wystarczy ją pobrać, rozpakować i skopiować do katalogu
    $HOME.

    Gdy używasz Wodny Lis na partycji z kat. $HOME nie może ona być
    montowana z flagą noexec (plik /etc/fstab).

    Z przeglądarki Wodny Lis nie należy korzystać, bo nie działa
    ona   w   piaskownicy   Ogniste   Więzienie  (czyli  szpieguje
    użytkowników i kradnie ich dane).

    Z  przeglądarki  Wodny  Lis  nie  należy  korzystać, bo brak
    możliwości  wpłacania  pieniędzy  za  jej użycie (czyli ma
    generować  kwity  bankowe  jakich nie można w żaden normalny
    sposób spłacić).

11.5Poprawa prywatności w Przeglądarce Tor, Wodny Lis i Ognisty Lis

    Przeglądarka Tor i Wodny Lis to w pełni kompatybilne warianty
    Ognisty Lis.

    Wszystkie rozszerzenia z Ognisty Lis działają w Przeglądarka
    Tor i Wodny Lis.

    Rozszerzenia z Chrome nie działają w Ognisty Lis.

    Często  rozszerzenia  mają  odrębne  wersje dla Chrome i dla
    Ognisty Lis.

   11.5.1Włącz kasowanie ciasteczek przy zamykaniu

   11.5.2Włącz kasowanie całej historii przy zamykaniu

   11.5.3Zainstaluj dodatek [275]HTTPS Everywhere

    Ten dodatek powoduje, że przeglądarka (gdy ma taką możliwość)
    to faworyzuje szyfrowane połączenia czyli HTTPS.

   11.5.4Zainstaluj dodatek [276]Privacy Badger

    Ten  dodatek  monitoruje  na stronach reklamy i elementy które
    mogą Ciebie śledzić i je wyłącza gdy wykryje ich aktywność na 3
    różnych stronach WWW.

    Privacy Badger nie blokuje reklam tak długo jak one nie usiłują
    śledzić twoich działań w Internecie.

    Po za instalowaniu przeglądarki i jej dodatków należy starannie
    przejrzeć wszystkie ich opcje.

11.6Przeglądarka Chromium

    Chromium  to  Chrome  bez śledzenia. Czyli Chromium dla Chrome
    jest tym co Wodny Lis dla Ognisty Lis.

    Jest możliwość wejścia do sieci Tor przez Chromium i Chrome ale
    to  wymaga  kompilacji  pakietu  Tor  ze źródeł i instalacji
    odpowiedniej wtyczki[277]^62.

    Aby zainstalować Chromium należy wydać polecenia:
      * W Debianie:

sudo apt update
sudo apt install snapd
sudo snap refresh
sudo snap install chromium
      * W Ubuntu

sudo snap install chromium

    Z przeglądarki Chromium nie należy korzystać, bo nie działa ona
    w piaskownicy Ogniste Więzienie (czyli szpieguje użytkowników i
    kradnie ich dane).

    Z  przeglądarki  Chromium  nie  należy  korzystać,  bo  brak
    możliwości  wpłacania  pieniędzy  za  jej użycie (czyli ma
    generować  kwity  bankowe  jakich nie można w żaden normalny
    sposób spłacić).

11.7Poprawa prywatności w Chromium i Chrome

    Chromium to w pełni kompatybilny klon Chrome.

    W Chromium działają wszystkie rozszerzenia Chrome.

    Rozszerzenia z Ognisty Lis nie działają w Chrome.

    Często  rozszerzenia  mają  odrębne  wersje dla Chrome i dla
    Ognisty Lis.

   11.7.1Włącz kasowanie ciasteczek przy zamykaniu

   11.7.2Włącz kasowanie całej historii przy zamykaniu

   11.7.3Zainstaluj dodatek [278]HTTPS Everywhere

    Ten dodatek powoduje, że przeglądarka (gdy ma taką możliwość)
    to faworyzuje szyfrowane połączenia czyli HTTPS.

   11.7.4Zainstaluj dodatek [279]Privacy Badger

    Ten  dodatek  monitoruje  na stronach reklamy i elementy które
    mogą Ciebie śledzić i je wyłącza gdy wykryje ich aktywność na 3
    różnych stronach WWW.

    Privacy Badger nie blokuje reklam tak długo jak one nie usiłują
    śledzić twoich działań w Internecie.

    Po za instalowaniu przeglądarki i jej dodatków należy starannie
    przejrzeć wszystkie ich opcje.

   11.7.5Autouzupełniaj wyszukiwania i adresy URL

    Wyłącz to na stronie:
chrome://settings/syncSetup

   11.7.6Ulepsz wyszukiwanie i przeglądanie

    Wyłącz to na stronie:
chrome://settings/syncSetup

   11.7.7Wyczyść pliki cookie i dane witryn w momencie zamknięcia
   Chromium/Chrome

    Włącz to na stronie:
chrome://settings/cookies

   11.7.8Wysyłaj żądanie „Bez śledzenia” podczas przeglądania

    Włącz to na stronie:
chrome://settings/cookies

   11.7.9Kontynuuj działanie aplikacji w tle po zamknięciu Chromium

    Wyłącz to na stronie:

    chrome://settings/privacy

11.8Wyłączenie obsługi JavaScript w przeglądarkach

    Nie zalecam. Bo jak się wyłączy Java Script to ciągle trzeba go
    włączać by móc normalnie korzystać z funkcji stron WWW. Jak
    chcesz się przekonać, to:

   11.8.1Przeglądarka Tor, Wodny Lis, Ognisty Lis

    W przypadku Przeglądarka Tor zalecam najpierw usunięcie dodatku
    NoScript.

    Zainstaluj  dodatek [280]Disable JavaScript i ikoną obok paska
    adresu włączasz i wyłączasz JavaScript globalnie.

   11.8.2Chromium, Chrome

    JavaScript wyłączasz w opcjach globalnie i włączasz go w razie
    potrzeby dla wybranej stronie ikonką na pasku adresu.

11.9Inne przydatne dodatki

   11.9.1I don't care about cookies

     11.9.1.1Przeglądarka Tor, Wodny Lis i Ognisty Lis

    [281]https://addons.mozilla.org/en-US/firefox/addon/i-dont-care
    -about-cookies/ ;

     11.9.1.2Chromium i Chrome

    [282]https://chrome.google.com/webstore/detail/i-dont-care-abou
    t-cookies/fihnjjcciajhdojfnbdddfaoknhalnja .

   11.9.2Otwieranie linku i przejście do nowej karty jednym mlaskiem
   środkowego przycisku myszy

     11.9.2.1Przeglądarka Tor, Wodny Lis i Ognisty Lis

    Otwierasz stronę konfiguracji:
about:config

    I zmieniasz: browser.tabs.loadInBackground = true

    na: browser.tabs.loadInBackground = false

     11.9.2.2Chromium i Chrome

    Zainstaluj dodatek:
https://chrome.google.com/webstore/detail/switch-to-new-tab/lfpdoeknpncl
enhlmblmenpafkbcgdbg

11.10Wyszukiwarki

   11.10.1DuckDuckGo.com

    Zaletą tej wyszukiwarki jest to, że nie śledzi oraz to, że nie
    szykanuje  użytkowników  sieci Tor. Do prostych zapytań jest
    wystarczająca (jednak nie do wszystkich).

    Dlatego do typowych zapytań zalecam kombinację:

    Przeglądarka Tor + DuckDuckGo.com .

   11.10.2Google.com

    Tu mamy wyniki wyszukiwania czasem lepsze niż w DuckDuckGo.com
    .

    Google    otwarcie    deklaruje    maks.   szpiegostwo   swoich
    użytkowników.

    Mimo, że sieć Internet jest jedna, to każdy użytkownik Google
    dla  tych samych zapytań widzi inne wyniki, bo ta wyszukiwarka
    cenzuruje i profiluje wyniki dla każdego osobno.

    Google  szykanuje użytkowników sieci Tor (odrzuca poł. z tej
    sieci).

    Dlatego  tej  wyszukiwarki  należy używać w ostateczności z
    odpowiednią przeglądarką:

    Ognisty Lis + Google.com

11.11Skryte przeglądanie sieci na co dzień

    W  praktyce  w  2023r.  pracuję  z komp. w modelu „online na
    żądanie”. Wymaga to posiadania skryptów do szybkiej konf. sieci
    Netplan   i   zapory  sieciowej  UFW.  Do  tego  wymagany  jest
    skompromitowany  sys.  komp.  taki jak sprytny tel. lub tablet.
    Skompromitowany sys. komp. służy do wszystkich typowych działań
    w sieci: przeglądanie, poczta el., zakupy. Dodatkowo udostępnia
    on na żądanie sieć komp. chronionym.

                        12Lektura uzupełniająca

    [283]https://wiki.debian.org/SetupGuides/SecurePersonalComputer

    [284]https://wiki.ubuntu.com/BasicSecurity

    [285]https://www.ncsc.gov.uk/collection/end-user-device-securit
    y/platform-specific-guidance/ubuntu-18-04-lts

    [286]https://www.techrepublic.com/article/how-to-check-for-weak
    -passwords-on-your-linux-sys[287]tem[288]s-with-john-the-ripper

    [289]https://securityboulevard.com/2020/08/linux-server-securit
    y-10-linux-hardening-security-best-practices

    [290]https://www.makeuseof.com/linux-hardening-tips-sysadmins

    [291]https://www.debian.org/doc/manuals/securing-debian-manual/
    index.en.html

    [292]https://wiki.debian.org/SetupGuides/SecurePersonalComputer

    [293]https://linuxize.com/post/how-to-setup-a-firewall-with-ufw
    -on-ubuntu-20-04

    [294]https://www.reddit.com/r/privacytoolsIO/comments/g31pfm/ub
    untu_security_guide

    [295]https://www.maketecheasier.com/secure-newly-installed-ubun
    tu

    [296]https://askubuntu.com/questions/579552/how-can-i-have-a-ve
    ry-secure-ubuntu-desktop-system

    [297]1Jak wiecie język C i sys. Uniks stworzyło 2 ludzi: Dennis
    Ritchie i Ken Thompson. Dlatego jestem na 100% pewien, że gdyby
    ich projekt był prowadzony z rozmachem w stylu wielkich korpo,
    to:  a)  Język  C nigdy by nie powstał, b) Uniks nigdy by nie
    powstał,  c)  powstały  by  potwory podobne do Ada, Jawa, C#,
    Windows i Android.

    Jak zauważył prof. Jan Pająk z NZ: W organizacjach wszystkie
    złe pomysły pojawiają się od górnie, a wszystkie postępowe
    koncepcje powstają oddolnie.

    [298]2Czyli nie ma konieczności szyfrowania partycji.

    [299]3W j. ang.: back doors

    [300]4W j. ang.: double click

    [301]5W  sys. Linuks można montować katalogi sieciowe tak jak
    dyski  twarde.  Jest  to możliwe dzięki temu, że sys. Linuks
    obsługuje masę popularnych protokołów sieciowych takich jak:
    FTP, SMB (znany z sys. Windows) oraz NFS (sieci sys. Uniks).

    [302]6Jak  zgaduję  pretekstem  dla  którego  takie prawa są
    nadawane katalogom domowym jest scenariusz w którym ktoś chce
    udostępnić jakiś podkatalog ze swojego katalogu domowego innym
    użytkownikom swojego komp. lub w sieci lokalnej. Tylko, że nikt
    w  domu  tego  nie  robi,  bo  to  wymaga wiedzy o konfiguracji
    demonów sieciowych (FTP, SMB lub NFS albo innych), bo te demony
    odpowiadają za udostępnianie plików i katalogów.

    [303]7Wydawcy całej rodziny dystrybucji Ubuntu.

    [304]8Flatpack to konkurencyjny format paczek od firmy RedHat.

    [305]9W j. ang. firewall

    [306]10Nie  można  uznać  nast. krajów za neutralne: Szwecja
    (aktualnie  w  NATO),  Miasto Watykan (zawzięte i bezwzględne
    pedofile), Japonia (aktualnie pod okupacją SZAP).

    [307]11Państw  na Ziemi jest 195 (w 2024r.), tak więc jedynie
    nieco  ponad  3,5% z nich jest neutralne. Podczas gdy normalnie
    powinny być neutralne prawie wszystkie.

    [308]12W j. ang.: Internet Protocol

    [309]13W  j. ang.: User Datagram Protocol. Jak widać zupełnie
    nonsensowna nazwa.

    [310]14W  j.  ang.:  Transmission  Control Protocol. Jak widać
    zupełnie nonsensowna nazwa.

    [311]15W  razie  potrzeby  ponawia transmisję uszkodzonego lub
    utraconego pakietu.

    [312]16Te  pliki  pomocnicze,  to:  skrypty Jawa Z Krypt, style
    CSS, obrazy, muzyka i filmy.

    [313]17Jeśli  chodzi  o prywatne adresy IPv4, to stanowią one
    relikt dawnych czasów gdy wszystkie adresy IPv4 były podzielone
    na klasy.

    [314]18I to na tej samej karcie sieciowej.

    [315]19Oczywiście  dba  się  o to by pakiety nie krążyły w
    cyklach, tylko by wędrowały po ścieżkach w tym grafie.

    [316]20Są  specjalne terminale udostępniające Internet przez
    sieć sztucznych satelit ziemskich (obecnie chyba wyłącznie są
    to sieci stara - Iridium i nowa - Starlink). Ale to odpowiednio
    kosztuje i jest jasno podane, że to usługa satelitarna.

    [317]21np. VLC albo Krusader

    [318]22np. w polskim pliku kalendarza ze świętami jest święto
    22 lipca.

    [319]23np. na grupie dyskusyjnej pl.comp.os.linux .

    [320]24Miałem przypadek gdy dodałem do czytnika Akregator adres
    pliku  RSS  radzieckiej  agencji  tass.com . Wtedy wystarczyło
    jedno-jedyne  wejście  na  adres  artykułu  tej agencji przez
    przeglądarkę  Ognisty  Lis  (i  to uruchomionej w piaskownicy
    Ogniste  Więzienie) i jeszcze tego samego dnia miałem email z
    zaproszeniem na "randkę z ruską diewuszką".

    [321]25W j. ang.: firejail

    [322]26po ang. Thunder Bird

    [323]27po ang. Fire Fox

    [324]28po ang. Lynx

    [325]29Od  łac.  "Pro  bono  publico  "  -  po pol.: Dla dobra
    publicznego (bez zapłaty).

    [326]30po ang. idle

    [327]31Główną zaletą Ubuntu Serwer jest wparcie dla programowej
    macierzy Raid.

    [328]32Zamknięte  oprogramowanie to oprogramowanie do którego
    kody źródłowe nie są dostępne.

    [329]33W j. ang.: live mode

    [330]34Powodem dla którego partycja Bios Grub nie ma typu jest
    to,  że  ona  jest  całkowicie kontrolowana przez Grub i sys.
    Linuks nic nie wie co na niej się dzieje.

    [331]35Powodem  dla którego partycja EFI ma typ Fat32 jest to,
    że jest to typ kompatybilny z sys. plików EFI.

    [332]36Niektórzy zalecają wielkość partycji /boot na 100-300MB.
    Jednak  to się nie sprawdza bo pliki rdzenia sys. Linuks mają
    prawie  po  100MB  (2021-02).  Wydawcy  dystrybucji sys. Linuks
    prawie co tydzień wydają nową wersję rdzenia. Normalnie powinni
    zostawiać tylko dwie wcześniejsze wersje (pierwszą opublikowaną
    i ostatnią działającą), jednak obecnie (2022-09) z nieznanych
    powodów zostawiają wiele starych wersji rdzenia. Stąd konieczne
    zabezpieczenie przed rozrostem katalogu /boot .

    [333]37W poradnikach WWW podają by partycje tmp miały po 2GB.
    Ja jednak już się naciąłem na takim sknerstwie: instalator Qt
    korzysta  z  katalogu  tmp  i  dla niego 2GB to za mało. Wtedy
    ratunkiem była instalacja „na raty”. 20GB ma też korzystną
    symbolikę: „20 giba bytów”.

    [334]38W j. ang.: journaling

    [335]39W j. ang.: swap

    [336]40Historia  wydawanych  poleceń  znajduje  się  w pliku:
    $HOME/.bash_history .

    [337]41W j. ang.: wireshark

    [338]42Pamiętaj o opcji -f która zapewnia śledzenie również
    procesów potomnych.

    [339]43W j. ang.: access denied

    [340]44[341]https://pl.wikipedia.org/wiki/OpenDNS   ,   dostęp
    2022-09-04

    [342]45man bash

    [343]46tamże

    [344]47tamże

    [345]48Ta dziwna konstrukcja z $(()) to wyrażenie matematyczne
    w Baszu obliczające ile KB jest w 20GB.

    [346]49Akregator (czytnik RSS) potrafi wykorkować przy niskich
    wart.  limitów  pam.,  podobnie  prog. Jawa (bez 6GB nawet nie
    odpalą), Google Chrome zajmuje 1TB pam. wirt. tak więc wymusza
    wyłączenie ulimit, Firefox zachowuje się b. podobnie, obecnie
    (2023r.) rozw. jest użycie przeglądarki Falcon (co ciekawe na
    silniku Chrome).

    [347]50Pod warunkiem, że w UFW zostały odblokowane odpowiednie
    adresy.

    [348]51Jest to nieprzekraczalny limit w sys..

    [349]52Jest to domyślny limit użytkownika jaki można zwiększać
    aż do wart. hard lub zmniejszać do 0.

    [350]53Są to pliki opisujące skróty z ikonami na pulpicie.

    [351]54Oczywiście należy to zrobić później jak już połączysz
    się  z  Internet.  Tu zostawiłem to by opis SSH był w jednym
    miejscu.

    [352]55Dla dociekliwych: zabezpiecznie w tcpdump przed użyciem
    w  skryptach  polega  na  spr.  czy  plik STDOUT to urządzenie
    kolejką typu FIFO (to tcpdump sprawdza w skrypcie) czy znakowe
    (to  tcpdump  sprawdza  w konsoli). Jak jest znakowe to tcpdump
    drukuje  normalne  komunikaty, ale jak jest FIFO to tcpdump nic
    nie  drukuje.  Ja badałem ten problem i wygląda mi na to, że
    zabezpieczenie to jest gdzieś w bibl. pcap. Myślę tak dlatego,
    że  tcpdump  używa bibl. pcap z której dostaje dane przez f.
    zwrotną  (ang.:  callback). Ja w tcpdump we wszystkich jego f.
    zwrotnych dodałem komunikat z nazwą f. i trzema wykrzyknikami.
    Przy   wywołaniu   z   konsoli   wyświetla   się   komunikat
    "print_packet!!!". Natomiast wywołując tcpdump w skrypcie żaden
    komunikat się nie wyświetla. Dodatkowym problemem jest fakt, że
    spr. rodzaju pliku STDOUT odbywa się f. sys.ową fstab, ale nie
    ma jej wywołania ani w źródłach tcpdump ani w źródłach libpcap.
    Jest ona używana jedynie w prog. testujących bibl. pcap.

    [353]56Podobne  zabezpieczenie  przed  użyciem  w skryptach ma
    prog. atrm (do usuwania zadań z anacron). Co ciekawe zadania do
    anacron poleceniem at można dodawać ze skryptów.

    [354]57[355]https://en.wikipedia.org/wiki/Lynis

    [356]58[357]https://pl.wikipedia.org/wiki/Exploit

    [358]59Co   ciekawe   jest   to   prog.  Amerykanina  polskiego
    pochodzenia.

    [359]60W j. ang.: Tor Browser

    [360]61W j. ang.: Waterfox

    [361]62Jest to opisane tu:
    [362]https://www.techrepublic.com/article/how-to-install-tor-fo
    r-chrome-for-even-more-private-browsing .

References

    1. mailto:jaworski1978@adres.pl
    2. mailto:energokoder@adres.pl
  213. https://github.com/netblue30/firejail/tree/master/etc/profile-a-l
  214. https://github.com/netblue30/firejail/tree/master/etc/profile-m-z
  239. https://www.gnu.org/distros/free-distros.html
  240. https://www.gnu.org/distros/common-distros.html
  263. https://www.ssh-audit.com/hardening_guides.html
  269. https://linuxize.com/post/install-configure-fail2ban-on-ubuntu-20-04/
  271. https://foundation.wikimedia.org/wiki/Archive:Wikipedia_Zero
  272. https://foundation.wikimedia.org/wiki/Archive:Wikipedia_Zero
  275. http://www.eff.org/https-everywhere
  276. http://privacybadger.org/
  277. file:///home/jacek-marcin/+Ściągnięte/Zabezpieczenie Sys. 
Debian-Ubuntu.html#sdfootnote62sym
  278. http://www.eff.org/https-everywhere
  279. http://privacybadger.org/
  280. https://addons.mozilla.org/en-US/firefox/addon/disable-javascript/
  281. 
https://addons.mozilla.org/en-US/firefox/addon/i-dont-care-about-cookies/
  282. 
https://chrome.google.com/webstore/detail/i-dont-care-about-cookies/fihnjjcciajhdojfnbdddfaoknhalnja
  283. https://wiki.debian.org/SetupGuides/SecurePersonalComputer
  284. https://wiki.ubuntu.com/BasicSecurity
  285. 
https://www.ncsc.gov.uk/collection/end-user-device-security/platform-specific-guidance/ubuntu-18-04-lts
  286. 
https://www.techrepublic.com/article/how-to-check-for-weak-passwords-on-your-linux-systems-with-john-the-ripper
  287. 
https://www.techrepublic.com/article/how-to-check-for-weak-passwords-on-your-linux-systems-with-john-the-ripper
  288. 
https://www.techrepublic.com/article/how-to-check-for-weak-passwords-on-your-linux-systems-with-john-the-ripper
  289. 
https://securityboulevard.com/2020/08/linux-server-security-10-linux-hardening-security-best-practices
  290. https://www.makeuseof.com/linux-hardening-tips-sysadmins
  291. 
https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html
  292. https://wiki.debian.org/SetupGuides/SecurePersonalComputer
  293. 
https://linuxize.com/post/how-to-setup-a-firewall-with-ufw-on-ubuntu-20-04
  294. 
https://www.reddit.com/r/privacytoolsIO/comments/g31pfm/ubuntu_security_guide
  295. https://www.maketecheasier.com/secure-newly-installed-ubuntu
  296. 
https://askubuntu.com/questions/579552/how-can-i-have-a-very-secure-ubuntu-desktop-system
  341. https://pl.wikipedia.org/wiki/OpenDNS
  355. https://en.wikipedia.org/wiki/Lynis
  356. file:///home/jacek-marcin/+Ściągnięte/Zabezpieczenie Sys. 
Debian-Ubuntu.html#sdfootnote58anc
  357. https://pl.wikipedia.org/wiki/Exploit
  362. 
https://www.techrepublic.com/article/how-to-install-tor-for-chrome-for-even-more-private-browsing
Technical Details
Message-ID: <lh6jfdFuafbU1@mid.individual.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: Jacek Marcin Jaworski <jaworski1978@adres.pl>
Newsgroups: pl.comp.os.linux,alt.pl.comp.os.linux.newbie
Subject: Zabezpieczenie Sys. Debian-Ubuntu
Followup-To: alt.pl.comp.os.linux.newbie
Date: Sat, 3 Aug 2024 13:43:41 +0200
Organization: Energo Kod
Lines: 4646
Message-ID: <lh6jfdFuafbU1@mid.individual.net>
Mime-Version: 1.0
X-Trace: individual.net LuM1v3Zrsaf/SWa+C9KtdAo4Ryc+FmW4I88t2ilC4lowU33ifV
Cancel-Lock: sha1:DmpXQ4TnyL7/m6FBV+11hmQfoec= sha256:/g+bxXV+Jo4NmBUy/RhjueYRSaw6L0fYoHZ+bTQjyVc=
User-Agent: Mozilla Thunderbird
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit