For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

22 Replies

  • Hi Ahmad, I've modified the iRule a bit, this should work across all v11.x versions.

    when HTTP_REQUEST {
    
      if { ([HTTP::host] equals "oservices.bahrain.bh") && ( [string tolower [HTTP::path]] equals "/pubportal/insurancedetailsuploadws/services/insuranceuploadimpl" ) }{
        log local0. "Client: [IP::client_addr]: Requested [HTTP::host][HTTP::uri]. HTTPS redirect omitted"
      } else {
        HTTP::respond 302 location "https://[HTTP::host][HTTP::uri]"
        log local0. "Client: [IP::client_addr]: Requested [HTTP::host][HTTP::uri]. Redirected to HTTPS"
        TCP::close
      }
    }
    

    Test with logging enabled: "curl -vI oservices.bahrain.bh/pubportal/InsuranceDetailsUploadWS/services/InsuranceUploadImpl"

    Apr  8 12:26:18 bigip1 info tmm1[12385]: Rule /Common/asd : Client: xx.xx.xx.xx: Requested oservices.bahrain.bh/pubportal/InsuranceDetailsUploadWS/services/InsuranceUploadImpl. HTTPS redirect omitted
    
    • Hannes_Rapp_162's avatar
      Hannes_Rapp_162
      Icon for Nacreous rankNacreous
      Have taken a look at the response header - it appears that something in between modifies the request path and the "/pubportal" substring is eaten up, before the request is even routed to F5 BigIP. Do you have another proxy in between your desktop(test machine) and the F5 BigIP? < location: https://oservices.bahrain.bh/InsuranceDetailsUploadWS/services/InsuranceUploadImpl As a workaround in F5, you can further modify the iRule and replace the conditional IF statement with: if { ([HTTP::host] equals "oservices.bahrain.bh") && ( [string tolower [HTTP::path]] contains "/insurancedetailsuploadws/services/insuranceuploadimpl" ) }{
    • nitass's avatar
      nitass
      Icon for Employee rankEmployee
      doesn't it already work? i do see the response is not redirection.
  • can you please tell me if i want to exclude another URLs how the iRule will be?

    e.g.

     irule
    
    [root@ve11c:Active:In Sync] config  tmsh list ltm rule qux
    ltm rule qux {
        when HTTP_REQUEST {
      switch -glob [string tolower [HTTP::host][HTTP::uri]] {
        "oservices.bahrain.bh/pubportal/insurancedetailsuploadws/services/insuranceuploadimpl*" -
        "something.domain.com/*" -
        "somethingelse.somedomain.com/*" {
           Do nothing
        }
        default {
          HTTP::respond 302 location "https://[HTTP::host][HTTP::uri]"
        }
      }
    }
    }
    
     test
    
    [root@ve11c:Active:In Sync] config  curl -I http://oservices.bahrain.bh/pubportal/insurancedetailsuploadws/services/insuranceuploadimpl/something
    HTTP/1.1 404 Not Found
    Date: Thu, 23 Apr 2015 14:03:31 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
    ETag: "41879c-59-2a9c23c0"
    Accept-Ranges: bytes
    Content-Length: 89
    Content-Type: text/html; charset=UTF-8
    
    [root@ve11c:Active:In Sync] config  curl -I http://oservices.bahrain.bh/something
    HTTP/1.0 302 Found
    location: https://oservices.bahrain.bh/something
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    
    [root@ve11c:Active:In Sync] config  curl -I http://www.domain.com
    HTTP/1.0 302 Found
    location: https://www.domain.com/
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    
    [root@ve11c:Active:In Sync] config  curl -I http://www.domain.com/something
    HTTP/1.0 302 Found
    location: https://www.domain.com/something
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    
    
  • can you please tell me if i want to exclude another URLs how the iRule will be?

    e.g.

     irule
    
    [root@ve11c:Active:In Sync] config  tmsh list ltm rule qux
    ltm rule qux {
        when HTTP_REQUEST {
      switch -glob [string tolower [HTTP::host][HTTP::uri]] {
        "oservices.bahrain.bh/pubportal/insurancedetailsuploadws/services/insuranceuploadimpl*" -
        "something.domain.com/*" -
        "somethingelse.somedomain.com/*" {
           Do nothing
        }
        default {
          HTTP::respond 302 location "https://[HTTP::host][HTTP::uri]"
        }
      }
    }
    }
    
     test
    
    [root@ve11c:Active:In Sync] config  curl -I http://oservices.bahrain.bh/pubportal/insurancedetailsuploadws/services/insuranceuploadimpl/something
    HTTP/1.1 404 Not Found
    Date: Thu, 23 Apr 2015 14:03:31 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
    ETag: "41879c-59-2a9c23c0"
    Accept-Ranges: bytes
    Content-Length: 89
    Content-Type: text/html; charset=UTF-8
    
    [root@ve11c:Active:In Sync] config  curl -I http://oservices.bahrain.bh/something
    HTTP/1.0 302 Found
    location: https://oservices.bahrain.bh/something
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    
    [root@ve11c:Active:In Sync] config  curl -I http://www.domain.com
    HTTP/1.0 302 Found
    location: https://www.domain.com/
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    
    [root@ve11c:Active:In Sync] config  curl -I http://www.domain.com/something
    HTTP/1.0 302 Found
    location: https://www.domain.com/something
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0