Réponses:
IPTables fonctionne au niveau du noyau. En général, cela signifie qu'il n'a aucune connaissance des applications ou des processus. Il peut uniquement filtrer en fonction de ce qu'il obtient des différents en-têtes de paquets pour la plupart.
Cependant, host.allow / deny fonctionne au niveau de l'application / du processus. Vous pouvez créer des règles pour différents processus ou démons exécutés sur le système.
Ainsi, par exemple, IPTables peut filtrer sur le port 22. SSH peut être configuré pour utiliser ce port et l'est généralement, mais il peut également être configuré pour être sur un port différent. IPTables ne sait pas sur quel port il se trouve, il ne connaît que le port dans l'en-tête TCP. Les fichiers hosts.allow peuvent cependant être configurés pour certains démons tels que le démon openssh.
Si vous devez choisir, j'opterais généralement pour un minimum d'IPTables. Je considère les hosts.allow comme un joli bonus. Même en pensant qu'il semble que les niveaux du démon semblent plus faciles, IPTables bloquera le paquet avant qu'il n'aille vraiment très loin. Avec la sécurité, plus tôt vous pouvez bloquer quelque chose, mieux c'est. Cependant, je suis sûr qu'il existe des situations qui changent ce choix.
iptables bloque l'accès avant qu'il n'atteigne l'application, alors que hosts.allow / hosts.deny fait partie de PAM et nécessite que l'application implémente la vérification PAM et gère correctement le fichier. Les deux sont utiles, et les avoir en place est encore mieux.