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 khungnetfilter
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 iptables
và ip6tables
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
và /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
và /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:
- Cách cài đặt firewall bằng Iptables trên Ubuntu 14.04
- Iptables Essentials: Các luật và lệnh firewall chung
- Cách triển khai mẫu firewall cơ bản với Iptables trên Ubuntu 14.04
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ụ 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 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ụ iptables
và ip6tables
để 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.
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ạn2015-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