Webui + proxy plötzlich aus

LimitNOFILE=16384

Ebenso in /etc/security/limits.conf: Ich habe festgestellt: das hatte ich schon mal. Auf dem alten v6.2er Server lag ulimit bei 16384.

# linuxmuster.net                                                                                                                                                                       
root    soft    nofile  16384
root    hard    nofile  16384

Hab ich jetzt auch noch gesetzt.
Dann: reboot

Bei diesem Eintrag wundert mich: Wenn es nicht root ist, der einen Prozess ausführt, dann gilt dieses erhöhte limit gar nicht. Frage mich, ob man nicht besser * soft nofile 16384 etc schreiben sollte oder nur dann, wenn man ein Problem hat.
Hoffe, dass meine Performanceprobleme dann auch ein Ende haben.
Danke, Arnaud!

Hallo Tobias,

Für systemd geht es mit /etc/systemd/system.conf :

$ grep 10000 /etc/systemd/system.conf 
DefaultLimitNOFILE=10000

Ich bin gespannt, ob es wirklich hilft.

Gruß

Arnaud

Hallo Arnaud,

verstehe ich es richtig, dass ich das DefaultLimitNOFILE in /etc/systemd/system.conf` auf z.B. 10000 setzen soll (und dann rebooten)?
Oder ist /etc/security/limits.conf zu bevorzugen?

LG
Xandra

Hallo Xandra,

Man kann beides machen, es gibt nicht viel Risiko. Da die webui mit systemd startet, es „erbt“ die Parameter von systemd.
Das ist evtl ein Fix, bis ich evtl eine bessere Lösung finde ( das macht viel ‚evtl‘ ).

Gruß

Arnaud

Hallo!

Heute hat es mich auch erwischt, die Schulkonsole auf V7 war nicht mehr erreichbar.
Keine Besonderheiten in /var/log/ajenti/ajenti.log oder /var/log/syslog.

Gestern Mittag war nach log-Datei (ajenti.log) die letzte erfolgeiche Anmeldung mit der Sessionnummer 71.
2019-09-23 12:46:54,932 INFO : Opening a session for user xxxxxx
2019-09-23 12:46:54,932 INFO : Opening a new worker gate for session 73, client SERVER-IP
2019-09-23 12:46:54,948 INFO : New worker „session 73“ PID 29208, EUID 0, EGID 0
2019-09-23 12:46:54,949 INFO : Authenticating session as xxxxxx
Die „max_sessions: 60“ in /etc/ajenti/config.yml hatte ich schon hochgeschraubt und habe ich nun weiter auf 200 erhöht, auch wenn das sehr wahrscheinlich nicht zum Erfolg führt (anschließend „# systemctl restart linuxmuster-webui.service“).

Als ulimit war bei mir aber noch 1024 eingestellt ("# ulimit -n"). Das habe ich auf 65536 ("# ulimit -n 65536") erhöht. Das könnte tatsächlich etwas bringen.
Außerdem habe ich in /etc/systemd/system.conf noch die Zeile „DefaultLimitNOFILE=65536“ hinzugefügt.

Ich hoffe das hilft und überlebt auch den nächsten Neustart des Servers.

Gruß - Rainer

Hallo,

Das Problem ist auf mein Testsystem gelöst, es gibt jetzt eine neue Version von Ajenti :

  • Fix file descriptor closing problem
  • Sicherheit : gleichzeitig habe ich auch TLS auf eine neue Version gebracht so, dass nur TLS 1.2 kompatibel ist

Auf ein Standart Ubuntu System ist die Grenze der File Descriptor bei 1024, das erlaubt die Webui ca 500 als max_sessions einzutragen. Gleichzeitig 500 Verbindungen zur Webui ist schon viel für eine Schule.

Wer mehr will soll die oben gennante Anpassungen für NOFILE eintragen.

Ich hoffe, das war es.
@Till : kannst du bitte ein Paket pushen ?

Gruß

Arnaud

1 „Gefällt mir“

@Arnaud gerade erledigt.

Hallo Arnaud,
hast du noch etwas anderes geändert?
Ich habe das System

root@server:/srv/linbo/linuxmuster-client/bionic/common# aptitude show linuxmuster-webui7
Paket: linuxmuster-webui7                       
Zustand: Installiert (1.0.99-1), Aktualisierung verfügbar (1.0.100-1)

also vermutlich das letzte Paket von Till nicht installiert.
ICh habe aber die FD auf 16384 gesetzt mit ulimit und auch die max_sessions von hand auf 500.
Trotzdem war soeben die Schulkonsole nicht erreichbar („Seite wurde laut Kollegen nicht geladen“) Ich habe es von zu Hause auch probiert, bekam innerhalb von 1 Minute keine Rückmeldung, habe leider nicht den Timeout abgewartet.
Im ajenti.log ist nix zu sehen (seit gestern mittag)
Ein restart linuxmuster-webui.service hat das erstmal behoben.

Daher die Frage: Gab es noch etwas anderes, was mein Problem hervorrufen konnte?

Ich aktualisiere jetzt auf 100.1, wenn nichts dagegen spricht und schaue dann halt weiterhin, ob die PRobleme auftauchen.

VG, Tobias

Hallo zusammen,

Nach update und restart hatte es zweimal funktioniert. Als sich die fünfer alle anmelden wollten (max. ca. 15 gleichzeitig) schmiss es folgende Fehler und keiner konnte sich anmelden:

2019-10-02 11:15:00,932 INFO    : Detected platform: debian / Ubuntu 18.04.3 LTS
2019-10-02 11:15:01,635 INFO    : Discovered 21 plugins
2019-10-02 11:15:04,366 INFO    : lmn_landing.__init__.py: lmn_landing loaded
2019-10-02 11:15:04,417 INFO    : Loaded 21 plugins
2019-10-02 11:15:04,437 INFO    : Binding to [0.0.0.0]:443
2019-10-02 11:15:04,680 INFO    : SSL enabled
2019-10-02 11:15:04,793 INFO    : New worker "restricted session" PID 26075, EUID 0, EGID 0
2019-10-02 11:15:04,796 INFO    : Worker 26075 is demoting to UID 65534 / GID 65534...
2019-10-02 11:15:04,797 INFO    : ...done, new EUID 65534 EGID 65534
2019-10-02 11:17:53,012 INFO    : Opening a session for user kuechel
2019-10-02 11:17:53,015 INFO    : Opening a new worker gate for session 1, client 172.16.17.5
2019-10-02 11:17:53,226 INFO    : New worker "session 1" PID 26714, EUID 0, EGID 0
2019-10-02 11:17:53,236 INFO    : Authenticating session as kuechel
2019-10-02 11:20:14,234 WARNING : URL not found: /favicon.ico
2019-10-02 11:20:53,872 INFO    : Opening a session for user rimbakowsky
2019-10-02 11:20:53,873 INFO    : Opening a new worker gate for session 2, client 10.16.1.254
2019-10-02 11:20:54,049 INFO    : New worker "session 2" PID 27371, EUID 0, EGID 0
2019-10-02 11:20:54,057 INFO    : Authenticating session as rimbakowsky
2019-10-02 11:31:15,372 INFO    : Process 26042 exiting normally
2019-10-02 11:31:43,048 INFO    : Loading config from /etc/ajenti/config.yml
2019-10-02 11:31:43,078 INFO    : Ajenti Core 2.1.31
2019-10-02 11:31:43,078 INFO    : Detected platform: debian / Ubuntu 18.04.3 LTS
2019-10-02 11:31:43,242 INFO    : Discovered 21 plugins
2019-10-02 11:31:44,126 INFO    : lmn_landing.__init__.py: lmn_landing loaded
2019-10-02 11:31:44,153 INFO    : Loaded 21 plugins
2019-10-02 11:31:44,159 INFO    : Binding to [0.0.0.0]:443
2019-10-02 11:31:44,283 INFO    : SSL enabled
2019-10-02 11:31:44,392 INFO    : New worker "restricted session" PID 29767, EUID 0, EGID 0
2019-10-02 11:31:44,395 INFO    : Worker 29767 is demoting to UID 65534 / GID 65534...
2019-10-02 11:31:44,396 INFO    : ...done, new EUID 65534 EGID 65534
2019-10-02 12:13:34,066 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:35,083 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:35,085 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:35,383 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:36,393 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:37,223 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:37,413 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:38,928 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:39,075 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:39,491 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:41,705 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:41,959 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:42,252 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:42,278 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:43,376 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:45,984 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:46,343 WARNING : URL not found: /favicon.ico
2019-10-02 12:13:48,618 WARNING : URL not found: /favicon.ico
2019-10-02 12:14:30,267 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:14:34,693 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, 

<snip> ca. 100 Zeilen 

comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:10,627 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:11,198 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:11,850 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:12,488 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:13,544 INFO    : Opening a session for user kollegin
2019-10-02 12:16:13,545 INFO    : Opening a new worker gate for session 1, client 10.16.1.254
2019-10-02 12:16:13,947 INFO    : New worker "session 1" PID 18463, EUID 0, EGID 0
2019-10-02 12:16:13,965 INFO    : Authenticating session as kollegin
2019-10-02 12:16:14,592 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:15,126 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:15,807 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:16,501 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:16,902 WARNING : URL not found: /favicon.ico
2019-10-02 12:16:16,918 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:17,843 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:19,071 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, 

<snip> wieder ca. 50 Zeilen

comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 12:16:43,086 ERROR   : {'info': u'80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': u'Invalid credentials'}
2019-10-02 13:44:54,134 INFO    : Process 29750 exiting normally
2019-10-02 13:44:58,223 INFO    : Loading config from /etc/ajenti/config.yml
2019-10-02 13:44:58,264 INFO    : Ajenti Core 2.1.31
2019-10-02 13:44:58,265 INFO    : Detected platform: debian / Ubuntu 18.04.3 LTS
2019-10-02 13:44:58,453 INFO    : Discovered 21 plugins
2019-10-02 13:44:59,229 INFO    : lmn_landing.__init__.py: lmn_landing loaded
2019-10-02 13:44:59,251 INFO    : Loaded 21 plugins
2019-10-02 13:44:59,256 INFO    : Binding to [0.0.0.0]:443

Es gibt ja mittendrin eine Stelle, wo „kollegin“ sich angemeldet hat. Und jetzt 90 Minuten später habe ich die Schulkonsole wiederbelebt mit einem systemctl restart.

Was soll ich tun?
VG, Tobias

Hallo Tobias,

Mein Fix betrifft ein 500 Internal Fehler, dein Problem ist etwas anderes wenn die Schulkonsole nicht antwortet.

In die logs gibt es eindeutig ein Login Problem mit dem LDAP, entweder falsches PW oder falsches Login ( oder falsche Anfrage an LDAP ).

Kann es sein, dass du nach dem Update den Quellcode geändert hast ?

Gruß

Arnaud

Hallo Tobias,

Kann es sein, dass du nach dem Update den Quellcode geändert hast ?

er meint, ob du den Schülerlogin in der einen „nicht Config sondern
Quellcode“ Datei zugelassen hast.

LG

Holger

Hallo Arnaud, hallo Holger,

ok. Folgendes: ich hatte den fix in der Quellcode-Datei drin, der SChülern den Zugriff gewährt hat, dann hab ich aber ja das update gemacht, welches den Fix wieder überschreibt und die Schüler hätten sich ja gar nicht anmelden können. Die Kollegin konnte sich anmelden, aber bei den Schülern sagte sie, kam die Webseite gar nicht. Natürlich muss man solche Laienhaften Bugreports etwas kritisch sehen, evtl. hat auch die Hälfte der SChüler die Schulkonsole gesehen und konnte sich einloggen, wer weiß. DAs kriege ich nicht mehr raus.

Definitiv konnte ich die Schulkonsole allerdings erst gegen 13:45 erreichen, weil ich sie neu gestartet hatte.
Arnaud: hattest du eine Idee, wie man die massenhaften Zugriff auf die SChulkonsole simuliert oder nachstellt?

Ach so, erst gestern mittag habe ich den Schüler-Zugriffs-Fix wieder in den Quellcode reingeschrieben. Vorher nicht.

Ich stelle mir spontan vor, dass ich ein „curl“ auf 20 Rechnern absetze, die alle versuchen, sich mit Logindaten anzumelden. Weiß jemand wie ich das mache?
VG, Tobias

Hallo, Tobias:

```
#!/bin/bash
curl -u username:password http://login.irgendwas &

