Cách hạn chế truy cập internet đối với một người dùng cụ thể trên mạng bằng iptables trong Linux


11

Giả sử có hai người dùng trên mạng LAN, A và B. Làm cách nào để hạn chế người dùng A truy cập internet bằng quy tắc iptables và lưu quy tắc để sau khi khởi động lại, chúng vẫn hiệu quả. Giả sử tôi cũng muốn cấp quyền truy cập cho người dùng đó vào một lúc nào đó; Làm thế nào để tôi kích hoạt lại? Tôi đang sử dụng Ubuntu Linux 10.04. Sẽ thật tuyệt nếu có ai chỉ cho tôi cách thực hiện từ dòng lệnh, vì tôi thường đăng nhập vào máy bằng thông tin đăng nhập ssh cục bộ.

Câu trả lời:


17

Tôi giả sử rằng người dùng A và B đang sử dụng cùng một máy Linux nơi bạn là quản trị viên. (Không hoàn toàn rõ ràng từ câu hỏi của bạn. Nếu A và B có máy tính riêng mà họ là quản trị viên, thì đó là một vấn đề hoàn toàn khác.)

Lệnh sau sẽ ngăn người dùng với uid 1234 gửi các gói trên giao diện eth0:

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

Tôi khuyên bạn nên đọc hướng dẫn iptables của Ubuntu để làm quen với công cụ này (và tham khảo trang hướng dẫn để biết những thứ nâng cao như bảng mangle).

Người dùng vẫn có thể chạy ping (vì đó là root setuid), nhưng không phải bất cứ thứ gì khác. Người dùng vẫn có thể kết nối với proxy cục bộ nếu proxy đó được bắt đầu bởi người dùng khác.

Để loại bỏ quy tắc này, thêm -Dvào lệnh trên.

Để làm cho quy tắc vĩnh viễn, hãy thêm nó vào /etc/network/if-up.d/my-user-restrictions(làm cho tập lệnh thực thi bắt đầu bằng #!/bin/sh). Hoặc sử dụng iptables-save(xem hướng dẫn iptables Ubuntu để biết thêm thông tin).


Cảm ơn rât nhiều. Và có giả định của bạn là đúng. Dựa trên câu trả lời của bạn và hướng dẫn ubfox đã đề cập, đó có phải là cách làm đúng nếu tôi cũng muốn cấp quyền truy cập ssh cho người dùng bị hạn chế (đôi khi tôi muốn đăng nhập bằng tài khoản của mình qua ssh): iptables -t mangle -A OUTPUT - o eth0 -m chủ sở hữu --uid-own 1234 -p tcp --dport ssh -j CHẤP NHẬN iptables -t mangle -A OUTPUT -o eth0 -m chủ sở hữu --uid-own 1234 -j DROP Tôi đặt các quy tắc đó như trong các tập tin được đề cập và mọi thứ dường như hoạt động tốt.
Marwan Tanager

@Marwan Tôi nghĩ điều đó đúng. Lưu ý rằng nếu bạn cho phép truy cập ssh, bạn cho phép khá nhiều thứ vì ssh có thể tầm thường các giao thức khác.
Gilles 'SO- ngừng trở nên xấu xa'

0

Tôi sẽ không sử dụng iptables cho việc này.

Tôi giả sử rằng A và B được liên kết với các IP cố định ClientA và ClientB. Tôi giả sử rằng Internet-Proxy của bạn là ServerI (Ubuntu-Server của bạn?).

Vì vậy, tôi sẽ thêm một mục từ chối / thả định tuyến từ ClientA đến ServerI.

Tôi không sử dụng Ubuntu - vì vậy tôi không thể cho bạn biết nên sử dụng tệp cấu hình nào để cài đặt đó vĩnh viễn (tồn tại khi khởi động lại).

Có lẽ ai đó có thể thêm chi tiết đó?

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.