ipt_PORTNETSCAN

ipt_PORTNETSCAN ist eine Erweiterung von IpTables zur Erkennung von Portscan, Netscans oder Combinedscans. Die Enwicklung ist in zwei Teile unterteilt:

Downloads

Aktuell müssen für die Verwendung noch die IpTables-Quellen und die Kernelqellen gepatcht werden.

Linux Kernel patchen

Bevor IpTables gepatcht werden kann, muss der Kernel selbst gepatcht werden, da IpTables beim Übersetzen prüft, welche Module im Kernel vorhanden sind und dementrechend die Erweiterungen (Extensions) in IpTables aktiviert oder deaktiviert.

Nach dem Herunterladen des Linux Kernels von der Seite www.kernel.org oder einer der Mirror-Seiten muss dieser anpackt und dann der Patch auf dem Kernel angewendet werden.

	patch -p0 < linux-2.6.xxx.patch

Patchen von IpTables

Zuvor müss die aktuelle Version von IpTables auf der Seite www.netfilter.org heruntergeladen werden. Nach dem entpacken, sollten im Makefile die gewünschten Konfigurationsparameter verändert werden, die in dem Zielsystem vorhanden sind. Das Patchen erfolgt dann durch das Kommando

	patch -p0 < iptables-XXX.patch

Zur Erkennung von Scans werden im Modul Schwellwerte verwendet, die für jede Situation einzeln gesetzt werden können. Hierbei können verschiedene Charakteristiken und Abhängigkeiten aus dieser Art der Informationsgewinnung zur Abwehr eines Angriffs extrahiert und verwendet werden.

Die wichtigen Informationen bestimmter Angriffsituationen werden in den hier folgenden Dokumentatiuon analysiert und ausgewertet. In der aktuellen Analyse werden nur Eigenschaften der Protokollfamilie IpV4 betrachtet, da dies die aktuelle Version des verwendeten Internetprotokolls ist. Mittelfristig ist kein Wechsel auf IpV6 vorgesehen.

Erkennung eines Portscan
Bei einem Angriff oder der Informationssuche durch einen Portscan, werden verschiedene Ports eines Zielsystems gescannt. Die Abfrage der Ports geschieht häufig in beliebiger Reihenfolge und Zeitabständen.

Alle Pakete müssen, bevor diese das Zielsystem erreichen, den äußeren Router der Firewall passieren. Dieser Router kann also durch Speichern der aktuellen Pakete in einem bestimmten Zeitintervall schnell feststellen, dass ein bestimmter Rechner aus dem Internet versucht, einen Portscan auf einen Rechner in der DMZ durchzuführen.

In vielen Quellen werden Portscans und Netscans nicht unterschieden. Zur Analyse ist dies aber unbedingt notwendig, da diese beiden Scans Unterschiede in Ihrer Charakteristik aufweisen.

Merkmal Wert
Quelladresse gleich
Zieladressen gleich
Zielports gleich

Zur Veranschaulichung ein Beispiel: Für den Portscan wird die Zieldresse 1.1.1.2 und die Quelladresse 2.2.2.1 zugrunde gelegt. Dabei werden die gescannten Ports vom Angreifersystem zufällig ausgewählt. Folgende Pakete könnten vom äußeren Router ausgewertet werden:

Quelladresse Quellport Zieladresse Zielport Richtung Bemerkung
2.2.2.1 1025 1.1.1.2 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.2 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.2 445 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.2 445 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.2 1026 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.2 1026 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.2 80 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.2 80 2.2.2.1 1025 DMZ - Internet  

Die für den Portscan zu betrachtenden Pakete sind in der Tabelle rot markiert. Zusammengefasst können für den Portscan folgende Informationen gewonnen werden:

Hierbei kann durch seine Charakteristik eindeutig ein Portscan erkannt werden: Ein Rechner aus dem Internet versucht zu einem Rechner in der DMZ auf mehreren Ports eine Verbindung aufzubauen.

Es ist auch möglich, dass eine Quelladresse eines Nicht-Angreifers auf mehrere Ports eines Zielrechners zugreift, allerdings dies auf die Anzahl der erlaubten Dienste beschränkt. Im Fall eines überwachten Webservers, der die Ports 80 und 443 als Web-Service anbietet, ist jede Quelladresse als Angreifer oder Ausspäher zu werten, die mehr als zwei Zielports in dem System aufruft.

