如何限制用户在特定时间间隔内访问互联网?

如何限制用户在特定时间间隔内访问互联网?

我希望其中一个用户(不在 sudoers 列表中)可以在 14:00 至 16:00 和 17:00 至 18:30 之间访问互联网。可以吗?我可以为不同的星期几设置不同的时间间隔吗?

答案1

您可以使用 iptables 的owner扩展来阻止用户访问网络,例如

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

现在您可以使用 cron 来添加或删除这些规则(如果您已经有一些 iptable 规则或希望在不同时间为不同的用户执行此操作,则可能需要一些 shell 脚本)。

答案2

  1. 以 root 身份登录:

    须藤苏

  2. 检查防火墙的状态:

    ufw status
    

    如果防火墙不活跃, 问题:

    ufw enable
    
  3. 为了限制用户威廉周日、周二、周三和周五在允许的时间段内(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 
    

    边注:*请注意命令中使用-Iswitch 而不是-Aswitch iptables-I交换机将上述规则(3.)插入到OUTPUT规则链的开头(顶部),而不是链的底部。将手动附加的规则放在常规防火墙策略的顶部非常重要,因为规则是从上到下处理的。如果最顶层的规则接受了数据包,则不再检查链OUTPUT中可能已丢弃该数据包的以下规则。

  4. 请确保规则确实已正确输入:

    iptables -L OUTPUT
    

    为了删除不适当的规则,比如说规则 1,(从 的顶部开始按 1 计数iptables -v -L OUTPUT)问题:iptables -D OUTPUT 1

  5. 保存 iptables 以便在下次启动时恢复:

    iptables-save > /etc/iptables.rules
    
  6. 附加/etc/rc.local以下行:

    iptables-restore < /etc/iptables.rules
    

完毕

--

在 Ubuntu 11.10 (oneiric) 上测试,语言环境:he

相关内容