[Gelöst] Sicherheit von Conf Dateien in /etc/

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
whisper
Beiträge: 3390
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

[Gelöst] Sicherheit von Conf Dateien in /etc/

Beitrag von whisper » 05.10.2012 18:30:11

Ich dachte bisher eigentlich, dass die defaulteinstellungen von Debian so aussehen, das config Dateien, die Passwoerter enthalten von installierten Paketen nicht von anderen Usern zu lesen sind.
Nun ist mir beim Paket Debianpmacct aufgefallen, das dem nicht immer so ist.
Dort ist die conf welt lesbar. Ich konnte als authentifizierte, einfacher user auf die Datenbank in mysql zugreifen, weil das Password dort hinterlegt ist und die anderen Daten, wie User und Datenbank ja bekannt sind.
Es ist scheinbar auch kein Ausreisser. Bei Postfix bin ich auch bein main.cf fündig geworden.
Ist das nun schlamperei der Maintainer, oder doch meine eigene Dummheit Debian einfach zu vertrauen und nicht bei jedem neuen Paket rudimentäre Übberprüfungen zu machen?

Und, sollte ich es dem Maintainer mal melden?
Edith: in Blau
Zuletzt geändert von whisper am 06.10.2012 16:59:07, insgesamt 2-mal geändert.
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

Benutzeravatar
pil
Beiträge: 629
Registriert: 30.04.2002 15:47:27

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von pil » 05.10.2012 19:15:24

Was ist schlimm oder unsicher daran, conf-Dateien als user lesen zu können? Im schlimmsten Fall sieht der user in kurzer Zeit genau, was er darf und nicht darf. Das aber kann er auch ohne Einblick in die Datei herausbekommen.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von r900 » 05.10.2012 20:20:19

whisper hat geschrieben:Ich dachte bisher eigentlich, dass die defaulteinstellungen von Debian so aussehen, das config Dateien von installierten Paketen nicht von anderen Usern zu lesen sind.
Wie kommst du denn darauf? Schau dir doch 'ls -l /etc' an, da ist fast alles für jeden zu lesen. Viele Programme die nicht mit root-Rechten laufen könntest sonst ihre Einstellungen/Voreinstellungen gar nicht lesen.
whisper hat geschrieben:Ist das nun schlamperei der Maintainer, oder doch meine eigene Dummheit Debian einfach zu vertrauen und nicht bei jedem neuen Paket rudimentäre Überprüfungen zu machen?
Die einzige Ausnahme wären Dateien die aus einem dpkg-Dialog heraus konfiguriert werden und Passwörter dort reinschreiben. Da müssten dann auch entsprechende Dateirechte automatisch vergeben werden. Alle anderen Dateien sind recht unbedenklich. Die Dateien in die du selbst Passwörter einträgst.. Ja da musst du dir natürlich auch selbst überlegen wer die lesen darf und wer nicht. Hast du mal in die Datei /usr/share/doc/pmacct/README.Debian geschaut? Da stehen solche Hinweise gelegentlich drin.

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von uname » 05.10.2012 20:29:13

Gute Beispiele sind die Dateien /etc/passwd und /etc/shadow. Die Datei /etc/passwd ist global lesbar und muss es auch sein. Alle Benutzer sollen ja alle anderen Benutzer kennen. Die /etc/shadow ist nur von "root" zu lesen, da dort die Passwörter (wenn auch verschlüsselt) abgelegt sind. Ändern kann der Benutzer sein Passwort per /usr/bin/passwd weil das Programm SETUID-root ist.
Große Teile von /etc sind vollkommen unkritisch, da die Konfigurationen entweder von jedem Benutzer benötigt oder sowieso trivial sind. Kritisch wird es wenn Passwörter enthalten sind. Dann sind entweder die Passwörter zu verschlüsseln die Dateien zu sichern. Vielleicht kann mal jemand die Rechte für /etc/wpa_supplicant/wpa_supplicant.conf raussuchen. Darf bei mir jeder lesen jedoch mit einem verschlüsselten WPA-PSK-Key. Ist das so richtig?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von Cae » 05.10.2012 20:52:19

Das ist andersrum, alles ist zunächst weltweit lesbar, bis auf kritische Teile, wie zum Beispiel die shadow, sudoers oder eine /etc/postfix/sasl/my-isp. Genau bei letzterer hast du wohl etwas falsch konfiguriert, wenn Klartextpasswörter in der main.cf stehen. Sowas wird als hash: von irgendwo eingebunden, und diese Datei ist dann 600. Jedes gescheite Konfigurationssystem unterstützt ein include dieser Art.