Deshalb kann davon ausgegangen werden, dass bei einem Schwellwert von zwei Zielports pro Zieladresse ein Portscan vorhanden ist, wenn im gesamten Zielnetz kein Zielserver mehr als zwei Dienste unterstützt. Um die Datenhaltung in der späteren Implementierung zu vereinfachen, kann eine einfache Formel eingesetzt werden:

( Anzahl Zielports / Anzahl Zielhosts ) > Definierter Schwellwert (Quota) für Portscan

Erkennung eines Netscan

Einen Netzscan charakterisiert, dass in der Regel verschiedene Server von einem Rechner aus dem Internet auf dem gleichen Zielport angefragt werden. Einige Angreifer definieren mehrere aber wenige Ports um ein Netz zu scannen.

In diesem Fall bekommt der Angreifer einen Überblick über einen oder einige wenige Dienste, die in dem gescannten Netzwerk aktiv sind.

Merkmal Wert
Quelladresse gleich
Zieladressen verschieden
Zielports gleich oder wenige

Als Beispiel wird für einen Netscan der Netzbereich der DMZ des Zielnetzes auf 1.1.1.0 mit der Subnetmaske 255.255.255.0 angenommen. Der Angreifer erhält die IP-Adresse 2.2.2.1. Im Verlauf des Angriffs könnten hierbei folgende Pakete vom äußeren Router ausgewertet werden:

Quelladresse Quellport Zieladresse Zielport Richtung Bemerkung
2.2.2.1 1025 1.1.1.2 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.2 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.35 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.25 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.16 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.16 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.1 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.1 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.14 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.14 139 2.2.2.1 1025 DMZ - Internet  
2.2.2.1 1025 1.1.1.172 139 Internet - DMZ Bei TCP SYN gesetzt
1.1.1.172 139 2.2.2.1 1025 DMZ - Internet  

Die zur Betrachtung wichtigen Pakete sind rot markiert. Es ist zu erkennen, dass ein Quellrechner versucht, verschiedene Zieladressen auf demselben Zielport zu erreichen.

Da der gescannte Zielport zumeist gleich bleibt oder nur wenige Zielports gescannt werden, kann hier eine einfache Formel für die Implementierung verwendet werden.

Definition: Netscan für Quelladresse erkannt, wenn:

( Anzahl Zielhosts / Anzahl Zielports ) > Definierter Schwellwert (Quota) für Netscan

Es muss bei der späteren Konfiguration darauf geachtet werden, dass der Schwellwert nicht niedriger als die Anzahl der Zielserver mit den gleichen Diensten definiert wird.

Erkennung eines Combinedscan

Ein Combined-Scan (kombinierter Scan) muss komplexer betrachtet werden. Der Angreifer kombiniert in diesem Fall Port- und Netscan miteinander, um ausführlichere Informationen über das Zielnetz zu erhalten.

In diesem Fall werden demzufolge verschiedene Zieladressen und verschiedene Zielports in einer definierten Zeitspanne angefragt.

Dies bedeutet, die beiden Formeln für die Erkennung von Netscans oder Portscan können nicht angewendet werden, da ein Schwellwert für die Verhältnisrechnungen zur Erkennung von Port- und Netscan-Ereignissen nicht mehr zutrifft.

Für eine Untersuchung muss ein Zielnetz aus Sicht des Angreifers betrachtet werden. Der Angreifer selbst weiß in diesem Stadium nicht, welche Dienste tatsächlich im Zielnetz angeboten werden. Er muss im Fall eines Combimedscans das gesamte Zielnetz mit allen für den Angreifer interessanten Zielports für Dienste scannen, um an die gewünschten Informationen zu gelangen. Bei einem solchen Scan werden viele Zielports und viele Zieladressen angefragt. Ausgehend von

in der DMZ bedeutet dies, dass auf sechs Servern auch sechs Dienste vorhanden sind. Wenn ein Client alle Dienste nutzen würde, würde dieser zusammen zwölf verschiedene Zieladressen und Zielports nutzen. Somit kann eine einfache Formel zur Erkennung eingesetzt werden.

Definition: Erkennung eines kombinierten Scans für eine Quelladresse:

( Anzahl Zielports + Anzahl Zielhosts ) > Definierter Schwellwert Combined Scan

Installation

IpTables / Netfilter

Anwendung und Dokumentation des Kernelmoduls

Das Kernelmodul wird automatisch durch die Verwendung von neunen IpTables Regeln mit dem Parameter –m PORTNETSCAN im Kernel geladen. Die verwendbaren Parameter werden in diesem Abschnitt genauer betrachtet und beschrieben.

