Das Buch "Kali Linux von Entwicklern"

Bild Hallo habrozhiteli! Die Autoren werden Sie Schritt für Schritt in die Grundlagen und Funktionen von Kali Linux einführen. Das Buch bietet einen kurzen Kurs zur Arbeit mit der Linux-Befehlszeile und ihren Konzepten und beschreibt typische Installationsszenarien für Kali Linux. Nachdem Sie dieses Buch gelesen haben, lernen Sie, wie Sie Kali Linux konfigurieren, debuggen und schützen sowie mit dem leistungsstarken Paketmanager des Debian-Distributionspakets arbeiten. Erfahren Sie, wie Sie Kali Linux in jeder Umgebung, einschließlich großer Unternehmensnetzwerke, ordnungsgemäß installieren. Schließlich müssen Sie sich mit komplexen Themen vertraut machen: Kompilieren des Kernels, Erstellen eigener ISO-Images, industrielle Verschlüsselung und professioneller Schutz vertraulicher Informationen.


Kapitel 7. Schutz und Kontrolle von Kali Linux


Sobald Sie Kali Linux für vertraulichere und bekanntere Aufgaben verwenden, müssen Sie die Sicherheit Ihrer Installation höchstwahrscheinlich ernst nehmen. In diesem Kapitel werden wir zunächst die Sicherheitsrichtlinie erörtern, die wichtigsten Punkte bei ihrer Festlegung hervorheben und einige Bedrohungen für Ihr System und Sie als Sicherheitsexperte berücksichtigen. Wir werden auch Sicherheitsmaßnahmen für Laptops und Desktops diskutieren und Firewalls und Paketfilterung separat betrachten. Abschließend werden wir auf Überwachungstools und -strategien eingehen und die effektivsten Möglichkeiten aufzeigen, mit denen potenzielle Bedrohungen für Ihr System erkannt werden können.

7.1. Definition der Sicherheitsrichtlinie


Es ist unangemessen, die Sicherheit allgemein zu diskutieren, da dieses Konzept eine breite Palette von Konzepten, Werkzeugen und Verfahren darstellt, die nicht universell sind. Die Auswahl unter ihnen erfordert eine genaue Darstellung Ihrer Ziele. Der Systemschutz beginnt mit Antworten auf mehrere Fragen. Die hastige und rücksichtslose Implementierung eines beliebigen Satzes von Dienstprogrammen führt zu dem Risiko, Sicherheitsaspekte falsch zu definieren.

Es ist am besten, zunächst ein bestimmtes Ziel zu identifizieren. Der richtige Ansatz zur Lösung dieses Problems sind die Antworten auf die folgenden Fragen.

1. Was versuchst du zu schützen? Die Sicherheitsrichtlinie hängt davon ab, was Sie schützen möchten: Computer oder Daten. Im letzteren Fall müssen Sie auch wissen, welche Informationen geschützt werden müssen.

2. Wovor versuchst du dich zu schützen? Aus dem Verlust vertraulicher Daten? Aus versehentlichem Informationsverlust? Aus einem Verlust, der durch einen Fehler bei der Erbringung von Dienstleistungen verursacht wurde?

3. Vor wem versuchst du dich zu schützen? Die Sicherheitsmaßnahmen zum Schutz vor Tippfehlern eines einfachen Benutzers des Systems und zum Schutz vor einer bestimmten Gruppe von Eindringlingen sind völlig unterschiedlich.

Der Begriff „Risiko“ wird normalerweise verwendet, um diese Faktoren allgemein zu definieren: Was muss geschützt werden, was sollte verhindert werden und durch wessen Fehler kann es passieren. Die Risikomodellierung erfordert Antworten auf alle drei Fragen. Basierend auf dem resultierenden Modell können Sie eine Sicherheitsrichtlinie entwickeln und mithilfe bestimmter Aktionen implementieren.

Bruce Schneier, ein globaler Experte für Sicherheitsfragen (nicht nur für Computer), versucht, einem der wichtigsten Sicherheitsmythen entgegenzuwirken, indem er unter dem Motto handelt: "Sicherheit ist ein Prozess, kein Produkt." Vermögenswerte, die geschützt werden müssen, ändern sich im Laufe der Zeit, ebenso wie die Bedrohungen und Mittel, die potenziellen Angreifern zur Verfügung stehen. Selbst wenn die Sicherheitsrichtlinie ursprünglich ideal entworfen und implementiert wurde, sollten Sie hier niemals aufhören. Die Risikokomponenten entwickeln sich weiter, und Methoden zu ihrer Verhinderung sollten entsprechend entwickelt werden.

