• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Internetzugang verwehren, aber wie ? (Gelöst)

Guten Tag,
ich nutze openSuse10.2 und möchte nicht allen Nutzern den Internetzugriff gewähren.
Wie stelle ich das am einfachsten an ?
Momentan besitzen alle den Zugang, aus den Systemgruppen unter Yast werde ich nicht schlau, denn es scheint völlig wurscht zu sein ob dialout gesetzt ist oder nicht.
Es wäre nett, wenn Ihr paralell zur grafischen Lösung noch eine Konsolenlösung parat hättet, denn ich bin dabei mich in die Konsolengeschichte einzuarbeiten.

Danke für die Hilfe !
 
OP
Munin
Guten Tag,
Die Nutzer sind alle lokal angemeldet. HIerbei sind 2 Kinder mit eigenen Accounts. Diese beiden Accounts sollen nicht ins Internet. Bisher habe ich nur den Browser versteckt, aber so blöd sind die nicht.
:oops:

Wäre gut wenn mir jemand einen Rat geben könnte.
 
den browser nur zu "verstecken" (wahrscheinlich nur das icon auf dem desktop oder im startmenü zu löschen oder umzubenennen), reicht sicher auf dauer nicht zu. besser wäre da schon, die zugriffsrechte auf die binaries entsprechend einzuschränken, dass sie nicht mehr von jedem ausführbar sind, sondern nur von einer berechtigten gruppe, der die zwerge dann eben nicht angehören:

Code:
chmod o-x /usr/lib/firefox/firefox-bin /opt/kde3/bin/konqueror
chgrp dialout /usr/lib/firefox/firefox-bin /opt/kde3/bin/konqueror

Das verhindert natürlich generell die benutzung dieser browser, auch lokal. im falle des konquerors, der ja unter KDE auch als dateimanager bentzt wird, können dadurch noch weitere probleme auftreten.

eine professionelle variante wäre es, den internet zugriff nur über einen proxy server zu erlauben und diesen mit einer authentifizierung zu versehen. da dann sowohl der browser als auch der proxy auf derselben maschine liefen, müssten aber spezielle firewall regeln gesetzt werden, so dass nur noch der proxy zugriff ins internet hat.

sowohl die konfiguration des proxy als auch der firewall lassen sich für diesen fall allerdings nicht über grafische tools bewerkstelligen, sondern nur über einigermaßen aufwändige textkonfigurationen. für einsteiger wäre das aber eher nicht zu empfehlen.

noch eine möglichkeit ungefähr dazwischen ist die sperrung aller netzwerkkommunikation, die von einer bestimmten benutzergruppe kommt. dazu müsste als root folgender befehl ausgeführt werden:

Code:
iptables -I OUTPUT -o eth0 -m owner --gid-owner users -j REJECT

damit wird alles zurückgewiesen, das von einem prozess kommt, dessen effektive gruppenkennung "users" entspricht. Ggf. sind die Parameter eth0 und users entsprechend anzupassen. zu beachten ist allerdings noch, dass in diesem beispiel "users" die primäre gruppe der betreffenden benutzer sein muss. das kann ja mit der benutzerverwaltung im yast eingestellt werden.

die herausforderung ist nun nur noch, diesen befehl bei jedem boot auszuführen, aber _nachdem_ eventuell andere firewall scripte laufen, da diese i. a. zuerst alle firewallregeln löschen und/oder ihre eigenen regeln an den anfang setzen.

-- asem
 
Asem schrieb:
die herausforderung ist nun nur noch, diesen befehl bei jedem boot auszuführen, aber _nachdem_ eventuell andere firewall scripte laufen, da diese i. a. zuerst alle firewallregeln löschen und/oder ihre eigenen regeln an den anfang setzen.
Das ist weniger das Problem.
In der SUSE-Firewall können eigene Regeln einfach eingefügt werden.
=> /etc/sysconfig/SuSEfirewall2 --> CUSTOM_RULES (o.ä.)

Asem schrieb:
besser wäre da schon, die zugriffsrechte auf die binaries entsprechend einzuschränken, dass sie nicht mehr von jedem ausführbar sind, sondern nur von einer berechtigten gruppe, der die zwerge dann eben nicht angehören:
Ist IMHO keine optimale Lösung.
Aber wenn du die Zugriffsrechte von Programmen/Binaries ändern willst, dann bitte über die Datei /etc/permissions.local:
Code:
/foo/bar/command owner:group 0750
Und anschließend
Code:
/sbin/SuSEconfig --module permissions
ausführen.
 
OP
Munin
Guten Tag,

Asem schrieb dies hier:

"noch eine möglichkeit ungefähr dazwischen ist die sperrung aller netzwerkkommunikation, die von einer bestimmten benutzergruppe kommt. dazu müsste als root folgender befehl ausgeführt werden:

Code:
iptables -I OUTPUT -o eth0 -m owner --gid-owner users -j REJECT


