Thứ sáu, 02/05/2014 | 00:00 GMT+7

Cách thức hoạt động của firewall Iptables

Cài đặt một firewall tốt là một bước cần thiết để bảo mật bất kỳ hệ điều hành hiện đại nào. Hầu hết các bản phân phối Linux đều có một vài công cụ firewall khác nhau mà ta có thể sử dụng để cấu hình firewall của bạn . Trong hướng dẫn này, ta sẽ trình bày về firewall iptables .

Iptables là một firewall tiêu chuẩn có trong hầu hết các bản phân phối Linux theo mặc định (một biến thể hiện đại được gọi là nftables là mộtversion tiếp theo ). Nó thực sự là một giao diện user cho các netfilter hooks cấp kernel có thể thao tác với mạng Linux. Nó hoạt động bằng cách khớp từng gói đi qua network interface với một bộ luật để quyết định việc cần làm.

Trong hướng dẫn này, ta sẽ thảo luận về cách hoạt động của iptables. Trong phần tiếp theo của loạt bài này, ta sẽ hướng dẫn bạn cách cấu hình bộ luật cơ bản để bảo vệ server Ubuntu 14.04 của bạn .

Iptables hoạt động như thế nào

Trước khi bắt đầu thảo luận về các lệnh thực sự cần thiết để kiểm soát iptables và xây dựng policy firewall , ta hãy xem qua một số thuật ngữ và thảo luận về cách hoạt động của iptables.

Tường lửa iptables hoạt động bằng cách so sánh lưu lượng mạng với một bộ luật . Các luật xác định các đặc điểm mà một gói phải có để phù hợp với luật và hành động cần được thực hiện để phù hợp với các gói.

Có nhiều tùy chọn để cài đặt gói nào phù hợp với một luật cụ thể. Bạn có thể khớp loại giao thức gói, địa chỉ nguồn hoặc đích hoặc cổng, giao diện đang được sử dụng, mối quan hệ của nó với các gói trước đó, v.v.

Khi mẫu đã xác định khớp, hành động diễn ra được gọi là mục tiêu . Đích có thể là quyết định policy cuối cùng cho gói, chẳng hạn như chấp nhận hoặc bỏ. Nó cũng có thể là di chuyển gói tin sang một chuỗi khác để xử lý hoặc đơn giản là ghi lại cuộc gặp gỡ. Có rất nhiều lựa chọn.

Các luật này được tổ chức thành các group gọi là chuỗi . Chuỗi là một tập hợp các luật mà một gói được kiểm tra tuần tự. Khi gói phù hợp với một trong các luật , nó thực hiện hành động được liên kết và không bị kiểm tra so với các luật còn lại trong chuỗi.

User có thể tạo chuỗi khi cần thiết. Có ba chuỗi được xác định theo mặc định. Họ đang:

  • INPUT : Chuỗi này xử lý tất cả các gói được gửi đến server của bạn.
  • OUTPUT : Chuỗi này chứa các luật cho lưu lượng do server của bạn tạo.
  • FORWARD : Chuỗi này được sử dụng để xử lý lưu lượng truy cập dành cho các server khác không được tạo trên server của bạn. Chuỗi này về cơ bản là một cách để cấu hình server của bạn để định tuyến các yêu cầu đến các máy khác.

Mỗi chuỗi có thể chứa không hoặc nhiều luật và có một chính sách mặc định. Chính sách xác định điều gì sẽ xảy ra khi một gói tin rớt qua tất cả các luật trong chuỗi và không trùng với bất kỳ luật nào. Bạn có thể bỏ gói hoặc chấp nhận gói nếu không có luật nào phù hợp.

Thông qua một module có thể được tải thông qua các luật , iptables cũng có thể theo dõi các kết nối. Điều này nghĩa là bạn có thể tạo các luật xác định những gì xảy ra với một gói dựa trên mối quan hệ của nó với các gói trước đó. Ta gọi khả năng này là “theo dõi trạng thái”, “theo dõi kết nối” hoặc cấu hình “máy trạng thái”.

Đối với hướng dẫn này, ta chủ yếu sẽ đề cập đến cấu hình của chuỗi INPUT, vì chuỗi này chứa bộ luật sẽ giúp ta từ chối lưu lượng truy cập không mong muốn hướng đến server của ta .

