Ich konfiguriere einen Linux Router mit iptables
. Ich möchte Abnahmetests für die Konfiguration schreiben, die Folgendes bestätigen:
- Datenverkehr von einem Kerl im Internet wird nicht weitergeleitet, und
- TCP wird von Hosts im Unternehmens-LAN an Port 80 auf dem Webserver in der DMZ weitergeleitet.
Eine alte FAQ spielt auf eine iptables -C
Option an, mit der man etwas fragen kann wie: "Würde ein Paket von X nach Y an Port Z angenommen oder verworfen werden?" Obwohl die FAQ vermuten lässt, dass dies so funktioniert, scheint die Option iptables
(aber möglicherweise nicht so, ipchains
wie sie in den Beispielen verwendet wird) -C
nicht ein Testpaket zu simulieren, das alle Regeln durchläuft, sondern prüft, ob eine genau übereinstimmende Regel vorhanden ist. Dies hat als Test wenig Wert. Ich möchte behaupten, dass die Regeln den gewünschten Effekt haben, nicht nur, dass sie existieren.
Ich habe darüber nachgedacht, noch mehr Test-VMs und ein virtuelles Netzwerk zu erstellen und dann mit Tools wie nmap
Effekten zu suchen. Ich vermeide diese Lösung jedoch aufgrund der Komplexität der Erstellung all dieser zusätzlichen virtuellen Maschinen. Dies ist eine recht schwierige Methode, um Testdatenverkehr zu generieren. Es wäre auch schön, eine automatisierte Testmethode zu haben, die auch auf einem realen Server in der Produktion funktioniert.
Wie könnte ich dieses Problem sonst lösen? Gibt es einen Mechanismus, mit dem ich willkürlichen Datenverkehr generieren oder simulieren kann und dann weiß, ob er von gelöscht oder akzeptiert wurde (oder werden würde) iptables
?
quelle
Antworten:
Wenn Sie bereit sind, ein wenig zu programmieren, können Sie Folgendes versuchen:
CLONE_NEWNET
Flag für denclone
Systemaufruf oder die Befehleip netns add
und verwendenip netns exec
.tun
Treiber oder verwendenip link add
.iptables-restore
tun
oder an die Regeln weiterveth
tun
oder erhaltenveth
Dieser Ansatz wird wahrscheinlich am besten zum Testen von Regeln für weitergeleitete Pakete funktionieren. Die Verbindung zu / von der Maschine, auf der iptables verwendet wird, erfordert etwas mehr Aufwand, sollte sich aber auch auf diese Weise testen lassen.
Hier ist ein Beispiel für eine Folge von Befehlen, die verwendet werden könnten:
Dadurch würden drei Netzwerk-Namespaces zum Testen erstellt und ein Satz von iptables-Regeln in einen von ihnen geladen. Die anderen beiden dienen als die Rolle eines Mannes im Internet und eines Hosts im LAN.
Im obigen Beispiel
telnet
erhält der erste Befehl die Verbindung vomtest-iptables-lan-host
Namespace zurückgewiesen, der zweitetelnet
Befehl eine Zeitüberschreitung, wenn der Regelsatz das Paket verwirft.Dies hat keinen Einfluss auf den ursprünglichen Netzwerk-Namespace, in dem Ihre gesamte Produktion standardmäßig ausgeführt wird. Die einzige Möglichkeit, Ihre Produktion stärker zu trennen, besteht darin, sie auf einem separaten Host (physisch oder virtuell) auszuführen.
quelle
Die Fachwelt tut dies mit Hilfe von Hardware / Software, die von 2 Unternehmen bereitgestellt wird.
www.ixiacom.com
www.spirent.com
Im ersten Fall können Sie so etwas wie ein Ixia 400T-Chassis + Ixload verwenden.
Im zweiten Fall die Leitung Smartbits oder Testcenter mit den entsprechenden Anwendungen
Diese Geräte können (unter anderem) viele Clients emulieren, die unterschiedliche Arten von Anforderungen auf dem ausgewählten Zielserver ausführen. Sie sind bereit, die Sicherheit Ihres Servers zu testen, einschließlich einer Reihe vordefinierter Angriffstests, und Sie können jederzeit eine eigene Gruppe definieren. Sie haben auch viele andere Fähigkeiten wie Belastungs-Stresstests und dergleichen.
Keine billige Option.
quelle