[FreeBSD] Ipfilter: keep-state faalt plotseling

Pagina: 1
Acties:

  • Predator
  • Registratie: Januari 2001
  • Laatst online: 21:55

Predator

Suffers from split brain

Topicstarter
Relevante systeem informatie:


OS: FreeBSD 4.7
IP Filter: v3.4.29 (gecompileerd met default block optie)
Relevante ipf rules (ep0 = external interface, DHCP):
code:
1
2
3
4
5
6
@1 pass out quick on ep0 proto tcp from any to any flags S keep state
@2 pass out quick on ep0 proto udp from any to any keep state
@3 pass out quick on ep0 proto icmp from any to any keep state
@4 block out quick on ep0 all

@21 block in log quick on ep0 all

(dit is natuurlijk niet alles maar de rest doet hier weinig ter zake lijkt me)
Ik gebruik dus keep-state om connecties terug binnen te laten.

Ipfirewall support is niet meegecompileerd
Er wordt ook geNAT met ipnat

Het probleem:


Voor de 3de maal (in 3 weken tijd) kon ik plots op mijn workstation geen connecties naar buiten meer maken.
Een eerste onderzoek wees erop dat de dns faalde.
Ook op m'n router zelf lukte geen dns resolving meer.

Ik dacht meteen aan m'n firewall omdat ik iets dergelijk al eens meegemaakt had.

Poging tot oplossing/diagnose:


Even wat meer logging aangezet en ik zag dit:

Firewall log :
code:
1
2
3
4
5
UDP (dns)
Nov 11 12:47:07 banshee ipmon[64]: 12:47:07.013784 ep0 @0:2 p
213.118.137.204,1024 -> 195.130.131.5,53 PR udp len 20 76 K-S OUT 
Nov 11 12:47:07 banshee ipmon[64]: 12:47:07.121443 ep0 @0:21 b 
195.130.131.5,53 -> 213.118.137.204,1024 PR udp len 20 139 IN

Hier is erg duidelijk te zien dat de statefull inspectie faalt.

Dan heb ik een rule bijgemaakt om de dns terug naar binnen te laten en daarna TCP getest.
Hierbij doet zich hetzelfde voor:
code:
1
2
3
4
5
6
7
8
TCP
Nov 11 13:11:18 banshee ipmon[64]: 13:11:18.304108 ep0 @0:1 p \ 
213.118.137.204,4156 -> 213.224.83.182,8080 PR tcp len 20 44 \
-S 244739 480 0 65535 K-S OUT 

Nov 11 13:11:18 banshee ipmon[64]: 13:11:18.420558 ep0 @0:22 b \
213.224.83.182,8080 -> 213.118.137.204,4156 PR tcp len 20 60 \
-AS 496688611 244739481 8760 IN


