V7 WebUI - Internetsperre für Schüler

Hallo zusammen,

bei dem Versuch den Schülern den Internetzugang via WebUI zu sperren, scheitern wir momentan.

Beim Entfernen des Hakens für Internetzugang und dem anschließendem Speichern & Übernehmen werden keine Fehler ausgegeben.
In den Sophomorix Logs (/var/log/sophosmorix/command.log) sehe ich auch keine Fehler, sondern eine Änderung am Benutzer bzgl. den Gruppen (‚internet‘ → ‚nointernet‘).

Beispiel:

  • Benutzer ‚mistelam‘
  • Linuxclient (Ubuntu 18.04; angepasstes Default Image)
  • Internetzugriff via SSO

Logs:

2019-09-23 16:40:38::start:: /usr/sbin/sophomorix-managementgroup --wifi mistelam --nowifi ‚‘ --internet ‚‘ --nointernet mistelam --intranet mistelam --nointranet ‚‘ --webfilter mistelam --nowebfilter ‚‘ --printing mistelam --noprinting ‚‘ -jj::31501::
2019-09-23 16:40:39::end :: /usr/sbin/sophomorix-managementgroup --wifi mistelam --nowifi --internet --nointernet mistelam --intranet mistelam --nointranet --webfilter mistelam --nowebfilter --printing mistelam --noprinting -jj::31501::

Trotzdem hat der Benutzer/Schüler ‚mistelam‘ weiterhin Internetzugriff.
Muss für die Funktion ‚Internet sperren‘ noch irgendetwas beachtet/konfiguriert werden?
Oder interpretiere ich die Logs falsch und es gab einen Fehler bei der Anpassung der Benutzerrechte-/gruppenmitgliedschaften?

Wenn weitere Logs benötigt werden, stelle ich diese gerne zur Verfügung.
Danke! =)

Gruß,
Xandra

Hallo Xandra,

ist die Regel in der opnsense unter Firewall->Regeln->LAN
die dem ganzen LAN Internetzugriff erlaubt „nicht aktiv“?

Ist der Client auch nicht in der Gruppe noProxy (unter Firewall->Alias)

LG

Holger

Hi Holger,

die Regel für das Freigeben vom LAN ist deaktiviert.
Zweiteres hatte ich komplett vergessen, da es ein normaler Rechner für den Unterricht ist - nicht dass er momentan wg. dem linuxadmin freigegeben ist…

Sobald ich sicher weiß, ob er in der NoProxy Gruppe ist oder nicht, update ich den Beitrag.
Danke!

LG
Xandra

Update:
Es ist von Vorteil, wenn man Dinge nicht annimmt, sondern prüft…
Die betroffenen Rechner waren tatsächlich in der NoProxy-Gruppe - wurden vermutlich vergessen, als sie bei Tests temp. ohne Proxy ins Internet mussten.
-> Layer 8 Fehler wie man so schön sagt

Danke für den Hinweis!

LG
Xandra

Hallo!

Bitte mal linuxmuster-base7 7.0.49 testen. Problem sollte damit behoben sein.

VG, Thomas

Hallo,

im Moment habe ich als Linuxmuster Neuling viele Fragen. Die Internet/Drucker/WLAN- Sperre ist eine davon.

Ich habe linuxmuster-base7 7.0.53 installiert und bei mir funktioniert das Sperren z.B. von Internet nicht. In der WebUI sind die Haken des Benutzers entfernt. Der PC ist nicht im der Firewall Alias „NoProxy“ enthalten. Der direkte LAN->WAN Zugang sind deaktiviert.

/var/log/sophomorix/command.log:
2020-03-10 18:39:00::end :: /usr/sbin/sophomorix-managementgroup --wifi --nowifi musterkl --internet --nointernet musterkl --intranet musterkl --nointranet --webfilter musterkl --nowebfilter --printing --noprinting musterkl -jj::3195::

Wie funktioniert das aktivieren/deaktivieren von WLAN/Internet/Drucken technisch gesehen? Wo kann ich den Fehler suchen?

Danke!

Hallo Garblixa,

