Điểm:2

iptables bị xóa khi tải lại tường lửa

lá cờ br

Tôi đang chạy trên Rocky Linux (dựa trên RHEL8) và đang gặp khó khăn với tường lửa và iptables. Chà, dù sao thì cũng không hẳn là iptables... Để tôi giải thích.

Tôi thiết lập cụm K8S trên VMWare ESXi với sáu máy ảo, tất cả đều giống nhau. Tôi cần để chạy tường lửa, với môi trường này. Tôi đang sử dụng Weave CNI, đang sử dụng iptables để tạo các quy tắc mạng của nó.

Đây là những phát hiện ban đầu của tôi:

  • trên container docker dệt Máy chủ VM, iptables với phụ trợ nf_tables được sử dụng
    • điều này được xác nhận bởi iptables -V đầu ra mang lại cho tôi iptables v1.8.4 (nf_tables)
  • tường lửa được thiết lập để sử dụng nftables làm chương trình phụ trợ (Tường lửa phụ trợ)
  • dịch vụ iptables không tồn tại (Không thể tìm thấy đơn vị iptables.service.)
  • dịch vụ nftables đã được tải, nhưng không hoạt động
  • dịch vụ tường lửa đang chạy
  • nếu tôi bắt đầu dịch vụ nftables, dịch vụ tường lửa sẽ bị dừng và ngược lại

Theo sự hiểu biết của tôi về tường lửa, bởi vì nó sử dụng nftables, nên nó hoàn toàn không xóa iptables, theo ý kiến ​​của họ bài viết trên blog về phụ trợ nftables.

Khi dệt đặt quy tắc iptables của nó (đối với chính sách mạng và định tuyến), tôi có thể thấy chúng bằng iptables-save hoặc bộ quy tắc danh sách nft. Điều này có nghĩa là ngay cả khi dệt đang sử dụng iptables để đặt quy tắc của nó, thì trên thực tế, chúng được đặt thành nftables.

Bây giờ, vấn đề của tôi là nếu tôi tải lại tường lửa (với tường lửa-cmd --reload hoặc systemctl tải lại tường lửa.service) sau khi dệt đặt quy tắc của nó, tất cả các quy tắc đều bị xóa! Tôi có thể xác nhận rằng với iptables-save hoặc bộ quy tắc danh sách nft.

Nó có thể liên quan đến việc sử dụng iptables lệnh thay vì nft? Ngay cả khi iptables sử dụng chương trình phụ trợ nf_tables?

Xin lưu ý rằng vấn đề này được giải quyết một phần bằng cách dệt, vì chúng giám sát các quy tắc để xem liệu một chuỗi WEAVE-CANARY đặc biệt (trống) có còn tồn tại hay không. Nếu không có, chúng sẽ tạo lại các tuyến định tuyến, nhưng không có gì được thực hiện đối với các quy tắc chính sách mạng. Đây hiện là một yêu cầu tính năng.

Các giải pháp có thể là gì? Tôi đã nghĩ đến việc nối vào dịch vụ tường lửa để thêm ExecStopPreExecReloadPre để lưu các quy tắc khác ngoài quy tắc của tường lửa vào /etc/sysconfig/nftables.conf (hoặc một tệp khác, được bao gồm từ đó), nhưng nó hơi khó hiểu và tôi không thích “giải pháp” này. Hơn nữa, tôi thậm chí không chắc rằng điều này sẽ hoạt động, vì dịch vụ nftables đã ngừng hoạt động.

Chỉnh sửa: Tôi đã thực hiện một số thử nghiệm và hành vi thực sự kỳ lạ.

Tôi đã thêm một quy tắc với iptables: iptables -I INPUT 3 -s 10.1.1.9 -j DROP, sau đó tải lại tường lửa và quy tắc không còn nữa! Tôi đã thử tương tự với nft: nft thêm bộ lọc ip quy tắc INPUT ip saddr 10.1.1.9 drop, tường lửa đã tải lại và kết quả vẫn như cũ...

Điều này khiến tôi phát điên, tường lửa không nên chạm vào các bảng quy tắc khác ngoài bảng quy tắc của chính nó, nhưng đây không phải là trường hợp ở đây!

