Thứ năm, 20/08/2015 | 00:00 GMT+7

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

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 nhân Linux để truy cập các gói truyền qua 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 nhằm triển khai hệ thống firewall .

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

Mặc dù 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, nhưng một số user có thể dễ 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ó. Các iptables lệnh được thực sự được sử dụng bởi firewalld chính nó, nhưng iptables dịch vụ không được cài đặt trên CentOS 7 theo mặc định. Trong hướng dẫn này, ta 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 (hãy xem hướng dẫn này nếu bạn muốn tìm hiểu cách sử dụng FirewallD thay thế).

Lưu Luật firewall hiện tại của bạn (Tùy chọn)

Trước khi chuyển sang iptables làm giải pháp firewall cho server của bạn, bạn nên lưu các luật hiện tại mà firewalld đang thực thi. Ta đã đề cập ở trên rằng daemon firewalld thực sự sử dụng lệnh iptables để nói với các hook của kernel netfilter . Do đó, ta có thể kết xuất các luật hiện tại bằng lệnh iptables .

Đưa bộ luật hiện tại vào kết quả tiêu chuẩn và vào một file trong folder chính của bạn có tên firewalld_iptables_rules bằng lệnh :

  • 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 luật được chuyển trực tiếp từ firewall-cmd đến iptables , bộ luật được kết xuất có thể khá rộng.

Dịch vụ firewalld thực hiện các policy firewall của nó bằng cách sử dụng các luật iptables thông thường, 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 chuỗi iptables . Hầu hết các luật mà bạn có thể thấy sẽ được sử dụng để tạo ra các chuỗi quản lý này và định hướng stream lưu lượng vào và ra khỏi các cấu trúc này.

Các luật firewall mà bạn cuối cùng chuyển sang dịch vụ iptables của bạn sẽ không cần tạo lại khung quản lý mà firewalld dựa vào. Do đó, bộ luật mà bạn cuối cùng thực hiện có thể sẽ đơn giản hơn nhiều. 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ể xem một số dòng quan trọng hơn để biết policy mà bạn sẽ phải tạo lại bằng lệnh nội dung như sau:

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

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

Download và cài đặt Dịch vụ Iptables

Để bắt đầu quá trình chuyển đổi server , bạn cần download và cài đặt gói iptables-service từ repository CentOS.

Download và cài đặt các file dịch vụ bằng lệnh :

  • sudo yum install iptables-services

Thao tác này sẽ download và cài đặt các tập lệnh systemd được sử dụng để quản lý dịch vụ iptables . Nó cũng sẽ ghi một số file cấu hình iptablesip6tables mặc định vào folder /etc/sysconfig .

Xây dựng Luật firewall Iptables của bạn

Tiếp theo, bạn cần xây dựng các luật firewall iptables của bạn bằng cách sửa đổi các file /etc/sysconfig/iptables/etc/sysconfig/ip6tables . Các file này chứa các luật sẽ được đọc và áp dụng khi ta khởi động dịch vụ iptables .

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

  • sudo head -2 /etc/sysconfig/iptables

Nếu kết quả trông giống như thế này, vui lòng chỉnh sửa thủ công các file /etc/sysconfig/iptables/etc/sysconfig/ip6tables để triển khai các policy cho firewall iptables 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 file có quyền sudo để thêm các luật của bạn:

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

Sau khi thực hiện các luật của bạn , bạn có thể kiểm tra các luật IPv4 và IPv6 của bạn bằng các lệnh sau:

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

Mặt khác, nếu kết quả từ việc kiểm tra file /etc/sysconfig/iptables trông giống như thế này, bạn không nên chỉnh sửa file theo cách thủ công:

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

Điều này nghĩa là công cụ quản lý system-config-firewall được cài đặt và được sử dụng để quản lý file này. Mọi thay đổi thủ công sẽ bị công cụ overrides . Nếu bạn thấy điều này, bạn nên áp dụng các thay đổi đối với firewall của bạn bằng một trong các công cụ liên quan. Đối với giao diện user văn bản, hãy nhập:

  • sudo system-config-firewall-tui

Nếu bạn đã cài đặt giao diện user đồ họa, bạn có thể chạy nó bằng lệnh :

  • sudo system-config-firewall

Nếu bạn cần một số trợ giúp để tìm hiểu về các luật và cú pháp iptables , các hướng dẫn sau có thể hữu ích mặc dù chúng chủ yếu được nhắm đến vào hệ thống Ubuntu:

Dừng Dịch vụ Tường lửaD và Bắt đầu Dịch vụ Iptables

Tiếp theo, ta cần dừng firewalld hiện tại và kích hoạt các dịch vụ iptables của ta . Ta sẽ sử dụng cấu trúc && để bắt đầu các dịch vụ firewall mới ngay sau 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 firewalld không chạy bằng lệnh :

  • sudo firewall-cmd --state

Bạn cũng có thể thấy rằng các luật bạn cài đặt trong folder /etc/sysconfig đã được tải và áp dụng bằng lệnh :

  • sudo iptables -S
  • sudo ip6tables -S

Đến đây, các dịch vụ iptablesip6tables đ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 server khởi động lại.

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

Tắt Dịch vụ Tường lửaD và Bật Dịch vụ Iptables

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

  • sudo systemctl disable firewalld

Điều này sẽ ngăn dịch vụ tự động khởi động khi server khởi động . Vì dịch vụ firewalld không nên được khởi động theo cách 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ịch vụ. Điều này cũng sẽ ngăn dịch vụ firewalld khởi động 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ụ iptablesip6tables để chúng sẽ tự động khởi động khi server khởi động :

  • sudo systemctl enable iptables
  • sudo systemctl enable ip6tables

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

Kết luận

Triển khai firewall là một bước cần thiết để giữ an toàn cho server của bạn. Mặc dù firewalld là một giải pháp firewall tuyệt vời, nhưng đôi khi việc sử dụng công cụ quen thuộc nhất hoặc sử dụng cùng một hệ thống trên các cơ sở hạ tầng đa dạng hơn lại có ý nghĩa nhất.


Tags:

Các tin liên quan

Cách thiết lập firewall Iptables để bảo vệ lưu lượng truy cập giữa các server của bạn
2015-08-20
Tìm hiểu sâu về kiến trúc Iptables và Netfilter
2015-08-20
Cách triển khai mẫu firewall cơ bản với Iptables trên Ubuntu 14.04
2015-08-20
Cách liệt kê và xóa các quy tắc firewall Iptables
2015-08-14
Iptables Essentials: Các quy tắc và lệnh firewall chung
2015-08-10
Cách cô lập server trong mạng riêng bằng Iptables
2014-06-04
Cách thiết lập firewall bằng Iptables trên Ubuntu 14.04
2014-05-06
Cách thức hoạt động của firewall Iptables
2014-05-02
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