Darüber hinaus sollten zusätzliche Einschränkungen berücksichtigt werden, die den Umfang der verfügbaren Richtlinien einschränken können. Was sind Sie bereit, um das System zu schützen? Dieses Thema ist für die Wahl der Politik von großer Bedeutung. Sehr oft wird die Antwort nur unter dem Gesichtspunkt der Bargeldkosten bestimmt, aber andere Elemente sollten berücksichtigt werden, wie beispielsweise die möglichen Unannehmlichkeiten, unter denen Benutzer des Systems leiden werden, oder die Verschlechterung seiner Leistung.

Sobald das Risiko modelliert ist, können Sie über die Entwicklung einer geeigneten Sicherheitsrichtlinie nachdenken.

Es gibt Extreme, die bei der Entscheidung über das erforderliche Sicherheitsniveau berücksichtigt werden sollten. Einerseits ist es äußerst einfach, grundlegende Systemsicherheit bereitzustellen.

Wenn ein zum Schutz definiertes System beispielsweise nur einen gebrauchten Computer enthält, der am Ende des Tages nur zum Hinzufügen einiger Zahlen verwendet wird, ist es eine vernünftige Entscheidung, nichts Besonderes zu tun, um ihn zu schützen. Der wahre Wert eines solchen Systems ist niedrig und der Wert der Daten ist vollständig Null, da sie nicht auf dem Computer gespeichert sind. Ein potenzieller Angreifer, der in dieses System eindringt, erhält nur einen Taschenrechner. Die Kosten für den Schutz eines solchen Systems sind wahrscheinlich höher als die Kosten für das Hacken.

Die gegenteilige Situation besteht darin, die Vertraulichkeit vertraulicher Daten so vollständig wie möglich zu schützen und etwaige Einschränkungen zu überwinden. In diesem Fall ist die vollständige Zerstörung von Informationen (sicheres Löschen von Dateien, Zerkleinern von Festplatten in kleine Stücke, anschließendes Auflösen dieser Teile in Säure usw.) eine geeignete Lösung. Wenn es eine zusätzliche Anforderung gibt, dass die Daten für die zukünftige Verwendung gespeichert werden müssen (nicht unbedingt in ständiger Verfügbarkeit) und die Kosten immer noch keine abschreckende Wirkung haben, ist es am besten, die Daten auf Iridium- und Platinlegierungsplatten in Luftschutzbunkern unter den Bergen zu speichern die Welt, von denen jede (natürlich) von einer Armee klassifiziert und geschützt wird.

Obwohl diese Methoden übertrieben erscheinen mögen, können sie dennoch geeignete Lösungen für bestimmte Risiken sein, da sie es Ihnen ermöglichen, Ihre Ziele mit vorgegebenen Einschränkungen zu erreichen. Aufgrund einer fundierten Entscheidung ist keine Sicherheitsrichtlinie mehr oder weniger ausreichend als jede andere.

Zurück zu einem typischeren Fall: Ein Informationssystem kann in kompatible und überwiegend unabhängige Subsysteme unterteilt werden. Alle haben ihre eigenen Anforderungen und Einschränkungen, daher sollte die Risikobewertung und die Entwicklung einer Sicherheitsrichtlinie für jedes dieser Subsysteme separat durchgeführt werden. Sie sollten immer daran denken, dass eine kleine Angriffsfläche leichter zu schützen ist als eine große. Netzwerkorganisationen sollten so gestaltet sein: Anfällige Dienste müssen sich auf eine kleine Anzahl von Computern konzentrieren, und letztere sollten über eine Mindestanzahl von Routen oder Kontrollpunkten zugänglich sein. Die Logik ist einfach: Es ist einfacher, Haltepunkte zu schützen als alle anfälligen Computer vor der gesamten Außenwelt. An diesem Punkt werden die Vorteile der Netzwerkfilterung (einschließlich Firewalls) deutlich. Diese Filterung kann mit speziellen Geräten implementiert werden. Eine einfachere und flexiblere Lösung besteht jedoch darin, eine Software-Firewall zu verwenden, die der im Linux-Kernel integrierten ähnelt.

7.2. Mögliche Sicherheitsmaßnahmen


Wie oben erwähnt, gibt es keine einheitliche Antwort auf die Frage, wie Kali Linux geschützt werden kann. Es hängt alles davon ab, wie Sie es verwenden und was genau Sie schützen möchten.

Auf dem Server

