Python und Sicherheit an Schulen...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Python und Sicherheit an Schulen...

Beitragvon rolgal_reloaded » Dienstag 7. November 2006, 23:34

Hallo zusammen,

in meiner Heimat fand heute eine Fortbildung für Lehrer statt. Einführung in das Programmieren mit Python.
Das Seminar war gut besucht, genau genommen voll.
Viele Informatiklehrer haben wohl keine Lust mehr verschiedene Sprachen zu besprechen. Java für OOP, Perl für irgendwas anderes...., usw.

Diese Einführung wurde von mir geleitet und ich glaube sogar BlackJack wäre heute mit mir zufrieden gewesen (bin neuerdings größenwahnsinnig:loool). Ich hatte meine künstlerische Natur gut im Griff und war mit Termini wirklich umsichtig.

Es gab eine seeeehr interessante Frage, die ich hier stellen will.

Python ist mächtig, so mächtig, dass SchülerInnen an den installierten Betriebssystemen erheblichen Schaden anrichten können. Man denke nur an das Modul os.
Die Frage tauchte auf, als die Teilnehmerin erzählte, was SchülerInnen für Schaden mit Pascal angerichtet hatten.

Aus dem Bauch kam eine Antwort, die sicherlich keine elegante Lösung darstellt, es war genau genommen ein kurzer Ausbruch meiner gezügelten künstlerischen Persönlichkeit :D

Kritische Module wie os löschen, umbenennen, verstecken o.ä.
Keine Ahnung, welche Nebenwirkungen hier entstehen.
Ausserdem, können die SchülerInnen ja bald kneissen, wie sie das wieder beheben, usw.

Ist natürlich auch nicht toll, wenn man dann auf das Modul eingehen möchte, es wieder herstellen muss usw.

Welche Möglichkeiten bzw. sinnvolle Alternativen seht ihr???

Liebe Grüße

rolgal_reloaded

EDIT (jens): Titel angepasst...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: And now, something completely different!

Beitragvon Leonidas » Dienstag 7. November 2006, 23:52

rolgal_reloaded hat geschrieben:Python ist mächtig, so mächtig, dass SchülerInnen an den installierten Betriebssystemen erheblichen Schaden anrichten können. Man denke nur an das Modul os.

Was ist mit dem Modul os. Es bietet Löschfunktionen, genau die gleichen wie auch das Betriebssystem mit befehlen wie rm bietet.

rolgal_reloaded hat geschrieben:Kritische Module wie os löschen, umbenennen, verstecken o.ä.
Keine Ahnung, welche Nebenwirkungen hier entstehen.
Ausserdem, können die SchülerInnen ja bald kneissen, wie sie das wieder beheben, usw.

os ist ein ziemlich essentielles Modul, also kannst du es nicht einfach umschrieben (außerdem ist es in C geschrieben und Teil des Interpreters). Du könntest bestenfalls Funktionen löschen und dann Python neu kompilieren, dabei hoffend, das du nichts in der Struktur kaputt gemacht hast.

rolgal_reloaded hat geschrieben:Welche Möglichkeiten bzw. sinnvolle Alternativen seht ihr???

  • Ein vernünftiges OS einsetzen, in dem die Schüler nicht zu viel kaputt machen können. ACLs sind das Zauberwort.
  • Darauf vertrauen, dass die Schüler nichts absichtlich kaputt machen. Wenn ja, dann kann dir Python nicht helfen - ein Tool wie rm umgeht dann alle deine Sicherheitsvorkehrungen.


Solche Ideen hatten die Python-Entwickler schon mit dem Modul bastion - was aber einfach nicht hingehauen hat.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Mittwoch 8. November 2006, 00:11

Hallo Leonidas,

ist es möglich die Rechte, die man als User hat zu umgehen? Z.b mit einem Skript das os verwendet.
Angeblich soll nämlich sowas in der Art passiert sein.
Damit kenne ich mich zu wenig aus, um das tatsächliche Bedrohungspotential beurteilen zu können.

Meine Idee habe ich eh selbst schon verworfen, sonst hätte ich ja nicht nach einer Alternative gefragt :D

Was sind ACLs?

Liebe Grüße

rolgal_reloaded
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Mittwoch 8. November 2006, 00:20

Module aus Sicherheitsgründen entfernen zu wollen, ist am Ziel vorbeigeschossen. Mit unixoiden Systemen ist es ein leichtes, Python im Kontext eines unterpriveligierten Bentuzers laufen zu lassen und somit keine Systemdateien zu gefährden. Das sollte selbst mit Windows realisierbar sein.

Es ist kein Problem der Programmiersprache, die ja gerade für solche Dinge wie Dateizugriffe (positiv angewendet) gedacht ist.
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Mittwoch 8. November 2006, 06:47

