Kategorie: IT

Die Cloud, collateral damage

Ich brow­se gera­de durch einen Issue bei #Git­lab und lese dies:

As you know, Git­Lab was migra­ted to goog­le cloud and this ser­vice is not acces­si­ble from Iran. I did not know about the sta­te of this issue until you men­ti­on me.

Egal, ob nun Goog­le, Apple, Micro­soft, Ora­cle… — die­ses “der Algo­rith­mus ent­schei­det” ist ganz ganz gro­ßer Mist. Davor soll sich nie­mand ver­ste­cken dürfen.

Opensource ist unwichtig

Mit den Jah­ren reagie­re ich immer all­er­gi­scher auf die völ­lig unre­flek­tier­ten Jubel­ge­sän­ge pro OSS.

OSS hat einen ein­zi­gen Vor­teil: Umsonst in der Anschaf­fung. Jeder wei­te­re behaup­te­te Vor­teil, ins­be­son­de­re daß OSS siche­rer sei weil ja jeder rein­se­hen kann, scheint mir rea­li­täts­fern: Denn es sind IMMER die ande­ren, die ja rein­schau­en kön­nen. Wor­aus folgt: Nie­mand schaut rein. Oder? Wer von euch hat denn den Quell­code zum Linux Ker­nel, zu Open­Of­fice, Fire­fox, Gno­me… gele­sen? Und lesen allein ist ja kom­plett sinn­los, man muß auch noch kom­pe­tent sein. Nein, wir haben nicht ein­mal den Quell­code für /bin/true gele­sen. Oder?
“Die Com­mu­ni­ty” ist auch eine schö­ne Vor­stel­lung — allein: die Ent­wick­lungs­kos­ten für die wirk­lich gro­ßen OSS-Pro­jek­te zah­len Fir­men, indem sie Pro­gram­mie­rer bereit­stel­len. Und die arbei­ten wohl eher nach Vor­ga­ben ihrer Arbeit­ge­ber als nach unse­ren Issue­tra­cker-Tickets. (Mir fal­len auch vie­le Aus­nah­men ein, aber die ändern nichts am Prinzip)

Die Zei­ten, in denen ein Stu­dent einen Ter­mi­nal Emu­la­tor schreibt und hin­ten ver­se­hent­lich ein Ker­nel rau­spur­zelt, der dann die Welt erobert — die sind vorbei.

Nein, es geht um etwas ande­res: offe­ne Pro­to­kol­le und offe­ne Datei­for­ma­te. Im Inter­net, gibt es da noch pro­prie­tä­re Pro­to­kol­le? Mir fällt nichts ein. Außer­halb sicher­lich, aber auch da fällt mir gera­de nichts ein.
Aber die offe­nen Datei­for­ma­te: Da ent­schei­det sich m.E. die Zukunft. Wir sehen ja den Kampf: Micro­soft hat­te sei­ne völ­lig geschlos­se­nen Office-For­ma­te und muß­te dann (wegen der Regie­rungs­auf­trä­ge) neue For­ma­te erfin­den: Office Open XML, das so kom­plex ist, daß nie­mand, auch MS sel­ber nicht, es voll­stän­dig imple­men­tiert. Ange­rei­chert dann um eine zu allen ande­ren inkom­pa­ti­ble Makro­spra­che, so daß auch heu­te noch .docx auto­ma­tisch als “Word-Doku­ment” ver­stan­den wird — was falsch ist. Micro­soft Word kann docx schrei­ben, Apple Pages kann es, Libre­of­fice kann es, Papy­rus Office kann es… Ja, die Doku­men­te sehen viel­leicht über­all leicht anders aus, aber wer defi­niert denn, was “rich­tig” und was “falsch” ist?

Ich bin davon über­zeugt, daß unse­re digi­ta­le Frei­heit zuerst an offe­nen For­ma­ten — und danach viel­leicht an quell­of­fe­nen Ver­ar­bei­tungs­pro­gram­men — hängt.

Und der Titel die­ses Posts ist natür­lich mit Absicht provokant 😉

Umdeutung von Symbolen