Insbesondere muss auf die unterschiedliche Parametrisierung in Abhängigkeit vom gewünschten Einsatzzweck geachtet werden. Falsche Parametrisierungen könnten bis zu einem Ausfall des Netzwerks führen. Die möglichen Einsatzgebiete lassen sich hierbei wie folgt unterscheiden:

Allgemeine Synopsis zum Aufruf des Moduls ipt_PORTNETSCAN

Das Modul wird durch eine IpTables Filterregel mittels der Option -m PORTNETSCAN aufgerufen.

iptables [iptables Optionen] -m PORTNETSCAN [Optionen]

Einschränkungen oder Filtervorgaben können in IpTables durch alle implementierten IpTables Optionen definiert werden. Die Funktionen des Moduls werden nur aufgerufen, wenn die zuvor definierten Filter oder Einschränkungen in den IpTables Optionen gültig sind.

Das Modul PORTNETSCAN besitzt eine Reihe von Optionen, die in den nächsten Abschnitten genauer betrachtet und beschrieben werden.

Überblick über die Optionen

--tree-deep [1|2|4|8|16|32]
Standard: --tree-deep 4

Diese Option gibt die Baumtiefe des Suchbaumes (Suchindex) (trace-tree / Überwachungsliste) an. Bei einer angegeben Baumtiefe von 1 wird eine einfache verkettete Liste als Suchindex verwendet. Bei eigenständigen Testreihen hat sich eine Baumtiefe von vier als Optimum herausgestellt. Bei den Tests wurde aber von mehr als 1000 gleichzeitigen Verbindungen ausgegangen.

--trace-time [Sekunden] (10-3600)
Standard: --trace-time 120 (2 Minuten)

Die Option trace-time gibt die Zeit in Sekunden an, welche eine Quelladresse überwacht wird. Solange Pakete durch die Regel überprüft werden, beginnt die Überwachungszeit von neuem. Dies bedeutet, dass z.B. bei einem Wert von 20 in dieser Option der Überwachungseintrag der Quelladresse erst dann entfernt wird, wenn dieser 120 Sekunden keine Prüfung mehr erfordert hat, d.h. dass in dieser Zeitspanne kein Paket durch die IpTables Regel zur Überprüfung an das Modul gesendet wurde. Dies ist in der Regel der Fall, wenn der Rechner keine Verbindung mehr zum Zielsystem hat.

--block-time [Sekunden] (0-172800)
Standard: --block-time 3600 (1 Stunde)

Die Option block-time gibt die Zeit in Sekunden an, die die Quelladresse eines Rechners gesperrt wird, falls eine der definierten Schwellwerte (Quotas) erfüllt ist. Der Rechner wird im Falle des Überschreitens eines Schwellwertes (Quota) aus den überwachten Einträgen gelöscht und in die Ablehnungsliste verschoben. Diese Liste ist eine normale verkettete Liste im Speicher und wird nicht zusätzlich indiziert.

--clean-interval [Sekunden] (1-60)
Standard: --clean-interval 1 (1 Sekunde)

Diese Option legt das Intervall fest, nach dem veraltete Einträge aus den Überwachungs- und Ablehnungslisten gelöscht werden. Zusätzlich ist im Kernel noch ein globales Intervall festgelegt, nach dem veraltete Einträge aller Konfigurationsumgebungen freigegeben werden.

--max-deny-entries [Anzahl] (10-2000)
Standard: --max-deny-entries 10

Die Option max-deny-entries legt fest, wie viele Einträge maximal pro Konfigurationsumgebung in der Ablehnungsliste gespeichert werden. Wenn die die maximal definierte Anzahl überschritten ist, wird der älteste Eintrag aus der Ablehnungsliste entfernt und der neue hinzugefügt. Da diese Liste nicht durch einen Baum indiziert wird, darf der Wert nicht zu groß definiert werden, da dies sonst Einfluss auf die Netzwerkperformance nimmt.

--max-trace-entries [Anzahl] (10-20000)
Standard: --max-trace-entries 3000

Durch die Option max-trace-entries wird festgelegt, wie viele Einträge maximal pro Konfigurationsumgebung in der Überwachungslisteliste gespeichert werden. Wenn dieser Wert überschritten wird, wird der älteste Eintrag aus der Liste entfernt und der neue hinzugefügt.

--port-scan-quota [Quota] (3-1000)
Standard: --port-scan-quota 10

