Hallo liebe Leute,
ich bin neu im Thema und verzweifel seit geraumer Zeit an den Stateful Tracking Options der Paket Filter.
Was möchte ich erreichen:
Ich möchte, dass wenn eine Regel zutrifft, die betroffene IP in eine Tabelle geschrieben wird.
Was habe ich bisher gemacht:
Zusätzlich habe die rc.conf um folgende Einträge erweitert:
In meine pf.conf habe ich zu Testzwecken folgendes eingetragen:
Ich weiß, nicht alles ist so wie man es eigentlich machen sollte, doch es ist wie gesagt ein Testszenario. Eigentlich funktioniert alles - aber nur eigentlich. Denn wenn die Regel
eintritt, dann wird die IP nicht wie erwartet an die Tabelle <network> übergeben.
Zum Testen habe ich mich ca. 10 Mal innerhalb von 2 Minuten mit dem Server verbunden.
Ich kann mir das mittlerweile nicht mehr erklären. Denn ich habe alles so gemacht, wie ich es aus mehreren Tutorials herausgelesen habe. Ebenso gehe ich davon aus, dass die IPs umgehend aus der Tabelle ausgeladen werden können. Sollte ich mich irren, korrigiert mich bitte.
Via "pfctl -t network -T add x.x.x.x" kann ich die Tabelle manuell bearbeiten und IPs eintragen. Doch das soll ja automatisch passieren. Ich möchte hier gar nicht Handanlegen müssen.
Ich hoffe ihr könnt mir helfen.
ich bin neu im Thema und verzweifel seit geraumer Zeit an den Stateful Tracking Options der Paket Filter.
Was möchte ich erreichen:
Ich möchte, dass wenn eine Regel zutrifft, die betroffene IP in eine Tabelle geschrieben wird.
Was habe ich bisher gemacht:
- Ich benutze FreeBSD 9.1
- Ich habe die src komplett neu heruntergeladen und einen neuen Kernel erstellt
Code:
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
Zusätzlich habe die rc.conf um folgende Einträge erweitert:
Code:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
In meine pf.conf habe ich zu Testzwecken folgendes eingetragen:
Code:
### INTERFACES ###
if = "{ em0 }"
### SETTINGS ###
set block-policy drop
### Timeout Options for anti SYN DDoS with short timeouts ###
set optimization aggressive
set timeout { tcp.first 5, tcp.opening 5, tcp.established 5400, tcp.closing 60, tcp.finwait 30, tcp.closed 30, tcp.tsdiff 5}
### OFFENE TCP/UDP-PORTS ###
tcp_pass = "{ 22 25 80 3306 11002 12001 13101:13108 13201:13208 13301:13308 13901:13908 }"
udp_pass = "{ 22 25 80 3306 11002 12001 13101:13108 13201:13208 13301:13308 13901:13908 }"
icmp_types = "echoreq"
test = "{ 11002 12001 13101:13108 13201:13208 13301:13308 13901:13908 }"
### Queues, States and Types ###
TcpState ="flags S/SA keep state"
UdpState ="keep state"
### Stateful Tracking Options (STO) ###
###NetSTO ="( source-track rule, max-src-conn 3, max-src-nodes 1024, max-src-conn-rate 3/5, overload <newtwork> flush global)"
NetSTO ="(max-src-conn-rate 2/120, overload <network>)"
### Network ###
table <network> persist file "/tmp/network"
#block quick from <network>
pass in on em0 inet proto tcp all $TcpState $NetSTO
### NORMALISATION ###
#scrub in all
#antispoof for $if
### Intra ###
table <intranet> { 127.0.0.1 }
pass in quick from <intranet> to any keep state
#ruleset
block in all
pass in quick on lo0
pass out quick on lo0
#table <blocklist> persist file "/tmp/blocklist.txt"
#block quick from <blocklist>
pass in quick on em0 proto tcp from any to any port $tcp_pass $TcpState
pass in quick on em0 proto udp from any to any port $udp_pass $UdpState
pass out all keep state
# PING #
pass in on $if inet proto icmp all icmp-type $icmp_types keep state
Ich weiß, nicht alles ist so wie man es eigentlich machen sollte, doch es ist wie gesagt ein Testszenario. Eigentlich funktioniert alles - aber nur eigentlich. Denn wenn die Regel
Code:
pass in on em0 inet proto tcp all $TcpState $NetSTO
Zum Testen habe ich mich ca. 10 Mal innerhalb von 2 Minuten mit dem Server verbunden.
Ich kann mir das mittlerweile nicht mehr erklären. Denn ich habe alles so gemacht, wie ich es aus mehreren Tutorials herausgelesen habe. Ebenso gehe ich davon aus, dass die IPs umgehend aus der Tabelle ausgeladen werden können. Sollte ich mich irren, korrigiert mich bitte.
Via "pfctl -t network -T add x.x.x.x" kann ich die Tabelle manuell bearbeiten und IPs eintragen. Doch das soll ja automatisch passieren. Ich möchte hier gar nicht Handanlegen müssen.
Ich hoffe ihr könnt mir helfen.
Zuletzt bearbeitet:
. Was so ein kleines Wort doch alles anrichten kann...