Het is uit met de keep-state pret dus ;(

De vraag is natuurlijk waarom :?

M'n eerste gedachte was dat de state tabel volzat.
Maar flushen (-FA -Fs) loste niets op.
Ook met ipfstat -t zag ik maar dat er maar 1 state bijgehouden was.

ipfstat zonder argumenten gaf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 IPv6 packets:          in 6 out 361
 input packets:         blocked 892 passed 103782 \
nomatch 22 counted 0 short 0
output packets:         blocked 375 passed 104132 \
nomatch 151 counted 0 short 0
 input packets logged:  blocked 736 passed 0
output packets logged:  blocked 0 passed 354
 packets logged:        input 0 output 0
 log failures:          input 0 output 0
fragment state(in):     kept 0  lost 0
fragment state(out):    kept 0  lost 0
packet state(in):       kept 0  lost 0
packet state(out):      kept 4701       lost 597 <--------| *
ICMP replies:   0       TCP RSTs sent:  12
Invalid source(in):     0
Result cache hits(in):  9202    (out):  11824
IN Pullups succeeded:   0       failed: 0
OUT Pullups succeeded:  0       failed: 0
Fastroute successes:    12      failures:       0
TCP cksum fails(in):    0       (out):  0
Packet log flags set: (0)
        none

De packet state(out) bleef op kept 4701 terwijl de lost alsmaar omhoog ging.

In de andere log files vond ik niets relevant wat iets hiermee te zien zou hebben.
Het probleem is niet reproduceerbaar en doet zich random voor.
Een reboot lost het probleem op maar daar heb ik weinig aan :(

Extra informatiebronnen:


Weinig relevants op GoT gevonden.
Via wat gezoek op google vond ik wel dergelijke dingen:
http://home.earthlink.net/~jaymzh666/ipf/IPFprob.html#12
Maar die gaven altijd volle state tables aan als oorzaak.
Dat lijkt me niet het geval te zijn aangezien ik met ipfstat -t maar 1 state zag en een flush niets oploste.

Als iemand dit probleem herkent of misschien wat licht kan laten schijnen op dit duister probleem, dan hoor ik dit graag :)

Everybody lies | BFD rocks ! | PC-specs


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
volgens de logs van het udp voorbeeld blokkeert regel 2 het uitgaand verkeer. Ik verwacht dat hier iets zal staan als 'block all log ..' ?
Waar het op lijkt is dat de optie 'quick' niet herkent wordt, waardoor hij niet uit de chain springt. De regel wordt echter wel uitgevoerd, omdat zo te zien de de flags op 'keep state' staan.

Kun je eens kijken of 'ipfstat -i' en 'ipfstat -o' je iets oplevert ?

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • Predator
  • Registratie: Januari 2001
  • Laatst online: 21:55

Predator

Suffers from split brain

Topicstarter
[nohtml]
miniBSD schreef op 11 November 2002 @ 20:59:
volgens de logs van het udp voorbeeld blokkeert regel 2 het uitgaand verkeer. Ik verwacht dat hier iets zal staan als 'block all log ..' ?
Bedoel je niet regel 21 ?

Die 2 is de pass out en dat is deze:
pass out quick on ep0 proto udp from any to any keep state

Die 21 is die blockt is deze:
block in log quick on ep0 all

(regelnummers kloppen)
Ik zal de regelnummers ook ff in m'n topicstart edit'n
Waar het op lijkt is dat de optie 'quick' niet herkent wordt, waardoor hij niet uit de chain springt. De regel wordt echter wel uitgevoerd, omdat zo te zien de de flags op 'keep state' staan.
Als hij de state niet herkent dan gaat hij toch ook naar die regel ?

Als hij indd die quick niet meer doet zou ik dan ook een verhoging krijgen van het aantal lost states bij ipfstat (packet state(out)) ?
Kun je eens kijken of 'ipfstat -i' en 'ipfstat -o' je iets oplevert ?
Ik denk dat je antwoord in mijn antwoord in het eerste stukje staat :)

Of bedoel je iets anders ?

Everybody lies | BFD rocks ! | PC-specs


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Wacht even, ik snap het al. Het verkeer verlaat de chain met de flags 'keep state' en komt ook wel terug. Alleen het probleem is dat in regel 21 deze wordt geblokkeerd, ondanks dat ze statefull zouden moeten zijn.

Ik gebruik de volgende methode om zeker te zijn dat de binnenkomende packets zinnig zijn:

code:
1
2
3
4
5
6
7
8
9
pass out log block all
pass in  log block all

block in quick all with short
block in quick all with ipopts

pass out quick proto  tcp from any to any keep state
pass out quick proto  udp from any to any keep state
pass out quick proto icmp from any to any keep state


Ik blokkeer eerst omdat ik ipfilter als module laadt, en zorgt dat de packets die geen geldige informatie bevatten er niet door komen.
Dit is natuurlijk geen oplossing voor je probleem, maar misschien werkt dit wel.

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • 2P
  • Registratie: November 2001
  • Laatst online: 18-04 09:08

2P

:wq