Diese Option legt fest, ab welchem Schwellwert (Quota) ein Portscan erkannt wird. Ein Portscan wird angenommen bei Erfüllung folgender Voraussetzung: (Zielports / Zieladressen) > port-scan-quota

--net-scan-quota [Quota] (3-1000)
Standard: --net-scan-quota 10

Mittels dieser Option wird festgelegt, ab welchem Schwellwert (Quota) ein Netscan erkannt wird. Ein Netscan wird angenommen bei Erfüllung folgender Voraussetzung: (Zieladressen / Zielports) > net-scan-quota

--combined-quota [Quota] (6-1000)
Standard: --combined-quota 50

Durch diese Option wird festgelegt, ab welchem Schwellwert (Quota) ein Combined-Scan erkannt wird. Ein Combined-Scan wird angenommen bei Erfüllung folgender Voraussetzung: (Zieladressen + Zielports) > combined-quota

--check_deny_entries
Standard [Kein Parameter]

Wenn diese Option angegeben wird, wird geprüft, ob sich die Quelladresse in der Ablehnungsliste befindet. Für diesen Fall wird ein positiver Rückgabewert an IpTables zurückgeliefert.

Unterscheidung Einsatzgebiete

Wichtig bei der Verwendung des Moduls ist die Reihenfolge der IpTables Regeln. Bei falscher Verwendung kann dies die Dienste oder Zugriffe zum und vom Internet stark einschränken.

Für die Verwendung des Moduls werden zwei Szenarien vorgeschlagen. Diese unterscheiden sich grundlegend und werden nachfolgend genauer betrachtet.

Anwendung des Moduls zur Überwachung abgelehnter Pakete

In der ersten Betrachtung des Moduleinsatzes wird von einer Firewall mit bereits klar eingeschränkten Filterregeln für die genutzten Dienste und Anwendungen ausgegangen. Die Verwendung des Moduls erweitert die Firewall um die dynamische Erkennung und Ablehnung von Port-, Net- oder Combined-Scans. Dadurch können auch Dienste, die in der Firewall für bestimmte Server erlaubt sind, vor einem Angreifer verborgen werden. Gleichzeitig ist gewährleistet, dass die Dienste ohne Einschränkungen genutzt werden können.

Für dieses Szenario müssen folgende Regeln eingehalten werden:

  1. Das Modul ist nur voll funktionsfähig, wenn die Firewall nach dem Konzept „Alles was nicht explizit zugelassen wird ist verboten“ aufgebaut ist.
  2. Vor den vorhanden Regeln muss die Option „--check-deny-entries“ beim Aufrufen des Module gesetzt werden.
  3. Nach diesen Regeln müssen alle Regeln für erlaubten Netzwerkverkehr folgen.
  4. Am Ende der abzuarbeitenden Regelliste von IpTables muss das Modul ohne die Option "--check-deny-entries" aufgerufen werden.
  5. Ansonsten müssen die gleichen Konfigurationsparameter wie zuvor verwendet werden, um die selbe Konfigurationsumgebung in allen Aufrufen des Moduls zu besitzen.

In der folgenden Skizze wird die korrekte Verwendung dargestellt:

Anwendung des Moduls zur Überwachung bestimmter Dienste oder Netzbereiche

Eine weitere Einsatzmöglichkeit stellt die Verwendung des Moduls zur reinen Überwachung der Firewall dar. Andere Filterregeln, die für die benötigten Dienste in der Firewall gebraucht werden, werden erst nach dem Aufruf des Moduls PORTNETSCAN abgearbeitet. Vor diesen Regeln müssen Ausnahmen definiert werden, die Mehrfachverbindungen erlauben, um fehlerhaft abgelehnte Pakete zu verhindern. Das nachfolgende Schaubild beschreibt die Reihenfolge der Abarbeitung für diesen Einsatzzweck:

Bei Verwendung des Moduls für dieses Szenario muss genau geprüft werden, für welche Server oder Clients im internen Netz Mehrfachverbindungen erlaubt sein müssen. Zudem sollte eine eindeutige Einschränkung in der aufgerufenen IpTables Regel erfolgen. Einschränkungen können zum Bespiel gesetztes SYN-Bit einer TCP Verbindung oder die Zielports einer Anwendung sein.

Bei diesem Einsatzzweck empfiehlt sich die Verwendung mehrerer Konfigurationsumgebungen und eine Aufteilung in verschiedene Regeln, die die Zustände der Firewall erkennen lassen.

Informationen über den Modulzustand im proc-Dateisystem

