Dictionary attacks as described in Wikipedia are:

In cryptanalysis and computer security, a dictionary attack is a technique for defeating a cipher or authentication mechanism by trying to determine its decryption key or passphrase by searching likely possibilities.

A dictionary attack uses a brute-force technique of successively trying all the words in an exhaustive list called a dictionary (from a pre-arranged list of values). In contrast with a normal brute force attack, where a large proportion key space is searched systematically, a dictionary attack tries only those possibilities which are most likely to succeed, typically derived from a list of words for example a dictionary (hence the phase dictionary attack) or a bible etc. Generally, dictionary attacks succeed because many people have a tendency to choose passwords which are short (7 characters or fewer), single words found in dictionaries or simple, easily-predicted variations on words, such as appending a digit.

If an attacker wants to break your server, he first needs to guess the username, and then try to gess the password for that username, so the more common dictionary attacks are done to the root password, there are two reasons to do it that way.

  1. Almost all systems has root accounts (Ubuntu does not have it enabled)
  2. If someone gain access to your server with the root accout it will have full access to the server

So there are two simple ways to avoid the possibility of an attack to the root account

  1. Disable root access via ssh to your server
  2. Edit the file /etc/ssh/sshd_config Look for this line
    #PermitRootLogin yes
    
    And change it to:
    PermitRootLogin no
    
  3. Enable root access via ssh, but only with rsa key Edit the file /etc/ssh/sshd_config Look for this line
    #PermitRootLogin yes
    
    And change it to:
    PermitRootLogin without-password
    
    Then, create the rsa key and enable the two machines to be able to use the key, follow the instructions of How to ssh with rsa key