Ges­tern woll­te ich der Toch­ter mal wie­der was von vor dem Krieg erzäh­len: Frü­her wur­de auf Dis­ket­ten gespei­chert, Dis­ket­ten sahen so aus, das nimmt man heu­te manch­mal noch als Speichern-Symbol.
Und wie? Nun, indem ich ihr eine moder­ne App mit Spei­chern-Sym­bol zeige:

Na, Toch­ter, was glaubst Du, wor­auf man zum Spei­chern tip­pen muß?”

Sie zeigt ziel­si­cher auf die Dis­ket­te, ich stau­ne Bau­klöt­zer. “Wor­an hast Du das erkannt???” “Na das ist doch eine Spei­cher­kar­te!” ant­wor­tet sie verwirrt…

Firmware-Update für Logitech

Die klei­ne Toch­ter hat an ihrem Odroid eine draht­lo­se Kom­bi aus Tas­ta­tur und Maus zu hän­gen, für die gibts schein­bar Security-Updates:

root@gerhard:~# fwupdmgr get-upgrades
? BJTD4R has no available firmware updates
Unknown Product
?
??Unifying Receiver:
  ?   Device ID:           71fcf526569a6cf966914382b98edf144b59cf48
  ?   Summary:             A miniaturised USB wireless receiver
  ?   Current version:     RQR24.01_B0023
  ?   Bootloader Version:  BOT03.01_B0008
  ?   Vendor:              USB:0x046D
  ?   Install Duration:    30 seconds
  ?   GUIDs:               cc4cbfa9-bf9d-540b-b92b-172ce31013c1
  ?                        fcf55bf5-767b-51ce-9c17-f6f538c4ee9f ? HIDRAW\VEN_046D&DEV_C52B&REV_00
  ?                        279ed287-3607-549e-bacc-f873bb9838c4 ? HIDRAW\VEN_046D&DEV_C52B
  ?   Device Flags:        ? Updatable
  ?                        ? Supported on remote server
  ?
  ??Unifying Receiver (RQR24) Device Update:
  ?     New version:       RQR24.06_B0030
  ?     Remote ID:         lvfs
  ?     Summary:           Firmware for the Logitech Unifying receiver
  ?     License:           Proprietary
  ?     Size:              86.4?kB
  ?     Vendor:            Logitech
  ?     Duration:          30 seconds
  ?     Flags:             is-upgrade
  ?     Description:       This release addresses an encrypted keystroke injection issue known as Bastille security issue #13. The vulnerability is complex to replicate and would require a hacker to be physically close to a target.
  ?
  ?     A few of Logitech's devices used to send select buttons in an unencrypted way, and in an effort to protect against this vulnerability, Logitech removed the feature. Affected hardware is:
  ?
  ?      ? Wireless Mouse M335
  ?      ? Zone Touch Mouse T400
  ?      ? Wireless Mouse M545
  ?      ? Wireless Mouse M560
  ?      ? Touch Mouse M600
  ?      ? Touch Mouse T620
  ?      ? Wireless Rechargeable Touchpad T650
  ?
  ?     Although Logitech does not recommend it, these features may be re-activated by keeping/downgrading the receiver to an older firmware.
  ?
  ??Unifying Receiver (RQR24) Device Update:
        New version:       RQR24.05_B0029
        Remote ID:         lvfs
        Summary:           Firmware for the Logitech Unifying receiver
        License:           Proprietary
        Size:              86.4?kB
        Vendor:            Logitech
        Duration:          30 seconds
        Flags:             is-upgrade
        Description:       This release addresses an unencrypted keystroke injection issue known as Bastille security issue #11. The vulnerability is complex to replicate and would require a hacker to be physically close to a target.

root@gerhard:~#

Was mache ich nun?

Angst vor Angrif­fen habe ich wirk­lich nicht.

fail2ban umgehen

Gera­de sehe ich mal durch die Logs des sshd, da fällt auf:

