假设LAN上有两个用户A和B。如何使用iptables规则限制用户A的互联网访问并保存规则,以便重新启动后仍然有效。还假设我想在某个时候授予该用户访问权限;如何再次启用它?我正在使用Ubuntu Linux 10.04。如果有人向我展示如何从命令行进行操作,那将是很好的选择,因为我经常使用本地ssh登录名登录计算机。
假设LAN上有两个用户A和B。如何使用iptables规则限制用户A的互联网访问并保存规则,以便重新启动后仍然有效。还假设我想在某个时候授予该用户访问权限;如何再次启用它?我正在使用Ubuntu Linux 10.04。如果有人向我展示如何从命令行进行操作,那将是很好的选择,因为我经常使用本地ssh登录名登录计算机。
Answers:
我假设用户A和B使用的是您与管理员相同的Linux计算机。(您的问题尚不完全清楚。如果A和B是自己的计算机并由管理员管理,则是完全不同的问题。)
以下命令将阻止具有uid 1234的用户在接口上发送数据包eth0
:
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
我建议阅读Ubuntu iptables指南,以对该工具有基本的了解(并参阅手册页以了解诸如mangle表之类的高级内容)。
用户仍然可以运行ping(因为它是setuid root),但不能执行其他任何操作。如果该本地代理是由另一个用户启动的,则该用户仍将能够连接到该本地代理。
要删除此规则,请添加-D
到上面的命令中。
要使规则永久生效,请将其添加到/etc/network/if-up.d/my-user-restrictions
(使可执行脚本以开头#!/bin/sh
)。或使用iptables-save
(有关更多信息,请参见Ubuntu iptables指南)。