I've been running my web server and WordPress site nearly a couple of years now. My goto plugins for protection are:
Antispam Bee - Which allows me to leave blogs open for comments, in case someone would ever want to ask something or start a discussion. However, I've found I only seem to get SPAM bots. Having to check all the messages is a pain, so I've also changed the WordPress settings to automatically close comments on articles older than 10 days.
Shield - If the term "hackers" means anything to you, then this is "the security plugin" you need to have. Just look at the number of attempts to access my site.
Recently the login attempts seemed to have been spiralling upwards. With this many automated attempts, you can't feel safe, and I've been thinking for a while, it's only a matter of time until they find a zero-day vulnerability.
My first attempt was to block my wp-admin folder where the admin area of WordPress is, but it turned out to be a bad idea. What I didn't realise, is that there are some AJAX functions there which are needed by other parts of my site such as the booking system. Thankfully, someone was kind enough to inform me about the problem ;)
Password Protect wp-login.php
Step 1: Create a .htpasswd file using the Apache documentation. For extra security use a username that is difficult to guess.
htpasswd -c /var/www/clouded.ch/html/.htpasswd neil
Step 2: Create or add to the .htaccess file (using text editor)
<Files ~ "^\.ht">
Deny from all
AuthName "Private access"