Wenn Sie Kali Linux auf einem öffentlichen Server verwenden, sollten Sie Netzwerkdienste schützen, indem Sie alle Standardkennwörter ändern, die konfiguriert werden können, und möglicherweise den Zugriff auf diese mithilfe einer Firewall einschränken (Abschnitte 7.3 „Sichern von Netzwerkdiensten“ und 7.4 „Firewall“) oder Paketfilterung “(siehe unten).

Wenn Sie Benutzerkontoinformationen direkt auf den Server oder auf einen der Netzwerkdienste übertragen, müssen Sie sichere Kennwörter festlegen (diese müssen Brute-Force-Angriffen standhalten). Gleichzeitig können Sie das Programm fail2ban konfigurieren, das das Knacken von Kennwörtern durch eine umfassende Suche über das Netzwerk erheblich erschwert (indem Sie IP-Adressen filtern, die die Grenze fehlgeschlagener Anmeldeversuche überschreiten). Sie können fail2ban mit dem Befehl apt update und anschließend apt install fail2ban installieren.

Wenn Sie Webdienste verwenden, konfigurieren Sie diese so, dass sie über das HTTPS-Protokoll funktionieren, sodass Netzwerkintermediäre Ihren Datenverkehr nicht überwachen (einschließlich der Cookie-Authentifizierung).

Auf einem Laptop

Der Laptop eines Penetrationstest-Spezialisten ist nicht den gleichen Risiken ausgesetzt wie ein offener Server: Beispielsweise sind Sie weniger anfällig für versehentliche Angriffe eines Amateur-Crackers, und in diesem Fall verfügen Sie zu diesem Zeitpunkt wahrscheinlich nicht über aktive Netzwerkdienste.

Das reale Risiko entsteht häufig, wenn Sie von einem Kunden zum anderen reisen. Beispielsweise kann Ihr Laptop während einer Reise gestohlen oder vom Zoll beschlagnahmt werden. Aus diesem Grund lohnt es sich, die vollständige Festplattenverschlüsselung zu verwenden (siehe Abschnitt „Installation auf einem vollständig verschlüsselten Dateisystem“ in Abschnitt 4.2) und möglicherweise auch die Nuke-Funktion einzurichten (siehe die Seitenleiste „Festlegen eines Selbstzerstörungskennworts für zusätzliche Sicherheit“ in Kapitel 9): Daten, die Sie haben während Ihrer Arbeit gesammelt, sind vertraulich und benötigen maximalen Schutz.

Möglicherweise benötigen Sie auch Firewall-Regeln (siehe Abschnitt 7.4 unten), jedoch nicht für den gleichen Zweck wie auf dem Server. Möglicherweise möchten Sie den gesamten ausgehenden Datenverkehr mit Ausnahme des von Ihrem VPN-Zugriff generierten Datenverkehrs blockieren. Diese Einstellungen ähneln den Netzwerksicherheitseinstellungen. Wenn das VPN nicht mehr funktioniert, werden Sie dies sofort bemerken (anstatt zum lokalen Netzwerkzugriff zurückzukehren). Daher geben Sie beim Surfen im Internet oder in anderen Netzwerkaktivitäten nicht die IP-Adressen Ihrer Clients an. Wenn Sie lokale interne Interaktionen durchführen, ist es außerdem am besten, Ihre Aktivitäten ständig zu überwachen, um das im Netzwerk verursachte Rauschen zu reduzieren, das die Aufmerksamkeit der Kunden und ihrer Schutzsysteme auf sich ziehen kann.

7.3. Schutz der Netzwerkdienste


Es wird empfohlen, Dienste zu deaktivieren, die Sie nicht verwenden. Kali vereinfacht diese Aufgabe, da die meisten Netzwerkdienste bereits standardmäßig deaktiviert sind.
Solange Dienste deaktiviert bleiben, stellen sie kein Sicherheitsrisiko dar. Sie sollten jedoch beim Einschalten aufgrund der folgenden Faktoren vorsichtig sein.

1. Standardmäßig verfügen sie nicht über eine Firewall. Wenn sie also alle Netzwerkschnittstellen abhören, sind sie für die Öffentlichkeit weitgehend zugänglich.

2. Einige Dienste verfügen nicht über Anmeldeinformationen und können bei der ersten Verwendung festgelegt werden. andere verfügen über Standardanmeldeinformationen (und sind daher allgemein bekannt). Stellen Sie sicher, dass Sie ein Passwort (neu) festlegen, das nur Ihnen bekannt ist.

3. Viele Dienste werden mit Root-Rechten (mit vollständigen Administratorrechten) ausgestattet, sodass die Folgen eines nicht autorisierten Zugriffs oder von Sicherheitsverletzungen normalerweise schwerwiegend sind.