Een paar ideetjes... misschien zit ik er wel goed naast, maar toch probeer ik het:
@1 pass out quick on ep0 proto tcp from any to any flags S keep state
Je laat dus alleen packets naar buiten met de S (SYN) flag. Andere packets zullen dus nooit naar buiten worden gelaten. Bij regel 4 worden dan al deze packets zonder S flag dus gedropt.
Op de IPF mailinglist zijn hier veel discussies overgeweest (flags S vs SA). Het kan zijn dat flags S goed werkt maar in sommige situaties kunnen er juiste packets worden gedropt. Gebruik daarom liever flags S/SA. Ik gebruik zelf helemaal geen flags voor uitgaand verkeer, maar het kan wel prettig zijn als je je state-tabel niet vol wilt gooien met zomaar alle TCP packets.
Dan heb ik een rule bijgemaakt om de dns terug naar binnen te laten en daarna TCP getest.
Laat je packets op poort 53/UDP naar binnen? 53/TCP zal niet echt helpen omdat DNS vrijwel altijd over UDP gaat.


Ik zie dat je eerste rule al gelijk een rule is voor het uitgaande verkeer...
Naar mijn mening kun je beter eerst rules maken voor je loopback en interne interface en daarna pas je rules voor je externe interface. Het zou best mogelijk kunnen zijn dat dit met je default block zo niet helemaal goed gaat.

Misschien is het handig dat je je hele ruleset post? Ja, dat kan zeker wat uitmaken...
miniBSD schreef op 11 november 2002 @ 22:57:
Het verkeer verlaat de chain met de flags 'keep state' en komt ook wel terug. Alleen het probleem is dat in regel 21 deze wordt geblokkeerd, ondanks dat ze statefull zouden moeten zijn.
Dat zou geen problemen moeten geven. Mijn rules zijn ook eerst pass en dan blocken (heb ook DEFAULT_BLOCK gecompileerd in kernel).

  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Zo te zien wordt in het tcp voorbeeld getest met een proxy op poort 8080
code:
1
2
3
Nov 11 13:11:18 banshee ipmon[64]: 13:11:18.420558 ep0 @0:22 b \
213.224.83.182,8080 -> 213.118.137.204,4156 PR tcp len 20 60 \
-AS 496688611 244739481 8760 IN

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • Predator
  • Registratie: Januari 2001
  • Laatst online: 21:55

Predator

Suffers from split brain

Topicstarter
miniBSD schreef op 11 november 2002 @ 22:57:
Wacht even, ik snap het al. Het verkeer verlaat de chain met de flags 'keep state' en komt ook wel terug. Alleen het probleem is dat in regel 21 deze wordt geblokkeerd, ondanks dat ze statefull zouden moeten zijn.
Inderdaad, zover was ik al ;)
Ik gebruik de volgende methode om zeker te zijn dat de binnenkomende packets zinnig zijn:

code:
1
2
3
4
5
6
7
8
9
pass out log block all
pass in  log block all

block in quick all with short
block in quick all with ipopts

pass out quick proto  tcp from any to any keep state
pass out quick proto  udp from any to any keep state
pass out quick proto icmp from any to any keep state


Ik blokkeer eerst omdat ik ipfilter als module laadt, en zorgt dat de packets die geen geldige informatie bevatten er niet door komen.
Dit is natuurlijk geen oplossing voor je probleem, maar misschien werkt dit wel.
[/nohtml]
Dit volg ik toch niet, waar is die "with shorts" en with "ipopts" voor :?
(ipopts zal wel voor het options veld in de ip header staan ?)
Dat staat zelfs niet in de ipfilter howto die ik gelezen heb.




[nohtml]
2P schreef op 12 november 2002 @ 10:10:
Een paar ideetjes... misschien zit ik er wel goed naast, maar toch probeer ik het:
Nobele poging :)
Je laat dus alleen packets naar buiten met de S (SYN) flag. Andere packets zullen dus nooit naar buiten worden gelaten. Bij regel 4 worden dan al deze packets zonder S flag dus gedropt.
Op de IPF mailinglist zijn hier veel discussies overgeweest (flags S vs SA). Het kan zijn dat flags S goed werkt maar in sommige situaties kunnen er juiste packets worden gedropt. Gebruik daarom liever flags S/SA. Ik gebruik zelf helemaal geen flags voor uitgaand verkeer, maar het kan wel prettig zijn als je je state-tabel niet vol wilt gooien met zomaar alle TCP packets.
Daar heb ik indd ook iets van gelezen (die S vs SA).
Ik heb uiteindelijk dan maar S genomen aangezien dat het meest strict was en dit geen problemen gaf.