Mar  2 09:59:46 big sshd[7021]: Invalid user admin from 141.98.80.69 port 45833
Mar  2 09:59:46 big sshd[7024]: Invalid user admin from 141.98.80.70 port 35859
Mar  2 09:59:54 big sshd[7037]: Invalid user user from 141.98.80.71 port 46773
Mar  2 09:59:55 big sshd[7468]: Invalid user admin from 141.98.80.82 port 43473
Mar  2 09:59:56 big sshd[7573]: Invalid user operator from 141.98.80.85 port 50042
Mar  2 09:59:57 big sshd[7599]: Invalid user test from 141.98.80.69 port 33773
Mar  2 10:00:06 big sshd[7684]: Invalid user guest from 141.98.80.71 port 42305
Mar  2 10:00:07 big sshd[8321]: Invalid user ubnt from 141.98.80.82 port 38095
Mar  2 10:00:07 big sshd[8997]: Invalid user guest from 141.98.80.83 port 35895
Mar  2 10:00:07 big sshd[9004]: Invalid user support from 141.98.80.85 port 52444

Das heißt, der Angrei­fer hat meh­re­re IPs unter sei­ner Kon­trol­le und kann die wech­seln. Sinn­voll ist das nur, um ein IDS zu umgehen.

Gigabit @home, wofür nochmal?

Ich habe (Voda­fone Kabel) Giga­bit zu Hau­se, natür­lich nur im Down­load, momen­tan gera­de (was macht der Rest der Fami­lie? Inter­net kopieren?)

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   447 MBytes   375 Mbits/sec  162             sender
[  5]   0.00-10.00  sec   444 MBytes   372 Mbits/sec                  receiver

Und Upload:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  64.8 MBytes  54.4 Mbits/sec   57             sender
[  5]   0.00-10.00  sec  63.0 MBytes  52.9 Mbits/sec                  receiver

Im Down­load habe ich aber auch schon Wer­te im die 980 gesehen.
Und was nut­zen wir davon?

Das ist der Traf­fic eines Jah­res, mit durch­ge­hend Home­of­fice, zwei Kin­dern im Home­schoo­ling, jedes mit eige­nem Rechner.
Gut, wir zocken kaum, das biß­chen Mine­craft des Soh­nes fällt nicht auf.

Ich ver­ste­he nicht, wes­we­gen alle Welt Giga­bit haben will.

Ins Knie schießen für Fortgeschrittene

Ges­tern ging @workplace das Dra­ma los:
DNS-Reso­lu­ti­on für unse­re Hosts ging mal, mal nicht mit SRVFAIL. Unser eige­ner auto­ri­ta­ti­ver Ser­ver hat­te kei­ne Pro­blem, aber der Rest der Welt: 1.1.1.1, 8.8.8.8, 9.9.9.9 und so wei­ter. Alle wie ein Blin­ker: An-Aus-An-Aus.
Als anstän­di­ger Hob­by-Admin betrei­be ich die frag­li­che Zone natür­lich mit DNSSEC, seit vie­len Jah­ren völ­lig schmerzlos.
Doch ges­tern zeig­te mir Dns­viz viel rot:

Very uncool. Nun KANN das eigent­lich gar nicht pas­sie­ren, ich habe in mei­nem bind die Zone so konfiguriert:

zone "sagich.nicht" {                                                                                                                                                                                                                          
  type master;                                                                                                                                                                                                                           
  auto-dnssec maintain;                                                                                                                                                                                                                  
  key-directory "/keys";                                                                                                                                                                                                                 
  inline-signing yes;                                                                                                                                                                                                                    
  file "sagich.nicht";                                                                                                                                                                                                         };

Das gan­ze Signing pas­siert also auto­ma­tisch, und das seit Jah­ren, und dar­an hat sich auch nichts geän­dert. Kru­zi­tür­kn! Ich bin kein DNS­SEC-Pro­fi, wie gesagt, das läuft seit Jah­ren sta­bil und ohne mensch­li­ches Eingreifen.