Ich habe linuxmuster-base7 7.0.53 installiert und bei mir funktioniert
das Sperren z.B. von Internet nicht. In der WebUI sind die Haken des
Benutzers entfernt. Der PC ist nicht im der Firewall Alias „NoProxy“
enthalten. Der direkte LAN->WAN Zugang sind deaktiviert.

ichhabe am Samstag bei der Arbeitstagung die selbe Beobachtung gemacht:
Internetsperre in der WebUI funktioniert nicht.

/var/log/sophomorix/command.log:
2020-03-10 18:39:00::end :: /usr/sbin/sophomorix-managementgroup --wifi
–nowifi musterkl --internet --nointernet musterkl --intranet musterkl
–nointranet --webfilter musterkl --nowebfilter --printing --noprinting
musterkl -jj::3195::

die Kommandozeile sieht falsch aus.
Ich denke es sollte der Schalter „internet“ oder „nointernet“ (ebenso
bei den anderen) gesetzt werden: und nicht beide.
Aber das frage ich den sophomorix Entwickler.

Ich habe gerade bei mir in der Schule getestet:

sophomorix-managementgroup --internet --nointernet baumhof

gibt einen Fehler, aber

sophomorix-managementgroup --nointernet baumho
funktioniert.
Ebenso
sophomorix-managementgroup --internet baumho

also: BUG in der WebUI.
Ich melde das.

LG

Holger

Hallo Holger,

Danke für deine Tests, es ist wichtig, und es hilft weiter. Das Kommando :

sophomorix-managementgroup --internet dr --nointernet frayka

funktioniert ( immer die arme frayka ).
Das einzige Problem ist, dass die erhaltene Liste von Usern hier linuxmuster-webui7/usr/lib/linuxmuster-webui/plugins/lmn_session/views.py at 766d0a227bda810cfa9f8c7f574a375bc3b12434 · linuxmuster/linuxmuster-webui7 · GitHub manchmal leer ist.
Wir müssen wahrscheinlich einfach einige Tests hinzufügen.

Gruß

Arnaud

Danke für die schnellen Rückmeldungen!

Offenbar funktionierte das Sperren von Internet über die WebUI doch.
Es bleibt nur wirkungslos, wenn Single-Sign-On am Proxy aktiviert ist. Gibt es eine Möglichkeit SSO aktiviert zu haben und trotzdem das Internet sperren zu können?

Hallo Garblixa,

Offenbar funktionierte das Sperren von Internet über die WebUI doch.
Es bleibt nur wirkungslos, wenn Single-Sign-On am Proxy aktiviert ist.

kannst du genau beschreiben wie du das getestet hast?

Gibt es eine Möglichkeit SSO aktiviert zu haben und trotzdem das
Internet sperren zu können?

hast du es mit dem von mir geposteten Befehl auf der serverkonsole probiert?
Was kam raus?

LG

Holger

Hallo Holger,

danke für die Rückmeldung!

Hier eine Beschreibung, wie ich vorgehe:

  • Installiert ist linuxmuster-base7 in der Version 7.0.53-0ubuntu0
  • Auf der Firewall ist unter Services-Webproxy-Single Sign-On SSO deaktiviert
  • Im Firefox ist als Proxy gesetzt: firewall.linuxmuster.lan:3128
  • Ich schreibe mich als User mit Lehrerrechten über die WebUI in der Klasse ein und setze die Haken bei Internet des Users „musterkl“

/var/log/sophomorix/command.log:

2020-03-11 17:03:51::start::  /usr/sbin/sophomorix-managementgroup --wifi '' --nowifi musterkl --internet musterkl --nointernet '' --intranet musterkl --nointranet '' --webfilter musterkl --nowebfilter '' --printing '' --noprinting musterkl -jj::4607::
2020-03-11 17:03:52::end  ::  /usr/sbin/sophomorix-managementgroup --wifi  --nowifi musterkl --internet musterkl --nointernet  --intranet musterkl --nointranet  --webfilter musterkl --nowebfilter  --printing  --noprinting musterkl -jj::4607::
  • Ich rufe ‚https://heise.de‘ auf, die Proxy Authentifizierungsabfrage kommt und die Seite wird angezeigt
    Auf der Firewall: /var/log/squid/access.log:
1583942782.629  20707 10.0.1.2 TCP_TUNNEL/200 2933 CONNECT www. heise. de:443 musterkl HIER_DIRECT/193.99.144.85 -
  • Ich entferne den Haken bei Internet in der WebUI beim User „musterkl“, Speichern und Übernehmen

  • Nach ca. 30 Sekunden bis 1 Minute greift die Internetsperre

  • Ich rufe ‚https://heise.de‘ auf, die Proxy Authentifizierungsabfrage kommt immer wieder. Ich kann mich nicht mehr authentifizieren

Auf der Firewall: /var/log/squid/access.log:

1583943028.584    119 10.0.1.2 TCP_DENIED/407 4040 CONNECT www. heise .de:443 musterkl HIER_NONE/- text/html

Also soweit funktioniert das.

Ebenso funktioniert, das Setzen/Entfernen der Zugriffsrechte mit den Kommandos
sophomorix-managementgroup --internet musterkl
/var/log/sophomorix/command.log:

2020-03-11 17:12:40::start::  /usr/sbin/sophomorix-managementgroup --internet musterkl::4780::
2020-03-11 17:12:40::end  ::  /usr/sbin/sophomorix-managementgroup --internet musterkl::4780::

sophomorix-managementgroup --nointernet musterkl
/var/log/sophomorix/command.log:

2020-03-11 17:13:31::start::  /usr/sbin/sophomorix-managementgroup --nointernet musterkl::4821::
2020-03-11 17:13:31::end  ::  /usr/sbin/sophomorix-managementgroup --nointernet musterkl::4821::

Das Sperren der Internetfreigabe funktioniert allerdings nicht, wenn Single Sign-On auf der Firewall aktiviert ist. Gibt es da eine Möglichkeit?

Auf der Firewall mit SSO und „gesperrtem“ Internet was nicht funktioniert: /var/log/squid/access.log:

1583943530.695      0 10.0.1.2 TCP_DENIED/407 4006 CONNECT www. heise. de:443 - HIER_NONE/- text/html
1583943530.695     71 10.0.1.2 TCP_TUNNEL/200 832 CONNECT www. heise. de:443 musterkl@LINUXMUSTER.LAN HIER_DIRECT/193.99.144.85 -

Danke!

PS: Wie kann ich in diesem Forum Text formatieren, so daß nicht die Meldung kommt: „Entschuldige, neue Benutzer können Beiträgen höchstens 2 Links hinzufügen.“?

Hallo Garblixa,

Danke für die Ausführliche Rückmeldung.

Das Sperren der Internetfreigabe funktioniert allerdings nicht, wenn
Single Sign-On auf der Firewall aktiviert ist. Gibt es da eine Möglichkeit?

Auf der Firewall mit SSO und „gesperrtem“ Internet was nicht
funktioniert: /var/log/squid/access.log:

1583943530.695 0 10.0.1.2 TCP_DENIED/407 4006 CONNECT www. heise. de:443

  • HIER_NONE/- text/html
    1583943530.695 71 10.0.1.2 TCP_TUNNEL/200 832 CONNECT www. heise. de:443
    musterkl@LINUXMUSTER.LAN HIER_DIRECT/193.99.144.85 -

die Frage ist: wie hast du bei dem gesperrtem Internet mit SSO das
INternet gesperrt: mit der WebUI oder mit der commandozeile?

PS: Wie kann ich in diesem Forum Text formatieren, so daß nicht die
Meldung kommt: „Entschuldige, neue Benutzer können Beiträgen höchstens 2
Links hinzufügen.“?

ich nehme an, das ist der selbstlernende Spamschutz von Discourse.
Noch ein paar Nachrichten und die Beschränkung wird aufgehoben.

Was Formatieren von Text mit Links zu tun hat, weiß ich aber auch nicht …

LG

Holger

Hallo garblixa,

Bitte teste ob’s jetzt funktioniert

Gruß Alois

Hallo Holger,

Ich habe beides versucht, mit demselben Ergebnis. Die Internetsperre funktioniert nicht mit aktiviertem SSO.

PS: Wie kann ich in diesem Forum Text formatieren, so daß nicht die
Meldung kommt: „Entschuldige, neue Benutzer können Beiträgen höchstens 2
Links hinzufügen.“?