Wir werden hier nicht alle Tools auflisten, die mit den Standardanmeldeinformationen geliefert werden. Überprüfen Sie stattdessen die Datei README.Debian für die jeweiligen Pakete sowie die Seiten docs.kali.org und tools.kali.org, um festzustellen, ob der Dienst spezielle Wartungsarbeiten benötigt, um die erforderliche Sicherheit zu gewährleisten.

Wenn Sie in Echtzeit starten, lautet das Root-Passwort toor. Daher dürfen Sie SSH nicht aktivieren, bevor Sie das Kennwort des Root-Kontos geändert haben oder bevor Sie eine kennwortbasierte Anmeldesperre in der Kontokonfiguration eingerichtet haben.

Beachten Sie auch die bekannte Tatsache, dass das BeEF-Projekt (aus dem bereits installierten Rindfleisch-xss-Paket) die Standardanmeldeinformationen hat: den Rindfleisch-Benutzernamen und das Rindfleisch-Passwort, die in der Konfigurationsdatei "zwangsweise" festgelegt sind.

7.4. Firewall- oder Paketfilterung


Eine Firewall ist ein Computergerät mit Hardware, Software oder beidem, das eingehende oder ausgehende Netzwerkpakete (eingehend oder ausgehend vom lokalen Netzwerk) analysiert und nur solche weitergibt, die bestimmte vordefinierte Bedingungen erfüllen.

Ein Filtering Network Gateway ist eine Art Firewall, die das gesamte Netzwerk schützt. In der Regel wird es auf einem dedizierten Computer installiert, der als Gateway zum Netzwerk konfiguriert ist, sodass alle in das Netzwerk ein- und aus dem Netzwerk kommenden Pakete analysiert werden können. Alternativ gibt es eine lokale Firewall, bei der es sich um einen Softwaredienst handelt, der auf einem bestimmten Computer ausgeführt wird, um den Zugriff auf eine Reihe von Diensten auf diesem Computer zu filtern oder einzuschränken oder um möglicherweise ausgehende Verbindungen von Spyware zu verhindern, die der Benutzer versehentlich oder absichtlich installieren könnte.

Der Linux-Kernel verfügt über eine integrierte Netfilter-Firewall. Es gibt keine einzige Lösung zum Konfigurieren einer Firewall, da die Anforderungen des Netzwerks und des Benutzers unterschiedlich sind. Sie können netfilter jedoch mit den Befehlen iptables und ip6tables vom Benutzerbereich aus steuern. Der Unterschied zwischen letzterem besteht darin, dass ersteres für IPv4-Netzwerke funktioniert, während letzteres für IPv6 funktioniert. Da beide Stapel von Netzwerkprotokollen wahrscheinlich viele Jahre lang funktionieren, sollten beide Tools parallel verwendet werden. Sie können auch das hervorragende GUI-basierte Dienstprogramm fwbuilder verwenden, das eine grafische Darstellung der Filterregeln bietet.

Wenn Sie sich jedoch für die Konfiguration von netfilter (die Implementierung der Linux-Firewall) entscheiden, werden wir uns die Funktionsweise genauer ansehen.

Verhalten des Netfilter-Überspannungsschutzes

Der Netfilter-Filter verwendet vier verschiedene Tabellen, in denen die Regeln für die drei Arten von Vorgängen für Pakete gespeichert sind:

1. Filter bezieht sich auf Filterregeln (Akzeptieren, Ablehnen oder Ignorieren eines Pakets);

2. nat (Network Address Translation) bezieht sich auf die Übersetzung von Quell- oder Zieladressen und Paketports;

3. Mangle bezieht sich auf andere Änderungen in IP-Paketen (einschließlich des ToS-Felds (Art des Dienstes) und der Optionen).

4. raw ermöglicht andere manuelle Änderungen an den Paketen, bevor sie (die Pakete) das Verbindungsverfolgungssystem erreichen.

Jede Tabelle enthält Listen von Regeln, die als Ketten bezeichnet werden. Die Firewall verwendet Standardketten, um Pakete basierend auf vordefinierten Bedingungen zu verarbeiten. Der Administrator kann andere Ketten erstellen, die nur beim Übertragen einer der Standardketten (direkt oder indirekt) verwendet werden.

Die Filtertabelle enthält drei Standardketten:

1. INPUT - bezieht sich auf Pakete, deren Zweck die Firewall selbst ist;

2. AUSGABE - bezieht sich auf Pakete, die von der Firewall kommen;

