Es gibt einen Server ohne Iptables- Verteidigung:ACCEPT all..
Auf diesem Server befinden sich möglicherweise benutzerdefinierte Anwendungen.
Wenn wir diesen Server mit strengen iptables-Regeln härten müssen (also alle ablehnen und nur das zulassen, was von den Anwendungen benötigt wird), müssen wir von Hand herausfinden, welche App welche verwendet, dst/src
port/protocol
und dann müssen wir die iptables-Regeln für schreiben Sie..
Die Frage : Gibt es Skripte, mit denen diese Informationen von einem laufenden Computer gesammelt werden können? (aus den Protokollen?) - Und automatisch die iptables-Regeln generieren?
Als ob da das audit2allow
an ist SELinux
. Nur für iptables
!
Die Maschine kann keinen Ausfall haben!
Beispiel: Das Skript "MAGIC" sollte eine Woche / einen Monat auf dem Computer ausgeführt werden und Informationen sammeln. Nach einer Woche / einem Monat kann das Skript eine iptables-Regeldatei erstellen, die wir verwenden können.
Viele Menschen könnten in diese Situation geraten (wie man einen Server in Bezug auf iptables härtet). Und es wäre großartig, wenn es ein Skript / eine Lösung gäbe, die dies kann: \
Antworten:
Mach es manuell
oder
Erläuterung:
quelle
Führen Sie
tcpdump
den Computer etwa eine Woche lang aus, um den durchschnittlichen Datenverkehr zu erfassen. Anschließend können Sie den Datenverkehr später mit Wireshark durchsuchen, um festzustellen, welche Ports verwendet werden.Der Befehl dafür wäre
tcpdump -i <interface> -s 65535 -w <some-file>
Sie können dies dann mit
netstat -tuanp
zuordnen , um zu sehen, welche PIDs / Anwendungen welche Ports verwenden.Theoretisch könnte dies ein Skript sein.
quelle
Sie können mit einer sehr einfachen Vorlage wie https://gist.github.com/jirutka/3742890 beginnen , die nur ssh und ping zulässt, und alles andere manuell hinzufügen.
Ein schneller Skript-Hack zum Generieren von iptables-Regeln für Ihre Anwendung, die auf der öffentlichen Schnittstelle (0.0.0.0) / tcp lauscht
Sie können die auch verwenden
iptables -I INPUT <number>
, um die Regeln an einer bestimmten Stelle einzufügen, mit der Sie sie auflisten könneniptables -nvL --line-numbers INPUT
quelle
Leider gibt es kein solches Skript, das ich jemals gesehen habe und das im Lernmodus oder im passiven Modus ausgeführt werden kann, um die gesamte Netzwerknutzung zu protokollieren, die Ergebnisse zu erfassen und mithilfe
iptables
der Protokolle eine tatsächliche Firewall zu generieren .Am besten beginnen Sie einfach und fügen die verschiedenen Teile kontinuierlich hinzu, wenn Sie verstehen, welche Dienste Ihr System bereitstellt. Sie müssen Tools verwenden,
netstat
um festzustellen, welche Ports für die verschiedenen von Ihnen gehosteten Dienste verwendet werden und welche IP-Adressen auf sie zugreifen.ANMERKUNG: Oben sehen Sie, welche Dienste auf einem Server ausgeführt werden, die TCP-Verbindungen akzeptieren, dh auf Verbindungen an verschiedenen Ports "warten".
Es ist ein Kinderspiel, mit Dingen wie SSH (Port 22) und HTTP (Port 80) zu beginnen, wenn diese für Ihr System typisch sind, also würde ich diese Art von Diensten auf einmal in Massen ausführen. Bei anderen Diensten wie LDAP oder NIS möchten Sie diese möglicherweise kontrollierter ausführen, um sicherzustellen, dass bei der Einführung keine Probleme auftreten.
Tools wie FireHOL , Firewall Builder (fwbuilder) und eztables können hilfreich sein, wenn Sie dieses Projekt angreifen, da sie eine schöne Abstraktionsebene bieten, da keine benutzerdefinierten
FireHOLiptable
Regeln von Hand erstellt werden müssen, was schwierig sein kann.Beispiel
fwbuilderBeispiel
Verwenden von Fail2Ban
Wenn eine rudimentäre
Auszugiptables
Firewall vorhanden ist, möchten Sie diese wahrscheinlich mit einem Tool wie Fail2Ban ergänzen .Die Verwendung solcher Tools hilft dabei, die Belastung zu begrenzen, die Ihr System aushalten muss, wenn Sie es weiter härten. Auch wenn Sie ziemlich davon überzeugt sind, dass Ihr System gehärtet wurde, möchten Sie Fail2Ban möglicherweise weiterhin als Teil Ihrer Sicherheitsmaßnahmen verwenden.
Verweise
quelle
Verwenden Sie iptable-Regeln, um die neuen Verbindungen zu protokollieren, die auch udp protokollieren.
Sie können angeben
--log-level
, dass die Protokolle in einer anderen Datei als / var / log / messages gespeichert werden sollen (Sie müssen den Syslog-Daemon konfigurieren).Ich denke, Sie sollten die Hauptanwendungsprotokolle lesen, da einige Server eine sehr regelmäßige Aktivität wie Mittag, Ende der Woche, Ende des Monats (Quartal, Jahr) aufweisen, damit Sie keine wichtige Netzwerkaktivität des Servers verpassen.
Da der Server kritisch ist, wird die Netzwerkflussmatrix des Servers in einer schönen Tabelle (IP-Quelle, IP-Ziel, Protokoll, Port, Anwendung) erstellt, die Ihnen beim Erstellen der Regeln hilft.
quelle
Ich weiß, dass dies kein Skript ist und keine Antwort auf die Frage von OP, aber es ist eine Idee von mir, die ich mit OP teilen möchte.
Ich habe alle Abhörports mit:
Vielleicht können Sie dadurch dem Schreiben Ihres eigenen Skripts näher kommen. :) :)
quelle
Sie können mit so etwas beginnen:
und dann folgen mit
oder
In der ersten Zeile werden mit netstat die Überwachungsprozesse und ihre Ports aufgelistet. Es werden dann "iptables" -Zeilen generiert, um jede dieser eingehenden Verbindungen zu ermöglichen. Die kleine sed regex-Ersetzung wurde für die netstat-Ausgabe auf meinem Server angepasst, sodass möglicherweise einige Anpassungen für Sie erforderlich sind. Wenn es funktioniert, sollten Sie am Ende Folgendes haben:
Zwei wichtige Dinge zu beachten:
1) Diese Regeln tun nichts für Sie, bis Sie am Ende eine DROP- oder REJECT-Zeile einfügen oder diese als Standardrichtlinie für nicht übereinstimmende Pakete festlegen. Diese Regeln erlauben Pakete, was umstritten ist, wenn die Standardrichtlinie zulässt, dass etwas nicht übereinstimmt.
2) Diese Regeln sind in Bezug auf die Quell- IP ambivalent . Aus Ihrem ursprünglichen Beitrag geht hervor, dass Sie allen Ihren Clients erlauben möchten, den Server zu verwenden. Überprüfen Sie dann die Protokolle, um Quell- IPs für die Zielports zu erhalten . Ich kenne kein Tool, um dies zu tun, daher verhindert dieses Skript nur, dass Leute auf Ihrem Server neue Dienste erstellen, die andere Ports überwachen ... was etwas ist .
quelle