IPv4 so với IPv6

Tường lửa netfilter có trong nhân Linux giữ lưu lượng IPv4 và IPv6 hoàn toàn tách biệt. Tương tự như vậy, các công cụ được sử dụng để thao tác các bảng có chứa bộ luật firewall cũng khác nhau. Nếu bạn đã bật IPv6 trên server của bạn , bạn sẽ phải cấu hình cả hai bảng để giải quyết lưu lượng truy cập mà server của bạn phải chịu.

Lệnh iptables thông thường được sử dụng để thao tác bảng chứa các luật chi phối lưu lượng IPv4. Đối với lưu lượng IPv6, một lệnh đồng hành được gọi là ip6tables được sử dụng. Đây là một điểm quan trọng để nội bộ hóa, vì nó nghĩa là bất kỳ luật nào bạn đặt với iptables sẽ không ảnh hưởng đến các gói sử dụng version 6 của giao thức.

Cú pháp giữa các lệnh song sinh này là giống nhau, vì vậy việc tạo bộ luật cho mỗi bảng này không quá áp đảo. Chỉ cần nhớ sửa đổi cả hai bảng khi nào bạn thực hiện thay đổi. Lệnh iptables sẽ tạo các luật áp dụng cho lưu lượng IPv4 và lệnh ip6tables sẽ tạo các luật áp dụng cho lưu lượng IPv6.

Bạn phải đảm bảo sử dụng địa chỉ IPv6 thích hợp của server để tạo các luật ip6tables .

Những điều cần lưu ý

Bây giờ ta đã biết cách iptables hướng các gói đi qua giao diện của nó (hướng gói đến chuỗi thích hợp, kiểm tra nó với từng luật cho đến khi một luật khớp, đưa ra policy mặc định của chuỗi nếu không tìm thấy kết quả phù hợp), ta có thể bắt đầu thấy một số cạm bẫy cần lưu ý khi ta đưa ra các luật .

Trước tiên, ta cần đảm bảo ta có các luật để giữ cho các kết nối hiện tại hoạt động nếu ta triển khai policy loại bỏ mặc định. Điều này đặc biệt quan trọng nếu bạn được kết nối với server của bạn thông qua SSH. Nếu bạn vô tình triển khai một luật hoặc policy làm gián đoạn kết nối hiện tại của bạn , bạn luôn có thể đăng nhập vào DigitalOcean VPS của bạn bằng cách sử dụng console web, cung cấp quyền truy cập ngoài băng tần.

Một điều khác cần ghi nhớ là thứ tự của các luật trong mỗi chuỗi đều quan trọng . Một gói không được tuân theo một luật chung hơn mà nó phù hợp nếu nó nghĩa là phù hợp với một luật cụ thể hơn.

Do đó, các luật ở gần đầu chuỗi phải có mức độ cụ thể cao hơn so với các luật ở dưới cùng. Trước tiên, bạn nên đối sánh các trường hợp cụ thể, sau đó cung cấp các luật chung hơn để đối sánh các mẫu rộng hơn. Nếu một gói tin lọt qua toàn bộ chuỗi (không trùng với bất kỳ luật nào), nó sẽ gặp phải luật chung nhất , policy mặc định.

Vì lý do này, policy mặc định của chuỗi quy định rất rõ ràng các loại luật sẽ có trong chuỗi. Một chuỗi có policy mặc định là ACCEPT sẽ chứa các luật loại bỏ các gói một cách rõ ràng.Chuỗi mặc định là DROP sẽ chứa các ngoại lệ cho các gói cần được chấp nhận cụ thể.

Kết luận

Đến đây, cách dễ nhất để tìm hiểu về cách hoạt động của iptables là sử dụng nó để triển khai firewall của bạn .

Trong hướng dẫn tiếp theo, ta sẽ giới thiệu cách tạo firewall iptables cơ bản trên Ubuntu 14.04 . Thao tác này sẽ khóa server của bạn ngoại trừ một số dịch vụ mà bạn muốn cho phép.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách thiết lập firewall Iptables cơ bản trên Centos 6
2013-04-16
Cách thiết lập firewall Iptables cơ bản trên Centos 6
2013-04-16