ich nehme an, das ist der selbstlernende Spamschutz von Discourse.
Noch ein paar Nachrichten und die Beschränkung wird aufgehoben.

Danke, auch an Alois in seinem Folgebeitrag. Ich werde sehen, ob es funktioniert.

Was Formatieren von Text mit Links zu tun hat, weiß ich aber auch nicht …

Dachte ich kann vielleicht mit bestimmten Codeblock Formatierungen die Forensoftware so beinflussen, daß diese die Links aus den Squid Logs nicht als Links erkennt und die Beschränkung mit den 2 Links somit nicht greift.

Doch das kannst Du: Code-Tag! Ich setze das mal in deinem Post, schau es dir mittels bearbeiten an.

Beste Grüße

Thorsten

Nachtrag: Du warst schon ganz dich dran! anstatt <> Klammern! :slight_smile:

Tolle Unterstützung hier! @Torsten: Danke für den Hinweis.

Hallo,

ich bin nun selber etwas weitergekommen und mir ist aufgefallen, daß die SSO Konfiguration in Kombination mit dem Sperren/Freigeben von Internet über die Steuerung der Gruppenzugehörigkeit zur Gruppe „internet“ so nicht funktionieren kann.

Ich versuche meine Erkenntnisse zu erklären und bitte um Verbesserung, falls ich falsch liege.

firewall:
/usr/local/etc/squid/pre-auth/20-negotiate.auth.conf:

auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -i -s HTTP/firewall.linuxmuster.lan@LINUXMUSTER.LAN
auth_param negotiate keep_alive on
auth_param negotiate children 5

negotiate_kerberos_auth authentifiziert den Benutzer nur nach dessen Existenz und Kennwort, aber nicht über die Gruppenzugehörigkeit. Damit wird der daraufhin folgende Block mit der PAM Authentifizierung, in welcher auf Gruppenzugehörigkeit zur Gruppe „internet“ geprüft wird, in der squid.conf ignoriert.

Also dieser hier:
firewall:
/usr/local/etc/squid/squid.conf

# Authentication Settings
# Configure Local User Authentication helper
auth_param basic program /usr/local/libexec/squid/basic_pam_auth -o
auth_param basic realm OPNsense proxy authentication
auth_param basic credentialsttl 2 hours
auth_param basic children 5
# ACL - Local Authorized Users - local_auth
acl local_auth proxy_auth REQUIRED

Eine Kerberos Authentifizierung nach Gruppenzugehörigkeit könnte man mit dem Modul ext_kerberos_ldap_group_acl erreichen. Jetzt müsste man also, wenn SSO über die Firewall WebUI konfiguriert wird die Squid Konfiguration so schreiben lassen:

Folgendes muss weg (hier kommentiert):

#auth_param basic program /usr/local/libexec/squid/basic_pam_auth -o
#auth_param basic realm OPNsense proxy authentication
#auth_param basic credentialsttl 2 hours
#auth_param basic children 5
#acl local_auth proxy_auth REQUIRED
...
#http_access allow local_auth

Stattdessen muß rein z.B.

