जवाबों:
IPTables कर्नेल स्तर पर काम करता है। सामान्य तौर पर इसका मतलब है कि इसके पास अनुप्रयोगों या प्रक्रियाओं का कोई ज्ञान नहीं है। यह केवल इस बात के आधार पर फ़िल्टर कर सकता है कि इसे सबसे अधिक भाग के लिए विभिन्न पैकेट हेडर से क्या मिलता है।
Host.allow / इनकार हालांकि आवेदन / प्रक्रिया स्तर पर चल रही है। आप सिस्टम पर चलने वाली विभिन्न प्रक्रियाओं या डेमॉन के लिए नियम बना सकते हैं।
उदाहरण के लिए IPTables पोर्ट 22 पर फ़िल्टर कर सकता है। SSH को इस पोर्ट का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है और आम तौर पर है, लेकिन इसे एक अलग पोर्ट पर होने के लिए भी कॉन्फ़िगर किया जा सकता है। IPTables को पता नहीं है कि यह किस पोर्ट पर है, यह केवल TCP हेडर में पोर्ट के बारे में जानता है। हालाँकि, hosts.allow फाइलें कुछ डेमॉन जैसे कि ओपनश डेमन के लिए कॉन्फ़िगर की जा सकती हैं।
यदि आपको चुना जाना है, तो मैं आमतौर पर न्यूनतम IPTables का विकल्प चुनूंगा। मैं hosts.allow को एक अच्छे बोनस के रूप में देखता हूं। यहां तक कि ऐसा लगता है कि ऐसा लगता है कि डेमॉन का स्तर आसान लगता है IPTables पैकेट को ब्लॉक करेगा इससे पहले कि यह वास्तव में बहुत दूर हो जाए। सुरक्षा के साथ जितनी जल्दी आप कुछ बेहतर ब्लॉक कर सकते हैं। हालाँकि, मुझे यकीन है कि ऐसी परिस्थितियाँ हैं जो इस विकल्प को बदलती हैं।
iptables एप्लिकेशन तक पहुंचने से पहले पहुंच को ब्लॉक कर देता है, जबकि hosts.allow / hosts.deny PAM का हिस्सा है और PAM चेकिंग को लागू करने और फ़ाइल को सही ढंग से संभालने के लिए एप्लिकेशन की आवश्यकता होती है। दोनों ही उपयोगी हैं, और दोनों जगह होना भी बेहतर है।