3. FORWARD - bezieht sich auf Pakete, die die Firewall passieren (die weder ihre Quelle noch ihr Ziel ist).

Die Nat-Tabelle hat auch drei Standardketten:

1. PREROUTING - um Pakete sofort nach ihrer Ankunft zu wechseln;

2. POSTROUTING - um Pakete zu ändern, wenn sie versandbereit sind;

3. AUSGABE - um die von der Firewall selbst generierten Pakete zu ändern.

Diese Ketten sind in Abb. 1 dargestellt. 7.1.

Bild

Jede Kette ist eine Liste von Regeln; Jede Regel besteht aus einer Reihe von Bedingungen und einer Aktion, die ausgeführt wird, wenn Bedingungen erfüllt sind. Bei der Verarbeitung eines Pakets durchsucht die Firewall die entsprechende Kette eine Regel nach der anderen. Wenn die Bedingungen für eine Regel erfüllt sind, springt sie (daher der Parameter -j in den Befehlen) zur angegebenen Aktion, um die Verarbeitung fortzusetzen. Die gängigsten Verhaltensweisen sind standardisiert und es gibt spezielle Maßnahmen für sie. Das Ausführen einer dieser Standardaktionen unterbricht die Verarbeitung der Kette, da das weitere Schicksal der Pakete bereits vorbestimmt ist (ohne Berücksichtigung der unten genannten Ausnahme). Das Folgende sind Netfilter-Aktionen.

1. AKZEPTIEREN (AKZEPTIEREN) - Ermöglichen Sie dem Paket, sich weiter entlang seiner Route zu bewegen.

2. REJECT - lehnt das Paket mit dem ICMP-Fehlerpaket (Internet Control Message Protocol) ab (der Typ --reject-with für iptables bestimmt den Fehlertyp für die Ablehnung).

3. DROP - Löschen (ignorieren) Sie das Paket.

4. LOG (REGISTER) - Registrieren Sie (über den syslogd-Daemon) eine Nachricht, die das Paket beschreibt. Beachten Sie, dass diese Aktion die Verarbeitung nicht unterbricht und die Kettenausführung ab der nächsten Regel fortgesetzt wird. Daher erfordert die Registrierung abgelehnter Pakete sowohl die LOG- als auch die REJECT / DROP-Regeln. Allgemeine Parameter im Zusammenhang mit der Registrierung sind:

  • --log-level gibt mit einer Standardwarnung den Schweregrad des Syslogs an.
  • Mit --log-prefix können Sie ein Textpräfix angeben, um zwischen protokollierten Nachrichten zu unterscheiden.
  • --log-tcp-sequence, --log-tcp-options und --log-ip-options geben zusätzliche Daten an, die in die Nachricht eingefügt werden sollen: TCP-Seriennummer, TCP-Parameter bzw. IP-Parameter.

5. ULOG - Registrieren einer Nachricht über ulogd, die für die Verarbeitung einer großen Anzahl von Nachrichten besser angepasst und effizienter als syslogd sein kann. Beachten Sie, dass diese Aktion wie LOG auch die Verarbeitung zur nächsten Regel in der aufrufenden Kette zurückgibt.

6. Kettenname - Gehen Sie zur angegebenen Kette und bewerten Sie deren Regeln.

7. RETURN - bricht die Verarbeitung der aktuellen Kette ab und kehrt zur aufrufenden Kette zurück; Wenn die aktuelle Kette Standard ist, gibt es keine aufrufende Kette, daher wird stattdessen die Standardaktion ausgeführt (definiert mit dem Parameter -P für iptables).

8. SNAT (nur in der Nat-Tabelle) - Wenden Sie die SNAT (Source Network Address Translation) an. Zusätzliche Parameter beschreiben die genauen Änderungen, die angewendet werden sollen, einschließlich des Parameters --to-source address: port, der die neue Quelle der IP-Adresse und / oder des Ports definiert.

9. DNAT (nur in der Nat-Tabelle) - Wenden Sie DNAT (Destination Network Address Translation) an. Zusätzliche Parameter beschreiben die genauen zu verwendenden Änderungen, einschließlich des Parameters --to-destination address: Der Port, der die neue Quelle der IP-Adresse und / oder des Ports definiert.

10. MASQUERADE (nur in der Nat-Tabelle) - Maskierung anwenden (Sonderfall von Source NAT).