Ik weet helaas niet meer hoe lang ik al flags S gebruik en of ik dat gebruikte toen dit probleem zich vroeger voordeed.

Maar als dat indd problemen geeft, zou het packet dan in de eerst plaatst al niet geblockt worden ?
Als het niet matched op die rule dan moet het toch geblockt worden (en gelogd) die m'n block/log rule ?
en dat was niet zo
[...]


Laat je packets op poort 53/UDP naar binnen? 53/TCP zal niet echt helpen omdat DNS vrijwel altijd over UDP gaat.
Normaal gebruik ik daarvoor de UDP keep state maar omdat die niet meer wou meespelen heb ik toen een rule aangemaakt die alle UDP verkeer (met source port 53) terug binnenliet.

Zo had ik m'n dns weer aan de praat en ik kon ik wat verder testen.
Ik kende namelijk niet zometeen een extern ip uit m'n hoofd ;)
Ik dacht op dat moment nog dat het probleem enkel ivm UDP lag.
Wat later zag ik dus dat het allemaal om zeep was ;(
Ik zie dat je eerste rule al gelijk een rule is voor het uitgaande verkeer...
Naar mijn mening kun je beter eerst rules maken voor je loopback en interne interface en daarna pas je rules voor je externe interface.
Kan je dat even verduidelijken ?

Is het niet best van de meest "gebruikte" rules van boven te zetten ?
Nou ja, voor die paar rules maakt dat vast weinig uit.
Het zou best mogelijk kunnen zijn dat dit met je default block zo niet helemaal goed gaat.
Kan je dat ff uitleggen want dat volg ik niet ?
Hoe kan dit de default block beinvloeden dan ?
Misschien is het handig dat je je hele ruleset post? Ja, dat kan zeker wat uitmaken...
Zal ik even doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
IPF rulesset:
#################################################################
# Outside Interface
# ep0 DHCP
#################################################################

#################################################################
# Statefull rules
#################################################################
pass out quick on ep0 proto tcp from any to any flags S keep state
pass out quick on ep0 proto udp from any to any keep state
pass out quick on ep0 proto icmp from any to any keep state
block out quick on ep0 all

#################################################################
# Block all inbound traffic from non-routable or reserved address spaces
#################################################################
block in quick on ep0 from 192.168.0.0/16 to any  #RFC 1918 private IP
block in quick on ep0 from 172.16.0.0/12 to any   #RFC 1918 private IP
block in quick on ep0 from 10.0.0.0/8 to any      #RFC 1918 private IP
block in quick on ep0 from 127.0.0.0/8 to any     #loopback
block in quick on ep0 from 0.0.0.0/8 to any       #loopback
block in quick on ep0 from 169.254.0.0/16 to any  #DHCP auto-config
block in quick on ep0 from 192.0.2.0/24 to any    #reserved for doc's
block in quick on ep0 from 204.152.64.0/23 to any #Sun cluster interconnect
block in quick on ep0 from 224.0.0.0/3 to any         #Class D & E multicast

#################################################################
# Fixed allow rules
#################################################################
pass in quick on ep0 proto udp from any to any port = 68
pass in quick on ep0 proto icmp all icmp-type 0
pass in quick on ep0 proto icmp all icmp-type 3
pass in quick on ep0 proto icmp all icmp-type 8
pass in quick on ep0 proto icmp all icmp-type 11

##################################################################
# External services
##################################################################

# sshd
pass in quick on ep0 proto tcp from any to any port = 10022 flags S keep state
# Apache
pass in quick on ep0 proto tcp from any to any port = 8080 flags S keep state
# vsftpd
pass in quick on ep0 proto tcp from any to any port = 10021 flags S keep state

# test rules
pass in quick on ep0 proto tcp from any to any port = 8000 flags S keep state
pass in quick on ep0 proto tcp from any to any port = 8001 flags S keep state

# Ident block
block return-rst in quick on ep0 proto tcp from any to any port = 113

# Drop & log everything else
block in log quick on ep0 all

#################################################################
# Inside Interface
# If = vx0
# static ip, 192.168.1.1
#################################################################

#################################################################
# Allow in all TCP, UDP, and ICMP traffic from internal subnet
#################################################################
pass in quick on vx0 proto tcp from 192.168.1.0/24 to any
pass in quick on vx0 proto udp from 192.168.1.0/24 to any
pass in quick on vx0 proto icmp from 192.168.1.0/24 to any
block in quick on vx0 all

#################################################################
# Loopback Interface allow all
#################################################################

pass in quick on lo0 all
pass out quick on lo0 all

# EOF
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Ipnat rulesset:

###########################################################
# Portmappings
###########################################################

# Test portmap
rdr ep0 0.0.0.0/0 port 8000 -> 192.168.1.3 port 8000
rdr ep0 0.0.0.0/0 port 8001 -> 192.168.1.3 port 8001
# Portmap to bypass transparent proxy for local webserver
rdr vx0 192.168.1.1/32 port 80 -> 192.168.1.1 port 80
# Transparent proxy mapping
rdr vx0 from 192.168.1.0/24 to 0.0.0.0/0 port = 80 -> 127.0.0.1 port 80

###########################################################
# NAT internal subnet to external world
###########################################################
map ep0 192.168.1.0/24 -> 0/32

Voila :)


