Làm cách nào tôi có thể đặt một bộ quy tắc iptables cụ thể vĩnh viễn?


42

Có "thực hành tốt nhất" hoặc tiêu chuẩn để biến một vài quy tắc iptables thành vĩnh viễn không? Ý tôi là: tự động áp dụng khi khởi động lại hệ thống?

Tôi đang sử dụng VPS với Ubuntu Server 10.04 LTS (Lucid Lynx).

Cảm ơn bạn.

EDIT LỚN: Tôi không muốn BẤT K rule quy tắc nào được duy trì (giống như iptables-persistentgói nào). Tôi muốn chỉ có bộ cụ thể của riêng tôi được tải lại ... nếu các quy tắc khác cuối cùng được thêm vào bằng cách chạy iptables, những quy tắc này sẽ bị loại bỏ ...

Câu trả lời:


52

Phương pháp đơn giản nhất là sử dụng iptables-saveiptables-restore để lưu các quy tắc iptables được xác định hiện tại vào một tệp và (tải lại) chúng (ví dụ: khi khởi động lại).

Vì vậy, ví dụ, bạn sẽ chạy

sudo iptables-save | sudo tee /etc/iptables.conf

để lưu các quy tắc iptables hiện tại của bạn /etc/iptables.confvà sau đó chèn các dòng này vào /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf

3
+1 Câu trả lời của bạn là hoàn hảo cho câu hỏi ban đầu của tôi. Nó cũng khiến tôi nhận ra những gì tôi thực sự muốn, vì vậy tôi đã phải thay đổi câu hỏi từ "Làm thế nào tôi có thể biến quy tắc iptables thành vĩnh viễn?" thành "Làm cách nào tôi có thể đặt một bộ quy tắc iptables cụ thể vĩnh viễn?"
J. Bruni

Nếu bạn có thể, xin vui lòng, chỉnh sửa một chút cho câu trả lời của bạn để phản ánh sự thay đổi trong câu hỏi ... Tôi sẽ vui lòng chấp nhận nó! Tôi cần sử dụng iptables-savemột lần và tải lại luôn (iptables-restore tại /etc/rc.local nghe có vẻ tốt).
J. Bruni

1
Nếu bạn nhận được permission deniedkhi bạn cố gắng sử dụng >thì câu trả lời Stack Overflow này sẽ hữu ích.
David Tuite

2
Sử dụng sudo sh -c "iptables-save > /etc/iptables.conf"thay vìsudo iptables-save > /etc/iptables.conf
Rajat Gupta

31

Cập nhật nhanh về điều này vì bạn có thể đang sử dụng 12.04 ngay bây giờ và mọi thứ tốt hơn.

Các iptables-persistentgói bây giờ giải quyết vấn đề này. Để cài đặt,

sudo apt-get install iptables-persistent

Các quy tắc được xác định khi gói được cài đặt được lưu và sử dụng cho mỗi lần khởi động tiếp theo. Các quy tắc mới được tải sẽ bị loại bỏ khi khởi động lại.

Các tập tin cấu hình nếu bạn làm điều cần phải thay đổi chúng (một lần iptables-persistentđược cài đặt) là /etc/iptables/rules.v4hoặc /etc/iptables/rules.v6cho IPv4 và IPv6 iptables tương ứng.


Nếu bạn thực hiện chỉnh sửa /etc/iptables/rules.v4, làm thế nào để bạn áp dụng nó [chính thức]? Hiện tại tôi đang làmsudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky

24

Tốt hơn /etc/rc.locallà thêm một dòng vào /etc/network/interfacessau khi lưu quy tắc của iptable, như thế này

post-up iptables-restore < /etc/iptables.up.rules

hoặc đó là cùng để đặt bên trong tập tin /etc/network/if-down.d/hay /etc/network/if-post-down.d/hay /etc/network/if-pre-up.d/hay /etc/network/if-up.d/.


1
@Kreker: vui lòng làm rõ, cách tiếp cận của bạn tốt hơn so với thực hiện một kịch bản khôi phục từ rc.localđâu? phương pháp khác không hoạt động trong một số trường hợp?
Rajat Gupta

2
Việc thêm nó vào cấu hình mạng sẽ khiến nó được tải lại sau khi bạn chạy lệnh "khởi động lại mạng dịch vụ". Nó không giới hạn để bắt đầu hệ thống.
K. Darien Freelove

4
Tại sao một iptables-khôi phục sau khi giao diện bị hỏng?
alphadogg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.