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

Sophos Firewall: v19.5 GA: Feedback and experiences

Release Post:  Sophos Firewall v19.5 is Now Available 

Old v19.0 MR1 thread:  Sophos Firewall: v19.0 MR1: Feedback and experiences 

EAP Sub thread:  SFOS v19.5 Early Access Program 

EAP 19.5 Thread:  Sophos Firewall: v19.5 EAP1: Feedback and experiences 



This thread was automatically locked due to age.

Top Replies

  • This is indeed expected behavior of the FCI feature.  What follows is a Draft of a KB Article I'm writing (feedback welcome).



    In XG 18.0 the DPI proxy was introduced, with many more SSL/TLS scanning options and certificate protection. There are some certificate security concerns with that are blocked in most configurations, however they are allowed without any warning when using DPI mode with the decryption profile "Maximum compatibility". In these cases the XG decrypts and re-signs, creating a new certificate with its own Certificate Authority that hides potential problems that the end user should know about which that would be blocked in other configurations.

    In 19.0 a new feature was added called Forward Certificate Invalidity (FCI). This feature detects certain types of certificate invalidity and "forwards" (tells the user) about them. Because we cannot create a certificate with the same error, so we create one in a special way that we know will cause browsers to warn users. A CA is used that us unique and untrusted, and the certificate Common Name is used as the error message to tell the end user what the problem is. This changes the behavior of DPI mode with Maximum Compatibility. By signing it in the way, browsers will warn users that there is a certificate problem but will allow users to proceed and load the pages as they did in 18.0/18.5.

    The most common issue that FCI catches on the public internet is websites that do not send their entire certificate chain. When a website provides their certificate, they usually provide the certificate, the CA that signed it (usually an intermediate CA), the CA that signed that one, up to the root CA. The root CA is trusted by the browser, and the browser can verify the entire chain.

    However some websites do not provide the chain. They may provide only the certificate, or they provide the certificate and the root CA, but they do not provide the intermediate CA. While this is valid, it is not best practice and sites like ssllabs.com which rate sites will cap their score.

    If a website does not provide the chain they usually implement AIA (Authority Information Access). This is a link within the certificate that says where to download the CA that signed it.

    Some browsers (Chrome 58+, Edge, Safari) will automatically use the AIA to download the intermediate and store it for future use. Firefox 75+ uses a different mechanism called intermediate CA preloading (wiki.mozilla.org/.../Intermediate_Preloading). Older Android (pre Oreo) devices do not support any mechanism. The XG does not currently support AIA.

    If the website does not provide the full chain, the XG behavior depends on the configuration. It is important to note that v19 did not introduce blocking of sites that do not provide the full chain. The XG has always blocked these sites when using normal security, and the resolution below has always worked. The difference is that when using a decryption profile that does not block self signed certificate, invalid issuers, or many other security concerns (such as "Maximum compatibility") we used to allow the connection and sign it in a way that made it appear more secure. Now we allow but sign it in a way that appears insecure.

    How to configure the system to allow access to sites that do not provide a complete certificate chain.

    Method 1 - Do not decrypt
    Configure the domain to not be decrypted. Adding the domain to the Local TLS Exclusion List is the best option for DPI mode. Adding it to a Web Exception will exclude it for both DPI and Proxy mode.

    Method 2 - Add the Intermediate certificate to the XG CA store

    Option 1:
    Test the site in www.ssllabs.com/.../
    You should see that the grade is capped to B and the Certification Path includes an "Extra Download". In the section under Issuer there should be an AIA link.

    Option 2:
    Use a browser that is not going through the XG, or is going through the XG with HTTPS not decrypted so that you get the original certificates as presented by the site. Ask the browser to display the certificate information and the AIA link should be there. How this is displayed is browser specific.

    Once you have the AIA link, download the certificate to your computer. Then in WebAdmin go to Certificates > Certificate Authorities and Add. Choose the file.
    With the Intermediate in the CA store, the page will load in all configurations.

    Jump to answer
Parents
  • Hi,

    i updated a onprem VM XG without HA successfully.

    But when i updated a HA cluster onprem (2 x VM KVM) and switched Active/Passive the configurations are different !


    I noticed in HA link there are some messages like that

    18:23:57.846962 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [S], seq 2618702982, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
    18:23:57.848188 IP 169.254.192.1.6379 > 169.254.192.2.13964: Flags [S.], seq 3666333204, ack 2618702983, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
    18:23:57.848439 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [.], ack 1, win 229, length 0
    18:23:57.848552 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [P.], seq 1:15, ack 1, win 229, length 14: RESP "PING"
    18:23:57.849556 IP 169.254.192.1.6379 > 169.254.192.2.13964: Flags [P.], seq 1:1068, ack 1, win 229, length 1067: RESP "DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a an authentication password for the default user. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside."
    18:23:57.849570 IP 169.254.192.1.6379 > 169.254.192.2.13964: Flags [F.], seq 1068, ack 1, win 229, length 0
    18:23:57.849833 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [.], ack 1068, win 245, length 0
    18:23:57.850101 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [R.], seq 15, ack 1069, win 245, length 0
    18:23:57.850857 IP 169.254.192.1.6379 > 169.254.192.2.13964: Flags [.], ack 1, win 229, length 0
    18:23:57.851090 IP 169.254.192.2.13964 > 169.254.192.1.6379: Flags [R], seq 2618702983, win 0, length 0

    I think if REDIS db is not synced correctly, the configuration will has some issues ?

    Where is a solution ?

    Thanks

    Sk3

  • Hi Paolo, 

    Redis is not used to store configuration information on SFOS, only state information. Can you please clarify what you meant when you said configuration is different after you switched active/passive in your cluster? What steps specifically did you perform, and which configuration are different? 

Reply
  • Hi Paolo, 

    Redis is not used to store configuration information on SFOS, only state information. Can you please clarify what you meant when you said configuration is different after you switched active/passive in your cluster? What steps specifically did you perform, and which configuration are different? 

Children
No Data