miniBSD schreef op 12 november 2002 @ 10:21:
Zo te zien wordt in het tcp voorbeeld getest met een proxy op poort 8080
code:
1
2
3
Nov 11 13:11:18 banshee ipmon[64]: 13:11:18.420558 ep0 @0:22 b \
213.224.83.182,8080 -> 213.118.137.204,4156 PR tcp len 20 60 \
-AS 496688611 244739481 8760 IN
Inderdaad, dat is de transparentproxy die m'n HTTP request naar mijn ISP's proxy stuurt.
Toen ik m'n dns aan de praat had heb ik ff getest of ik nog kon HTTP'n, je ziet dat dat niet het geval was :/

offtopic:
Nou heb ik de layout weer scheef getrokken
Ik kan er weing aan doen

Everybody lies | BFD rocks ! | PC-specs


Verwijderd

Probeer eens:
code:
1
2
3
4
5
6
7
8
block quick ext nic
pass quick ext nic
block quick all ext nic

pass all lo

pass all int nic
block quick int nic


misschien dat het echt uitmaakt hoe je het er neerzet....

  • 2P
  • Registratie: November 2001
  • Laatst online: 18-04 09:08

2P

:wq

Predator schreef op 12 November 2002 @ 20:54:

Dit volg ik toch niet, waar is die "with shorts" en with "ipopts" voor :?
(ipopts zal wel voor het options veld in de ip header staan ?)
Dat staat zelfs niet in de ipfilter howto die ik gelezen heb.
ipopts staat voor de IP packets met options. Mij is verteld dat het beter is om deze te blocken, waarom weet ik eigenlijk niet.
with shorts zijn de IP fragmenten die te klein zijn voor een juiste vergelijking.
Maar als dat indd problemen geeft, zou het packet dan in de eerst plaatst al niet geblockt worden ?
Als het niet matched op die rule dan moet het toch geblockt worden (en gelogd) die m'n block/log rule ?
en dat was niet zo
Check je output stats eens met ipfstat -ho
Dan zie je snel genoeg of er packets zijn die je pass rule niet hebben gematched.
Zoals ik op regel 4 zie worden de packets dus niet gelogd, maar ipfstat houd voor de rule natuurlijk wel statistieken bij.
Normaal gebruik ik daarvoor de UDP keep state maar omdat die niet meer wou meespelen heb ik toen een rule aangemaakt die alle UDP verkeer (met source port 53) terug binnenliet.
UDP keep state voor DNS zal niet altijd goed werken. UDP is eigenlijk een state-less protocol ook als de ruleset keep state heeft. Sommige dns queries zouden niet snel genoeg kunnen reageren om terug te komen door de firewall.
Kan je dat even verduidelijken ?
Is het niet best van de meest "gebruikte" rules van boven te zetten ?
Nou ja, voor die paar rules maakt dat vast weinig uit.

