Quy tắc iptables đúng để cho phép apt-get tải xuống chương trình là gì?


12

Khi tôi gõ một cái gì đó như sudo apt-get install firefox, mọi thứ hoạt động cho đến khi nó hỏi tôi:

After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Sau đó, thông báo lỗi được hiển thị: Failed to fetch: <URL>

Quy tắc iptables của tôi như sau:

-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Tôi nên thêm gì để cho phép apt-get tải xuống các bản cập nhật? Cảm ơn

Câu trả lời:


17

apt-get hầu như luôn tải xuống qua HTTP nhưng cũng có thể sử dụng FTP, vì vậy câu trả lời ngắn có lẽ là cho phép kết nối HTTP bên ngoài ... và cả DNS, tất nhiên.

Cấu hình bạn hiện không cho phép tất cả lưu lượng truy cập mạng đi ( ESTABLISHEDquy tắc bạn có trong OUTPUTchuỗi không hiệu quả do sẽ không có phiên nào được thiết lập). Bạn có cần cho phép CHỈ cập nhật apt-get trong khi vẫn không cho phép mọi thứ khác không? iptablescó lẽ là công cụ sai cho công việc đó vì nó không thực sự diễn giải các URL và cho phép chuyển HTTP một cách có chọn lọc. Bạn muốn sử dụng máy chủ proxy HTTP cho công việc này.

Bạn có thể sử dụng một thiết lập đơn giản hơn sẽ cho phép tải xuống apt-get, nhưng lưu ý rằng điều này cũng cho phép tất cả các kết nối DNS và HTTP gửi đi khác, có thể không phải là điều bạn muốn.

iptables -F OUTPUT  # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Nếu các nguồn APT của bạn bao gồm các nguồn HTTPS hoặc FTP hoặc nguồn HTTP trên các cổng khác ngoài 80, bạn cũng sẽ phải thêm các cổng đó.

Tiếp theo, bạn sẽ phải cho phép lưu lượng truy cập trở lại. Bạn có thể làm điều đó với quy tắc duy nhất này cho phép mọi kết nối được thiết lập:

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

(An toàn khi cho phép tất cả các kết nối được thiết lập trong nước khi sử dụng theo dõi kết nối, bởi vì chỉ những kết nối mà bạn cho phép nếu không sẽ được chuyển sang trạng thái THÀNH LẬP.)


Xin chào, cảm ơn phản hồi của bạn. Nó đã hoạt động, nhưng bạn có nghĩ rằng có thể có bất kỳ mối quan tâm bảo mật nào với việc mở các cổng OUTPUT này không? Cảm ơn
anthony01

1
Hầu hết các tường lửa, bao gồm hầu như tất cả các hộp kiểu SOHO, cho phép các kết nối ra bên ngoài không bị hạn chế. Mọi người thường không có yêu cầu để hạn chế lưu lượng đi. Nhưng nó phụ thuộc vào yêu cầu của bạn. Thiết lập hiện tại của bạn ngăn người dùng trên máy trạm bị nghi ngờ duyệt Internet. Nếu đây là những gì bạn cần làm, thì bạn không thể sử dụng giải pháp dựa trên iptables này vì nó khiến cho trình duyệt web được cho phép.
Celada

Và nếu mục đích là chặn trình duyệt web, thì dù sao đó cũng là công cụ sai. Sử dụng NetFilter / IPTables để chặn tất cả các kết nối ra ngoài để ngăn chặn việc duyệt web của nhân viên cũng giống như sử dụng bazooka để mở quả óc chó. Bạn cần một proxy web minh bạch sẽ đăng nhập sử dụng không phù hợp trong khi cho phép duyệt liên quan đến công việc cho người dùng được ủy quyền.
Magellan

Sau nhiều giờ tìm kiếm, câu trả lời này cuối cùng đã giúp tôi giải quyết vấn đề với máy chủ cục bộ của riêng tôi. Bất kể tôi đã làm gì, tất cả lưu lượng truy cập đi đều bị chặn cho đến khi tôi cho phép rõ ràng kết nối DNS qua cổng 53. Mặc dù vậy, vì trình quản lý gói của tôi phàn nàn rằng nó không thể giải quyết các máy chủ.
Hành tây
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.