Technical Forum
Ask questions. Discover Answers.
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner



Forgive me but I'm pretty green when it comes to these F5's. We have an F5 LTM that is load balancing our internal and external email. We just had a pen test done and they saw TLS1 and 1.1 open from the external IPs. 

Pretty simple setup, external email hits our mail URL, it gets NAT'd to internal IP of the F5 virtual server then that goes to our pools. Virtual server is using client ssl profile and I'm assuming that is where this TLS is showing up.

What I need to know is how to find (cli command as we have many virtual servers) what virtual servers are using this specific SSL Profile so I can make sure the external is the only one before I make any changes to the profile.

The current SSL profile option is set with just No_TLSv1.3, wouldn't that mean it's using everything else BUT 1.3? I would want to put v1 and v1.1 in there instead right?


Thanks for the help!



Not sure it makes much difference but is this HTTPS or SMTP traffic? (only interested for possible context later)
now, what you want to look at is your client ssl profile.

Inside there is selection's for "no tls" or "no tls1.1" etc etc. So by selecting the ones you don't want it will turn them off.

The way i did it, was to use a cypher profile, and link that to your ssl profile. This meant i could have granual control not just of the encyrption used (TLS) but also the hashes which also came up on a pen test for me!
Have a look if that answers your question, if not let me know and i can send you some links or screen shots.

Sorry, yes this is HTTPS traffic.

I'm not so sure we are worried about granularity at this point, so you are saying I should remove the "NO_TLSv1.3" and add the NO_TLSv1 and NO_TLSv1.1 in the options on the client ssl profile?

But how can find out if there are any other virtual servers using that same clent ssl profile before I make any changes?

Thank you!

Ok lets start from a test. If you can find a device that runs nmap that can get to the external interface try running this,
nmap --script ssl-enum-ciphers -p 443 <Your domain name>

This should show you what you are dealing with and a method to prove that its worked!

Then under your ssl profile you need to chnage the config from "Basic" to "Advanced"
Then you'll see the Options List


Here is mine, it appears its flow down so NO DTLSv1.2 turns off everything below that and leaves TLSv1.3.
I don't know a location to see where a profile is used in a virtual server, but if you get a ucs file or the internal conf files out using the cli you could do a quick word search in the config maybe?

But you can go into the certificates and see which profiles they are used in which might get you "close" to the same place.

Does that help any more?


If that is the case then I'm not sure where the TLS is showing up as being open, in our profile we have NO_TLSv1.3 so that should cover 1 and 1.1.

Does it use the Options if it's greyed out or do I need to actually select the checkbox for the profile to "use" it?

Now, i used the cyphers profile which also controled tls1.0, 1.1 1.2 etc.
And no tls1.3 basically turned it all of.
But i needed that nop dtls1.2 for it to work. So maybe one is covering up the other thinking about it.

The best thing to do, is run that nmap command so you can see what you are playing with and work from there.

That's what I'm saying though.

ours has NO_TLSv1.3 so that should block 1 and 1.1 but our pen test says 1 and 1.1 is open

yeah i think i made a mistake as the cypher profile overrides some of that config and made it work.
no tls1.3 will not enable it, the config is a bit backwards. "enable" NO TLS for example is a positive then a negative.
So if you want tls 1.3 then you need to take that out of enable options.

This issue i thnk i had, is that enable options needs something in there to work.

Have you got a test environment you could look at and test before you do this to see what happens.

yes, let's say we DO NOT want TLS 1, 1.1, 1.2 and 1.3 for this sake, our config has "enabled" NO_TLSv1.3 so that should block 1.3, 1.2, 1.1, and 1 correct?

BUT, if that is the case then I'm not sure where the TLS 1 and 1.1 is showing for the pen test as it shows 1 and 1.1 is active so therefore the above isn't working by blocking all the TLS version.

No, that's the bit i think i've got wrong. Because the cypher profile works slightly different.

NO TLS 1.3 is still letting in SSL, TLS 1 1.1 1.2 etc but Not 1.3

NB - TLS 1, 1.1, 1.2 and 1.3 would block ALL TLS. and NO TLS also blocks all.
You would then be left with just ssl! 

Ohhh ok, so that may be my issue then, I just need to remove 1.3 and add 1 and 1.1 in there.

I'll try that! thank you so much for clarfiying that for me


@j_hardin80 If you are in tmsh you should be able to run the following command to find them relatively quick.

list ltm virtual | grep -E "virtual |<ssl_client_profile_name>"

This will give you multiple lines but the ones you're interested in are the ones with the virtual server name immediately followed by the ssl client profile name that you're interested in. In the command above make sure to replace the entire string "<ssl_client_profile_name>" with the ssl client profile name in question.

Now that's useful thanks @Paulius 

Thank you but I'm not sure it's working for me. No matter what SSL Profile name I use, it gives me the same listing of virtual servers that I know aren't using that profile.

@j_hardin80 That is correct, it will output all virtual servers followed by the SSL profile. It would look something like this.

ltm virtual VS_1.1.1.1_443
ltm virtual VS_2.2.2.2_443
ltm virtual VS_3.3.3.3_443

Notice how you have 2 VS back to back and then an indented SSL profile name. You will have to go through the text that shows up in the terminal and grab all VS names that are immediately followed by the SSL profile you are looking for. I don't know of a better way of searching this without doing some complicated regex search.

Unfortunately this is what I'm getting.

I run this command

tmsh list ltm virtual | grep -E "virtual|<name of my ssl profile>"

It returns:

ltm virtual <name of my virtual server> {

but it has all of my virtual servers listed and no duplicates and I don't see any indents with a profile.

@j_hardin80 If those are your results then the text for your SSL profile is not an exact match. You need for the text to be an exact match because "grep" is case sensitive.

hmmm not sure what is going on then, I even opened up the profile and copied and pasted the profile name. 

it does the same thing for all of my profile names I try to put in there.



I hope this information will help you, So i think you can custom SSL profile with specific cipher for SSL handshake with client side or server side, Please following article below,

How to disable SSL protocols or specific versions of TLS on an SSL profile such as TLS 1.0 and TLS 1...

In case you want to use TLSv1.2, You can using this string in custom SSL cipher "DEFAULT:TLSv1_2:!TLSv1:!TLSv1_1"