Фильтрация трафика по пользователю
Правило iptables с условием owner не работает в песочнице AgentBox, потому что в ядре нет модуля xt_owner. Вместо него используйте выражения nftables meta skuid или meta skgid.
В примере создаётся цепочка для исходящего трафика и выбираются процессы с UID 1000. Правило только считает и пропускает их пакеты — замените действие на нужную вашему приложению фильтрацию.
mjs
import { Sandbox } from "@abox-dev/sdk";
const sandbox = await Sandbox.create();
try {
await sandbox.commands.run(
"apt-get update -qq && " +
"DEBIAN_FRONTEND=noninteractive apt-get install -y -qq nftables",
{ user: "root", timeoutMs: 120_000 },
);
const result = await sandbox.commands.run(
"nft add table inet user_filter && " +
"nft 'add chain inet user_filter output { type filter hook output priority 0; policy accept; }' && " +
"nft add rule inet user_filter output meta skuid 1000 counter accept && " +
"nft list chain inet user_filter output",
{ user: "root" },
);
console.log(result.stdout);
} finally {
await sandbox.kill();
}Запускайте команды настройки сети от пользователя root. Таблица существует только внутри песочницы и удаляется вместе с ней.