Die Idee ist nicht schlecht: Man muss auf die fünf geheimen Datensätze explizit aufpassen, und der Rest ist egal. Das ist besser als ein Fall, wo man sich auf automatisch private Konfigs verlässt und durch einen Bug eine Datei eben doch weltlesbar wird.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
whisper
Beiträge: 3390
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von whisper » 05.10.2012 20:58:16

Cae hat geschrieben:Das ist andersrum, alles ist zunächst weltweit lesbar, bis auf kritische Teile, wie zum Beispiel die shadow, sudoers oder eine /etc/postfix/sasl/my-isp. Genau bei letzterer hast du wohl etwas falsch konfiguriert, wenn Klartextpasswörter in der main.cf stehen. Sowas wird als hash: von irgendwo eingebunden, und diese Datei ist dann 600. Jedes gescheite Konfigurationssystem unterstützt ein include dieser Art.

Die Idee ist nicht schlecht: Man muss auf die fünf geheimen Datensätze explizit aufpassen, und der Rest ist egal. Das ist besser als ein Fall, wo man sich auf automatisch private Konfigs verlässt und durch einen Bug eine Datei eben doch weltlesbar wird.

Gruß Cae
Mann, mann mann, da habe ich aber in ein Wespennest gestochen.
Nein, es sind keine postfixpasswörter in der main.cf, sie ist nur weltlesbar.
Ja natürlich sind da includes, die sind auch nicht weltlesbar, teilweise auch 0600.
Das ist doch gar nicht das Thema.
Macht doch nicht alle so ein Fass auf!
Ich sprechen einem Paket pmacct hat sein passwort leider in einer welt lesbaren Datei
Klar, soweit?

@ Cae, die Prinzipien sind mir völlig klar, deshalb ja dieser Post.
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

Benutzeravatar
whisper
Beiträge: 3390
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von whisper » 05.10.2012 21:01:41

r900 hat geschrieben:
whisper hat geschrieben:Ist das nun schlamperei der Maintainer, oder doch meine eigene Dummheit Debian einfach zu vertrauen und nicht bei jedem neuen Paket rudimentäre Überprüfungen zu machen?
Die einzige Ausnahme wären Dateien die aus einem dpkg-Dialog heraus konfiguriert werden und Passwörter dort reinschreiben. Da müssten dann auch entsprechende Dateirechte automatisch vergeben werden. Alle anderen Dateien sind recht unbedenklich. Die Dateien in die du selbst Passwörter einträgst.. Ja da musst du dir natürlich auch selbst überlegen wer die lesen darf und wer nicht. Hast du mal in die Datei /usr/share/doc/pmacct/README.Debian geschaut? Da stehen solche Hinweise gelegentlich drin.
Nein, das passwort steht per default da nicht drin, aber das userpasswort wird dort im conf (manuell)hinterlegt, wenn man das mysql plugin enabled.
Nur ist eben die conf WELTLESBAR und das ist faslch, WEIL eben nachdem das pw dortdrin ist eine Sicherheitslücke ist, die nicht wegdiskutiert werden kann.,
Und ein Hinweis darauf fehlt auch.
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von r900 » 05.10.2012 21:34:09

Also zuerst mal DU hast geschrieben
whisper hat geschrieben:Ich dachte bisher eigentlich, dass die defaulteinstellungen von Debian so aussehen, das config Dateien von installierten Paketen nicht von anderen Usern zu lesen sind.
Wie soll man das denn sonst verstehen wenn nicht so wie die ähh 1, 2, 3, nein 4 Leute die dir darauf geantwortet haben. Also 4 von 4 Leuten verstehen dich falsch und das ist dann deren Schuld und nicht deine.. schon klar :wink:
whisper hat geschrieben:Nein, das passwort steht per default da nicht drin, aber das userpasswort wird dort im conf (manuell)hinterlegt, wenn man das mysql plugin enabled.
Nur ist eben die conf WELTLESBAR und das ist faslch, WEIL eben nachdem das pw dortdrin ist eine Sicherheitslücke ist, die nicht wegdiskutiert werden kann.,
Und ein Hinweis darauf fehlt auch.
Die Sache ist doch ganz einfach. Schreibst du das Passwort da rein, dann ist es auch deine Angelegenheit die Rechte zu setzen. Schreibt ein Skript das Passwort rein, dann sollte das Skript die Rechte setzen oder darauf hinweisen dass das gemacht werden sollte. In dem Fall würde ich dann einen Bug gegen das Paket melden, in dem das Skript zu finden ist, das das Passwort in die Datei schreibt.