11. REDIRECT (nur in der nat-Tabelle) - Leiten Sie das Paket offen an diesen Port der Firewall selbst weiter. Sie können einen Webproxy verwenden, um einen offenen Server zu konfigurieren, der ohne Konfiguration auf der Clientseite funktioniert. Während der Client glaubt, dass er eine Verbindung zum Empfänger herstellt, werden die Nachrichten tatsächlich über den Proxyserver gesendet. Die Parameterportport (s) geben den Port oder Portbereich an, an den Pakete weitergeleitet werden sollen.

Andere Maßnahmen, insbesondere im Zusammenhang mit der Mangeltabelle, wurden in diesem Unterabschnitt nicht berücksichtigt. Eine vollständige Liste finden Sie in den Handbuchseiten iptables (8) und ip6tables (8).

Syntax für die Befehle iptables und ip6tables


Mit den Befehlen iptables und ip6tables werden Tabellen, Ketten und Regeln verwaltet. Ihre Parameter -t-Tabelle gibt an, mit welcher Tabelle gearbeitet werden soll (standardmäßig die Filtertabelle).

Teams

Die Hauptparameter für die Interaktion mit Schaltkreisen sind unten aufgeführt.

1. -L Kette listet die in der Kette enthaltenen Regeln auf. Wird mit der Option -n verwendet, um die Namensauflösung zu deaktivieren (z. B. zeigt iptables -n -L INPUT die Regeln für eingehende Pakete an).

2. -N Kette erstellt eine neue Kette. Sie können neue Ketten für verschiedene Zwecke erstellen, z. B. zum Testen eines neuen Netzwerkdienstes oder zum Abwehr eines Netzwerkangriffs.

3. -X Kette entfernt die leere und nicht verwendete Kette (z. B. iptables -X ddos-attack).

4. - Eine Kettenregel fügt eine Regel am Ende einer bestimmten Kette hinzu. Denken Sie daran, dass Regeln von oben nach unten verarbeitet werden. Vergessen Sie nicht, diesen Moment beim Hinzufügen von Regeln zu berücksichtigen.

5. -Ich kette rule_number rule fügt die Regel vor der Regel mit der angegebenen Nummer ein. Berücksichtigen Sie wie bei der Option -A die Verarbeitungsreihenfolge, wenn Sie neue Regeln in die Kette eingeben.

6. -D Kettenregel_Nummer (oder -D Kettenregel) entfernt die Regel in der Kette. Die erste Syntax gibt an, dass die Regel mit einer bestimmten Nummer gelöscht werden soll (der Befehl iptables -L --line-numbers zeigt die Regelnummern an), und die zweite gibt die zu löschende Regel anhand ihres Wesens an.

7. -F Kette setzt die Kette zurück (entfernt alle ihre Regeln). Um beispielsweise alle Regeln zu entfernen, die mit ausgehenden Paketen verknüpft sind, geben Sie den Befehl iptables -F OUTPUT ein. Wenn keine Kette angegeben ist, werden alle Regeln in der Tabelle gelöscht.

8. -P Kettenaktion definiert die Standardaktion oder "Richtlinie" für eine bestimmte Kette. Bitte beachten Sie: Diese Richtlinie gilt nur für Standardschaltungen. Um den gesamten eingehenden Datenverkehr standardmäßig zu entfernen, müssen Sie den Befehl iptables -P INPUT DROP ausführen.

Die Regeln

: -j _. , ( ) , , , .

-p IP-. tcp, udp, icmp icmpv6. TCP- --source-port --destination-port .



. , -p « , , ». .

-s -s / (source) . , -d -d / (destination).
-i , ; -o — , .

--state ( ipt_ conntrack ). NEW , , ESTABLISHED , , RELATED , , ( ftp- FTP).

iptables ip6tables, . , , — , .
, IP- 10.0.1.5 31.13.74.0/24 C , :

# iptables -A INPUT -s 10.0.1.5 -j DROP # iptables -A INPUT -s 31.13.74.0/24 -j DROP # iptables -n -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 10.0.1.5 0.0.0.0/0 DROP all -- 31.13.74.0/24 0.0.0.0/0 

Ein anderer iptables-Befehl wird häufig verwendet, um den Netzwerkverkehr für einen bestimmten Dienst oder Port zuzulassen. Damit Benutzer eine Verbindung zu SSH, HTTP und IMAP herstellen können, müssen Sie die folgenden Befehle ausführen:

 # iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT # iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT # iptables -n -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 10.0.1.5 0.0.0.0/0 DROP all -- 31.13.74.0/24 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143 