In der aktuellen Implementierung des Kernelmoduls ipt_PORTNETSCAN wird beim Laden automatisch der Proc-Eintrag /proc/net/stat/portnetscan erstellt. In diesem befinden sich alle Informationen über den Status des Moduls.

Durch die Anzahl der überwachten Einträge kann die Anzahl der ausgegebenen Zeilen sehr groß werden. Aus diesem Grund werden die Zeilen je nach Informationsinhalt mit einem definierten Anfangsbuchstaben zur Identifikation ausgegeben:

	G  - Anzahl globale Konfigurationsumgebungen
	U  - Aktuelle Zeit (Unixzeit)
	J  - Aktuelle Kernelzeit (jiffies)
	C  - Nächster Globaler Cleanup-Task (jiffies)
	L  - Eintrag Konfigurationsumgebung
	D  - Eintrag Ablehnungsliste
	T  - Eintrag Überwachungsliste
	

Nachfolgend wird eine Beispielausgabe mit mehreren überwachten und abgelehnten Eintr&aumol;gen dargestellt:


# IpTables PORTNETSCAN MODUL
# --------------------------
#
G       Count_Global_Conf: 1
U       Updating_Time(Unix): 1151670238
#
J       Updating_Time(jiffies): 170718608
C       Next_Cleanup_Time(jiffies): 170725409
#
# Conf_Entries
# ------------
#
#       confn/tree-deep/trace-time/clean-interval/port-scan-quota/net-scan-quota/combined-quota/max-deny-entries/max-trace-entries/block-time/tree-count/endnode-count/denylist-count
L       0       4       3600    1       4       4       8       50      10000   36000   20      5       5
#
# Deny_Entries
# ------------
#
#       confn/ipaddress/starttime/endtime/count/reason
D       0       202.99.174.208  1151666423      1151702423      6       netscan_detected
D       0       220.45.224.26   1151666512      1151702512      499     netscan_detected
D       0       222.76.210.149  1151666756      1151702756      16      netscan_detected
D       0       206.155.58.83   1151667516      1151703516      105     netscan_detected
D       0       64.114.81.195   1151668641      1151704641      161     netscan_detected
#
# Trace_Entries
# -------------
#
#       confn/ipaddress/firsttime/lasttime/count/countdst/countdpt
T       0       219.136.206.12  1151665723      1151668290      6       3       1
T       0       195.22.30.100   1151667986      1151667995      3       1       1
T       0       80.247.193.215  1151668045      1151668488      2       2       1
T       0       193.189.68.70   1151668446      1151668449      2       1       1
T       0       65.214.44.227   1151669558      1151669567      3       1       1

Alle Variablen werden mit dem Zeichen ":" getrennt, alle Listenwerte werden durch ein TAB getrennt. Somit können in Skripten oder externen Programmen leicht Aussagen über den Zustand des Moduls getroffen werden. Für die Listeneinträge der Ablehnungsliste (Deny_Entries) und der Überwachungsliste (Trace_Entries) wird immer die Konfigurationsumgebung (confn) mit ausgegeben. Wie weiter oben schon angemerkt, kann es durchaus vorkommen, dass eine Quelladresse mehrfach auftaucht, allerdings pro einer Konfigurationsumgebung nur einmal!

Ein Beispiel für die praktische Anwendung

Im diesem Beispiel werden nur Pakete und Verbindungen überwacht, die nach den Regeln zum Erlauben von Diensten und Anwendungen der Firewall nicht zugelassen wurden. Die folgende Umgebung wird folgende angenommen:

Netz DMZ: 1.1.1.0/24
Netzwerkkarten äußerer Router:
	- eth0: zum Internet
	- eth1: zur DMZ
Webserver Standard http Port 80:
	- 1.1.1.4
	- 1.1.1.43
DNS-Server
	- 1.1.1.3
Proxy-Server (http-Proxy)
	-1.1.1.2

Das nachfolgende Beispielskript der Firewall wird ohne Verwendung zusätzlich erstellter Ketten für IpTables oder Datenstrukturen in Skripten dargestellt, um die wesentlichen Inhalte hervorzuheben und die Lesbarkeit zu erhöhen.


#!/bin/bash
#...
##############################################################################
# PORTNETSCAN: Überprüfung Ablehnungsliste
iptables -A FORWARD -i eth0 -o eth1 -m PORTNETSCAN --check-deny-entries\
         --trace-entries 12000 -j DROP
#
# Standard Paketfilterregeln
##############################################################################
# Webserver 1.1.1.4
iptables -A FORWARD -j ACCEPT -p TCP -i eth0 -o eth1 -d 1.1.1.4/32 --dport 80 \
	--sport 1024:
