At work we've been trying to move our external-facing services away from a policy of inclusivity (where we tried to accept as many people as possible) to a more security-focused setup.

The first step was pen-testing some of our core web applications, where the focus tends to be on weaknesses in the application code, but a lot has been said of the SSL/TLS suites and ciphers. Off the back of these test results, I have managed to at least get enough people interested in attaining the A-, A and A+ "grades" in the Qualys tests (management like quantifiable grades -- who knew?!).

However, another key component of some of our software is bulk-file upload/download via SFTP (i.e. over SSH). I always have tried to apply as good practice as I could determine on the SFTP servers, so we routinely use:

  • key-only authentication
  • blacklisting repeated authentication failures
  • 2,048-bit keys
  • disabling shell, exec and port-forwarding

But I must concede that I know very little about the crypto implementations, so the default settings have almost always been used. However, I presume that, if a pen-tester flags RC4, 3DES, MD5, et al. in a TLS-based setup, they would also flag these algorithms in an SFTP server (were it included within their scope).

I'm primarily working on a Windows stack, and we've been using VanDyke VShell as our SFTP server of choice for a number of years. By default, it enables all Cipher and MAC options (except for 'None') and all Key Exchange options except for 'Kerberos' and 'Kerberos (Group Exchange)'.

This leaves the following algorithms, as named by the VShell application:

  • Key Exchange: diffie-hellman-group14, diffie-hellman, diffie-hellman-group
  • Cipher: AES-256-CTR, AES-192-CTR, AES-128-CTR, AES-256, AES-192, AES-128, Twofish, Blowfish, 3DES, RC4
  • MAC: SHA1, SHA1-96, MD5, MD5-96, UMAC-64 (and, in more recent versions) SHA2-512, SHA2-256

As for the questions:

  1. Where are the best references for me to determine which of these are now considered too weak to use?
  2. How can I best-determine whether disabling any of these will adversely affect my end-users?
  3. Are there any Qualys-like tests that I can use to regularly evaluate these servers, preferably with compelling evidence with which to beat management into submission?
  • 2
    MD5, SHA-1 and RC4 should not be used anymore.
    – user6090
    Dec 4, 2015 at 18:14
  • @DanielRuf - that doesn't exactly leave me with very much on the MAC front. Is UMAC-64 particularly useful? Besides, I thought SHA1 was still safe-enough for message authentication -- is that no longer the case? Dec 7, 2015 at 14:00
  • 1
    Daniel is incorrect regarding the hashes. Both of those are not bad to use for MACs, although it is still better to use something stronger. It is completely true that RC4 should be avoided, however.
    – forest
    Apr 7, 2016 at 1:24

2 Answers 2

  1. Unfortunately the standards bodies don't fully agree on a single list of ciphers for SSL/TLS or SSH security. The following document and it's internal references will help a lot and I would think that in general owasp.org would be a great place to keep up with weak ciphers but unfortunately there is no one universal list at this time.


    For SSH hardening specifically look at the following:


    Ultimately an up to date list mapping the cipher supported with a reason why each one was depreciated would be useful for everyone but I haven't seen such an effort yet.

  2. The best way to know what your end users are using is to monitor actual traffic to your site. You can either enable cipher suite logging on your SFTP server or webserver or simply use a protocol analyzer like WireShark, tshark specifically, for this.


    Generally you will find that limiting cipher suites is actually easy because most clients from the last 5-10 years support a wide range of ciphers.

  3. To test this I highly recommend using the nmap ssl enumerate ciphers .NSE script or for SSH the SSH2 enumerate algorithms script:


    The command to test a website will look similar to the following:

    nmap --script ssl-enum-ciphers -p 443 www.website.org

    There are similar scripts for other protocols, for SSH the following would work


    This information can be gathered from the debug2 information in the ssh -vvv option but nmap is far easier to automate.

    For externally testing websites there are sites like the following which will tell you information about depreciated SSL/TLS ciphers on HTTPS based services.


At this time there are no "Qualys like test websites that match their SSL test website for SSH" the closest way to get similar information for SSH is to use ssh -vvv option or use the nmap NSE script ssh2-enum-algos.html. There are other solutions to this but nmap is probably the easiest to implement and it's very scriptable so you could have it test a huge number of IP's easily.

  • SFTP and SSH do not use SSL/TLS suites, nor exactly the same algorithms, although they share primitives like AES and HMAC and RSA. SFTP is an FTP-like protocol (but not actually FTP) over SSH. FTPS is FTP (exactly) over SSL/TLS but is relatively rare. Apr 7, 2016 at 9:41
  • dave_thompson_085 You are correct I think I cleaned up the language at the end enough to prevent confusion. Apr 7, 2016 at 13:48

For hardening guides on common OSes, please see: https://www.ssh-audit.com/hardening_guides.html

ssh-audit is a maintained Python tool to assess these parameters on the exposed port. You can run it remotely, and if you don't, others might.

Using it is as easy as:

pip3 install ssh-audit
ssh-audit www.example.com

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .