Câu trả lời:
IPTables hoạt động ở cấp Kernel. Nói chung, điều này có nghĩa là nó không có kiến thức về các ứng dụng hoặc quy trình. Nó chỉ có thể lọc dựa trên những gì nó nhận được từ các tiêu đề gói khác nhau cho hầu hết các phần.
Tuy nhiên, host.allow / deny hoạt động ở cấp độ ứng dụng / quy trình. Bạn có thể tạo quy tắc cho các quy trình hoặc trình nền khác nhau đang chạy trên hệ thống.
Vì vậy, ví dụ IPTables có thể lọc trên cổng 22. SSH có thể được cấu hình để sử dụng cổng này và nói chung là, nhưng nó cũng có thể được cấu hình để ở trên một cổng khác. IPTables không biết nó đang ở cổng nào, nó chỉ biết về cổng trong tiêu đề TCP. Tuy nhiên, các tệp hosts.allow có thể được cấu hình cho một số trình nền nhất định như daemon openssh.
Nếu bạn phải chọn, tôi thường chọn tối thiểu IPTables. Tôi xem các host.allow như một phần thưởng tốt đẹp. Thậm chí nghĩ rằng có vẻ như các cấp độ daemon dường như IPTables dễ dàng hơn sẽ chặn gói trước khi nó thực sự thậm chí còn rất xa. Với bảo mật càng sớm, bạn có thể chặn một cái gì đó tốt hơn. Tuy nhiên, tôi chắc chắn có những tình huống tuy nhiên thay đổi sự lựa chọn này.
iptables chặn quyền truy cập trước khi nó đến ứng dụng, trong khi hosts.allow / hosts.deny là một phần của PAM và yêu cầu ứng dụng thực hiện kiểm tra PAM và xử lý chính xác tệp. Cả hai đều hữu ích, và có cả hai tại chỗ thậm chí còn tốt hơn.