pf - Unklarheiten

angelfreund

lernwillig
Hallo zusammen,

ich habe seit einigen Monaten einen Router unter OpenBSD 4.1 laufen. (mit pf)
Neulich habe ich - um das Filterverhalten zu prüfen- diverse Portscans im Netz ausprobiert. Seltsam ist dabei, dass alle Ports bis auf 22 und 113 als geschlossen gemeldet werden obwohl doch eigentlich der Staus "gefiltert" korrekt wäre. Auch die Ports, welche ich in pf.conf zusätzlich geöffnet habe sind geschlossen. Kann es ein, dass mein pf gar nicht arbeitet?

Viele Grüße und schon mal danke.
 
In der pf.conf Manpage steht was von block-policy, die man auf drop oder return stellen kann.
 
Überprüfe doch mal mit pftop (pftop-0.6.tgz in den packages), ob dein Regelsatz auch korrekt arbeitet.Vielleicht werden die Regeln, die du als block definiert hast gar nicht "erreicht".

Zumindest liest es sich danach, wenn ident noch durchgelassen wird und du eigentlich einen Paket-Drop erwartest.

Viele Grüße nach Dipps ;)
 
Zuletzt bearbeitet:
pftop lässt sich leider nicht ausführen...
$ pftop -v 0
pftop: open("/dev/pf"): Permission denied
bzw.:
# pftop
ksh: pftop: not found
 
Mit "find / -iname 'pftop'" suchen und dann ein Symlink in deine /usr/sbin (oder analog) machen.
Ausführen als root.
 
ok., erstmal vielen dank an morromett.
pftop zeigt mir folgendes:
Code:
pfTop: Up State 1-6/6, View: default, Order: none, Cache: 10000                                20:30:37

PR    DIR SRC                   DEST                           STATE            AGE   EXP   PKTS  BYTES
tcp   In  192.168.1.11:36740    192.168.1.10:22       ESTABLISHED:ESTABLISHED  6263 17995   3086 364381
udp   Out 192.168.1.15:138      192.168.1.255:138          SINGLE:NO_TRAFFIC     56     4      1    244
udp   In  192.168.1.11:138      192.168.1.255:138      NO_TRAFFIC:SINGLE         36     0      2    526
udp   Out 192.168.1.11:138      192.168.1.255:138          SINGLE:NO_TRAFFIC     36    24      1    263
udp   In  192.168.1.11:137      192.168.1.255:137      NO_TRAFFIC:SINGLE          6    24      2    156
udp   Out 192.168.1.11:137      192.168.1.255:137          SINGLE:NO_TRAFFIC      6    54      1     78
oder:
Code:
PR    DIR SRC                   DEST                           STATE            AGE   EXP   PKTS  BYTES
tcp   In  192.168.1.11:36740    192.168.1.10:22       ESTABLISHED:ESTABLISHED  6844 17995   3320 393109
tcp   In  192.168.1.11:51960    209.85.135.104:80      FIN_WAIT_2:ESTABLISHED    53    18     25  13273
tcp   Out 192.168.1.11:51960    209.85.135.104:80     ESTABLISHED:FIN_WAIT_2     53    18     25  13273
Ich weis nur nicht so recht, woran ich nun erkennen kann ob der pf korrekt arbeitet.
Wenn ich davon ausgehe, dass die Zahl hinter der source -bzw. dest.-Adresse der entspr. Port ist, dann scheint die Kommunikation über diese Ports ja zu funktionieren. Was ich jetzt nicht verstehe ist die Tatsache, dass ich diese Ports in der pf.conf eben NICHT freigegeben habe. ? Oder sind bestimmte Ports generell offen, per default sozusagen ?
 
Guck doch mal mit den Cursortasten auf die Seite "View: rules" (links-rechts bringt dich dort hin, mit hoch-runter kannst du die Liste vertikal abscrollen).

Da siehst du dann deine Regeln, und auf welche Regel die Verbindungszustände ("states") zutreffen. Und wie viel Traffic auf welche Regeln zutreffen in Echtzeit. Die Ansicht kannst du mit der Leertaste aktualisieren und mit Leertaste halten lässt sich recht leicht mal eben was durchtesten, ohne Konsolen-Jongleur mit pfctl zu werden.

Wenn nichts geblocked wird und du dies gerade mit nmap provozieren wolltest, siehst du dann schnell, dass auf den Blockregeln kein Verkehr anfällt und währenddessen auf anderen Regeln sich der Zähler überschlägt.
 
