Cách di chuyển từ FirewallD sang Iptables trên CentOS 7

6 năm trước

 

Giới Thiệu 

Giống như hầu hết các bản phân phối Linux khác, CentOS 7 sử dụng khung netfilter bên trong hạt nhân Linux để truy cập vào các gói dữ liệu qua luồng mạng. Điều này cung cấp giao diện cần thiết để kiểm tra và thao tác các gói để thực hiện một hệ thống firewall.

Hầu hết các bản phân phối đều sử dụng iptables firewall, sử dụng các móc nối netfilterđể thực thi các quy tắc firewall. CentOS 7 đi kèm với một dịch vụ thay thế được gọi làfirewalld , hoàn thành mục đích tương tự này.

Trong khi firewalld là một giải pháp firewall rất có khả năng với các tính năng tuyệt vời, nó có thể dễ dàng hơn cho một số người dùng gắn bó với iptables nếu họ cảm thấy thoải mái với cú pháp của nó và hài lòng với hành vi và hiệu suất của nó. Lệnh iptables thực sự được sử dụng bởi chính firewalld, nhưng dịch vụ iptables không được cài đặt trên CentOS 7 theo mặc định. Trong hướng dẫn này, chúng tôi sẽ trình bày cách cài đặt dịch vụ iptables trên CentOS 7 và di chuyển firewall của bạn từ firewalld sang iptables .

 

Lưu các quy tắc Firewall hiện tại của bạn (Optional)

Trước khi chuyển sangiptables  làm giải pháp firewall của máy chủ, bạn nên lưu các quy tắc hiện hành mà firewalld đang thực thi. Chúng ta đã đề cập ở trên rằng firewallddaemon thực sự sử dụng lệnh iptables để nói chuyện với các móc nối kernel netfilter. Bởi vì điều này, chúng ta có thể đổ các quy tắc hiện tại bằng cách sử dụng lệnhiptables .

Đặt tập hợp các quy tắc hiện tại thành đầu ra tiêu chuẩn và một tệp trong thư mục chính của bạn được gọi là firewalld_iptables_rules bằng cách gõ:

sudo iptables -S | tee ~/firewalld_iptables_rules

Làm tương tự với ip6tables:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

Tùy thuộc vào các vùng firewalld đang hoạt động, các dịch vụ đã được kích hoạt và các quy tắc được chuyển từ firewall-cmd trực tiếp tới iptablesiptables, bộ quy tắc đã đổ bộ có thể khá rộng.

Dịch vụ firewalld  thực hiện các chính sách firewall của nó bằng cách sử dụng các quy tắc iptables bình thường. Nó thực hiện điều này bằng cách xây dựng một khung quản lý sử dụng các chuỗi iptables. Hầu hết các quy tắc bạn có thể thấy sẽ được sử dụng để tạo các chuỗi quản lý này và hướng luồng lưu lượng vào và ra khỏi các cấu trúc này.

Các quy tắc firewall bạn kết thúc chuyển sang dịch vụiptables  sẽ không cần phải tạo lại khung quản lý mà firewalld dựa vào. Bởi vì điều này, các quy tắc thiết lập bạn kết thúc thực hiện có thể sẽ đơn giản hơn nhiều. Chúng ta đang lưu toàn bộ tập hợp ở đây để giữ càng nhiều dữ liệu thô càng tốt.

Bạn có thể thấy một số dòng thiết yếu hơn để có được ý tưởng về chính sách bạn sẽ phải tạo lại bằng cách nhập một cái gì đó như thế này:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Điều này chủ yếu sẽ hiển thị các quy tắc dẫn đến quyết định cuối cùng. Quy tắc chỉ chuyển đến chuỗi do người dùng tạo sẽ không được hiển thị.

 

Tải xuống và cài đặt dịch vụ Iptables

Để bắt đầu quá trình chuyển đổi của máy chủ, bạn cần tải xuống và cài đặt  iiptables-service từ kho lưu trữ CentOS.

Tải xuống và cài đặt các tệp dịch vụ bằng cách nhập:

sudo yum install iptables-services

Điều này sẽ tải xuống và cài đặt các  tập lệnh systemd được sử dụng để quản lý dịch vụ iptables iptables. Nó cũng sẽ viết một số tệp cấu hình iptables và ip6tables mặc định vào thư mục  /etc/sysconfig.

 

Xây dựng quy tắc Iptables Firewall của bạn

Tiếp theo, bạn cần xây dựng các quy tắc iptables firewall bằng cách sửa đổi các tập tin /etc/sysconfig/iptables. Những tệp này chứa các quy tắc sẽ được đọc và áp dụng khi chúng ta bắt đầu dịch vụ iptables.