Benutzeravatar
whisper
Beiträge: 3390
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von whisper » 05.10.2012 21:37:44

r900 hat geschrieben: Die Sache ist doch ganz einfach. Schreibst du das Passwort da rein, dann ist es auch deine Angelegenheit die Rechte zu setzen. Schreibt ein Skript das Passwort rein, dann sollte das Skript die Rechte setzen oder darauf hinweisen dass das gemacht werden sollte. In dem Fall würde ich dann einen Bug gegen das Paket melden, in dem das Skript zu finden ist, das das Passwort in die Datei schreibt.
Naja, Die Datei könnte von vorn herein 0600 sein, weil niemand anders als das prg selbst es braucht.
Ja ich haben den Org Post editiert mit Farbmarkierung, weil es offensichtlich falsch verstanden wurde.
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von r900 » 05.10.2012 21:50:59

Also ich kenne das Programm nicht und weiß nicht wer da was reinschreibt. Aber wenn in der Datei für gewöhnlich ein Passwort eingetragen werden muss damit man das Programm benutzen kann dann wäre 0600 als default gerechtfertigt. Oder eben ein Hinweis dass man besser ein verschlüsseltes Passwort einträgt oder so.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von Cae » 06.10.2012 01:43:31

whisper hat geschrieben:Ich sprechen einem Paket pmacct hat sein passwort leider in einer welt lesbaren Datei
Ja, Bug. Die Dokumentation erwähnt das Problem nicht und es gibt auch keine include-Direktive (die struct NoPaste-Eintrag36705 sieht nicht danach aus, und in usr/share/doc/pmacct/CONFIG-KEYS.gz kommt es ebenfalls nicht vor). Du kannst also nicht wie oben empfohlen nur die Passwort-Direktive mit 0600 auslagern. Also musst du die komplette Konfig auf 0600 setzen.

Per Default sollte die Konfig aber mit normaler umask erstellt werden, da sich eben (noch) kein Passwort darin befindet.
Der Daemon stellt dieses Problem allerdings nicht selbst fest. Schöner wäre etwas wie

Code: Alles auswählen

Oct  5 23:07:17 testing pmacctd[5919]: INFO ( default/core ): Start logging ...
Oct  5 23:07:17 testing pmacctd[5920]: WARN: config file is WORLD READABLE and stores MySQL password!
Oct  5 23:07:17 testing kernel: [ 5884.308082] device lo entered promiscuous mode
Oct  5 23:07:17 testing pmacctd[5919]: OK ( default/core ): link type is: 1
Wenn du magst, kannst du meinen Patch für pmacct-0.14.0 aus Testing (bzw. auch Sid) ausprobieren:

Code: Alles auswählen

--- a/mysql_plugin.c
+++ b/mysql_plugin.c
@@ -670,7 +670,18 @@ void MY_init_default_values(struct insert_data *idata)
   /* Linking database parameters */
   if (!config.sql_user) config.sql_user = mysql_user;
   if (!config.sql_db) config.sql_db = mysql_db;