damit wird alles zurückgewiesen, das von einem prozess kommt, dessen effektive gruppenkennung "users" entspricht. Ggf. sind die Parameter eth0 und users entsprechend anzupassen. zu beachten ist allerdings noch, dass in diesem beispiel "users" die primäre gruppe der betreffenden benutzer sein muss. das kann ja mit der benutzerverwaltung im yast eingestellt werden.

So ähnlich hatte ich es mir eigentlich vorgestellt. Ich habe also eine neue Gruppe erstellt, die beiden Knirpse als Standard eingetragen, Asems Befehl angepasst und ausgeführt.
Siehe da, es klappt.

Wo muss ich den jetzt den Befehl einfügen, um ihn beim booten auszuführen ?

Mein /etc/sysconfig/SuSEFirewall2 sieht unter Pkt 25 so aus.

25.)
# Do you want to load customary rules from a file?
#
# This is really an expert option. NO HELP WILL BE GIVEN FOR THIS!
# READ THE EXAMPLE CUSTOMARY FILE AT /etc/sysconfig/scripts/SuSEfirewall2-custom
#
#FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
FW_CUSTOMRULES=""

## Type: yesno
## Default: no
#

Nun ist mir schon schlecht wenn irgendwas von EXPERTENTOOL und NO HELP steht.
Übrigens, das SuSEfirewall2-custom gibts bei mir nicht.


Mhm,


:roll:

Vielen Dank für die Hilfe

Munin :shock:
 
die benutzergruppen dienen der vergabe von zugriffsrechten auf das dateisystem. nun ist in linux und anderen UNIX betriebssytemem (fast) alles eine datei, so dass damit auch peripheriegeräte, wie z. b. drucker, modems oder ISDN karten zugriffsgeschützt werden können. eine suche fördert zutage, dass die gruppe "dialout" den zugriff auf die programme pppd und isdnctrl sowie das konfigurationsverzeichnis /etc/ppp schützt:

Code:
root@gandalf:~$ find / -group dialout -ls 2>/dev/null
   183    1 drwxr-x---   5 root     dialout       496 Mar  9 08:09 /etc/ppp
 23460  332 -rwxr-xr-x   1 root     dialout    336960 Apr 23  2006 /usr/sbin/pppd
  2579   36 -rwsr-x---   1 root     dialout     32968 May  2  2006 /sbin/isdnctrl

diese elemente werden zur interneteinwahl mittels modem oder ISDN und DSL karten benötigt. wenn allerdings ein router zum einsatz kommt, werden sie auch nicht gebraucht. bei den anderen gruppen funktioniert das auch, so steuert video z. b. den zugriff auf eine im rechner eingebaute TV karte, nicht aber das abspielen von video dateien.

leider wird der netzwerkverkehr standardmäßig nicht über benutzer und gruppen geregelt. so findet sich kein gerät wie /dev/eth0. seit einiger zeit unterstützt aber netfilter/iptables die filterung nach benutzer und gruppen, da das aber eher künstlich draufgesetzt wurde, funktioniert das nur für die primäre gruppe und natürlich auch nur für lokale benutzer.

die gruppe users kann natürlich weiterhin als sekundäre gruppe benutzt werden und gestattet damit ebenfalls den zugriff auf alles, was users darf. eine unschönheit will ich aber auch nicht verschweigen: wenn die primäre gruppe eines benutzers nonet ist, so werden auch alle dateien, die der user anlegt, standardmäßig erstmal dieser gruppe gehören, was aber normalerweise kein problem ist und bei bedarf vom eigentümer geändert werden kann.

-- asem
 
OP
Munin
Guten Abend,

Mhm, warum kann ich den Befehl nicht in der /etc/init.d/boot.local abspeichern.
Müsste der dann nicht beim booten geladen werden ?

#! /bin/sh
#
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany. All rights reserved.
#
# Author: Werner Fink <werner@suse.de>, 1996
# Burchard Steinbild, 1996
#
# /etc/init.d/boot.local
#
# script with local commands to be executed from init on system startup
#
# Here you should add things, that should happen directly after booting
# before we're going to the first run level.
#
iptables -I OUTPUT -o eth0 -m owner --gid-owner nonet -j REJECT

Leider klappt das nicht so, warum ?
Steht er falsch, oder fehlt etwas.
Ich hab sowas noch nie gemacht, aber irgendwann ist immer das erste Mal.

Danke für die Hilfe

Munin
 

framp

Moderator
Teammitglied
Zu dem Zeitpunkt ist das netzwerk und iptables noch nicht aktiv. Bring diese Rule in die SuSEFirewall2-custom rein - und dann tut's :wink:
 
Vorher noch den Eintrag zu dem SuSEFirewall2-custom-Script auskommentieren:
In der /etc/sysconfig/SuSEfirewall2
Code:
#FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
FW_CUSTOMRULES=""
in
Code:
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
#FW_CUSTOMRULES=""
ändern.

/etc/sysconfig/scripts/SuSEfirewall2-custom falls nicht vorhanden anlegen und deine eigene iptables-Regel eintragen.

SUSE-Firewall neustarten.
 