curl -u username1:password1 http://login.irgendwas &

...

```

(aus dem Handgelenk, aber so müsste es gehen.

Gruß Christoph

Hallo,

ich bin erst jetzt auf diesen Thread gestossen. Wir hatten (haben?) sowohl die oben beschriebene PW Problematik, als auch das manchmal vorkommende Nichterreichen des WebUIs.
Mit Stand von heute (05.10.2019) sind alle Updates eingespielt.

root@server:/etc# dpkg -l | grep muster
ii  linuxmuster-base7                     7.0.43-0ubuntu0                        all          linuxmuster.net configuration scripts
ii  linuxmuster-linbo-common7             2.3.52-0                               all          linuxmuster-linbo common files: kernel, initrd and pxe boot configuration
ii  linuxmuster-linbo7                    2.3.52-0                               all          linuxmuster-linbo scripts
ii  linuxmuster-prepare                   0.7.4-0ubuntu0                         all          linuxmuster.net pre setup configuration scripts
ii  linuxmuster-webui7                    1.0.100-1                              all          next generation web-based management tool for linuxmuster.net v7.x

Konfigurationsdateien - wie zB oben beschrieben system.conf oder limits.conf- habe ich keine geändert, AUSSER: in der /etc/ajenti/config.ym max_sessions: 9, von 9 auf 90.
In beiden erst-genannten *.conf Dateien gibt es überhaupt keine aktiven Einträge.
Frage:

  • ist das okay?
  • kann ich prüfen, ob das Update jetzt die richtigen Werte gesetzt hat?
  • Wie ist jetzt der aktuelle Stand mit den funktionierenden Zeichen bei Passwörtern
  • und der Konsistenz bei der Methode der Passwortvergabe, zB setzten geht, funktioniert dann aber nicht?
  • anders gefragt: gibt es 100% zuverlässig funktionierende Sonderzeichen, egal wo gesetzt, die dann auch wiederum überall funktionieren?
    Mir wäre es erst mal egal, wie wenig dauerhaft und konsistent funktionieren, die Hauptsache sie tun es :wink:

Grüße,
gerd

Hi,

schon wieder: Eine ganze Schulklasse (max. 15 gleichzeitig) versucht di Schulkonsole zu öffnen und das Passwort zu ändern.
Jetzt ist sie in dem Zustand: keine Rückmeldung, kein Timeout, keine DAten im Log, ps auf dem Server:

root@server:/var/log/ajenti# ps aux | grep aj                                                                                               
root       775  0.2  0.6 343548 81444 ?        Sl   Okt13   8:15 /usr/bin/python /usr/local/bin/ajenti-panel -d --stock-plugins --plugins /u
sr/lib/linuxmuster-webui/plugins                                                                                                            |
nobody     849  0.0  0.6 279736 79232 ?        S    Okt13   0:28 /usr/local/bin/ajenti-panel worker [restricted session]     

Das ist echt kein Zustand. Keine der 5. Klassen konnten bisher ohne technische Probleme ihre Passwörter ändern. Liegt das an meiner Hardware (12GB RAM, 3 Cores Intel® Xeon® CPU E5420 @ 2.50GHz, 1Gbit angebunden) ? Kann doch auch nicht sein, dass die Hardware/Netzwerk zu schwachbrüstig für 15 popelige Anmeldungen ist?

VG, Tobias

korrigiere mich, ca. nach 5 Minuten bekomme ich in minimalem HTML

Worker timeout

statt der Schulkonsole.
VG, Tobias

ich korrigiere mich nochmals: nach ca. 10 Minuten, ich habe jetzt richtig auf die Uhr geschaut.

VG, Tobias

Hallo Tobias

Die Schüleranmeldung ist momentan nicht unterstützt, aus Sicherheitsgründen. Wenn ihr das ändert, musst ihr auch die Verantwortung nehmen.

Das Problem liegt nich am Hardware, aber an einem falschen Header, und ja, das sind genau 10min, es steht hier : ajenti/ajenti-core/aj/gate/middleware.py at e0f91bc28a6a59c137ce086d191acaa479853a58 · ajenti/ajenti · GitHub

Das ganze (Sicherheit + Header) ist gar nicht einfach zu lösen und benötigt viele Zeit, deswegen ist es für später geplant, aber ich arbeite gerade daran : First attempt to use gevent SSLSocket. · kiarn/ajenti@bed1c2c · GitHub

Gruß

Arnaud

Hallo Arnaud,
Vielen Dank für diese superschnelle Antwort!

Richtig. „Kein Zustand“ gilt dann nur für unsere Schule :slight_smile: und liegt nicht in der Verantwortung der linuxmuster-Lösung. Ich nehme mal an, dass die Schulkonsole von irgendeinem Header und oder Zustand „abgeschossen“ wird, was evtl. mit der Zeit oder der Masse von Anfrage zu tun hat. Wenn ich dich irgendwie unterstützen kann, sag mir was ich testen soll.

Abgesehen davon: Auch ich habe jetzt erfolgreich nativ mit Hilfe von gnome-center das Passwort geändert.

VG, Tobias

Hallo @Arnaud, hallo @Cgsman,

So einfach war es dann doch nicht, aber hier hab ich einen (bei mir) funktionierenden code:

Siehe hier: Serverperformance ich hab das auch nach github gepackt.

#!/usr/bin/env python3                                                                                                                                                                  
# -*- coding: utf-8 -*-                                                                                                                                                                 
import requests, json, argparse

formatpretty=True
try:
    from pygments import highlight, lexers, formatters # optional pretty printing                                                                                                       
except ImportError:
    formatpretty=False

URLBase="https://server"

parser = argparse.ArgumentParser(description="Test the login process of the WebUI. Login, retrieve identity, retrieve quota, measure time.")
parser.add_argument('-s','--serverurl', help='Server URL to use, defaults to "https://server"', required=False)
parser.add_argument('-v','--verbose', help='Show the output of Identity and Quota retrieval"', required=False, action="store_true")
parser.add_argument('-u','--user', help='Username to use for login', required=True)
parser.add_argument('-p','--password', help='Password to use for login', required=True)
args = parser.parse_args()
if args.serverurl != None:
    URLBase=args.serverurl
print("Login into ", URLBase)

s = requests.Session()
payload = {'username': args.user, 'mode': 'normal', 'password': args.password }
l = s.post(URLBase+"/api/core/auth", json=payload, verify=False)
print("Login ", end='')
if (l.status_code == requests.status_codes.codes.ok):
    print("ok, loads in ", l.elapsed.total_seconds(), " seconds.")

    n = s.get(URLBase+"/api/core/identity", verify=False)
    print("Identity retrieval ", end='')
    if (n.status_code == 200):
        print("ok, loads in ", n.elapsed.total_seconds(), " seconds.")
        if args.verbose:
            obj = json.dumps(n.json(), indent=2)
            if formatpretty:
                colorful_json = highlight(obj, lexers.JsonLexer(), formatters.TerminalFormatter())
                obj = colorful_json
            print(obj)
    else:
        print(" failed.")
    o = s.post(URLBase+"/api/lmn/quota/", verify=False)
    print("Quota retrieval ", end='')
    if (o.status_code == 200):
        print("ok, loads in ", o.elapsed.total_seconds(), " seconds.")
        if args.verbose:
            obj = json.dumps(o.json(), indent=2)
            if formatpretty:
                colorful_json = highlight(obj, lexers.JsonLexer(), formatters.TerminalFormatter())
                obj = colorful_json
            print(obj)
    else:
        print(" failed.")

else:
    print(" failed.")

liefert folgende Ausgabe:

./benchmark_webui.py -u "testuser" -p "Muster!" 2>/dev/null
Login into  https://server
Login ok, loads in  1.443546  seconds.
Identity retrieval ok, loads in  1.865406  seconds.
Quota retrieval ok, loads in  3.888849  seconds.

Damit kann ich(oder wer will) jetzt mal auf 20 Rechnern das Einloggen auf der Schulkonsole durchspielen.

VG, Tobias

4 „Gefällt mir“