NEWS
Abfrage Kontostand Girokonto oder Bankkonto
-
Hallo zusammen,
ich möchte nun auch mal was beitragen und euch meine Lösung für eine Girokonto-Abfrage vorstellen. Das funktioniert mit dem Modul Aqbanking, welches ich nach der Ersteinrichtung über den Exec-Block in einem Cronjob ausführen lasse. Vor einiger Zeit wurde hier bereits einmal darüber diskutiert, jedoch ohne konkretes Ergebnis. Ob man jetzt seine Finanzdaten im ioBroker haben muss, kann jeder selbst entscheiden. Ich finde es jedoch ganz praktisch diese Daten grafisch aufzubereiten und immer im Blick zu haben. Auch Alarme bei gewissen Kontoaktivitäten lassen sich damit setzen und Vieles mehr.Bei mir läuft iobroker in einem Proxmox Container und deshalb bin ich in der Konsole sowieso als root unterwegs. Ggf. müsst ihr die folgenden Befehle mit Sudo ausführen, je nach user und Rechten. Die folgende Beschreibung kann man im Allgemeinen in der Aqbanking Doku nachlesen. Hier habe ich es mal anhand meines Postbank Kontos durchgespielt.
Zunächst in der Konsole Aqbanking installieren
apt update apt install aqbanking-tools
Dann müssen wir zuerst einen neuen user erstellen. Schaut vorher in diese Bankentabelle, was dazu für eure Bank nötig ist. Z.B. brauchen wir die url von eurem Bankserver. In meinem Fall ist das die Postbank. In den Parametern unten müsst ihr also euren usernamen (hier maxmustermann), eure BLZ (nicht BIC! hier 70010080) und euren Bankserver aus der Tabelle eintragen. Alle anderen Parameter lassen wir so.
aqhbci-tool4 adduser -t pintan --context=1 -b 70010080 -u maxmustermann -s "https://hbci.postbank.de/banking/hbci.do" -N "maxmustermann" --hbciversion=300
Anschließend schauen wir mit listusers, ob der neue user angelegt wurde. Falls ja, steht ganz hinten eine UniqueId, die wir uns merken, weil wir sie für die weiteren Befehle brauchen.
aqhbci-tool4 listusers
Dann laden wir die Bankinfo und hängen hinten die UniqueId an. In meinem Fall ist das 1.
aqhbci-tool4 getbankinfo -u 1
Wenn das erfolgreich war, laden wir die Systemkennung und hängen hinten wieder die UniqueId an. Dabei werdet ihr nach eurem Passwort für das Onlinebanking gefragt. Bei manchen Banken kann es sein, dass gleichzeitig das Sicherheitsverfahren getriggert wird und ihr den Login mit Tan oder App bestätigen müsst.
aqhbci-tool4 getsysid -u 1
Dann laden wir die Tan-Methoden und hängen hinten wieder die UniqueId an.
aqhbci-tool4 listitanmodes -u 1
Je nach Bank bekommt ihr eine größere oder kleinere Liste an möglichen Methoden mit einer vierstelligen Nummer am Anfang. Davon wählt ihr eine aus. In meinem Fall ist das 6920 für das BestSign Version 6 Verfahren der Postbank. Hier wieder die UniqueId nicht vergessen.
aqhbci-tool4 setitanmode -u 1 -m 6920
Optional muss man für die Postbank noch die sog. "Mediumkennung" setzen. Bei anderen Banken kann man dies überspringen. Die Mediumkennung findet ihr in eurer Bestsign App oder dem Onlinebanking unter Sicherheitsverfahren. Die BestSign id ist hier irrelevant, es geht nur um den Namen, hier als Beispiel MaxBestSign. Auch wieder die UniqueId nicht vergessen.
aqhbci-tool4 setTanMediumId -u 1 -m "MaxBestSign"
Jetzt müssen wir von diesem user noch die Kontenliste abfragen und hängen hinten wieder die UniqueId an. Dabei werdet ihr nach eurem Passwort für das Onlinebanking gefragt.
aqhbci-tool4 getaccounts -u 1
Diese Kontenliste lassen wir uns ausgeben mit:
aqhbci-tool4 listaccounts -v
In dieser Ausgabe hat jedes Konto (sind evtl. mehrere) eine LocalUniqueId. Wir merken uns nun die LocalUniqueId des Kontos, welches wir abfragen wollen, in meinem Besispiel ist das 3. Bitte nicht mir der UniqueId verwechseln!
Dann rufen wir zu diesem Konto die SEPA-Informationen ab. Wiederholt diesen Schritt mit allen Konten bzw. LocalUniqueIds, die ihr später abfragen wollt.aqhbci-tool4 getaccsepa -a 3
Jetzt können wir schon der ersten Test machen und den Saldo des Kontos abfragen. In dem Befehl unten müsst ihr nur die Kontonummer des Kontos eintragen (hier 123456789), welches ihr zuvor mit der LocalUniqueId ausgewählt hattet. Im Parameter fromdate wird mit der Syntax unten automatisch das heutige Datum eingesetzt, damit ihr den aktuellen Saldo bekommt. Hier lässt sich theoretisch auch ein vergangenes Datum einsetzen und dann erhaltet ihr den Saldo an diesem Tag, genau wie auch im Onlinebanking.
aqbanking-cli request --account=123456789 --fromdate=$(date +%Y%m%d) --transactions
Wenn das geklappt hat, dann wirft die Konsole nach Eingabe eures Passworts eine Struktur aus, die ungefähr so aussieht:
Hier sieht man unter dem ersten char value den Wert "262137%2F100%3AEUR". Darin steckt euer Kontostand, in diesem Fall 2.621,37 EUR. Achtung, das ist leider kein Json und auch kein XML, was das Parsen etwas unkomfortabel macht.Für eine automatisierte Abfrage müssen wir nun noch das Passwort speichern. Dazu nutzen wir folgenden Befehl und setzen sicherheitshalber gleich Minimalrechte.
aqhbci-tool4 mkpinlist >pinfile chmod 600 /root/.aqbanking/settings6/users/pinfile
Dadurch wurde eine Vorlage für eine Pinfile erstellt, die wir nun im Editor öffnen, das Passwort eingeben und abspeichern.
nano /root/.aqbanking/settings6/users/pinfile
Eine Möglichkeit, die Pinfile verschlüsselt abzuspeichern, habe ich leider noch nicht gefunden. Innerhalb meines Proxmox containers halte ich das aber für vertretbar. Für kritische Dinge und Transaktionen braucht man ja immernoch die 2FA.
Diese Pinfile kann man nun in den Befehl einbauen. Wichtig ist die Reihenfolge der Parameter.aqbanking-cli -P /root/.aqbanking/settings6/users/pinfile request --account=123456789 --fromdate=$(date +%Y%m%d) --transactions
Sollte hier die Abfrage ohne prompt für ein Passwort geklappt haben, dann steht einer automatisierten Abfrage nichts mehr im Wege. Das kann eigentlich jeder machen, wie es für ihn am besten ist. Ich benutze dazu ganz gern Blockly und habe es wie folgt gemacht. Das Parsen erledige ich ebenfalls innerhalb des commands und lasse mir mit sed die Ausgabe auf die Zahl vor dem "%2F" im ersten "char value" filtern. Die Ausgabe muss ich dann nur noch durch 100 teilen, um das Komma richtig zu setzen. Als trigger verwende ich einen Cron alle 3 Stunden innerhalb der Geschäftszeiten einer Bank.
Hier als Blockly Export: https://rentry.co/ae7h9q8x
Mit diesem Vorgehen lassen sich natürlich mehrere user und Konten anlegen und abfragen. Die Ausgabestruktur enthält auch die Kontoauszüge für den jeweiligen Tag, jedoch nicht inklusive der vergangenen Tage. Um sich eine Übersicht der Transaktionen der letzten Tage und Wochen zu bauen, wie aus dem Onlinebanking, müsste man also alle Tage einzeln abfragen und aufwendig parsen. Man kann jedoch die Ausgabe auf spezielle Schlüsselwörter (z.B. "Gehalt") filtern und sich so ggf. Benachrichtigungen generieren, etc.
Viele Möglichkeiten....Für Verbesserungen bin ich jederzeit offen
Viel Erfolg! -
@prinz-ip sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Bei mir läuft iobroker in einem Proxmox Container und deshalb bin ich in der Konsole sowieso als root unterwegs.
Das ist kein Grund. Auch in einem Container verwendet man user und keine root shell. Nie.
-
@thomas-braun
"Kein user root!" Das lese ich -auch- hier dauernd. M.E. ist das die Sicht aus dem Elfenbeinturm. Klar ist es sicherer ohne root, keine Frage. Aber solange man im privaten Umfeld unterwegs ist, ist für mich das Kriterium, ist da was zum Internet offen oder nicht? Und wenn nicht, habe ich ganz andere Probleme, wenn sich mein System "was eingefangen" hat. Wenn ich reichlich Cloud-Dienste für möglicht billige Hardware zweifelhafter Herkunft mit meinem Hausnetz verbinde, bastle ich selbst ein gößeres Einfallstor, als wenn ich das nicht mache und intern als root arbeite.Das mit sudo habe ich mehrfach eine Weile versucht. Geht prinzipiell, keine Frage. Aber es nervt fürchterlich, wenn man ständig Fehler sucht, die eigentlich gar keine sind. Und falsch konfigurierte Rechte sind auch nicht unbedingt sicherer als root.
Wenn man womöglich im professionellen Umfald den ganzen Tag mit Benutzerrechten zu tun hat, sieht man das sicher anders. Aber als Gelgenheits-Admin muss man es sich nicht unnötig schwer machen (und sollte die Ports vom Internet her zu lassen, statt sie zuzulassen). Persönlich bin ich da eher schizophren, vermutlich, weil ich im KRITIS Umfeld gearbeitet habe (keine Sorge, nicht direkt an der SW oder als Admin). Mein Handy z.B. ist ziemlich verrammelt, die PCs auch. ioB läuft auf einer separaten Kiste und da kommt auch nichts "kritisches" drauf. Schon mal gar nichts, was mit Geld zu tu hat (damit meine ich nicht nur Banken, sondern alles, was Zahlungsflüsse auslösen könnte). Aber da habe ich auch oft Anforderungen gesehen, die in der Praxis das Gegenteil bewirkt haben. Bestes Beispiel: häufiger Wechsel kryptischer Passwörter. Da hat selbst das BSI irgendwan eingesehen, dass das Quatsch ist, weil dann irgendwann überall diese gelben Zettel kleben. Unstrittig dagegen ist sicher für jeden Zugang ein anderes PW zu benutzen. Ob dagegen 2FA (und hier speziell Pass Keys) immer das Richtige ist? Ich benutze es selbst überall wo es um Geld oder "persönliche Identität" geht, aber mir graust es vor dem Verlust des Handies....
Mir ist am Ende des Beitrages schon klar, dass das hier etwas off topic ist. Aber diese ständigen Ermahnungen "nie root" sind es in den allermeisten Fällen genauso.
[SCNR] -
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Aber als Gelgenheits-Admin muss man es sich nicht unnötig schwer machen
Richtig. Und genau deswegen arbeitet man sauber mit den Rechten und nicht permanent als root.
Dann ist es nämlich wesentlich einfacher mit allem, auch und gerade für den 'Gelegenheits-Admin'.ist für mich das Kriterium, ist da was zum Internet offen oder nicht?
Das ist aber nicht das ausschlaggebende Kriterium. Viel wichtiger ist es Code, den man von außen holt (und in der Regel ja nicht gegenprüft) nicht mit vollen Rechten auf alles und jedes laufen zu haben.
-
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Aber als Gelgenheits-Admin muss man es sich nicht unnötig schwer machen
Ich springe da @Thomas-Braun gerne mal zur Seite.
Gerade als "Gelegenheits-Admin" macht man es sich mitroot
nochmal extra schwer.
Im ersten Moment klingt das verlockend: Alsroot
rumwerkeln und man spart sich das ständige Gefummel mitsudo
.Umgekehrt wird aber ein Schuh draus: Wer als
root
im System rumfummelt und nicht genau weiß was er da tut, zerschießt sich ganz schnell mal das Rechte-System. Haben wir hier ständig. Solche Fehler sind dann aber nur schwer zu finden und müssen dann mit großem Aufwand behoben werden.Mal ganz abgesehen davon, dass der "Gelegenheits-Admin" in der Regel kaum einzuschätzen weiß, was er sich da alles an Software auf die Kiste packt, die dann mit vollen Rechten im System herumgeistert.
Die ständigen Warnungen haben also durchaus ihre Berechtigung.
-
@codierknecht
Man sollte sich ja auch nicht wahllos Programme oder Code auf seinen Rechner laden, da hast Du einen validen Punkt. Aber genau da habe ich mir im Umgang mit "professionellen" Entwicklern oft an den Kopf gefasst. Da werden lieber mal eben ein paar fette, keinem eigenem Code Review unterzogen Bibliothek in Produkte für den Markt eingebaut, als mal eine kleine Funktion selbst entwickelt.Dazu kommt dann noch das Theater mit dem ganzen Abhängigkeiten, die man sich damit einfängt. Wenn dann der erste Kunde das komplette Deployment prüft, ist das Geschrei groß. Und die zunächst eingesparten Zeit geht dann beim Aufräumen mehr als wieder drauf.
Tendenziell sehe ich das Thema root User ja ähnlich wie Du, sonst hätte ich es ja nicht schon mehrfach versucht. Ja, und auch ich habe mir da schon Eigentore geschossen. Aber solange man da in "freier Wildbahn" mal Sachen kombinieren muss, die mal mit und mal ohne root geachtet wurden, finde ich es so einfacher. Noch ....
-
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Aber solange man da in "freier Wildbahn" mal Sachen kombinieren muss, die mal mit und mal ohne root geachtet wurden,
Deswegen hat es sich eingebürgert die entsprechenden Befehle mit $ (für user-Rechte) und # (für benötigte root-Rechte) in den Anleitungen einzuleiten. Und wenn man da dann vom System eingebremst wird, dann ist es ja auch ein leichtes in die Rolle zuwechseln. Genau dafür wurde ja sowas wie 'sudo' erfunden.
Diese ganze Aktion hat wenige Sekunden gebraucht:
[thomas@roamer ~]$ whoami thomas [thomas@roamer ~]$ sudo whoami root [thomas@roamer ~]$ touch /etc/fstab touch: '/etc/fstab' kann nicht berührt werden: Keine Berechtigung [thomas@roamer ~]$ sudo !! sudo touch /etc/fstab [thomas@roamer ~]$
Und ich musste dafür keine root shell offenhalten.
Muss und kann man sich anschauen, wie das funktioniert. Musst du bei anderen Geräten ja auch.
Baust du den Drehzahlmesser und die rote Lampe am Auto auch aus, weil du nicht weißt wie man die Gänge wechselt?
Klar, man kann auch permanent im ersten Gang durch die Gegend heizen, weil das mit dem Gangwechsel und Kuppeln usw. alles so furchtbar kompliziert ist. Man kann aber auch lernen, ein Schaltgetriebe zu bedienen. Ist vermutlich der sinnvollere Ansatz. -
Ich finde es bemerkenswert, dass hier sofort (mal wieder) eine Art "Streitgespräch" um das Thema, bzw. den User
root
entbrennt, sich aber scheinbar niemand an dem@prinz-ip sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Ob man jetzt seine empfindlichen Finanzdaten auch noch im ioBroker haben muss, kann man sicherlich diskutieren.
sicherheitsrelevanten Themenkomplex des Beitrages, nämlich die Verwaltung von Bank(zugangs)daten in nicht gesicherter Drittanbieter-Software zu stören scheint. Aber naja..... jeder wie er mag.....
-
Doch, aber die Diskussion wollte ich nicht noch zusätzlich führen.
Wenn man da irgendwelche Graphen drausbasteln möchte kann man das auch ohne den ioBroker machen. -
@samson71 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
sicherheitsrelevanten Themenkomplex des Beitrages, nämlich die Verwaltung von Bank(zugangs)daten in nicht gesicherter Drittanbieter-Software zu stören
Das war auch mein erster Gedanke. Wie man auf so etwas kommt, ist mir ein Rätsel.
Und: Dafür gibt es doch sichere Software. -
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
"Kein user root!" Das lese ich -auch- hier dauernd ...
-
@samson71 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Ich finde es bemerkenswert, dass hier sofort (mal wieder) eine Art "Streitgespräch" um das Thema, bzw. den User
root
entbrennt, sich aber scheinbar niemand an dem@prinz-ip sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Ob man jetzt seine empfindlichen Finanzdaten auch noch im ioBroker haben muss, kann man sicherlich diskutieren.
sicherheitsrelevanten Themenkomplex des Beitrages, nämlich die Verwaltung von Bank(zugangs)daten in nicht gesicherter Drittanbieter-Software zu stören scheint. Aber naja..... jeder wie er mag.....
Sorry, ich denke das steht in meinem Beitrag (wenn auch nicht mit dem Holzhammer). prinz-ip scheint das ja auch schon selbst so zu sehen (s. Dein Zitat) und macht es trotzdem.
-
@samson71 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Ich finde es bemerkenswert, dass hier sofort (mal wieder) eine Art "Streitgespräch" um das Thema, bzw. den User root entbrennt,
zumal auch hier wieder die Argumentation
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:
Klar ist es sicherer ohne root, keine Frage
dem für die Helfenden viel wichtigeren Punkt der Verbiegung von durch root-Einsatz verbogenen Rechten, vorgezogen wird.
die angebliche
@rabe52 sagte in Abfrage Kontostand Girokonto oder Bankkonto:Sicht aus dem Elfenbeinturm
begründet sich daher aus hunderten restaurierten Systemen, bei denen nichts mehr lief, weil irgendeine Datei dem user root gehörte, und der user iobroker da nicht mehr ran durfte