Wenn nichts geblocked wird und du dies gerade mit nmap provozieren wolltest, siehst du dann schnell, dass auf den Blockregeln kein Verkehr anfällt und währenddessen auf anderen Regeln sich der Zähler überschlägt.

nun ja, wies aussieht sind meine Regeln quasi nutzlos ...

Code:
pfTop: Up Rule 1-26/26, View: rules, Cache: 10000                                                  21:46:46

RULE ACTION   DIR LOG Q IF     PR    K   PKTS  BYTES STATES   MAX INFO
   0 Pass     Out                    K   2776   981K      6       all  flags S/SA
   1 Pass     In      Q lo0          K      0      0      0       all  flags S/SA
   2 Block    In      Q                     0      0      0       return inet6 all
   3 Block    In      Q !lo                 0      0      0       drop inet from 127.0.0.0/8 to any
   4 Block    In      Q !lo                 0      0      0       drop inet6 from ::1/128 to any
   5 Block    In      Q                     0      0      0       drop inet from 127.0.0.1/32 to any
   6 Block    In      Q                     0      0      0       drop inet6 from ::1/128 to any
   7 Block    In      Q lo0                 0      0      0       drop inet6 from fe80::1/128 to any
   8 Block    In      Q !rl1                0      0      0       drop inet from 192.168.1.0/24 to any
   9 Block    In      Q                     0      0      0       drop inet from 192.168.1.10/32 to any
  10 Block    In      Q rl1                 0      0      0       drop inet6 from fe80::211:6bff:fe94:7e7/1
  11 Block    In  Log Q rl0                 0      0      0       return inet from <NoRoute> to any
  12 Block    In  Log Q rl0                 0      0      0       return inet from any to <NoRoute>
  13 Pass     In        rl0    tcp   K      0      0      0       inet from any to (rl0) port = ssh  flags
  14 Pass     In        rl0    tcp   K      0      0      0       inet from any to (rl0) port = 4661  flags
  15 Pass     In        rl0    tcp   K      0      0      0       inet from any to (rl0) port = 4662  flags
  16 Pass     In        rl0    udp   K      0      0      0       inet from any to (rl0) port = 4665
  17 Pass     In        rl0    udp   K      0      0      0       inet from any to (rl0) port = 4672
  18 Pass     In        rl0    tcp          0      0      0       inet from any to 192.168.1.15/32 port = f
  19 Pass     In        rl0    tcp          0      0      0       inet from any to 192.168.1.15/32 port = 4
  20 Pass     In        rl0    tcp          0      0      0       inet from any to 192.168.1.15/32 port = 4
  21 Pass     In        rl0    udp   K      0      0      0       inet from any to 192.168.1.15/32 port = 4
  22 Pass     In        rl0    udp   K      0      0      0       inet from any to 192.168.1.15/32 port = 4
  23 Pass     In               icmp  K      8    356      0       inet all
  24 Pass     In      Q rl1          K  10390  1675K      5       all  flags S/SA
  25 Block    In  Log   rl0               474 273024      0       return all

Kann mir jemend einen Tipp geben, wie ich die ganze Sache wirkungsvoller gestalten kann bzw. was ich falsch gemacht habe in den Regeln?
 
Deine Regel-Nr. 24 für IF rl1 (extern?) ist eine pass in quick auf all. Diese Regel lässt doch alles aus inet, ungefiltert durch/rein. Entweder alles durchlassen (ohne quick) und dann das Unerwünschte blocken, oder alles blocken (ohne quick) und dann das erforderliche passieren lassen. Sich Gedanken machen, was mit "quick" geblockt bzw. durchgelassen werden muss. Auf die Position/Reihenfolge der "quick"-Regeln in der pf.conf, achten.
 
hallo angelfreund,

am besten gleichst du deinen regelsatz mal mit dem hiererwähnten ab bzw. baust deine regeln auf diesem auf. dieses beispiel ist speziell für "SoHo"-einsatz gedacht. und wie morromett schon erwähnte, sei vorsichtig beim einsatz von "quick"; vielleicht nur auf dem internen interface anwenden, wenn überhaupt (ich nutze das, um die ssh-kiddies zu blocken, die ich per rule in einen dafür vorgesehen table "kippe").

hth,
marc
 
Schon jetzt mal vielen, vielen Dank für eure Antworten. Da werd' ich mich gleich mal an die Arbeit machen.
rl1 ist mein internes if. Ich hoffe da ist das ganze nicht ganz so fatal...
 
Zurück
Oben