OP
Munin
Guten Tag,

Jetzt klappts, hab alles so gemacht und es funtioniert prima. Diese Lösung mit den custom-rules finde ich sehr elegant.
Allerdings funtioniert es auch wenn man den Befehl in der /etc/init.d/SuSEfirewall_setup

Code:
case "$1" in
    start)
        echo -n "Starting Firewall Initialization "
        echo -n '(phase 2 of 2) '
        rm -f "$BOOTLOCKFILE"
        $SUSEFWALL -q start
-----------------------------------------------hier einträgt
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down the Firewall "
        if [ -z "$REDIRECT" ]; then


Danka an Janka von Pro-Linux für diese Lösung.

Ich habe beide Sachen ausprobiert, mich aber dann für die Regelgeschichte über custom entschieden.

Vielen Dank an alle Helfer.

Munin[/i]
 

framp

Moderator
Teammitglied
munin schrieb:
Ich habe beide Sachen ausprobiert, mich aber dann für die Regelgeschichte über custom entschieden.

Ist auch die sichere Methode. U.U. wird mal das Script bei einem Patch modifiziert - und dann ist Deine Änderung weg :-(.
 
OP
Munin
Guten Tag,

eine Frage beschäftigt mich allerdings noch. Ich hatte den Befehl als allererste Zeile, vor allem anderen, in die Datei /etc/sysconfig/scripts/SuSEfirewall_customs geschrieben.

Bei erneutem Aufrufen stand er da nicht mehr, sondern war verschoben.
Dies sieht jetzt folgendermaßen aus.

Code:
fw_custom_before_port_handling() {
    # these rules will be loaded after the anti-spoofing and icmp handling
    # and after the input has been redirected to the input_XXX and
    # forward_XXX chains and some basic chain-specific anti-circumvention
iptables -I OUTPUT -o eth0 -m owner --gid-owner nonet -j REJECT   
    # rules have been set,
    # but before any IP protocol or TCP/UDP port allow/protection rules
    # will be set.
    # You can use this hook to allow/deny certain IP protocols or TCP/UDP
    # ports before the SuSEfirewall2 generated rules are hit.

Wenn Suse so schlau ist, den Befehl an die richtige Stelle zu setzen, dann ist das zwar toll aber mich beunruhigt der Gedanke das ich nicht weiß wie und warum. (ne Macke von mir)
Wie kann denn in einer Datei, welche ich abgespeichert habe ein Eintrag von mir auf einen anderen Platz gesetzt werden !!

Alles funktioniert, aber leider bin ich ein Mensch der alles genau wissen will.
Ich liebe Linux eigentlich genau wegen dieser Rätsel.

Habt Ihr eine Idee ?

Danke, Munin
 
OP
Munin
Guten Tag,

ich habe gedit benutzt, über Befehlszeile aufgerufen.

gedit /etc/sysconfig/scripts/SuSEfirewall2_customs

anschließend wieder abgespeichert.

Allerdings hatte ich den Befehl eine Zeile vor '!/bin/bash eingetragen. (ganz oben) Nach meinem heutigen Kenntnisstand beginnt ein Shell-Skript immer mit # !/bin/bash.

Schließlich lernt man dazu.



Munin
 
Dann kannst du doch froh sein, dass SUSE die Regel automatisch an die "richtige" Stelle gesetzt hat. :wink:

Der Aufbau des Scriptes /etc/sysconfig/scripts/SuSEfirewall2_customs ist folgender:

Es werden verschiedene Funktionen (fw_custom_before_antispoofing, fw_custom_before_masq, fw_custom_before_port_handling, etc.) definiert, um die Möglichkeit zu haben eigene Regeln zu unterschiedlichen Zeitpunkten im Firewall-Startprozess aufrufen zu können.

Die eigenen iptables-Regeln gehören also in die jeweilige Funktion - also zwischen die { }:
Code:
fw_custom_blah() {
=> Hier kommt die eigene Regel rein.
}
 
OP
Munin
Guten Tag,

und ob ich froh bin.

Nur, komisch ist das schon, so ganz von selbst ?

Lässt mir keine Ruhe. :roll:

Ich meine, wenn es nicht funktioniert hätte und ich den Befehl selbst an die richtige Stelle hätte setzen müssen, wäre alles klar gewesen aber so ...

seltsam "grübel".

Wenn mir irgendjemand diesen Vorgang halbwegs erklären kann bin ich sehr froh.

Danke an alle

Munin
 

framp

Moderator
Teammitglied
Leider habe ich kein gnome sonst hätte ich gedit installiert und mir das mal angesehen. Ich vermute mal gedit hat einen Syntaxparser und der erkennt shell Prozeduren und korrigiert entsprechend. Vielleicht postest Du das Problem mal im KDE, Gnome et al WM Forum mit Verweis auf diesen Thread.
 
OP
Munin
Guten Tag,

@framp

hab Deinen Rat befolgt und hier http://www.linux-club.de/ftopic78329.html einen neuen Thread aufgemacht.

Danke

Munin
 
Oben