Làm thế nào bạn xây dựng các quy tắc firewall của bạn phụ thuộc vào quá trình system-config-firewall được cài đặt và đang được sử dụng để quản lý các tập tin này. Kiểm tra đầu tệp /etc/sysconfig/iptables để xem liệu nó có khuyến nghị chống lại việc chỉnh sửa thủ công hay không:

sudo head -2 /etc/sysconfig/iptables

Nếu output trông như thế này, hãy tự chỉnh sửa các tệp/etc/sysconfig/iptables / etc / sysconfig / iptables và /etc/sysconfig/ip6tables để thực hiện các chính sách cho iptables firewall của bạn:

 
Output
# sample configuration for iptables service 
# you can edit this manually or use system-config-firewall
 

Mở và chỉnh sửa các tệp có đặc quyền sudo để thêm quy tắc của bạn:

sudo nano /etc/sysconfig/iptables
sudo nano /etc/sysconfig/ip6tables

Sau khi bạn đã thực hiện các quy tắc của mình, bạn có thể kiểm tra các quy tắc IPv4 và IPv6  bằng cách sử dụng các lệnh sau:

sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

Nếu output từ việc kiểm tra tệp  /etc/sysconfig/iptables như thế này, bạn không thể tự sửa tập tin:

Output
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
 

Điều này có nghĩa là công cụ quản lý system-config-firewall cài đặt và được sử dụng để quản lý tệp này. Mọi thay đổi thủ công sẽ bị ghi đè bởi công cụ. Nếu bạn thấy điều này, bạn nên thực hiện thay đổi đối với firewall của mình bằng một trong các công cụ được liên kết. Đối với  UI , hãy nhập:

sudo system-config-firewall-tui

Nếu bạn đã cài đặt UI đồ họa, bạn có thể khởi chạy nó bằng cách gõ:

sudo system-config-firewall

 

Dừng FirewallD Service và Bắt đầu Iptables Service

Tiếp theo, chúng ta cần phải dừng firewall firewalld hiện tại và đưa lên các dịch vụiptables của mình. Chúng ta sẽ sử dụng cấu trúc  && để bắt đầu dịch vụ firewall mới ngay khi dịch vụ firewalld tắt thành công:

sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

Bạn có thể xác minh rằng firewalld không chạy bằng cách gõ: 

sudo firewall-cmd --state

Bạn cũng có thể thấy các quy tắc bạn thiết lập trong thư mục /etc/sysconfig đã được tải và áp dụng bằng cách gõ:  

sudo iptables -S
sudo ip6tables -S

Tại thời điểm này, các dịch vụ iptables và ip6tables đang hoạt động cho phiên hiện tại. Tuy nhiên, hiện tại, dịch vụ firewalld vẫn là dịch vụ sẽ tự động khởi động khi máy chủ khởi động lại.

Đây là thời điểm tốt nhất để kiểm tra các chính sách firewall của bạn để đảm bảo rằng bạn có cấp quyền truy cập mà bạn cần, bởi vì bạn có thể khởi động lại máy chủ để hoàn nguyên về firewallcũ của mình nếu có bất kỳ vấn đề nào.

 

Tắt FirewallD Service và Kích hoạt Iptables Services

Sau khi kiểm tra các quy tắc firewall để đảm bảo rằng chính sách của bạn được thực thi chính xác, bạn có thể tiếp tục và vô hiệu hóa dịch vụ firewalld bằng cách nhập:

sudo systemctl disable firewalld

Điều này sẽ chặn dịch vụ bắt đầu tự động khi khởi động. Vì dịch vụ firewalld không nên được khởi động thủ công trong khi các dịch vụ  iptables đang chạy, bạn có thể thực hiện thêm một bước bằng cách che dấu dịch vụ. Điều này cũng sẽ ngăn dịch vụ firewalld bắt đầu theo cách thủ công:

sudo systemctl mask firewalld

Bây giờ, bạn có thể kích hoạt các dịch vụ iptables và ip6tables để chúng tự khởi động lúc khởi động:

sudo systemctl enable iptables
sudo systemctl enable ip6tables
  •  

Điều này sẽ hoàn thành quá trình chuyển đổi firewall của bạn.

 

Kết Luận 

Cài đặt firewall là một bước quan trọng để giữ an toàn cho máy chủ của bạn. Trong khi firewalld là một giải pháp firewall tuyệt vời, đôi khi sử dụng công cụ quen thuộc hoặc sử dụng cùng một hệ thống trên nhiều cơ sở hạ tầng đa dạng lại có ý nghĩa nhất .

Tìm hiểu thêm những điều thú vị  tại ViCloud Community