- Hiawatha can filter request based on URL (via UrlToolkit), content (via DenyBody), by IP (AccessList) or UserAgent string (DenyBot).
- Installing a IP filtering firewall is of course a good thing (to only allow SSH traffic from trusted machines for example).
- Preventing hackers to upload files or malicious is not something a webserver should do. It's the task of the website / webapplication to prevent such things. May I advice you another project of mine: the
Banshee PHP framework [www.banshee-php.org].
If you see yourself as 'new to the whole subject', then the first and most important thing you have to do is to become an expert on the subject. Trusting on 'tools' and 'smart features' is not going to help if you don't know what they do. Tools are only good if you know what you want and are looking for something (the tool) to make the job easy.
My advice is to start googling for the following terms: SQL injection, cross-site scripting, cross-site request forgery, directory traversal, code injection and file inclusion. Read about it until you fully understand what it means, how hackers use it and what needs to be done to prevent it. After you're done doing it, don't pretend to be an expert on the subject. Hackers are always looking for new ways to exploit things. So should you. Of course not with the goal to actually use the exploit, but to be a step ahead of hackers. And also emember that applying security is not a project, it's an ongoing process. It's never done! When you become sloppy, that's when things go wrong.
When you then still have questions (and you surely will have questions, otherwise you are only fooling yourself) you are welcome to come back and ask them here. But the internet is full of information about webserver and website security, there is no need for me to include it here.