> This is like claiming a firewall is unnecessary because properly-configured software should be unexploitable. It's correct in a certain sense, but it ignores that configuration is terribly difficult to do correctly, hence the idea that security should be layered.
I actually agree with that. Firewalls are often incredibly complex codebases and usually written in C (with a rationale of the need for performance). Exposing such a thing to arbitrary internet traffic virtually guarantees exposing a vulnerability.
Just don't open network ports except for services that you want to expose to the network. If you really need to expose an insecure service to a limited set of machines, use a VPN.