Làm cách nào để hạn chế quyền truy cập của người dùng vào internet trong khoảng thời gian?


12

Tôi muốn rằng một trong những người dùng (không có trong danh sách sudoers) có quyền truy cập Internet từ 14:00 đến 16:00 và từ 17:00 đến 18:30. Có thể không? Tôi có thể đặt các khoảng thời gian khác nhau cho các ngày trong tuần khác nhau không?


Bạn nên làm điều này tốt nhất ở cấp điều khiển bộ định tuyến hoặc cổng, thay vì ở chính hệ thống ... theo như tôi biết, không có hệ thống nào dễ dàng trong Ubuntu để hạn chế truy cập internet ở cấp độ người dùng.
Thomas Ward

Khi tôi đặt nó ở cấp bộ định tuyến, thì tất cả người dùng sẽ bị hạn chế ...
cupakob

Afaik (và tôi đã tìm kiếm một giải pháp cho vấn đề này kể từ ngày 9.04), không có giải pháp phần mềm nào cho việc này. Cấp, trên mạng của tôi, chỉ có một người dùng trên mỗi máy tính và tất cả họ kết nối thông qua một hộp máy chủ hoạt động như cổng. Hộp đó có một crontab chặn tất cả truy cập internet trên hệ thống đó sau đó loại bỏ nó sau đó; sau đó nó cũng chạy vào những thời điểm khác nhau mỗi ngày. Vì tò mò, tại sao bạn cần hạn chế quyền truy cập vào khoảng thời gian nghiêm ngặt đó và tại sao bạn cần phải làm điều đó bởi người dùng?
Thomas Ward

Tôi cần nó bởi người dùng, bởi vì một máy tính được sử dụng bởi hai người dùng. và tôi muốn hạn chế quyền truy cập, vì người dùng thứ hai phải tìm hiểu nhiều hơn và không ở lại facebook :) nhưng ý tưởng của bạn với crontab là tốt .... bạn đang sử dụng gì để chặn truy cập? Tôi có thể làm điều tương tự cho người dùng, khi tôi chặn bộ định tuyến :)
cupakob

Bộ định tuyến và hộp cổng của tôi là riêng biệt - vì hộp cổng gán địa chỉ tĩnh (và do đó xử lý dữ liệu) từ các hộp khác, tôi sử dụng iptables để chặn địa chỉ IP riêng được gán tĩnh gửi dữ liệu đi hoặc gửi đi, do đó chặn TẤT CẢ lưu lượng truy cập internet vào hộp. Mỗi crontabs sử dụng lệnh iptables của riêng mình để xóa các mục trong lịch biểu. Đây là một hệ thống không hoàn hảo, vì tôi chỉ có thể mua một bộ định tuyến hoạt động tốt hơn: P
Thomas Ward

Câu trả lời:


7

Bạn có thể sử dụng ownertiện ích mở rộng của iptables để chặn người dùng truy cập mạng, như

 sudo iptables -A OUTPUT -m owner --uid-owner user_you_want_to_block -j REJECT

Bây giờ bạn có thể sử dụng cron để thêm hoặc xóa các quy tắc đó (có thể cần một chút kịch bản shell nếu bạn đã có một số quy tắc có thể xóa hoặc muốn áp dụng cho các người dùng khác nhau vào các thời điểm khác nhau).


Ồ, tôi không biết rằng đã tồn tại: P @Florian: (a) mô-đun hạt nhân nào cần được tải cho việc này? (b) điều này có hiệu quả với -j REJECT --reject-with <argument>?
Thomas Ward

(a) xt_owner được tải tự động. (b) Tôi thấy không có lý do tại sao - từ chối - không nên làm việc với điều này nhưng không bao giờ thử nó.
Florian Diesch

Tôi sẽ kiểm tra điều này sau: P Mô-đun chủ sở hữu có tồn tại trong các trang web iptables, để chi tiết cách sử dụng không? (Lưu ý bên: Tôi đã hỏi mô-đun kernel nào vì kernel của tôi được biên dịch tùy chỉnh: /)
Thomas Ward

trông chính xác những gì tôi đang tìm kiếm .... tôi phải thử nó :)
cupakob

@EvilPhoenix: Vâng, nó được ghi lại trong trang web của iptables
Florian Diesch

8
  1. đăng nhập bằng root:

    sudo su

  2. kiểm tra trạng thái tường lửa của bạn:

    ufw status
    

    nếu tường lửa không hoạt động , hãy phát hành:

    ufw enable
    
  3. nhằm hạn chế sử dụng Wilhelm truy cập internet vào ngày chủ nhật, thứ Ba, thứ Tư và thứ Sáu để các khoảng thời gian cho phép (14: 00-16: 00 & 17: 00-18: 30):

    iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 00:00:01 --timestop 14:00:00 -j DROP 
    iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 16:00:00 --timestop 17:00:00 -j DROP 
    iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 18:30:00 --timestop 23:59:59 -j DROP 
    

    lưu ý phụ : * xin lưu ý sử dụng -Icông tắc thay vì -Acông tắc của iptableslệnh. công -Itắc chèn các quy tắc đã nói ở trên (3.) ở đầu (trên cùng) của chuỗi quy tắc OUTPUT thay vì ở dưới cùng của chuỗi. đặt các quy tắc được nối thủ công lên trên các chính sách tường lửa thông thường là rất quan trọng vì các quy tắc được xử lý từ trên xuống dưới. nếu hầu hết các quy tắc CHẤP NHẬN một gói, chuỗi, OUTPUT, không còn được kiểm tra cho các quy tắc sau có thể đã DROPped gói.

  4. vui lòng đảm bảo rằng các quy tắc đã được nhập đúng:

    iptables -L OUTPUT
    

    để xóa quy tắc không phù hợp, hãy nói quy tắc số 1, (tính dựa trên 1 từ đầu iptables -v -L OUTPUT) iptables -D OUTPUT 1.

  5. lưu iptables để khôi phục trong lần khởi động tiếp theo:

    iptables-save > /etc/iptables.rules
    
  6. trong phần /etc/rc.localbổ sung dòng:

    iptables-restore < /etc/iptables.rules
    

làm xong

-

đã thử nghiệm trên Ubuntu 11.10 (một chiều), ngôn ngữ: anh ấy


1
Câu trả lời tuyệt vời với một giải pháp hoàn hảo! Nhưng lưu ý rằng tất cả các lần được hiểu là UTC , vì vậy người ta có thể phải tự bù chúng cho giờ địa phương - trong trường hợp của tôi central european summer time -2 hours.
Chim cánh cụt chính xác

Tôi đã làm tất cả các bước và họ đã làm việc (truy cập internet bị hạn chế) nhưng sau khi khởi động lại, internet đã hoạt động trở lại. Tôi đã kiểm tra iptables -L OUTPUT và không tìm thấy quy tắc tôi đã thêm ...
Lawand

1
Lý do bạn kích hoạt ufwmặc dù sau này bạn sử dụng là iptablesgì?
balu

@PrecisePenguin có thể được sửa bằng --kerneltztùy chọn ("Sử dụng múi giờ nhân thay vì UTC")
waldyrious
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.