Natürlich ist es kein Problem der Programmiersprache!
Es geht nur um die Frage inwieweit man Teile der Sprache beschränken kann?
Ob es hier überhaupt eine sinnvolle Möglichkeit gibt.
Meine "Idee" hatte ich ja nur wegen dem Gedanken: kann ich os nicht mehr importieren ist finito mit os.chmod z. Bsp. o.a.
Mich würde nebenbei auch noch interessieren, welche Gefahren überhaupt realistisch sind. Das ist natürlich schwer zu beatworten, weil es wohl auch sehr auf die Konfiguration des Netzwerkes ankommt. Die ist in keiner Schule gleich.

Liebe Grüße

rolgal_reloaded
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 8. November 2006, 08:25

rolgal_reloaded hat geschrieben:ist es möglich die Rechte, die man als User hat zu umgehen?

Nein, nicht ohne Exploits zu verwenden. Aber das ist dann ein Problem des OS, wenn es geknackt werden kann, mit Python hat das nix zu tun. Python ist ein ganz normales, unprivilegiertes Userspace-Programm.

rolgal_reloaded hat geschrieben:Z.b mit einem Skript das os verwendet.

Nein, definitiv nicht. Das Modul os benutzt die API-Funktionen die dein OS bereitstellt. Denn du zum Beispiel os.remove('/etc/passwd') dann wird die entsprechende API Funktion des OS aufgerufen, die aber mit einem Fehler abbricht, weil du normalerweise als normaler User keine Schreibrechte auf /etc/passwd hast.

rolgal_reloaded hat geschrieben:Angeblich soll nämlich sowas in der Art passiert sein.

Bitte um Details. Haben sie etwa einen Exploit in Pascal geschrieben, oder wie?

rolgal_reloaded hat geschrieben:Was sind ACLs?

Access Control Lists, die in Dateisystem sagen, welcher User was mit einer Datei machen kann.

rolgal_reloaded hat geschrieben:Es geht nur um die Frage inwieweit man Teile der Sprache beschränken kann?

Man kann eine Sprache mit Sandbox verwenden. Python hat keine, und 100% sichere Sandboxen gibt es sowieso nicht, nicht in Java, nicht in .NET.

rolgal_reloaded hat geschrieben:Meine "Idee" hatte ich ja nur wegen dem Gedanken: kann ich os nicht mehr importieren ist finito mit os.chmod z. Bsp. o.a.

Was spricht dagegen einfach das Shelltool chmod zu verwenden? Oder dagegen ein anderes C-Modul zu importieren, welches chmod implementiert?
Die Sicherheit muss vom System kommen, nicht von der Implementation der Programmiersprache. Dein System weiter absichern kannst du mit Ansätzen wie grsecurity, SELinux oder AppArmor

rolgal_reloaded hat geschrieben:Mich würde nebenbei auch noch interessieren, welche Gefahren überhaupt realistisch sind. Das ist natürlich schwer zu beatworten, weil es wohl auch sehr auf die Konfiguration des Netzwerkes ankommt. Die ist in keiner Schule gleich.

Wenn dein System sicher konfiguriert ist, dann ist Python keinerlei Problem. gcc ist da schon ein größeres Sicherheitsrisiko.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 8. November 2006, 11:02

Wenn die Kids genügend Kriminelle Energien besitzen hat man IMHO mit jeder Programmiersprache ein Problem :) (Naja, vielleicht mit smalltalk nicht... Keine Ahnung...)

Ein Problem sehe ich z.B. auch im Modul socket oder den normalen Sachen wir urllib... Damit könnte man Denial of Service versuchen oder einfach nur einen Portscan machen. Mit ftplib könnte man sich recht einfach ein Passwort Bruteforce Skript programmieren... Naja, es gibt da noch zig anderer möglichen Varianten...

Das ist, wie Leonidas schon sagte, allerdings kein Problem von Python an sich, sondern ehr, wie der Rechner konfiguriert ist ;)

Haben die Kids überhaupt wenig Privilegien am Rechner? Wenn Windows eingesetzt wird und jeder als Admin angemeldet ist, dann kann er sowieso alles machen ;)

Kann man z.B. USB-Sticks oder CD-ROM reinschieben? Dann könnten die Kids auch gleich fertige Script-Kiddy-Programme einschmuggeln ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Mittwoch 8. November 2006, 11:22

Wenn wir schon bei CD's und USB-Sticks sind: Vor allem sollten sich die Rechner nicht von selbigen booten lassen... Sonst koennte ja wer eine bootbare CD mitbringen, sein Lieblings-Betriebssystem (als root/admin) starten und den gesamten Rechner platt machen...
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Mittwoch 8. November 2006, 11:33

@rebeeca,

mir ist schon klar was du sagen willst. Nur stellt sich die Frage, ob man das Angebot an Vernichtungsmöglichkeiten ständig erweitern sollte. :D

