quy tắc iptables để cho phép tất cả lưu lượng truy cập có nguồn gốc địa phương?


11

Tôi đã tự hỏi nếu ai đó có thể giúp tôi với quy tắc iptables sau đây:

Chúng tôi muốn cho phép BẤT K and và TẤT CẢ nguồn gốc cục bộ (như trong, trên máy chủ đang chạy iptables).

DNS, HTTP, v.v ... tất cả đều như vậy. Bất kỳ kết nối nào được khởi tạo bởi máy chủ đang chạy iptables đều phải được cho phép.

Hiện tại chúng tôi đang sử dụng chính sách mặc định OUTPUT, CHẤP NHẬN. Điều này có đúng không? Các đầu vào bị chặn, vì vậy tôi cho rằng điều này có nghĩa là các kết nối (trừ những kết nối chúng tôi cho phép) không thể được khởi động vì chúng sẽ bị hủy trước khi phía chúng tôi có thể đạt được chính sách OUTPUT?

Xin lỗi, kỹ năng iptables của tôi rất yếu;)

Cám ơn sự tử tế của anh.

Câu trả lời:


26

Bạn cần hai quy tắc để làm điều đó:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Một số lưu ý.

  • Các quy tắc có sẵn mà bạn có thể đã làm điều này rồi, nhưng trông khác.
  • Điều này sử dụng -Iđể buộc các quy tắc này là đầu tiên. iptablesquy tắc được đánh giá từ trên xuống.
  • Các cờ -o-icó nghĩa là "ra" và "trong" tương ứng. Thay thế eth0bằng tên giao diện ethernet thích hợp.

chúng tôi có cả hai :) tôi đã không đề cập đến cái thứ 2 bởi vì như tôi đã nói ... kỹ năng iptables của tôi là nước sốt yếu. cảm ơn đã làm rõ :)
nặc danh-một

2
-d 0.0.0.0/0là dư thừa và không cần thiết.
zapstar

Câu trả lời chính xác. Nhưng bây giờ tôi có thể ping máy chủ và tôi không hiểu tại sao. Bạn có thể giải thích?
Daniel

@Daniel Bởi vì nếu bạn chỉ cho phép lưu lượng truy cập đi, thì phản hồi ping sẽ bị bộ lọc gói bỏ qua khi đến máy chủ của bạn. Để ngăn chặn điều này, bạn cũng cần cho phép lưu lượng truy cập đến được liên kết với cùng một phiên như hoặc có liên quan đến bất kỳ lưu lượng gửi đi nào. Nói cách khác, vì phản hồi ping có liên quan đến yêu cầu ping, nên nó được cho phép. Nếu có một yêu cầu ping đến và không có ping gửi đi được ghi lại trong bảng phiên thì gói tin đến sẽ bị loại bỏ. Hy vọng rằng có ý nghĩa!
bahamat

@bahamat: Sau khi tôi thử lại, tôi thấy tôi cần cho phép lưu lượng truy cập icmp một cách rõ ràng. Và tôi đã nói về việc có thể ping máy chủ, nơi tôi đã thực hiện các quy tắc ở trên. Không thể sao chép nó btw., Có lẽ tôi đã phạm sai lầm ở đâu đó. Dẫu sao cũng xin cảm ơn.
Daniel

0

Hiện tại chúng tôi đang sử dụng chính sách mặc định OUTPUT, CHẤP NHẬN.

Thế là đủ cho OUTPUT vì Netfilter không cần các quy tắc đặc biệt để bắt đầu theo dõi kết nối trạng thái.

Nhưng nếu bạn muốn lọc lưu lượng truy cập trong nước theo chính sách " từ chối mặc định " thì có thể thực hiện bằng cách chuyển đổi INPUT-chain sang DROP:iptables -P INPUT DROP

Sau đó, tất cả sẽ được thiết lập chỉ với 2 quy tắc :

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Hãy chú ý đến quy tắc cho phép lưu lượng truy cập đầu vào trên giao diện loopback - như tôi đã chỉ ra trong bài đăng trên blog của mình " Tường lửa tối thiểu cho người dùng cuối ", trừ khi được cho phép rõ ràng, lưu lượng truy cập loopback sẽ không được xử lý bằng cách kiểm tra trạng thái "đã thiết lập", so với trả về giao thông qua, nói , eth0.

Để đảm bảo ruleset tối thiểu này được nạp " như là " w / o can thiệp với quy tắc mà đã có thể có mặt ở đó, nó thuận tiện để sử dụng iptables-restoretrong SHELL-session:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Trước khi làm điều đó, đảm bảo bạn sẽ không cắt kết nối mạng của chính mình 1 , mặc dù các phiên SSH đã mở sẽ tiếp tục hoạt động bình thường, các nỗ lực để mở các kết nối mới sẽ không hoạt động.

__

  1. Tất nhiên bạn có thể thêm các quy tắc khác để cho phép các kết nối như vậy. Nó có thể đơn giản như chỉ -A INPUT -j ACCEPT -p tcp --dport 22- không cần phải mày mò -m stateở đây. Cũng đừng quên sửa lptables-restorelại iptables-restoretrước khi dùng thử;)
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.