So the F5 is a tricky beast often refereed to as the swiss army knife of network appliances. The appliances primary role in many networks is to load balance and is a beast negotiating SSL. That being said its not always easy to determine how to configure the clients SSL profiles to be secure and still service the public. F5s documentation is helpful but designed to be vague because cipher suites and browser support is always changing. https://support.f5.com/csp/article/K8802
SSL Labs has become the de-facto to use tool that helps the public understand the nuances of SSL by giving an easy to understand letter grade, https://www.ssllabs.com . The website runs a multitude of tests from insuring your certificate is chained correctly to end device OS and browser simulations, to commonly found vulnerability testing. The down fall of having such a sophisticated tool issuing a simple letter score, is not every environment can be configured for an A or B plus.
So I wanted to through an F5 Client SSL Profile out there that at the time of testing got a solid A- and still supported a ton of OS and browser combinations. You will mostly want to keep the defaults but I will highlight what changes you will want to make to get an A. You will need to select Advanced to see some of these settings.
- The first step is to add your public certificate and the intermediate certificates if applicable as well as the key.
- this is what create the certificates chain
- Next you will want to customize the Ciphers that will be used by the F5 to negotiate SSL with the client. This is where 99% of the magic will happen.
- DEFAULT:HIGH: (are pre canned cipher settings created by F5, the additional settings are additional customization.
- !RSA: Do not use RSA ciphers
- !SSLV3: Do not use SSL version 3
- !RC4: Do not use RC4 ciphers
- !EXP: Do not use Cipher length of 40 or 56 bits export strength
- !DES: Do not use Des or triple Des ciphers
- !TLSv1_1: Do not use TLS version 1.1
- !TLSv1: Do not use TlS version 1.0
- !ADH: Do not use ADH ciphers
- !EXPORT: Do not use EXPORT grade (weak) ciphers
- !SHA: Do not use Message Authentication Code SHA 128
- The complete string looks like this:
- DEFAULT:HIGH:!RSA:!SSLV3:!RC4:!EXP:!DES:!TLSv1_1:!TLSv1:!ADH:!EXPORT:!SHA
- Lastly you will want to set up strict SSL renegotiation:
- Check the Renegotiation box
- Next set Secure Renegotiation to "Require Strict"
From here save your SSL client profile, apply it to a public accessible virtual server, and run SSL labs against your server. Its kind of fun testing and playing around to see what modifying the cipher settings.
Enjoy.
|
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:US
State or Province Name (full name) []:State
Locality Name (eg, city) []:City
Organization Name (eg, company) []:Anything
Organizational Unit Name (eg, section) []:Anything
Common Name (eg, fully qualified host name) []:Username
Email Address []:youremail
|
<VirtualHost *:443> ServerName secure.example.com DocumentRoot "/var/www/html" ServerAdmin [email protected] SSLEngine on SSLCertificateFile /home/sempla1/ssl/server-cert.pem SSLCertificateKeyFile /home/sempla1/ssl/private/server-key.pem SSLVerifyClient require SSLVerifyDepth 10 SSLCACertificateFile /home/sempla1/ssl/client-certificate.pem </VirtualHost> |
- The firewall looks to see if the packet is allowed by the security policy.
- The firewall identifies the traffic as SSL
- The firewall looks to see if the destination is configured with a SSL decryption policy
- If the destination address matches a protected IP address, it is decrypted and processed through the security policies once again as web-browsing still on port 443.
- Bang! Connection is broken.
At a high level HSTS (HTTP Strict Transport Security) is a policy that, when enabled, forces a browser to use an HTTPS connection over a HTTP and allows for the SSL certificate to be cached on the browser for a predetermined length of time. With HSTS enabled, clients are protected from protocol downgrading, man in the middle attacks, and cookie hijacking. Most modern browsers (Google Chrome, Mozilla Firefox, Microsoft Edge) come preloaded with a list of sites supporting STS (Strict Transport Security). Along with the pre-configured list built into browsers, developers can take it upon themselves to enable this policy on their sites. Once enabled a timeout will be sent with the HTTPS header that contains a HSTS TTL “
Strict-Transport-Security: max-age=31536000”. The certificate received from the site will be honored until the timeout expires. Future attempts to access the site will reference the certificate and, if the certificate does not match, the browser will not allow the connection to site to be established.For a more in depth HSTS description check out Troy Hunt's post Understanding HSTS.
So how does HSTS break captive portals? HSTS enforces the use of HTTPS. It enforces this using two methods that where mentioned earlier the HSTS header or STS preload lists in the browser. When a user connects to a captive portal and launches their browser, normally the wireless controller would intercept their Internet request and a redirect is sent back to the client. This redirect to the captive portal will obviously be a different CN than their original request so, many times, this creates an SSL error. Many users have become numb; accepting the error and continuing to the portal. But HSTS is a little different.
Bottom line for users connected to a captive portal today:
- If the user visits an HTTP site, they are immediately redirected to the captive portal. This works regardless of what browser they are using
- If the user visits an HTTPS site that does not use HSTS, they receive a warning. If they click "Continue" they are redirected to the captive portal. This works regardless of browser
- If the user visits an HTTPS site that does use HSTS and they are using the browser that supports HSTS they are dead-ended. The only way to get redirected to the captive portal is to visit a different site. Many people have https://www.google.com or Facebook set as their homepage. Both of these sites use HSTS so this might confuse some users.
This issue of not being redirected to a captive portal affects every wireless vendor. As more and more sites use HSTS, getting a proper redirect becomes harder. Hopefully the wireless vendors are sitting on the working group for this new standard and are pushing hard to get it ratified.
So what you need to get started:
- Your own domain
- Set up your blogger page to use the custom domain. They have really good directions that walk you through the process.
- Create a free CloudFlare account.
- Import your DNS
- Login into your DNS hosting company and change the DNS servers to the servers CloudFlare has identified
- Then wait up to 24hr mine was pretty instantaneous since the TTLs were set pretty low.
- Your site is now on CloudFlare
Felixiable SSL was on by default. This is the setting you will need for your Blogger or Wordpress sites since those services do not allow you to implement your own SSL. Basically CloudFlare sets up SSL offload using a SAN certificate that includes your domain. Once CloudFlare decrypts the traffic it is sent to your site non encrypted. This is an awesome service but it did cause me some issues, and at least with blogger it will pose some ongoing issues.
- The first issue I experienced was intermittent interruption with the CloudFlare SSL service. I opened a ticket with them and they identified the template I was using was calling insecure pages. There systems identified this and would temporarily disable Flexible SSL. They pointed out the offending files and I was able to modify the template I was using to fix the issue. The CloudFlare tech also pointed me to a useful article outlining how to enable SSL for a Wordpress site, here is the article https://support.cloudflare.com/hc/requests/558717.
- The second issue is related to the first but was not actually causing any service interruptions. As you have probably seen the lock for my site is not green or has an "!" next to it. This is because the images that where originally used in my blog were absolute http links. This forces the browser who knows it has a secure connection to my website, to display non secure content, images that are not hosted on Google and are not SSL. This causes the mixed content error in the browser. I will be working on cleaning this up moving forward.
Page Rules was one of the more exciting and powerful surprises offered by CloudFlare. They allow 3 page rules with your free account. I work with load balancers everyday and this single page of rules really ads flexibility that companies pay a lot of money for. So for my SSL rule I wanted my page to always be redirected to SSL so I created one page rule "http://*.wirelessphreak.com/* HTTPS always redirect" that forces all traffic to my site over SSL. It worked great and was super easy to set up.
The last pleasant surprise was the analytics. I have google analytics and it has become the defacto standard on the internet. But what CloudFlare bring in addition to google analytics is their breakdown of not only unique visitors but the ratio of cached content and served content. It also does a nice job of showing you what percentage of your traffic served was encrypted and not encrypted.
All and All it seems to be a cool service. I and I look forward to playing with it some more.
If online security is complicated, then online privacy is imposible. The public is slowly learning the difference between these two topics. Unfortunate situations such as the infamous fappening has brought both of these topics to the attention of the cyber muggles.
Online security can be reduced to 1s and 0s algorithms and ciphers, there is a finite outcome when you are looking at crypto. Math dose not lie, and we have the ability to create a secure cyber world. Where security breaks down is the implementation. Complicated software (open and proprietary), lack of proper vetting, and some times just laziness are a few of the causes.
Online privacy on the other hand is much darker and deeper then anyone wants to admit. From the government to politicians to the telco companies to advertisers, your privacy is a commodity that is sold, stolen, and bartered for. Free google email is a perfect example. If you sign up for email (which I have) you should understand that your email will probably be secure, but you are giving up privacy through google targeted marketing bots that crawl every email you get.
But there are groups looking out for the publics interests even if they didn't now they needed it.
- The Electronic Frontier Foundation (EFF) is an international non-profit digital rights group based in the United States.
- The American Civil Liberties Union (ACLU) is a nonpartisan non-profit organization whose stated mission is "to defend and preserve the individual rights and liberties guaranteed to every person in this country by the Constitution and laws of the United States."
F5 response to the CVE
https://devcentral.f5.com/articles/cve-2014-3566-removing-sslv3-from-big-ip
Link to F5 SOL article
https://support.f5.com/kb/en-us/solutions/public/15000/700/sol15702.html
Link to F5 removing SSLV3:
https://devcentral.f5.com/articles/cve-2014-3566-removing-sslv3-from-big-ip
***UPDATE***
According to F5 they do not currently support the TLS_FALLBACK_SCSV cipher. There is talk about an engineering hot fix that may include support but there is no solid ETA. F5 is recommending you disable SSL 3.0 where you can.
OpenSSL command to test if a webserver supports SSL3.0:
openssl s_client -connect target:443 -ssl3
It is curious to see how different company choose to incorporate and document opensource software in their products. But that is a different rant for a different time.
Today is the day engineers around the world hit the internet looking through pages and pages of documentation. I have done some research and wanted to add what I found to hopefully shorten someones search.
Cisco ASA 8.4 code is running openssl 0.9.8f Safe
- To view for your self SSH to your LTM log in as root and run "openssl version"