Kan je dat ff uitleggen want dat volg ik niet ?
Hoe kan dit de default block beinvloeden dan ?
Je wilt natuurlijk dat je loopback en LAN interface niet je hele ruleset evalueren omdat ze toch ongehinderd hun gang zullen gaan. Daarom ze je ze bovenaan met een "quick". (dit is eigenlijk ook een beetje een persoonlijke voorkeur en ik ben er niet zeker van of dit invloed heeft, lijkt me trouwens niet zo)
firewall rules
Voeg eens de volgende rule toe: (die met het pijltje ;))

code:
1
2
3
pass out quick on ep0 proto tcp from any to any flags S keep state
pass out quick on ep0 proto tcp from any to any keep state <----
pass out quick on ep0 proto udp from any to any keep state


Check je stats met ipfstat -ho en kijk of er packets zijn die deze regel matchen. Als dat zo is dan moet je je eens gaan afvragen of het accepteren van flags S-only packets wel juist is.

Verder zou ik je loopback en LAN interface helemaal naar boven schuiven. Waarom? Zie hier boven en verder het is trouwens ook een persoonlijke voorkeur ;)

Zet de volgende op de op 1 na laatste regel van ipnat.rules:

code:
1
map ep0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto


Niet dat dat veel zal uitmaken maar het is wel handig. Komt er op neer dat hosts die naar dezelfde source port willen gaan gemapt worden.

De rest van je ipf.rules ziet er goed uit, lijkt me stug dat er daar problemen uit kunnen voorkomen.


Verder kan ik je eigenlijk niet veel meer vertellen.
Ik ben ook geen IPF expert, probeer gewoon wat te helpen ;)

Succes.

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Waarom heb je geen 'keep frags' achter je keep states? (niet dat dit de oplossing is waarschijnlijk, mtoch)

Ikzelf laat trouwens alles toe op de interne interface, het verbaasd me eigenlijk dat je geen rule hebt voor uitgaand verkeer op je interne interface en dat het dan nog werkt ;)

  • 2P
  • Registratie: November 2001
  • Laatst online: 18-04 09:08

2P

:wq

serkoon schreef op 13 November 2002 @ 09:16:

Ikzelf laat trouwens alles toe op de interne interface, het verbaasd me eigenlijk dat je geen rule hebt voor uitgaand verkeer op je interne interface en dat het dan nog werkt ;)
Uh, inderdaad jah. Je hebt helemaal gelijk. Hij heeft wel een pass in maar geen pass out rule.
Is inderdaad vreemd dat het dan nog werkt ;)

  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Predator,

Krijg je eigenlijk je firewall weer werkend en zo ja, hoe dan?

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • Predator
  • Registratie: Januari 2001
  • Laatst online: 21:55

Predator

Suffers from split brain

Topicstarter
Verwijderd schreef op 12 november 2002 @ 21:14:
Probeer eens:
code:
1
2
3
4
5
6
7
8
block quick ext nic
pass quick ext nic
block quick all ext nic

pass all lo

pass all int nic
block quick int nic


misschien dat het echt uitmaakt hoe je het er neerzet....

Ik zal eens een paar alternatieve rulessets in elkaar gooien die ik dan ff kan testen als het probleem zich weer eens voordoet.




2P schreef op 13 november 2002 @ 00:19:
[...]


ipopts staat voor de IP packets met options. Mij is verteld dat het beter is om deze te blocken, waarom weet ik eigenlijk niet.
with shorts zijn de IP fragmenten die te klein zijn voor een juiste vergelijking.
Mijn grijze hersencellen herinneren zich nog vaag wel iets van de functie van het IP options veld maar niet genoeg om daar een reden voor te bedenken :+
Nou ja, misschien wel
[...]


Check je output stats eens met ipfstat -ho
Dan zie je snel genoeg of er packets zijn die je pass rule niet hebben gematched.
Zoals ik op regel 4 zie worden de packets dus niet gelogd, maar ipfstat houd voor de rule natuurlijk wel statistieken bij.
Dat lijkt in orde te zijn, maar nou heb ik ook geen problemen meer.
[...]


UDP keep state voor DNS zal niet altijd goed werken. UDP is eigenlijk een state-less protocol ook als de ruleset keep state heeft. Sommige dns queries zouden niet snel genoeg kunnen reageren om terug te komen door de firewall.
UDP is indd geen echte keep state maar het is nog altijd beter dan alles met sourceport 53 terug binnen te laten.
Ik kan desnoods nog altijd de UDP timeout van ipf verhogen.
Maar het werkt zonder problemen.
[...]


Je wilt natuurlijk dat je loopback en LAN interface niet je hele ruleset evalueren omdat ze toch ongehinderd hun gang zullen gaan. Daarom ze je ze bovenaan met een "quick". (dit is eigenlijk ook een beetje een persoonlijke voorkeur en ik ben er niet zeker van of dit invloed heeft, lijkt me trouwens niet zo)
Dat kan ik evengoed wel omdraaien ja :)
[...]


Voeg eens de volgende rule toe: (die met het pijltje ;))
code:
1
2
3
pass out quick on ep0 proto tcp from any to any flags S keep state
pass out quick on ep0 proto tcp from any to any keep state <----
pass out quick on ep0 proto udp from any to any keep state

Check je stats met ipfstat -ho en kijk of er packets zijn die deze regel matchen. Als dat zo is dan moet je je eens gaan afvragen of het accepteren van flags S-only packets wel juist is.
Goed idee, done :)
Verder zou ik je loopback en LAN interface helemaal naar boven schuiven. Waarom? Zie hier boven en verder het is trouwens ook een persoonlijke voorkeur ;)
done
Zet de volgende op de op 1 na laatste regel van ipnat.rules:

code:
1
map ep0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto


Niet dat dat veel zal uitmaken maar het is wel handig. Komt er op neer dat hosts die naar dezelfde source port willen gaan gemapt worden.
done
De rest van je ipf.rules ziet er goed uit, lijkt me stug dat er daar problemen uit kunnen voorkomen.


Verder kan ik je eigenlijk niet veel meer vertellen.
Ik ben ook geen IPF expert, probeer gewoon wat te helpen ;)

Succes.

Ik ook niet ;)


serkoon schreef op 13 november 2002 @ 09:16:
Waarom heb je geen 'keep frags' achter je keep states? (niet dat dit de oplossing is waarschijnlijk, mtoch)
Geen idee :P
Ik heb het ff opgezocht en erbij gezet nu :)
Ikzelf laat trouwens alles toe op de interne interface, het verbaasd me eigenlijk dat je geen rule hebt voor uitgaand verkeer op je interne interface en dat het dan nog werkt ;)
Die staan er normaal wel.
Ik heb die per ongeluk weggegooid gisteren :X en dat is niet opgevallen omdat ik gisteren ook via wat kernel vars de default block had uitgezet |:(
Er staat gewoon dit:
code:
1
2
3
4
pass out quick on vx0 proto tcp from any to any
pass out quick on vx0 proto udp from any to any
pass out quick on vx0 proto icmp from any to any
block out quick on vx0 all



miniBSD schreef op 13 november 2002 @ 10:39:
Predator,

Krijg je eigenlijk je firewall weer werkend en zo ja, hoe dan?
Reboot lost het probleem op. (Alles flushen & rules opnieuw laden niet raar genoeg)
Althans het lost het op tot ik het nog eens voorheb :/

Everybody lies | BFD rocks ! | PC-specs


  • Zydell
  • Registratie: September 2000
  • Laatst online: 19-04 18:25

Zydell

* * * * *

Ik heb het zelf zo:


code:
1
2
3
4
5
6
7
8
block in quick on ne3 proto tcp from any to any
block in quick on ne3 proto icmp from any to any
block in quick on ne3 proto udp from any to any
block in quick on ne3 from any to any

pass out quick on ne3 proto tcp from any to any flags S keep state
pass out quick on ne3 proto udp from any to any keep state
pass out quick on ne3 proto icmp from any to any keep state


ne3 vervangen 0_o, misschien dat je hier wat aan hebt..

is wel OpenBSD, maar dat maakt niet zoveel uit denk ik :o
Pagina: 1