PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables Konfigurationsberechtigung für Benutzer



Fallout
02.03.2007, 12:09
Hallo,

ich habe hier mal eine kleine Frage:
Ich möchte einem bestimmten Benutzer unter OpenSuSE 10.2 die Berechtigung geben, die filter- und ggf. auch andere (wie z. B. die nat-) Tabelle via iptables lesen oder ggf. auch bearbeiten zu dürfen.

tester@linux:~> /usr/sbin/iptables -vnL
iptables v1.3.1: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

Gibt es eine Möglichkeit, die Berechtigung dafür auch anderen Benutzern zu geben?

(Bitte keine Hinweise auf Sicherheitsrisiken und Missbrauchsnebenwirkungen. Ich bin weder Arzt noch Apotheker und weiß was ich nicht kann :brav: )

Gruß Danny

sct
02.03.2007, 12:13
$ /sbin/iptables -L
iptables v1.2.08: can't initialize iptables table `filter': Permission
denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.



$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Fallout
02.03.2007, 12:26
Danke, aber ich suche eine direkte skriptverträglichere Lösung.

Ich hatte mir das so vorgestellt, daß die Tabellen in separaten Dateien abgelegt sind, und der Zugriff auf Dateisystemebene behandelt wird. Aber ich habe noch nichts entsprechendes gefunden, um dort weiterzukommen.

SkydiverBS
02.03.2007, 12:54
Danke, aber ich suche eine direkte skriptverträglichere Lösung.
sudo ist eine scriptvertraegliche Loesung. Wenn das dir nicht weiterhilft muesstest du mal schildern was du genau vor hast.


Ich hatte mir das so vorgestellt, daß die Tabellen in separaten Dateien abgelegt sind, und der Zugriff auf Dateisystemebene behandelt wird. Aber ich habe noch nichts entsprechendes gefunden, um dort weiterzukommen.
Meinst du damit z.B. die filter- oder nat-Tabelle von iptables? Die sind soweit ich weiss nicht im Dateisystem zu finden. Der einzige Weg ist ueber das iptables-Programm.

Gruss,
Philip

Fallout
02.03.2007, 13:39
sudo ist eine scriptvertraegliche Loesung. Wenn das dir nicht weiterhilft muesstest du mal schildern was du genau vor hast.
...nicht im Dateisystem zu finden. Der einzige Weg ist ueber das iptables-Programm.

Deswegen schrieb ich ja auch, daß ich etwas direktes und skriptvertrgälicheres suche :oldman :D
Wie gesagt - ich suchte ursprünglich eine Möglichkeit, dem Benutzer ohne "Umwege" die Berechtigung für iptables und dessen Tabellenabschnitte zu geben. Aber scheinbar habe ich da die falschen Vorstellungen :think:

Trotzdem Danke

SkydiverBS
02.03.2007, 14:02
Wie gesagt - ich suchte ursprünglich eine Möglichkeit, dem Benutzer ohne "Umwege" die Berechtigung für iptables und dessen Tabellenabschnitte zu geben.

Ok jetzt verstehe ich es auch :D ! Du willst einem Benutzer Zugriff auf bestimmte Funktionalitaet (z.B. iptables) geben, die eigentlich root vorbehalten ist ohne dabei Programme wie sudo zu verwenden.

Was du brauchst ist eine Art von Access Control List (http://de.wikipedia.org/wiki/Access_Control_List) die eine feinere Einstellung der Rechte ermoeglicht als das standardmaessig in UNIX enthaltene Rechtesystem. Fuer Linux gibt es da z.B. RSBAC (http://www.rsbac.org/why). Ich habe es selbst noch nicht benutzt aber ich denke das du damit dein Vorhaben realisieren koenntest.

Hoffe das hilft weiter!

Gruss,
Philip

Jabo
02.03.2007, 14:32
IPTabeles ist doch sozusagen ein Kernel-Zustand. Der läßt sich zwar auf Dateiebene abbilden, aber um den tatsächlichen Filter zur Laufzeit zu ändern, muß man dem Kernel einen Befehl geben. Das darf nur root.

Ich würde ein Shellscript schreiben, das iptables mit den zu erlaubenden Parametern ausführt und in /etc/sudoers dieses Script für den Menschen eintragen, der das dürfen soll. Dabei kann man auch festlegen, daß dieser Mensch dafür kein Paßwort braucht.

Wäre das ein Weg?

Fallout
02.03.2007, 14:50
IPTabeles ist doch sozusagen ein Kernel-Zustand. Der läßt sich zwar auf Dateiebene abbilden, aber um den tatsächlichen Filter zur Laufzeit zu ändern, muß man dem Kernel einen Befehl geben. Das darf nur root.

Hm, ok - die Erklärung klingt recht plausibel. Ich hatte mich halt durch die Meldung can't initialize iptables table `filter': Permission
denied (you must be root) auf die Idee bringen lassen, daß sich dies auf die Benutzerverwaltung des Dateisystems bezieht.


...Wäre das ein Weg?

Joah, ich hab's jetzt doch auch über den sudoers-Umweg gemacht, und dem Benutzer einen Paßwortfreien Zugriff auf iptables gegeben. Aber die Idee mit dem Shellscript für eine vordefinierte/eingeschränkte iptables-Nutzung ist auch nicht schlecht. Der Gute soll ja nicht gleich das große Scheunentor öffnen können :D

Danke für die Tipps

Gruß Danny

SkydiverBS
02.03.2007, 15:15
IPTabeles ist doch sozusagen ein Kernel-Zustand. Der läßt sich zwar auf Dateiebene abbilden, aber um den tatsächlichen Filter zur Laufzeit zu ändern, muß man dem Kernel einen Befehl geben. Das darf nur root.

Stimmt. Außer man gibt einem anderen Benutzer das Recht auf eine spezielle Funktion (Linux capability) des Kernels zuzugreifen, die normalerweiße nur von root genutzt werden kann. Siehe Abschnitt zu Linux Capabilities (http://www.rsbac.org/documentation/rsbac_handbook/security_models#linux_capabilities_cap) im RSBAC Handbook:
In the Linux kernel, all root special rights are grouped into a so-called Posix Capabilities list. It can be network administration capabilities, or simlpy full filesystem access. The RSBAC CAP module let you define a minimum and maximum capability set for both users (including root) and processes.

[...]

This model should be used whenever you have to do something which is usually forbidden by standard Linux access control, or if you have to run a root daemon, but want to restrict its list of Posix capability.

Eine Liste der Linux capabilities findet man in der Header-Datei /usr/include/linux/capability.h. Z.B. die für die Netzwerk-Administration zuständige capability:

/* Allow interface configuration */
/* Allow administration of IP firewall, masquerading and accounting */
/* Allow setting debug option on sockets */
/* Allow modification of routing tables */
/* Allow setting arbitrary process / process group ownership on
sockets */
/* Allow binding to any address for transparent proxying */
/* Allow setting TOS (type of service) */
/* Allow setting promiscuous mode */
/* Allow clearing driver statistics */
/* Allow multicasting */
/* Allow read/write of device-specific registers */
/* Allow activation of ATM control sockets */

#define CAP_NET_ADMIN 12


Allerdings erfordert die Konfiguration von capabilities mittels RSBAC sicherlich etwas Einarbeitung. Somit ist die sudo-Methode und die Lösung von Jabo schneller und einfacher zu realisieren.

Gruß,
Philip

Jabo
02.03.2007, 15:42
im RSBAC Handbook

Interessanter Link übrigens, danke. Hatte ich noch nicht gelesen!