Zaman aralıklarında kullanıcının internete erişimini nasıl kısıtlayabilirim?


12

Kullanıcılardan birinin (sudoers listesinde değil) 14:00 - 16:00 arası ve 17:00 - 18:30 arası İnternet erişimine sahip olmasını istiyorum. Mümkün mü? Farklı hafta günleri için farklı zaman aralıkları ayarlayabilir miyim?


Bunu en iyi şekilde, sistemin kendisinden ziyade bir yönlendirici veya ağ geçidi kontrol düzeyinde yapardınız ... bildiğim kadarıyla, Ubuntu'da internet erişimini kullanıcı düzeyinde kısıtlamak için kolay bir sistem yok.
Thomas Ward

Yönlendirici düzeyinde
yaptığımda

Afaik (ve bunun için 9.04'ten beri bir çözüm arıyordum), bunun için herhangi bir yazılım çözümü yok. Ağlarımda, bilgisayar başına sadece bir kullanıcı var ve hepsi ağ geçidi görevi gören bir sunucu kutusu aracılığıyla bağlanıyor. Bu kutu, o sistemdeki tüm internet erişimini engelleyen ve daha sonra onu kaldıran bir crontab'a sahiptir ; daha sonra her gün farklı zamanlarda da çalışır. Meraktan, neden bu katı zaman dilimine erişimi kısıtlamanız gerekiyor ve bunu neden kullanıcı tarafından yapmanız gerekiyor?
Thomas Ward

bir pc iki kullanıcı tarafından kullanıldığı için kullanıcı tarafından ihtiyacım var. ve ben ikinci kullanıcı çok daha fazla bilgi edinmek ve facebook kalmak değil :) çünkü erişimi kısıtlamak istiyorum ama crontab ile fikriniz iyidir .... erişimi engellemek için ne kullanıyorsunuz? Yönlendiriciyi engellediğimde kullanıcı için de aynısını yapabilirim :)
cupakob

Yönlendiricim ve ağ geçidi kutum ayrı - ağ geçidi kutusu diğer kutulardan statik bir adres atarken (ve böylece verileri işliyor), statik atanmış özel IP adresinin giden veya gelen verileri göndermesini engellemek için iptables kullanıyorum. kutuya TÜM internet trafiğini engeller. Crontab'ların her biri, bir zamanlamadaki öğeleri kaldırmak için kendi iptables komutunu kullanır. Kusurlu bir sistem, çünkü daha iyi çalışan bir yönlendirici satın alabildim: P
Thomas Ward

Yanıtlar:


7

ownerBir kullanıcının ağa erişmesini engellemek için iptables uzantısını kullanabilirsiniz.

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

Artık bu kuralları eklemek veya kaldırmak için cron'u kullanabilirsiniz (zaten bazı iptable kurallarınız varsa veya farklı kullanıcılar için farklı zamanlarda olmasını istiyorsanız biraz kabuk komut dosyası gerektirebilir).


Ooh, var olduğunu bilmiyordum: P @Florian: (a) bunun için hangi çekirdek modüllerinin yüklenmesi gerekiyor? (b) bu ​​işe yarıyor -j REJECT --reject-with <argument>mu?
Thomas Ward

(a) xt_owner otomatik olarak yüklenir. (b) Reddetmenin bununla çalışmaması, ama denememesi için hiçbir neden göremiyorum.
Florian Diesch

Bunu daha sonra test edeceğim: P Sahip modül, kullanımını detaylandırmak için iptables yönetiminde var mı? (Yan Not: Çekirdek modülüm özel olarak derlendiğinden hangi çekirdek modülünü sordum: /)
Thomas Ward

tam olarak aradığım şey görünüyor .... denemeliyim :)
cupakob

@EvilPhoenix: Evet, iptables
manpageinde

8
  1. root olarak giriş yap:

    sudo su

  2. güvenlik duvarınızın durumunu kontrol edin:

    ufw status
    

    güvenlik duvarı etkin değilse , sorun:

    ufw enable
    
  3. kullanıcı kısıtlamak amacıyla Wilhelm izin zaman aralıklarında (: 00-16: 00 ve 17: 00-18: 30 14) Pazar, Salı, Çarşamba ve Cuma günleri internet erişimi:

    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 
    

    Yan not : * kullanımını unutmayın -Ianahtarı yerine -Abir geçiş iptableskomutu. -Ianahtar ÇIKIŞ kural zincirinin başlangıcı (üst) en ziyade zincir altındaki yukarıda belirtilen kurallara (3) sokar. kurallar yukarıdan aşağıya işlendiğinden, elle eklenen kuralların normal güvenlik duvarı politikalarının üzerine yerleştirilmesi önemlidir. en üstteki kurallar bir paketi KABUL EDERSE, zincir, ÇIKTI, paketi DROPped etmiş olabilecek aşağıdaki kurallar için artık denetlenmez.

  4. lütfen kuralların gerçekten doğru girildiğinden emin olun:

    iptables -L OUTPUT
    

    Uygun olmayan bir kuralı silmek için, kural 1 numaralı, (üstünden 1 tabanlı sayımı demek iptables -v -L OUTPUTsorunu): iptables -D OUTPUT 1.

  5. iptables'ı bir sonraki önyüklemeye geri yüklemek için kaydet:

    iptables-save > /etc/iptables.rules
    
  6. içinde /etc/rc.localekleme hattı:

    iptables-restore < /etc/iptables.rules
    

tamam

-

Ubuntu 11.10 (oneiric), yerel ayar:


1
Mükemmel bir çözümle harika cevap! Ancak tüm zamanların UTC olarak yorumlandığına dikkat edin , bu yüzden birinin yerel saat için manuel olarak dengelenmesi gerekebilir - benim durumumda central european summer time -2 hours.
Hassas Penguen

Tüm adımları yaptım ve çalıştılar (internet erişimi sınırlıydı) ama yeniden başlattıktan sonra internet tekrar açıldı. Iptables -L OUTPUT'u kontrol ettim ve eklediğim kuralları bulamadım ...
Lawand

1
Daha ufwsonra kullanmanıza rağmen etkinleştirmenin nedeni nedir iptables?
balu

@PrecisePenguin --kerneltzseçeneği ile düzeltilebilir ("UTC yerine çekirdek saat dilimini kullan")
18:32
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.