Heu­te früh dann noch mal mit fri­schem Tee einen Blick in die Run­de gewor­fen: Mein Pri­ma­ry hat eine Seri­al von 2021021014, wäh­rend der Secon­da­ry 2021070247 hat. Let’s do the math: 2021021014 < 2021070247. Wenn man Seri­al schreibt, hat sich die Schreib­wei­se YYY­YMMDD­zwei­stel­li­ge­sin­kre­ment bewährt. Es gibt im Fir­men-DNS (hof­fent­lich) nur zwei Men­schen, die da schrei­ben können/dürfen — einen Kol­le­gen und mich. Der höhe­ren Seri­al 2021070247 nach zu urtei­len, hat jemand am 07. 02. 2021 die Seri­al erhöht, um einen gewal­ti­gen Sprung. Was zur Fol­ge hat­te, daß der Secon­da­ry ab die­sem Zeit­punkt kei­ne Noti­fies mehr ent­ge­gen­nahm, war­um auch. Auch nicht die Noti­fies, daß sie die RRSIGs geän­dert haben…
Ich für mei­nen Teil kann mich nicht erin­nern, am 7. 2. im DNS geschmiert zu haben — was aber nicht all­zu­viel bedeu­tet, viel­leicht habe ja doch ich das vergeigt.
Jetzt müs­sen wir war­ten, bis der Admin des Secon­da­ries die Zone bei sich löscht und neu zieht, dann ist hof­fent­lich alles wie­der schön.

#sel­flart #dns #dns­sec

Home Assistant auf Docker umgestellt

Ich hat­te bis­lang Home Assi­stant in einem Python vir­tu­al envi­ron­ment zu lau­fen — war­um? Nun, es gibt wohl ein Image auf SD-Kar­te: Ein­schie­ben, boo­ten, HA läuft. Aller­dings ist ein Pi viel zu potent, als daß man ihn mit einer ein­zi­gen Auf­ga­be belei­di­gend unter­for­dern wollte.
Da kam die venv-Vari­an­te gera­de recht: Man kann rum­schwei­nen, Python-Packa­ges nach­in­stal­lie­ren nach Gus­to, ohne das sys­tem-Python anfas­sen zu müs­sen. Mit einer Ein­schrän­kung: Man ist an das System-Python(3) gebun­den, und das ist bei einem aktu­el­len Raspbi­an 3.7.3 — und HA mault das seit Mona­ten als depre­ca­ted an.
Ein neue­res Python gibt es aber nicht als Paket (jeden­falls habe ich nichts gefun­den). Also ich bin ja ein uber­he­ro, habe vie­le vie­le Jah­re send­mail aus den Quel­len über­setzt und mei­ne aller­ers­te sendmail.cf tat­säch­lich sel­ber geschrie­ben (und danach m4 ent­deckt), also so ein pop­li­ges Python sel­ber bau­en, ist ja wohl kei­ne Her­aus­fo­de­rung! Stellt sich raus: In der Tat, ist es nicht, geht ganz smooth. Also schnell noch Alia­se gesetzt und los: python-venv gestar­tet, HA gestartet.

Wel­co­me tot the depen­den­ci­es hell!¹

Ach was da alles nicht ver­füg­bar ist! xz,sqlite3 — danach habe ich aufgegeben.

Die Lösung?

systemctl stop home-assistant@homeassistant.service
systemctl disable home-assistant@homeassistant.service
docker run --init -d --name="home-assistant" -e "TZ=Europe/Berlin" -v /home/homeassistant/.homeassistant:/config/ --net=host --restart=always homeassistant/raspberrypi4-homeassistant:stable

Löppt. So ein­fach kann es sein!

root@r4:~# python3 --version
Python 3.7.3
root@r4:~# docker exec -ti home-assistant python3 --version
Python 3.8.7
root@r4:~#

Dann will man natür­lich gleich Watch­tower haben. Das meckert zwar beim Star­ten, läuft dann aber wohl doch:

root@r4:~# docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
33f87b78d1ba24793b0272db247f7f4fc9315e0e4aee335128e1049db6fe3aa3
root@r4:~# docker ps
CONTAINER ID   IMAGE                                             COMMAND         CREATED          STATUS          PORTS      NAMES
33f87b78d1ba   containrrr/watchtower                             "/watchtower"   13 seconds ago   Up 11 seconds   8080/tcp   watchtower
bfebd671b8fd   homeassistant/raspberrypi4-homeassistant:stable   "/init"         43 minutes ago   Up 43 minutes              home-assistant
root@r4:~#

Wun­der­bar! War­um habe ich das nicht seit lan­gem so???


¹ OK, wer schon mal Ruby Depen­den­ci­es hin­be­kom­men hat, der wird das­sel­be bei Python noch voll­trun­ken hinbekommen.