Das Thema ist natürlich kein Grund zu dem Schluss zu kommen, Python nicht in der Schule zu verwenden!

Wenn es Möglichkeiten gegeben hätte, dass man sich wenigstens beim Programmieren im Unterricht auf das Eigentliche konzentrieren könnte, -- mal nicht auf jeden Tipper, Klick etc. aufpassen muss, wäre das natürlich eine feine Sache gewesen.

LG

rolgal_reloaded
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 8. November 2006, 11:39

rolgal_reloaded hat geschrieben:mir ist schon klar was du sagen willst. Nur stellt sich die Frage, ob man das Angebot an Vernichtungsmöglichkeiten ständig erweitern sollte. :D

Nun ja, aber rebeeca hat vollkommen recht... Was nützt dir ein Absolut sicheres Python, wenn das Kind schon beim booten in's Wasser gefallen ist???

Ich meine wenn ein Schüler unbedingt etwas kaputt machen will, muss man halt alle Eventualitäten ausschalten. Was nutzt es da, das os.remove nicht mehr geht, wenn er das selbe auf Kommandozeile machen kann???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Mittwoch 8. November 2006, 11:45

@jens

mir ist inzwischen schon klar, dass es keine sinnvollen Möglichkeiten gibt.
Das was ich oben sonst noch geschrieben habe ist vielleicht besser verständlich, wenn mann selbst Lehrer ist. Mit entsprechenden SchülerInnen :D

LG

rolgal_reloaded
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Mittwoch 8. November 2006, 11:57

Man kann auch ohne installierte Programmierumgebung schon genug Mist auf den Rechnern bauen, wenn man will. Wenn die Schüler überhaupt erstmal soweit kommen, dass sie das urllib-Modul oder dergleichen verstehen und benutzen, ist das doch positiv!

Außerdem: Gibt es keine Ansage à la "Wer hier Faxen macht, kriegt 'ne schlechte Note oder fliegt aus dem Kurs oder wird vom SysAdmin persönlich durch die Katakomben der Schule gejagt?" Wenn es keine Regeln gibt und/oder die Kinder sich nicht daran halten, ist ein Programmierkurs ohnehin schon nicht angebracht.

Übrigens ist auch Verantwortung ein wichtiger Teil der Informatik, der natürlich auch vermittelt werden sollte.

Ich denke du machst dir viel zu viele Sorgen. Python ist eine wunderbare Programmiersprache und genau das, was ich mir in der Schule gewünscht hätte (und da gab es nicht einmal Informatik-Unterricht).


Rebecca hat geschrieben:Wenn wir schon bei CD's und USB-Sticks sind

Autsch! In Zukunft bitte "CDs", danke :)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Mittwoch 8. November 2006, 13:08

rolgal_reloaded hat geschrieben:mir ist inzwischen schon klar, dass es keine sinnvollen Möglichkeiten gibt. Das was ich oben sonst noch geschrieben habe ist vielleicht besser verständlich, wenn mann selbst Lehrer ist. Mit entsprechenden SchülerInnen

Das Problem besteht doch nicht nur an Schulen, sondern auch an Unis (und Informatik-Studenten haben potenziell viel mehr Wissen, dass sie kriminell anwenden koennen), bei Schulungen, in Firmen etc (und eigentlich immer, wenn man Internet-Anschluss hat). Und bei allem, was ich so kenne, wurden keine Einschraenkungen der Software vorgenommen so wie du dir das vorstellst, und die Systeme waren dennoch sicher.

Das Betriebssystem regelt, wer was darf (unabhaengig von dem Programm, welches der Benutzer verwendet!), darum muss man sich um die Konfiguration seines Betrienssystems kuemmern. Dann ist es relativ egal, welche Programme man die User benutzen laesst. Und wenn man die Rechner nich total von der Aussenwelt abschottet (Internet, Datentreager), dann kann sich sowieso jeder eigene Programme installieren.

YOGi hat geschrieben:Autsch! In Zukunft bitte "CDs", danke

Asche auf mein Haupt. Und dass mir, wo ich mich doch sonst immer missplazierte Apostrophs aufrege...
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

Beitragvon tiax » Mittwoch 8. November 2006, 13:21

Rebecca hat geschrieben:dann kann sich sowieso jeder eigene Programme installieren.


einschließlich python
Ne invoces expellere non possis
xmpp:florian@florianheinle.de
BlackJack

Beitragvon BlackJack » Mittwoch 8. November 2006, 15:06

Rebecca hat geschrieben:
YOGi hat geschrieben:Autsch! In Zukunft bitte "CDs", danke

Asche auf mein Haupt. Und dass mir, wo ich mich doch sonst immer missplazierte Apostrophs aufrege...


Müsste das nicht `Apostrophe` heissen? *duck*

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder