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

v18: Bug with data counting in firewall rules?

Hi,

I am noticing a strange behavior in v18 and the data counting in the firewall rules. I have some incoming rules (from Internet to DMZ) that are coupled with corresponding DNAT rules. The DMZ contains webservers, so they send a lot more data than they receive. However, the counters in the rules are the other way around: They show a lot more incoming data than outgoing data. 

Unless I am completely misinterpreting these counters (which I would like to rule out), it appears to me these counters have been reversed, e.g. incoming is actually showing outgoing, and outgoing is showing incoming. 

Any thoughts?



This thread was automatically locked due to age.
Parents
  • FormerMember
    0 FormerMember

    Hi cryptochrome, 

    Could you please share the screenshot of the firewall rule that shows data in and out counters? I will verify if it should be like that or not and update you.

    Thanks,

  • Hi cryptochrome, 

    Could you please share the screenshot of the firewall rule that shows data in and out counters? I will verify if it should be like that or not and update you.

    Thanks,

     

    Sure, here you go:

    Firewall Rule:

    Corresponding NAT rule:

    Firewall Rule Details:

     

    Note that this is just one example. I am seeing the same "reversed" counter on other incoming rules. 

    How do you count the data? If someone on the internet initiates the connection and transfers a lot of data, does that count as incoming or outgoing?

  • can you investigate on the issue inside?

  • You haven't proven anything other than not understanding, sorry. Client is NOT always the session initiator. You're factually wrong. And just because you always did it like this doesn't make it right. There are two other people in this thread who are as confused about this as I am.

    And yes, you are actually doing it differently when DNAT is applied. Here is my "prove". This is a firewall rule for access to the internet, where users predominantly download stuff from the internet (hence, they are the session initiators). The rule is subject to SNAT(MASQ). It correctly shows most data as incoming and only little data as outgoing, as expected:

    This is a firewall rule that has a corresponding DNAT rule. It shows that the server in the DMZ is sending very little data and it looks like the server is downloading a lot (IN), but it's actually the other way around, the server is SENDING a lot of data to people on the internet (who are the session initiators). The numbers are reversed:

    So there you have it, it is clearly and obviously different when DNAT is in place.

    Don't assume you are right. Consider you might be wrong. Other people in this thread agree.

     

  • I cannot give more input than above.

    My Points are simply:

    V17.5 to V18 - No Changes in Firewall Rule handling regarding data count.

    In / Out will be tracked based on the Session Initiator (https://tools.ietf.org/html/rfc675).

    In is traffic going to the initiator, Out is traffic going to the session recipient. 

     

     

    It is a Term problem. Plex is the server, Clients are the initiator. You do not understand my point, which i try to explain. XG is showing you in Rule 9, the clients are getting 1.14 GB data. Clients are the session initiator, the Clients in the Internet. 

     

     

    Sorry  - I cannot do more than that. 

  • LuCar Toni said:

    I cannot give more input than above.

    My Points are simply:

    V17.5 to V18 - No Changes in Firewall Rule handling regarding data count.

    In / Out will be tracked based on the Session Initiator (https://tools.ietf.org/html/rfc675).

    In is traffic going to the initiator, Out is traffic going to the session recipient. 

     

    But that is NOT what you are doing. If you think that's what you are doing, then we are actually looking at a bug. Because in my case, the firewall is not reporting the actual and factual directionality of the traffic based on session initiator. It's doing the opposite. 

    Also, nobody disputed that this behavoir has not changed from v17 to v18. 

  • Last try from my site. I am simply here to try to help to understand what is going on.

     

    https://support.plex.tv/articles/201543147-what-network-ports-do-i-need-to-allow-through-my-firewall/

     

    Your Mobile phone is building a connection to your XG Server, port 32400. 

    XG look up the NAT and Firewall Table to find a proper NAT and Firewall Rule.

    Assuming DNAT and the correct Firewall Rule (WAN to DMZ). 

    XG will forward the Syn Packet to the plex server port 32400.

     

    1.2.3.4:12345 -> WAN IP:32400 [S] 

    1.2.3.4:12345 -> Plex IP:32400 [S]

     

    Plex will respond with SYN/ACK.

    Plex IP:32400 -> 1.2.3.4:12345 [S.]

    WAN IP:32400 -> 1.2.3.4:12345 [S.]

     

    ACK from Device for Three-way Handshake.

    1.2.3.4:12345 -> WAN IP:32400 [.] 

    1.2.3.4:12345 -> Plex IP:32400 [.]

     

    Session established. 

    1.2.3.4 is the Initiator. 

    Plex IP is the Recipient. 

     

    All Devices have this connection mapped. XG, Mobile and Server. 

     

    Assuming the Client asking for a Movie, he pushes this little packet to the Server. 

    Lets say, those packets are 1 MB big in general. 

     

    1.2.3.4:12345 -> WAN IP:32400 [P. GIVE ME MOVIE] 

    1.2.3.4:12345 -> Plex IP:32400 [P. GIVE ME MOVIE] 

     

     

    Server is responding with the Movie. 

    Lets say, this Movie is 20 GB.

    Plex IP:32400 -> 1.2.3.4:12345 [P. MOVIE DATA BIG]

    WAN IP:32400 -> 1.2.3.4:12345 [P. MOVIE DATA BIG]

     

    Now XG is seeing this Traffic. 

    As mentioned earlier, we are using:

    IN for Traffic to the Initiator.

    OUT for Traffic to the Recipient. 

     

    The Firewall will now track:

    IN: [P. MOVIE DATA BIG] & [S.]

    OUT: [P. GIVE ME MOVIE]  & [S] & [.]

     



    Lets assume we take your other Rule for granted.

    LAN to WAN - ANY services. 

    Same construct like above is used.

     

    Your Client is trying to download a Windows Update.

    Client IP:12345 -> Microsoft IP:443 [S]

    WAN IP:12345 -> Microsoft IP:443 [S]

    Microsoft IP:443 -> WAN IP:12345 [S.]

    Microsoft IP:443 -> Client IP:12345 [S.]

    Client IP:12345 -> Microsoft IP:443 [.]

    WAN IP:12345 -> Microsoft IP:443 [.]

     

    Handshake done. 

     

    Client IP:12345 -> Microsoft IP:443 [P. Give me Update / Little Request]

    Microsoft IP:443 -> WAN IP:12345 [P. Update / Big Packets]

     

    Firewall Rule will now pick up:

    IN [P. Update / Big Packets] & [S.]

    OUT: [P. Give me Update / Little Request] & [S] & [S.]

     

     

     

  • As mentioned earlier, I completely understand how you do it, but I am saying it's wrong, because it does not reflect the actual traffic direction. Using IN when sending traffic TO the initiator is the problem. When you send someone out of your house, you are not saying you are letting him in, do you? Sophos XG does. 

    Using IN when sending data TO someone is just utterly illogical. 

    For what it's worth: I know basically every firewall vendor out there. Checkpoint, Fortinet, Palo Alto, Cisco, Juniper, you name it. They all do it the way I described. Only Sophos has to introduced their own weird concept that doesn't reflect reality. For reasons that are beyond me. 

    I give up. You insist on not understanding, and you insist on "Sophos is right", so it's pretty much pointless to argue with you. I would have wished that Sophos (who you seem to represent here) would take customer feedback more serious instead of just saying: We are right, because we have always done it like this, we are not considering your opinion, deal with it. 

  • LuCar Toni said:

    LAN to WAN:

    Download Scenario: Client sends 5 Bytes to XG. Server sends 10 MB to XG.  XG Sends 5 Bytes to Server, XG Sends 10 MB to the Client. 

    From XG Perspective: 

    Firewall: IN 10 MB, OUT 5 Bytes. 

    Firewall: Sent 10 MB to the Client, Sent 5 Bytes to the Server. 

    Firewall: Gets 10 MB from the Server, Gets 5 Bytes from the Client.

    Firewall: Downloads 10 MB from the Server, Uploads 5 Bytes to the Server.

    Firewall: Downloads 5 Bytes from the Client, Uploads 10 MB to the Server. 

    DNAT Scenario:

    Download Scenario: WebClient sends 5 Bytes to XG. DMZ Server sends 10 MB to XG.  

    Firewall: IN 10 MB, OUT, 5 Bytes. 

    Firewall: Sent 10 MB to the WebClient, Sent 5 Bytes to the DMZ Server. 

    Firewall: Gets 10 MB from the DMZ Server, Gets 5 Bytes from the WebClient.

    Firewall: Downloads 10 MB from the DMZ Server, Uploads 5 Bytes to the  DMZ Server.

    Firewall: Downloads 5 Bytes from the WebClient, Uploads 10 MB to the WebClient. 

    Sorry Lucar, but I do not agree with you at all.

    Traffic starts to count when the first point starts the connection. So if we are in a situation LAN to WAN, the Client sends a request on an external website to GET a package, so the server responds "OK this is the 10 MB package" and bla bla bla, the download starts. So on the WAN interface, I expect to see Inbound 10 MB while Outbound just few KBs.

    The same applies for WAN to LAN. I expect to see that outbound of WAN port is 10 MB while the inbound are just few KBs.

    This is the universal approach.

    From advanced shell use the "old" iftop command in this way:

    iftop -i Port2

    once inside use the "t" letter to switch between TX and RX and at the same time start to download something from internet.

    Same thing for traffic from WAN to LAN.

    Please update with the test. I do not want to connect to a customer's XG box today for a test as it is Saturday.

  • This is how XG is doing it on all installations. 

    I will not update the iftops for now, they will simply reflect the same thing. 

     

    Luk, you need to keep in Mind, Firewall Logging will be the same, if you talking about WAN, LAN,DMZ etc. XG will not start to act differently, because you have a DNAT. 

    So do not worry, everything is the same like on V17.5. I could not find any inconsistency in the logging but a discussion about whether it should be called IN for Value A or called OUT for Value A. The Values are correct. 

     

    As told earlier, i am not saying this is the best solution for everything, it is more likely a "term issue". 

    Also checked ideas.sophos.com. Could not find a feature request to reverse those values. 

    My suggestion would be to have this parameters variable and let the customer choose, how XG should show the traffic on this particular firewall rule. 

     

    PS: If Sophos change those values, they would not make any sense to me.

    LAN to WAN with Big OUT and Low IN, looks odd to me. 

    WAN to DMZ would be fine with those switch. BIG OUT, Low IN. 

     

    Sophos could simply remove IN/OUT Terms to meet other vendors. 

     

    Sometimes you do not have to agree with everybody,  . That is actually my personal opinion like always. I am posting as a person here, not a Sophos Employee in my Free Time.

     

    After setting all cards to the table, other should revisit the post and decide, if they agree or not. 

       

    After your first post, it looked like there is a Bug, which is not. 

    So you are agree with me, there is no Bug nor inconsistency in the whole process? 

     

    The only point, which you want to have, is to change/switch both values for A/all firewall rules, correct? 

    If you would change it for all Rules, maybe other firewall rules could be not logically anymore. 

  • LuCar Toni said:

    PS: If Sophos change those values, they would not make any sense to me.

    Obviously.

    And that's the whole problem here. You still don't understand the issue. And you refuse to even consider that something you don't understand ("make any sense to me") could actually be right.

    I guess ignorance is bliss.

    LuCar Toni said:

     

    Sophos could simply remove IN/OUT Terms to meet other vendors. 

     
    And how would that help? Then you would have two numbers without a description. No one would know what they mean. And on a side-note: That wouldn't meet other vendors. They all have a clear distinction between incoming and outgoing traffic, and they all apply the irrefutable logic to it that sending data TO a session initator is OUTgoing traffic. 
     
Reply
  • LuCar Toni said:

    PS: If Sophos change those values, they would not make any sense to me.

    Obviously.

    And that's the whole problem here. You still don't understand the issue. And you refuse to even consider that something you don't understand ("make any sense to me") could actually be right.

    I guess ignorance is bliss.

    LuCar Toni said:

     

    Sophos could simply remove IN/OUT Terms to meet other vendors. 

     
    And how would that help? Then you would have two numbers without a description. No one would know what they mean. And on a side-note: That wouldn't meet other vendors. They all have a clear distinction between incoming and outgoing traffic, and they all apply the irrefutable logic to it that sending data TO a session initator is OUTgoing traffic. 
     
Children
No Data