-  if (!config.sql_passwd) config.sql_passwd = mysql_pwd;
+  if (!config.sql_passwd)
+    config.sql_passwd = mysql_pwd;
+  else { /* asume we got the MySQL password from config file */
+    struct stat config_file_stat;
+    char config_file[] = "/etc/pmacct/pmacctd.conf"; /* FIXME: this is a FAKE -
+      TODO: find a way to read config_file from pmacctd.c:200 here */
+    if (-1 == stat(config_file, &config_file_stat))
+      Log(LOG_WARNING, "WARN: can't stat() config file to check permissions");
+    else
+      if (config_file_stat.st_mode & S_IROTH)
+        Log(LOG_WARNING, "WARN: config file is WORLD READABLE and stores MySQL password!");
+  }
   if (!config.sql_table) {
     if (config.sql_table_version == (SQL_TABLE_VERSION_BGP+1)) config.sql_table = mysql_table_bgp;
     else if (config.sql_table_version == 8) config.sql_table = mysql_table_v8;
Das Problem ist bislang nur der hartkodierte Pfad zur Konfig, der mit -f übergebene Pfad wird beim Check ignoriert. Das ausgewertete config_file aus pmacctd.c liegt aber nicht im scope von mysql_plugin.c. Da muss der Maintainer entscheiden, wie er das umsetzt, der Sinn eines Plugins ist es ja gerade, ohne Änderungen an der Hauptanwendung zu funktionieren.

Beim pgsql-Plugin müsste es analog aussehen. Zur 0.12.0 in Squeeze sind Änderungen in der Datei gemacht worden, wodurch sich die Zeilennummern verändert haben. In dem gepatchten Bereich selbst hat sich aber nichts wesentliches getan (in 0.14.0 ist danach eine Zeile zur SQL-Tabellen-Version neu).
r900 hat geschrieben:Aber wenn in der Datei für gewöhnlich ein Passwort eingetragen werden muss damit man das Programm benutzen kann dann wäre 0600 als default gerechtfertigt.
Sofern sich ein dpkg-Mechanismus tatsächlich darum kümmert, ja. Sonst aber nicht.
r900 hat geschrieben:Oder eben ein Hinweis dass man besser ein verschlüsseltes Passwort einträgt oder so.
Das geht nicht, weil man wieder das Klartextpasswort zur Authentifizierung an der Datenbank braucht.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
whisper
Beiträge: 3390
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Sicherheit von Conf Dateien in /etc/

Beitrag von whisper » 06.10.2012 16:58:17

Danke Cae, deinen Patch werde ich nicht ausprobieren, da es sich um einen Produktivserver handelt.
An alle, die hier gepostet haben:
Ich habe mich im Topic missverständlich ausgedrückt, irgendwie habe ich nicht den richtigen Ton gefunden.
Ich bin durchaus in der Lage mein System weitestgehend abzusichern und ein chmod 600 für eine Konfig Datei stellt mich nun wirklich nicht vor große Herausforderungen.
Der Grund meines Postings war vielmehr meine Verwunderung, das ich ein offizielles Paket in Debian stable bestimmungsgemäß benutze und wenn ich denn dad plugin mysql (oder pgsql) benutze ein großes Sichertsloch in das eigentlich gut abgesicherte Grundsystem reiße, ohne das an irgendeiner Stelle darauf hingewiesen wird.
Die Tatsache, das ich es gefunden habe, heißt ja nun nicht, das es jedem Admin so gehen wird. Ich kann mir durchaus vorstellen, das man etliche Server findet, bei dem dieses Loch existent ist.
Natürlich ist es nur relevant, wenn andere user überhaupt auf das System per shell zugreifen, reine Webserver sind da schon mal nicht so sehr betroffen.
Wenn die sich einen ungebetenen Gast eingefangen haben, ist es sowieso zu spät.

Ps: um pmacct überhaupt mit mysql zum fliegen zu bringen muss man eh etwas basteln, out of the box geht es eh nicht.
pps: einen Bugreport schreibe ich nicht.
Meinen letzten habe ich immer noch an den Hacken, werde die emails einfach nicht los, das nervt einfach
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: [Gelöst] Sicherheit von Conf Dateien in /etc/

Beitrag von cosmac » 09.10.2012 18:28:55

hi,

ein weiteres Exemplar für die Sammlung:
uname hat geschrieben:Kritisch wird es wenn Passwörter enthalten sind. Dann sind entweder die Passwörter zu verschlüsseln die Dateien zu sichern. Vielleicht kann mal jemand die Rechte für /etc/wpa_supplicant/wpa_supplicant.conf raussuchen. Darf bei mir jeder lesen jedoch mit einem verschlüsselten WPA-PSK-Key. Ist das so richtig?
/etc/wpa_supplicant/wpa_supplicant.conf gibt's bei meinem wheezy nicht, der netboot-installer (Installation über wlan) hat den Key woanders "versteckt":

Code: Alles auswählen

$ ls -l /etc/network/interfaces
-rw-r--r-- 1 root root 371 Oct  7 17:02 /etc/network/interfaces
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-ssid bndaussenstelle51
        wpa-psk  AwcL9hbo0W2CEGCFSlfyZIv
der Key sieht vielleicht verschlüsselt aus, aber genau so ist er im AP eingetragen und genau den braucht man für eine Verbindung.
Beware of programmers who carry screwdrivers.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: [Gelöst] Sicherheit von Conf Dateien in /etc/

Beitrag von Cae » 09.10.2012 18:37:29

iSCSI mit Debianiscsitarget und auf der Gegenseite Debianopen-iscsi haben ihre Konfigs per Default auch auf 0644, obwohl man zumindest in ersterer dauerhaft einen pre shared key einzutragen hat.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten