This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Firewall fails to block an established UDP connection...

Hello Guys,

I am have a weird situation here. I have a PC communicating with a server, both connected to my Sophos Firewall (Firmware: 9.100-16 - not an appliance).

I have a Rule that allows this connection, and it works. Without that Rule, the connection cannot be established. So far so good.
Once established, however, the communication continues even if I disable that rule, or add a rule above it to block that connection. [:S]
It just keeps on working and there doesnt seem to be a way to block it if I wanted to...

I tried it using a PC connected via the Internet and I can even disable the DNat Rule and the connection still continues. Only new connections are being blocked. Is this an expected behavior? Doesnt seem right to me.

Greatbyte


This thread was automatically locked due to age.
  • Interesting.  I hadn't thought of trying that.  I guess you weren't patient enough. [:D] https://community.sophos.com/products/unified-threat-management/astaroorg/f/54/t/40331

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
  • Hmm... Didnt find that thread prior to posting. But I didnt think it would be a timeout thing.

    I change the Rules to block something, and it doesnt - I dont see why it would wait for a timeout before enforcing the Rules. Why would there be a timeout if packets keep on coming in the first place?

    I definitly waited for more than 30 seconds.. A couple of minutes for sure...

    Greatbyte
  • Later in that same thread, da_merlin comments: 
    you also have to enable "Use strict TCP session handling" under Network Security >> Firewall >> Advanced (nf_conntrack_tcp_be_liberal).
     Otherwise the connection is picked up and allowed again after client sends another data packet.

    Note that the applicable timeout has a default of 180 seconds.

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
  • Nope, thats not it. The "blocked" connection continues to work for nearly an hour. (activated the block shortly after last posting)

    Just now closed the application and restarted -> no connection possible, and a log entry on the FW that it has been blocked by the Rule that has been there the whole time.
  • If your packets match an already accepted stream, then they may continue to be accepted until that stream is closed.  One way to block that stream immediately would be to flush conntrack tables in the backend.
  • Just noticed that you mentioned UDP, and the state of the stream should only apply to TCP as far as I know..  Can you show us some tcpdump output for that traffic?

    Are you sure you've matched the destination *and* source ports correctly?  Most of the time, you don't need to change the source port from 1:65535 unless you know the application only transmits on one port.

    Are you sure you don't have a firewall rule that matches that traffic higher up in your firewall rules? Firewall rules are processed top down, the first rule to match wins.

    Do you have any DNAT rules that have Auto Firewall Rule enabled and that match that traffic?
  • How do I tcp dump? Ive never been on the CLI since the Webif has always been suficient.

    I havent changed the source port range of 1:65535 since the source port is dynamic.
    The destination IP and port is static and no other ports are involved. 

    I have a Group of DNS and IP objects as source IP for the "allow" rule. Then I added a rule to block only my PC and put it above the allow rule. No Effect on established sessions. Disabling the allow rule has no effect as well... (Or disabling the dnat extryas a matter of fact)

    I only have a dozen rules, and there is nothing else going to that destination ip. IPS is disabled, and I also tried disabling the Country Blocker.

    DNAT is in use for the Internet connection because I need it due to masquerading. I dont use Auto Firewall Rules for that. But the Problem also exists using two local interfaces with no nat.

    Greatbyte
  • If you're not familiar with the CLI then I would avoid tcpdump unless you're willing to learn, in which case there is much documentation online about both SSH and tcpdump which I would encourage you to read.

    You talk about "connections" but your post states UDP traffic.  Can you tell us what exactly this traffic is? Is it from some special application that we could look up the specifications for or is it some custom program that establishes and maintains connections over UDP?
  • I'm confused because UDP is a connectionless protocol, and if you *are* using TCP then my suggestion regarding flushing the connection tracking tables in the backend would apply (this is something that we *can* explain easily, as opposed to tcpdump).
  • True, UDP is connectionless. I was talking about the application's connection. Sorry for the confusion. [[;)]]

    Well, I figured why do it the complicated way if I can just check it out with Wireshark. [[;)]]

    The client sends a UDP Packet to Server using sPort 51732 and dPort 65000.
    The server replies with an UDP sPort 65000 and dPort 51732.
    This keeps on repeating using the same Ports. 65000 is configured, 51732 is dynamic and different every time the connection is first started.

    I do not have a firewall rule for the reply packet so obviously the Firewall is tracking the "connection". But it seems that the FW only checks the Rules when it starts tracking such a "connection" and not for every packet.