...
# Pre-auth plugins
include /usr/local/etc/squid/pre-auth/*.conf
...
external_acl_type kerberos_group ttl=60 negative_ttl=60 %LOGIN /usr/local/libexec/squid/ext_kerberos_ldap_group_acl -d -a -g internet -D LINUXMUSTER.LAN -S server.linuxmuster.lan
acl GroupProxy external kerberos_group
http_access deny !GroupProxy

Dann funktioniert das Aktivieren/Deaktivieren von Internet über die Server WebUI oder auch über die Kommandozeile. Die Änderung greift nach Ablauf der ttl von 60 Sekunden.

Wie man das jetzt aber vernünftig in den OPNsense squid.conf Generator übernimmt, weiß ich leider nicht. Vielleicht kann das ein Entwickler so, oder so ähnlich integrieren?

Für meine Tests habe ich jetzt auf der Firewall:
Services - WebProxy - Administration - Forward Proxy - Authentication Settings:
Authentication Method: Nothing selected

Und eine Datei erstellt:
/usr/local/etc/squid/pre-auth/30-group.auth.conf:

external_acl_type kerberos_group ttl=10 negative_ttl=10 %LOGIN /usr/local/libexec/squid/ext_kerberos_ldap_group_acl -d -a -g internet -D LINUXMUSTER.LAN -S server.linuxmuster.lan
acl GroupProxy external kerberos_group
http_access deny !GroupProxy

Aber das ist natürlich nicht elegant…

Danke!

Hallo,

Danke für die ausführliche Beschreibung. @thomas hat sich bis jetzt das Thema angeschaut, und könnte wahrscheinlich etwas dazu sagen.

Ich habe gerade eine kleine Korrektur vorgeschlagen : Filter empty list for options in sophomorix-managementgroup. · linuxmuster/linuxmuster-webui7@f624a86 · GitHub

Gruß

Arnaud

Ok Arnaud, das sind jetzt aber 2 verschiedene Dinge.
Das was Du beschreibst ist offenbar ein Bug in linuxmuster-webui7, welchen ich in diesem Thema hier nicht bestätigen kann.
Damit die Internetsperre mit SSO funktioniert muß wie oben beschrieben, die OPNsense Konfiguration angepasst werden.
Aber warten wir mal ab, ob @thomas zu meinem Vorschlag etwas sagen kann.

@thomas
Wie ich heute gesehen habe, hast Du /usr/local/etc/squid/pre-auth/50-linuxmuster.auth.conf auf meinen Vorschlag hin schon implementiert. Vielen Dank für die schnelle und verbesserte(ldaps) Umsetzung!

Die Authentifizierung funktioniert. In meinem Setup gibt es aber bei der Verwendung Deiner Implementation noch einen Fehler im Squid Log:

/var/log/squid/cache.log

support_resolv.cc(289): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: Error whi
le resolving service record _ldaps._tcp.LINUXMUSTER.LAN with res_search
support_resolv.cc(71): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: res_search
: Unknown service record: _ldaps._tcp.LINUXMUSTER.LAN
support_sasl.cc(276): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: ldap_sasl_i
nteractive_bind_s error: Can't contact LDAP server
support_ldap.cc(1087): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: Error whil
e binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
support_sasl.cc(276): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: ldap_sasl_interactive_bind_s error: Can't contact LDAP server
support_ldap.cc(1087): pid=44220 :2020/03/13 08:35:29| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server

Wenn man den Parameter „-s“ bei /usr/local/libexec/squid/ext_kerberos_ldap_group_acl weglässt, funktioniert das ohne Fehler. „-s use SSL encryption with Kerberos authentication“. Wir haben ja bereits eine verschlüsselte LDAPS Verbindung. Also dann so?:

/usr/share/linuxmuster/firewall/opnsense/50-linuxmuster.auth.conf

external_acl_type InternetAllowed ttl=60 negative_ttl=60 %LOGIN /usr/local/libexec/squid/ext_kerberos_ldap_group_acl -a -l ldaps://@@servername@@.@@domainname@@:636 -u global-binduser@@@realm@@ -p @@bindpw@@ -g internet@@@realm@@ -D @@realm@@

In meinem gestrigen Post ist da noch ein Fehler. Man darf nicht einstellen:

Services - WebProxy - Administration - Forward Proxy - Authentication Settings:
Authentication Method: Nothing selected

Denn mit der jetzt neuen 50-linuxmuster.auth.conf gibt es dann beim Neustart von Squid einen Fehler:

root@firewall:/usr/local/etc/squid/pre-auth # service squid reload
Performing sanity check on squid configuration.
2020/03/13 08:42:31| Can't use proxy auth because no authentication schemes are fully configured.
2020/03/13 08:42:31| FATAL: ERROR: Invalid ACL: acl InternetAllowed external InternetAllowed

2020/03/13 08:42:31| Squid Cache (Version 4.9): Terminated abnormally.
CPU Usage: 0.022 seconds = 0.022 user + 0.000 sys
Maximum Resident Size: 60480 KB
Page faults with physical i/o: 0

Also das setzen:

Services - WebProxy - Administration - Forward Proxy - Authentication Settings:
Authentication Method: linuxmuster

Jetzt funktioniert Sperren/Freigeben von Internet mit Single Sign-On und bei Geräten ohne Domänenbeitritt kommt dann die Proxy Authentifizierungsabfrage. Perfekt!

Danke nochmal!