Die Regel für eine gute Computerhygiene besteht darin, alte und unnötige Regeln zu bereinigen. Der einfachste Weg, die iptables-Regel zu entfernen, besteht darin, auf die Regeln nach Zeilennummer zu verweisen, die Sie mit dem Parameter --line-numbers erhalten. Seien Sie vorsichtig: Wenn Sie eine Regel zurücksetzen, werden alle nachfolgenden Regeln in der Kette neu nummeriert.

 # iptables -n -L INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 10.0.1.5 0.0.0.0/0 2 DROP all -- 31.13.74.0/24 0.0.0.0/0 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143 # iptables -D INPUT 2 # iptables -D INPUT 1 # iptables -n -L INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143 

Abhängig von den oben beschriebenen allgemeinen Bedingungen liegen spezifischere Bedingungen vor. Weitere Informationen finden Sie in den Handbüchern zu iptables (8) und ip6tables (8).

Regeln erstellen


Jede neue Regel erfordert einen Aufruf von iptables oder ip6tables. Die manuelle Eingabe dieser Befehle kann mühsam sein. Daher werden Anrufe normalerweise in einem Skript gespeichert. Daher wird das System bei jedem Start des Computers automatisch gleich konfiguriert. Dieses Skript kann von Hand geschrieben werden, aber Sie können auch daran interessiert sein, es mit einem übergeordneten Tool wie fwbuilder vorzubereiten.

 # apt install fwbuilder 

Das Prinzip ist einfach. Beschreiben Sie in der ersten Phase alle Elemente, die an den neuen Regeln beteiligt sein werden:

1. Die Firewall selbst mit ihren Netzwerkschnittstellen;

2. Netzwerke mit geeigneten IP-Adressbereichen;

3. Server;

4. Ports, die zu auf Servern gehosteten Diensten gehören.

Erstellen Sie dann die Regeln mit einfachen Drag & Drop-Aktionen (siehe Abb. 1). 7.2. Mehrere Kontextmenüs können eine Bedingung ändern (z. B. ablehnen). Dann müssen Sie die Aktion auswählen und konfigurieren.

Bild

Bei IPv6 können Sie entweder zwei verschiedene Regelsätze für IPv4 und IPv6 erstellen oder nur einen erstellen und fwbuilder die Regeln gemäß den den Objekten zugewiesenen Adressen übersetzen lassen.

Das fwbuilder-Tool erstellt ein Skript, das die Firewall gemäß den von Ihnen definierten Regeln konfiguriert. Dank seiner modularen Architektur können Sie Skripte für verschiedene Systeme generieren, darunter iptables für Linux, ipf für FreeBSD und pf für OpenBSD.

Festlegen von Regeln für jeden Start


Um bei jedem Start des Computers Firewall-Regeln zu implementieren, müssen Sie das Konfigurationsskript in der Anweisung up der Datei / etc / network / interfaces registrieren. Im folgenden Beispiel wird das Skript in /usr/local/etc/arrakis.fw gespeichert.

 auto eth0 iface eth0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 up /usr/local/etc/arrakis.fw 

In diesem Beispiel wird davon ausgegangen, dass Sie das ifupdown-Paket zum Konfigurieren von Netzwerkschnittstellen verwenden. Wenn Sie etwas anderes verwenden (z. B. NetworkManager oder systemd-networkd), lesen Sie in der entsprechenden Dokumentation nach, wie Sie das Skript nach dem Starten der Schnittstelle ausführen.

7.5. Überwachung und Protokollierung


Vertraulichkeit und Datenschutz sind wichtige Aspekte der Sicherheit, aber es ist ebenso wichtig, die Verfügbarkeit von Diensten sicherzustellen. Als Administrator und Sicherheitsspezialist müssen Sie sicherstellen, dass alles ordnungsgemäß funktioniert. Sie sind dafür verantwortlich, abnormales Verhalten und eine Verschlechterung der Dienste rechtzeitig zu erkennen. Überwachungs- und Protokollierungssoftware spielt in diesem Aspekt der Sicherheit eine Schlüsselrolle und vermittelt ein Verständnis dafür, was im System und im Netzwerk geschieht.

In diesem Abschnitt sehen wir uns eine Reihe von Tools an, mit denen verschiedene Aspekte des Kali-Systems überwacht werden können.

Überwachen von Protokollen mit logcheck


Logcheck überwacht standardmäßig stündlich Protokolldateien und sendet nicht standardmäßige Protokollnachrichten an E-Mail-Nachrichten an den Administrator zur weiteren Analyse.

Die Liste der überwachten Dateien wird unter /etc/logcheck/logcheck.logfiles gespeichert. Die Standardwerte funktionieren ordnungsgemäß, wenn die Datei /etc/rsyslog.conf nicht vollständig neu erstellt wurde.

