
The hardware solution seems to be the bare minimum. It takes little setting up and does a good job at protecting from incoming attacks. Software, on the other hand, requires the user to configure the settings and can cause bothersome messages asking for permission to allow a program to communicate with the web.
The real answer appears to be "both", a hardware firewall augmented by a software firewall. Click the link for a more thorough explanation.
