]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Tworzenie rozdziału 10. Podrozdział 10.3.3.fail2ban. Rozpoczęto opis pliku konfigurac...
authorxf0r3m <jakubstasinski@protonmail.com>
Sat, 26 Aug 2023 18:04:45 +0000 (20:04 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Sat, 26 Aug 2023 18:04:45 +0000 (20:04 +0200)
articles/terminallog/Linux.Podstawy.html

index d182f9ba8dc3bff3d5aa708e4977719df6088aac..ee780dbf2d6bc3ee548d5299b9e333c2c1091ae4 100644 (file)
@@ -8480,13 +8480,14 @@ and check to make sure that only the key(s) you wanted were added
           zmianie konfiguracji demona <em>openssh</em>, jednak nie będziemy się
           skupiać na wszystkich możliwych opcjach poniżej przedstawię tylko
           te, które mogą nam się przydać na obecnym poziomie
-          <em>wtajemniczenia</em>
+          <em>wtajemniczenia</em>. Opisy tych opcji przybliżą nam również nie
+          co bardziej działanie samego SSH.
         </p>
         <p>
           Konfiguracja demona <em>openssh</em> znajduje się w pliku:
-          <em>/etc/ssh/sshd_config</em>. W tym pliku poza instrukcją
-          <em>Include</em>, wszysktie opcje są ujęte w komentarz. Wartości
-          tych opcji zawierają rzeczywiste domyślne wartości. Jeśli więc
+          <em>/etc/ssh/sshd_config</em>. W tym pliku wiele opcji jest
+          wyłaczonych (ujęte w komentarz), oznacza to, że przechowują one
+          domyślne wartości. Jeśli więc
           chcemy coś zmienić w konfiguracji daemona SSH, musimy usunąć
           początkowy symbol komentarz i zmienić wartość opcji.
         </p>
@@ -8496,6 +8497,11 @@ and check to make sure that only the key(s) you wanted were added
               do tego systemu za pomocą SSH podłączyć. Obcnie nie przynosi to
               rezultatów. Bezpieczeniej jest wyłączyć logowanie za pomocą
               haseł.</li>
+          <li><strong>LoginGraceTime</strong> - oczekiwanie na wpisanie hasła.
+              Podczas podłączania się do serwera SSH oczekuje na wpisanie hasła
+              i ten czas ma swój limit. Domyślnie są to 2 minuty. Po tym czasie
+              mimo prawidłowo podanego hasła połączenie zostanie zerwane i
+              trzeba się będzie logować ponownie.<li>
           <li><strong>PermitRootLogin</strong> - Zezwolenie na logowanie się
               jako superużytkownik. Jeśli dostęp do tego konta nie jest jakos
               bardzo potrzebny to możemy ustawić wartość tego pola na
@@ -8503,6 +8509,10 @@ and check to make sure that only the key(s) you wanted were added
               często jego konto pada ofiarą ataków siłowych, skupionych na
               probach odgadnięcia hasła (Przeciwdziałanie tego typu atakom,
               zostanie przedstawione w tym rozdziale).</li>
+          <li><strong>PasswordAuthentication</strong> - zmiana wartości tej
+              opcji na <em>no</em> zabroni używania haseł do logowania się.
+              W użyciu pozostaną wówczas same klucze. Lepiej nie zmieniać tej
+              opcji, do póki nie załadujemy swojego klucza.</li>
           <li><strong>X11Forwarding</strong> - dość ciekawa opcja pozwala
               uruchomić program okienkowy na serwerze, kontrolując go z
               poziomu klienta. Proces programu uruchomiany jest na serwerze,
@@ -8513,6 +8523,97 @@ and check to make sure that only the key(s) you wanted were added
               programu wymaga podania użycia przez klient opcji <em>-Y</em> lub
               <em>-X</em>.</li>
         </ul>
+        <p>
+          Oczywiście opcje z omawianego przez nas pliku są opisane na stronie
+          podręcznika <code class="code-inline">man 5 sshd_config</code>. Po
+          zapisaniu zmian w pliku konfiguracyjnym demona SSH, należy uruchomić
+          go ponownie aby nasze zmiany zaczęły działać.
+        </p>
+<pre class="code-block">
+xf0r3m@immudex:~$ sudo systemctl restart ssh.service
+</pre>
+        <h3 id="10.3.3.fail2ban">10.3.3. Zabezpieczenie fail2ban</h3>
+        <p>
+          Wystawiając otwarty port 22/TCP czyli SSH, możemy zauwać w plikach
+          dzienników systemowych (plik <em>/var/log/btmp</em> - polecenie
+          <em>lastb</em> - nieudane próby logowania) wiele prób logowania się,
+          odgadywania nazwy użytkownika oraz hasła. Możemy wpaść na pomysł
+          wyłączenia wyłaczenia logowania za pomocą hasła. Jest to pewne
+          rozwiązanie, jednak:
+        </p>
+        <ul>
+          <li>Logowanie wyłącznie za pomocą kluczy spowoduje, że połączenie z
+              serwerem będzie możliwe z tylko i wyłącznie z komputerów,
+              na których znajduje się klucz. Zdaje sobie z tego sprawę, że może
+              być to dobre rozwiązanie. Oczywiście bezpieczeństo to niewygoda.
+              Poza tym klucze można kopiować i
+              przenościć, o ile zostały podjęte jakieś działania mające na celu
+              zabezpieczenie klucza prywatnego.</li>
+          <li>Ta metoda nie rozwiązuje pojawiających się w logach prób
+              logowania. Mimo iż serwer jeśli nie podamy mu odpowiedniego 
+              klucza
+              zwróci informacje o braku dostępu. To sowiste pukanie do drzwi,
+              gdzie nasz serwer odpowiada: "Nieczynne! Remanent." ;)</li>
+        </ul>
+        <p>
+          Co jeśli serwer ma być podpięty do domeny, i umożliwiać logowania
+          dużej ilości użytkowników? Wtenczas administrator będzie musiał
+          spędzić trochę kariery na dodaniu tych wszystkich kluczy. A to
+          nie koniec, ponieważ rotacje pracowników zdarzają się dość często.
+          W tym wypadku nie możemy zablokować logowania za pomocą hasła.
+        </p>
+        <p>
+          Istnieje kompromis między logowaniem za pomocą hasła a ograniczeniem
+          odgadywania dostępu przez różnego rodzaju automaty. Jest nim
+          <strong>fail2ban</strong>. Jest to usługa monitorująca próby
+          uwierzytelnienia się i po przekroczeniu nie udanych prób odcinająca
+          dostęp do usługi na jakiś czas. Usługa ta opiera swoje działanie na
+          dynamicznym tworzeniu i usuwaniu reguł zapory sieciowej.
+        </p>
+        <p>
+          Uwaga! Na Debianie fail2ban nie posiada w swoich zależnościach
+          pakietu zapory, dlatego też należy pamiętać, żeby dopisać go podczas
+          instalacji programu. Pakiet <em>fail2ban</em> znajduje się w
+          repozytoriach.
+        </p>
+        <p>
+          Aby <em>banowanie</em> miało skutek konfiguracja narzędzia musi
+          znaleźć się w pliku <em>/etc/fail2ban/jail.conf</em>. Domyślnie ten
+          plik zawiera bardzo dużo różnych opcji, sekcji oraz wartości.
+          Poniżej umieściłem minimalną działającą konfigurację narzędzia dla
+          SSH. <em>Fail2ban</em> może rownież działać z innymi usługami.
+        </p>
+<pre class="code-block">
+[INCLUDES]
+before = paths-debian.conf
+
+[DEFAULT]
+protocol = tcp
+chain = &lt;known/chain&gt;
+port = 0:65535
+
+banaction = iptables-multiport
+action = %(banaction)s[port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
+
+[sshd]
+enabled = true
+port = 2022
+filter = sshd
+maxretry = 3
+findtime = 5m
+bantime = 30m
+backend = systemd
+</pre>
+        <p>
+          W piewszej sekcji (<code class="code-inline">[INCLUDES]</code>)
+          znajduje się jedna opcja wskazująca plik z konfiguracją scieżek
+          przeznaczoną
+          dla wybranej dystrybucji. Każda dystrybucja może zawierać w różnych
+          miejscach komponenty potrzebne mu do działania stąd ten plik. Sama
+          sekcja zawiera może zawierać dodatkowe konfiguracje, które mogą być
+          interpretowane przez program przed interpretacją sekcji przeznaczonej
+          dla wybranej usługi (opcja <code class="code-inline">before</code>).
+        </p>
       </div>
                        <p style="margin: 15px; padding: 0; outline: 0;">
                                2022; COPYLEFT; ALL RIGHTS REVERSED;