A.B avatar
lá cờ cl
A.B
Nếu tường lửa thực sự sử dụng nftables làm phụ trợ, thì nó chỉ hoạt động với bảng tường lửa: https://firewalld.org/2018/07/nftables-backend#only-flush-firewallds-rules . Có bảng tường lửa không?
A.B avatar
lá cờ cl
A.B
Xem thêm Q/A này: https://serverfault.com/questions/1046179/rhel-centos-now-to-add-nftable-rules-to-firewalld-on-system-boot (lưu ý nhận xét của tôi về dịch vụ nftables tuôn ra tất cả).
lá cờ br
@ A.B Thật vậy, có một bảng tường lửa.Và FirewallBackend được đặt thành nftables trong cấu hình tường lửa, như đã nêu trong bài đăng của tôi. Đó là lý do tại sao nó khiến tôi phát điên ^^' Đã xem và đọc Q/A mà bạn đã chỉ, nhưng tôi không nghĩ rằng điều đó sẽ khắc phục được sự cố, vì dịch vụ nftables hoàn toàn không chạy (do dịch vụ tường lửa đang chạy). Trên thực tế, ý tưởng kết nối với dịch vụ tường lửa được truyền cảm hứng rất nhiều từ câu trả lời của bạn. Tuy nhiên, tôi đã thử thêm một số quy tắc vào /etc/sysconfig/nftables.conf và tải lại tường lửa nhưng tôi không thấy các quy tắc đó, vì vậy đó không phải là giải pháp hiệu quả... Tôi hơi bị kẹt.
lá cờ br
@A.B. Để rõ ràng, đây là các bảng tôi có rn: ip filter, ip6 filter, bridge filter, ip security, ip raw, ip mangle, ip nat, ip6 security, ip6 raw, ip6 mangle, ip6 nat, bridge nat, inet firewalld, tường lửa ip, tường lửa ip6. Weave đang thêm các quy tắc của nó vào bộ lọc ip, ip mangle và ip nat. Khi tải lại/khởi động lại tường lửa, các bảng đó sẽ bị xóa.
A.B avatar
lá cờ cl
A.B
Thật vậy, khi bắt đầu/dừng/tải lại tường lửa, một quy tắc nftables trong một bảng khác với iptables tương thích hoặc tường lửa được giữ nguyên, nhưng các quy tắc của iptables thì không. Vì vậy, blog tôi liên kết đến dường như là sai.
A.B avatar
lá cờ cl
A.B
Lưu ý rằng tường lửa với phụ trợ nftables vẫn có thể sử dụng iptables: với các quy tắc trực tiếp. Vì vậy, đó có thể là lý do khiến iptables vẫn bị xóa. Bây giờ để tìm xem điều này được ghi lại ở đâu nếu nó là...
lá cờ br
Than ôi, đó là blog tường lửa chính thức... Tôi nghĩ tốt hơn hết là tôi nên gửi một vấn đề lên GitHub của họ! Cảm ơn sự giúp đỡ btw :)
Điểm:2
lá cờ br

Nguồn: Trả lời vấn đề GitHub từ cộng tác viên của tường lửa

Có một vài điều đang xảy ra ở đây.

  • biến thể nft của iptables sẽ thêm các quy tắc vào nftables trong các bảng đã biết: lọc, tự nhiên, thô, vân vân.
  • tường lửa luôn xóa tất cả iptables quy tắc (ví dụ: iptables -F -t bộ lọc) sẽ xóa tất cả các chuỗi trong lọc cái bàn. Điều này tương ứng với cái đã biết nftables tên bảng đã đề cập ở trên.

Tường lửa nftables phụ trợ chỉ có chạm vào tường lửa bảng, nhưng bảng lọc, tự nhiên, thô, v.v. được chạm gián tiếp thông qua iptables-nft để hỗ trợ các quy tắc trực tiếp của iptables. Không thể thay đổi hành vi này do tính tương thích. Firewalld sẽ không chạm vào khác nftables mặc dù vậy, ví dụ: một bảng tên foobar sẽ không bị đỏ mặt.

Thật không may, chúng tôi không thể làm bất cứ điều gì ở đây. Chúng tôi hoặc a) duy trì khả năng tương thích và để iptables các bảng đã đặt tên bị xóa hoặc b) thả iptables hỗ trợ quy tắc trực tiếp. Tùy chọn A thân thiện với người dùng nhất.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.