iptables -A FORWARD -j ACCEPT -p TCP -i eth1 -o eth0 -s 1.1.1.4/32 --sport 80 \
	--dport 1024: !--syn
# Webserver 1.1.1.43
iptables -A FORWARD -j ACCEPT -p TCP -i eth0 -o eth1 -d 1.1.1.43/32 \
	--dport 80 --sport 1024:
iptables -A FORWARD -j ACCEPT -p TCP -i eth1 -o eth0 -s 1.1.1.43/32 \
	--sport 80 --dport 1024: !--syn
##############################################################################
# DNS Server 1.1.1.3
# DNS: Server - Server
iptables -A FORWARD -j ACCEPT -p UDP -i eth0 -o eth1 -d 1.1.1.3/32 --sport 53 \
	--dport 53
iptables -A FORWARD -j ACCEPT -p UDP -i eth1 -o eth0 -s 1.1.1.3/32 --sport 53 \
	--dport 53
# DNS: Server - Client
iptables -A FORWARD -j ACCEPT -p UDP -i eth0 -o eth1 -d 1.1.1.3/32 --sport 53 \
	--dport 1024:
iptables -A FORWARD -j ACCEPT -p UDP -i eth1 -o eth0 -s 1.1.1.3/32 \
	--sport 1024: --dport 53
# DNS: Client - Server
iptables -A FORWARD -j ACCEPT -p UDP -i eth0 -o eth1 -d 1.1.1.3/32 \
	--sport 1024: --dport 53
iptables -A FORWARD -j ACCEPT -p UDP -i eth1 -o eth0 -s 1.1.1.3/32 \
	--sport 53 --dport 1024:
##############################################################################
# Proxy Server (nur Standardverbindungen Port 80 und 443)
iptables -A FORWARD -j ACCEPT -p TCP -i eth1 -o eth0 -s 1.1.1.2/32 \
	--sport 1024: --dport 80
iptables -A FORWARD -j ACCEPT -p TCP -i eth0 -o eth1 -s 1.1.1.2/32 \
	--dport 1024: --sport 80 !--syn 
iptables -A FORWARD -j ACCEPT -p TCP -i eth1 -o eth0 -s 1.1.1.2/32 \
	--sport 1024: --dport 443
iptables -A FORWARD -j ACCEPT -p TCP -i eth0 -o eth1 -s 1.1.1.2/32 \
	--dport 1024: --sport 443 !--syn 
# Ende aller Standard-Regeln
##############################################################################
# PORTNETSCAN Überprüfung Auffälligkeiten
iptables -A FORWARD -i eth0 -o eth1 -m PORTNETSCAN --trace-entries 12000 \
	-j DROP
##############################################################################
# Rest Ablehen
iptables -A FORWARD -j DROP
##############################################################################
# Policy-Standard-Regel setzen (ist zwingend nicht norwendig, da die letzte 
# Regel schon alle Pakete "DROP"
IPTABLES -P FORWARD DROP't

In diesem Skript wurde zusätzlich die Veränderung der Parametrisierung des Moduls dargestellt. Der Parameter "--trace-entries" wurde auf den Wert 12000 gesetzt. Dies muss in beiden Aufrufen des Moduls geschehen, damit die beiden Aufrufe in derselben Konfigurationsumgebung durchgeführt werden.

Im ersten Aufruf mit den Parametern

-m PORTNETSCAN --check-deny-entries --trace-entries 12000
wird nur geprüft, ob sich die Quelladresse des Rechners bereits in der Ablehnungsliste befindet. Hierbei wird nicht in den Überwachungseinträgen nachgesehen, ob eine Auffälligkeit wie Port-, Net-, oder Combinedscan vorhanden ist.

Im zweiten Aufruf, der nach den Standardregeln ausgeführt wird, wird das Modul mit den Parametern

-m PORTNETSCAN --trace-entries 12000
aufgerufen. Jetzt wird vom Modul geprüft, ob eine Auffälligkeit vorhanden ist und einer der gesetzten Schwellwerte überschritten wird. Sollte dies der Fall sein, wird der Eintrag in die Ablehnungsliste verschoben. Ab diesem Moment wird beim Aufrufen der Funktion des Moduls an IpTables ein positives Ereignis für diese Quelladresse zurückgemeldet. Bei Angabe von "-j DROP" wird das Paket ni diesem Fall von IpTables im Kernel verworfen.