Das Logcheck-Programm kann Berichte mit verschiedenen Detailebenen erstellen: paranoid (paranoid), Server (Server) und Workstation (für Workstations). Der paranoide Modus ist sehr ausführlich und sollte wahrscheinlich auf bestimmte Server wie Firewalls beschränkt sein. Der Servermodus wird standardmäßig verwendet und für die meisten Server empfohlen. Der Workstation-Modus ist offensichtlich für Workstations konzipiert und extrem komprimiert, wodurch mehr Nachrichten herausgefiltert werden als bei anderen "Brüdern".

In allen drei Fällen sollte die Protokollprüfung wahrscheinlich so konfiguriert sein, dass zusätzliche Nachrichten (abhängig von den installierten Diensten) ausgeschlossen werden, wenn Sie keine stündlichen Stapel langer, nicht registrierter E-Mails erhalten möchten. Da der Nachrichtenauswahlmechanismus ziemlich kompliziert ist, muss die Datei /usr/share/doc/logcheck-database/README.logcheck-database.gz bei Schwierigkeiten gelesen werden.

Die geltenden Regeln können in verschiedene Typen unterteilt werden:

1. diejenigen, die die Nachricht als Hacking-Versuch qualifizieren (gespeichert in einer Datei im Verzeichnis /etc/logcheck/cracking.d/);

2. ignorierte Hacking-Versuche (/etc/logcheck/cracking.ignore.d/);

3. diejenigen, die die Nachricht als Sicherheitswarnung klassifizieren (/etc/logcheck/violations.d/);

4. ignorierte Sicherheitswarnungen (/etc/logcheck/violations.ignore.d/);

5. Schließlich diejenigen, die für andere Nachrichten gelten (als Systemereignisse behandelt).

Die Dateien ignore.d werden (offensichtlich) verwendet, um Nachrichten zu ignorieren. Beispielsweise kann eine Nachricht, die als Hacking-Versuch oder Sicherheitswarnung markiert ist (in der Regel in /etc/logcheck/violations.d/myfile gespeichert), nur von einer Regel in /etc/logcheck/violations.ignore.d/myfile ignoriert werden oder in der Datei /etc/logcheck/changes.ignore.d/myfile- Erweiterung.

Ein Systemereignis wird immer gemeldet, es sei denn, die Regel in einem der Verzeichnisse /etc/logcheck/ignore.d.{paranoid, server, workstation} / gibt nicht an, dass dieses Ereignis ignoriert werden soll. Natürlich werden nur solche Kataloge berücksichtigt, deren Detaillierungsgrad der ausgewählten Betriebsart entspricht oder diese übersteigt.

Echtzeit-Aktivitätsüberwachung


Das oberste interaktive Tool zeigt eine Liste der aktuell ausgeführten Prozesse an. Die Standardsortierung basiert auf der aktuellen Prozessorlast und kann mit Schlüssel P abgerufen werden. Andere Befehlssortierungen umfassen das Sortieren nach belegtem Speicher (Schlüssel M), Gesamtprozessorzeit (Schlüssel T) und Prozesskennung (Schlüssel N). Der Schlüssel k beendet den Prozess mit der eingegebenen Kennung. Der Schlüssel r ändert die Priorität des Prozesses.

Wenn ein System überlastet zu sein scheint, ist top ein großartiges Tool, um festzustellen, welche Prozesse um CPU-Zeit konkurrieren oder zu viel Speicher verbrauchen. Daher ist es oft interessant zu überprüfen, ob die Prozesse, die Ressourcen verbrauchen, realen Diensten entsprechen, die auf einem Computer gehostet werden sollten. Ein unbekannter Prozess, der wie www-data funktioniert, sollte sich wirklich von der Liste abheben und untersucht werden, da es sich höchstwahrscheinlich um ein Beispiel für Software handelt, die auf einem System installiert ist und unter Verwendung einer Sicherheitsanfälligkeit in einer Webanwendung ausgeführt wird.

Das Top-Tool ist sehr flexibel und das Handbuch enthält detaillierte Informationen zum Anpassen der Benutzeroberfläche und zum Anpassen an Ihre persönlichen Bedürfnisse und Gewohnheiten.

Das grafische Tool gnome-system-monitor ähnelt top und bietet ungefähr die gleichen Funktionen.

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers
» Inhalt
» Auszug

20% Rabatt auf Gutschein für Linux - Linux

Source: https://habr.com/ru/post/de422939/


All Articles