Řekněme, že v síti LAN jsou dva uživatelé, A a B. Jak omezím uživatele A v přístupu k internetu pomocí pravidel iptables a pravidla uložím tak, aby po restartu byla stále účinná. Předpokládejme také, že chci v určitém okamžiku udělit tomuto uživateli přístup; jak to znovu povolím? Používám Ubuntu Linux 10.04. Bylo by hezké, kdyby mi někdo ukázal, jak to udělat z příkazového řádku, protože se často přihlašuji k počítači pomocí místního přihlášení ssh.
Přijatá odpověď:
Předpokládám, že uživatelé A a B používají stejný počítač se systémem Linux, kde jste správcem. (Z vaší otázky to není úplně jasné. Pokud A a B mají své vlastní počítače, na kterých jsou správci, je to úplně jiný problém.)
Následující příkaz zabrání uživateli s uid 1234 odesílat pakety na rozhraní eth0
:
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
ip6tables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
Doporučuji přečíst si průvodce Ubuntu iptables, abyste se s tímto nástrojem seznámili (a pokročilé věci, jako je mandlová tabulka, najdete v manuálové stránce).
Uživatel bude stále moci spouštět ping (protože je to setuid root), ale ne nic jiného. Uživatel se bude i nadále moci připojit k místnímu proxy, pokud byl tento proxy spuštěn jiným uživatelem.
Chcete-li toto pravidlo odstranit, přidejte -D
na příkaz výše.
Aby bylo pravidlo trvalé, přidejte ho do /etc/network/if-up.d/my-user-restrictions
(udělejte z toho spustitelný skript začínající #!/bin/sh
). Nebo použijte iptables-save
(další informace naleznete v příručce Ubuntu iptables).