Kategorie: IT

Streaming für klassische Musik

Das ist noch stark verbesserungswürdig.

  • Die Ver­schlag­wor­tung (Inter­pret, Album, Titel) kommt wohl vom (nie stan­dar­di­sier­ten) ID3, taugt für klas­si­sche Musik aber nicht: “Spie­le Beet­ho­vens neun­te unter Clau­dio Abba­do mit den Ber­li­ner Phil­har­mo­ni­kern aus dem Jahr 2000”. Viel Glück bei der Suche, auch wenn die meis­ten Strea­ming­diens­te das haben werden.
  • Über­haupt: Inter­pret. Wer ist denn in die­sem Bei­spiel Inter­pret? Beet­ho­ven ja mal nicht, und doch fin­det man Beet­ho­ven unter Interpreten.
  • Namen: Wie heißt er denn nun? Tschai­kow­ski? Tschai­kow­sky? Tchai­kow­sky? Tchai­kovs­ky? Чайко́вский jeden­falls nicht, obwohl das kor­rekt wäre. Kor­rekt wäre auch im latei­ni­schen Alpha­bet Čaj­kovs­kij, das gibts zwar, aber eher selten.

Das wäre doch was für eine KI!

Eine Merkbefreiung für die Barmer

Vor­hin sehe ich auf dem Han­dy in mei­ne Mail­box: Es gibt eine Mail von der Barmer.:

im Post­fach liegt noch eine unge­le­se­ne Nach­richt für Sie bereit.

Log­gen Sie sich auf www.barmer.de oder in der BAR­MER-App ein, um die­se zu lesen.

Ja dann schickt mir die Mail doch einfach!
Na gut, ich möch­te mich ein­log­gen (immer­noch auf dem Han­dy). Login/Paßwort sind glück­li­cher­wei­se im Bit­war­den hin­ter­legt, und modern wie die Bar­mer zu sein hal­lu­zi­niert, schi­cken sie mir dann eine SMS-TAN 🤦‍♂️.
Nein, lesen kann ich die “Mail” natür­lich noch nicht wegen Coo­kie­ter­ror­ban­ner. Nein, ich will eure Kek­se nicht haben, auch nicht die, die angeb­lich uner­läß­lich sind, aber die kann ich natür­lich nicht ablehnen.
Da ist ein Fra­ge­bo­gen als PDF drin. Na mal reinsehen.

Aber nicht doch!

Popups! Die 2000-er sind zurück! Ich bin mir sicher, daß ein Groß­teil der Nut­zer gar nicht weiß, was im Brow­ser ein Popup ist.
Hilft ja nichts, also am Rech­ner die gan­ze Pro­ze­dur mit Ein­log­gen und SMS-TAN und Cookieterrorbanner.
Das sind übri­gens die funk­tio­nal not­wen­di­gen Cookies:

Ja schon klar.
Jeden­falls kann ich jetzt das PDF laden. Und was steht drin?

[…]
Ant­wor­ten Sie uns ein­fach und schnell online! Rufen Sie dazu unse­ren Online-Ser­vice auf. Die­sen errei­chen Sie über den Link in Ihrer per­sön­li­chen Postfachnachricht.
[…]

In die­sem PDF, das in der “Mail” steckt, steht also: Bit­te den Link in der “Mail” kli­cken. Ganz gro­ßes Tennis!
Ich kom­me also zu einem mehr­sei­ti­gen For­mu­lar, wel­ches ich aus­fül­len soll.
Natür­lich unter­schei­den sich die Sei­ten, bis auf:

Die haben doch nicht alle Lat­ten am Zaun 🙁

Lie­be Bar­mer, falls ihr mit­lest: hier ent­lang ☞ Eure Merk­be­frei­ung, bit­te sel­ber ausfüllen.

Smart TV

Heu­te kam ein neu­es Smart TV, das alte hat nach ca. 13 Jah­ren den Geist auf­ge­ge­ben (genau­er: ver­ständ­li­chen Ton auf­ge­ge­ben) Dyon heißt die Mar­ke, hat­te ich noch nie gehört, angeb­lich sogar ein deut­scher Her­stel­ler (https://www.dyon.eu/) — ich glau­be das nicht, ver­mut­lich kom­men die Gerä­te doch direkt aus China.

Da wir kein Anten­nen- oder Sat-TV haben, ging die Inbe­trieb­nah­me schnell von­stat­ten, auch Netz war sofort da:

Die 192.168.1.88 ist ein piho­le, der Fern­se­her soll ja auch was gutes bekommen.
Alles funk­tio­niert also, die diver­sen Strea­ming-Diens­te sind ein­ge­rich­tet und funktionieren.

Abschlie­ßend wer­fe ich noch einen Blick in die Logs des piho­le um zu sehen, zu wel­chen Heim­te­le­fo­nier-Sei­ten der Fern­se­her pet­zen möch­te. Stellt sich raus: Der Fern­se­her benutzt den piho­le gar nicht! (und auch nicht die 192.168.1.41)
Ein Ver­dacht kommt auf. Ich log­ge mich also auf dem Rou­ter ein und mache:

root@sokoll-router:/config# tcpdump -i switch0 -n host 192.168.1.92 and port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on switch0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:17:09.293692 IP 192.168.1.92.49962 > 8.8.8.8.53: 45092+ AAAA? logs.netflix.com. (34)
21:17:09.293699 IP 192.168.1.92.49962 > 8.8.8.8.53: 17557+ AAAA? nrdp.prod.cloud.netflix.com. (45)
21:17:09.293704 IP 192.168.1.92.49962 > 8.8.8.8.53: 15435+ A? nrdp51-appboot.netflix.com. (44)
21:17:09.293708 IP 192.168.1.92.49962 > 8.8.8.8.53: 49981+ AAAA? nrdp51-appboot.netflix.com. (44)
21:17:09.293715 IP 192.168.1.92.49962 > 8.8.8.8.53: 52581+ A? nrdp.nccp.netflix.com. (39)
21:17:09.293719 IP 192.168.1.92.49962 > 8.8.8.8.53: 42306+ AAAA? nrdp.nccp.netflix.com. (39)
21:17:09.293724 IP 192.168.1.92.49962 > 8.8.8.8.53: 27213+ A? api-global.netflix.com. (40)
21:17:09.321424 IP 192.168.1.92.49962 > 8.8.8.8.53: 60092+ A? logs.netflix.com. (34)
21:17:09.344818 IP 8.8.8.8.53 > 192.168.1.92.49962: 45092 6/0/0 CNAME logs.dradis.netflix.com., CNAME logs.eu-west-1.internal.dradis.netflix.com., CNAME apiproxy-logging-7d0bf81651765786.elb.eu-west-1.amazonaws.com., AAAA 2a05:d018:76c:b684::5a89:1099, AAAA 2a05:d018:76c:b680::5a89:1099, AAAA 2a05:d018:76c:b682::5a89:1099 (254)
21:17:09.346588 IP 8.8.8.8.53 > 192.168.1.92.49962: 17557 6/0/0 CNAME nrdp.prod.dradis.netflix.com., CNAME nrdp.prod.eu-west-1.internal.dradis.netflix.com., CNAME apiproxy-nrdp-prod-nlb-1-bc4243efc68f31ae.elb.eu-west-1.amazonaws.com., AAAA 2a05:d018:76c:b685:9ae6:e07a:670d:52e4, AAAA 2a05:d018:76c:b683:194f:a5df:2ad1:ab02, AAAA 2a05:d018:76c:b684:b7f5:7e97:3e99:751e (283)
21:17:09.346728 IP 8.8.8.8.53 > 192.168.1.92.49962: 52581 8/0/0 CNAME nrdp.nccp.dradis.netflix.com., CNAME nrdp.nccp.eu-west-1.origin.prodaa.netflix.com., A 52.19.104.71, A 52.49.155.216, A 54.76.160.164, A 52.210.130.122, A 52.210.124.147, A 52.18.41.61 (214)
21:17:09.346868 IP 8.8.8.8.53 > 192.168.1.92.49962: 49981 10/0/0 CNAME appboot.dradis.netflix.com., CNAME appboot.eu-west-1.origin.prodaa.netflix.com., AAAA 2a01:578:3::3410:ea4e, AAAA 2a01:578:3::34d3:322, AAAA 2a01:578:3::34d4:c576, AAAA 2a01:578:3::34d3:3154, AAAA 2a01:578:3::3430:8bf6, AAAA 2a01:578:3::369a:f1ed, AAAA 2a01:578:3::22f0:a04c, AAAA 2a01:578:3::36f6:b554 (343)

Au weia! Es wird unge­be­ten Goo­gles DNS verwendet!
Fra­gen kom­men auf: Das Teil erkennt die per DHCP zuge­wie­se­nen Name­ser­ver — und ver­wen­det sie nicht. War­um? Das­Teil hat kein v6 und fragt doch nach AAAA. Warum?
Nun, ich zise­lie­re mir eine Firewall-Regel:

ubnt@sokoll-router:~$ show configuration commands
[…]
set firewall group address-group google-dns address 8.8.4.4
set firewall group address-group google-dns address 8.8.8.8
[…]
set firewall name LAN_OUT rule 20 action reject
set firewall name LAN_OUT rule 20 description 'Dem Fernseher Google DNS verbieten'
set firewall name LAN_OUT rule 20 destination group address-group google-dns
set firewall name LAN_OUT rule 20 destination port 53
set firewall name LAN_OUT rule 20 log disable
set firewall name LAN_OUT rule 20 protocol udp
set firewall name LAN_OUT rule 20 source address 192.168.1.92
set firewall name LAN_OUT rule 20 source mac-address '18:84:c1:bf:66:f1'
[…]

Und das wirkt, tataa!

root@sokoll-router:/config# tcpdump -i switch0 -n host 192.168.1.92 and port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on switch0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:32:35.659906 IP 192.168.1.92.34723 > 8.8.8.8.53: 23537+ A? logs.netflix.com. (34)
21:32:35.659911 IP 192.168.1.92.34723 > 8.8.8.8.53: 44326+ AAAA? nrdp.prod.cloud.netflix.com. (45)
21:32:35.659916 IP 192.168.1.92.34723 > 8.8.8.8.53: 22112+ A? nrdp51-appboot.netflix.com. (44)
21:32:35.659920 IP 192.168.1.92.34723 > 8.8.8.8.53: 57120+ AAAA? nrdp51-appboot.netflix.com. (44)
21:32:35.659924 IP 192.168.1.92.34723 > 8.8.8.8.53: 44242+ A? nrdp.nccp.netflix.com. (39)
21:32:35.659928 IP 192.168.1.92.34723 > 8.8.8.8.53: 19783+ AAAA? nrdp.nccp.netflix.com. (39)
21:32:35.659932 IP 192.168.1.92.34723 > 8.8.8.8.53: 25321+ A? api-global.netflix.com. (40)
21:32:35.662950 IP 192.168.1.92.43839 > 8.8.8.8.53: 22191+ AAAA? api-global.netflix.com. (40)
21:32:35.662958 IP 192.168.1.92.43839 > 8.8.8.8.53: 64306+ A? secure.netflix.com. (36)
21:32:35.663031 IP 192.168.1.92.43839 > 8.8.8.8.53: 32983+ AAAA? secure.netflix.com. (36)
21:32:35.663041 IP 192.168.1.92.43839 > 8.8.8.8.53: 58766+ A? uiboot.netflix.com. (36)
21:32:35.663049 IP 192.168.1.92.43839 > 8.8.8.8.53: 59032+ AAAA? uiboot.netflix.com. (36)
21:32:35.663094 IP 192.168.1.92.43839 > 8.8.8.8.53: 47968+ A? customerevents.netflix.com. (44)
21:32:35.663132 IP 192.168.1.92.43839 > 8.8.8.8.53: 27882+ A? ichnaea.netflix.com. (37)
21:32:35.663181 IP 192.168.1.92.43839 > 8.8.8.8.53: 18226+ A? cdn-0.nflximg.com. (35)
21:32:35.663231 IP 192.168.1.92.43839 > 8.8.8.8.53: 20002+ A? nrdp.prod.ftl.netflix.com. (43)
21:32:35.663263 IP 192.168.1.92.43839 > 8.8.8.8.53: 42457+ AAAA? nrdp.prod.ftl.netflix.com. (43)
21:32:35.883642 IP 192.168.1.92.43839 > 8.8.8.8.53: 13421+ A? nrdp.prod.cloud.netflix.com. (45)
21:32:36.634192 IP 192.168.1.92.43839 > 8.8.8.8.53: 13421+ A? nrdp.prod.cloud.netflix.com. (45)
21:32:36.787647 IP 192.168.1.92.43839 > 8.8.8.8.53: 44242+ A? nrdp.nccp.netflix.com. (39)

Er befragt wei­ter­hin Goog­le, bekommt aber kei­ne Ant­wor­ten mehr 🤓
Und gleich­zei­tig füllt sich das Log vom piho­le. Und natür­lich funk­tio­niert das Smart am TV immer noch.

Hm, mir fällt gera­de auf, daß ich

set firewall name LAN_OUT rule 20 protocol udp

auf

set firewall name LAN_OUT rule 20 protocol all

ändern soll­te, nicht daß das Teil auf TCP umschwenkt irgendwann.

Was machen 99% der Smart­TV-Nut­zer? Die haben weder das Wis­sen noch die Tech­nik, dem Spio­nie­ren wenigs­tens ein wenig ent­ge­gen­zu­tre­ten. Klar könn­te man das Ether­net zie­hen und einen Fire­stick oder so direkt an HDMI anflan­schen. Aber ob der weni­ger spio­nie­ren würde?
Wobei ich sagen möch­te: Dem TV-Her­stel­ler wer­fe ich kei­ne Bös­ar­tig­keit vor, er lie­fert sei­ne Kun­den man­gels Sorg­falt ein­fach den Daten­kra­ken aus, was im End­ef­fekt aber egal ist. Das TV soll ein­fach das anneh­men, was man ihm sagt, und gut wäre es.

 

Ignoriert Chrome meine DNS-Einstellungen?

Goog­le hyper­ven­ti­liert, wenn ich mit v6 von tunnelbroker.net kom­me. Also habe ich mei­nem Name­ser­ver gesagt, er möge für google.com doch bit­te kei­ne AAAA-RRs zurückgeben.

Ich habe v6:

❯ ping6 -c1 heise.de
PING6(56=40+8+8 bytes) 2001:470:6d:c40:bced:266f:8a1e:ef35 --> 2a02:2e0:3fe:1001:302::
16 bytes from 2a02:2e0:3fe:1001:302::, icmp_seq=0 hlim=54 time=63.475 ms

Klappt aber (wie gewollt) nicht für Goog­le, weil der Name­ser­ver nur A zurückgibt:

❯ ping6 -c1 google.com ; host -t aaaa google.com
ping6: getaddrinfo -- nodename nor servname provided, or not known
google.com has no AAAA record

Aber wenn Chro­me zu Goog­le geht — tadaa!

Die­ses Netz­werk ist auf­grund unbe­ant­wor­te­ter Miss­brauchs­be­schwer­den über bös­wil­li­ges Ver­hal­ten gesperrt. Auf die­ser Sei­te wird über­prüft, ob es sich wirk­lich um einen Men­schen han­delt, der die Anfra­gen sen­det, und nicht um einen Robo­ter, der aus die­sem Netz­werk stammt.

IP-Adres­se: 2001:470:6d:c40:bced:266f:8a1e:ef35

Wie kann das sein?
Ich habe Chro­me gesagt, er soll mei­nen Ser­ver verwenden:

 

Und ja, mein Name­ser­ver macht DNSSEC:

❯ dig +dnssec sokoll.com | grep flags
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

Was könn­te hier falsch sein?
Sind SIE hin­ter mir her?

Der Name der Rose, äh, des Bots

Ist eben nur ein Name und nicht not­wen­dig der Bot.
fail2ban ver­mu­tet eine DOS-Atta­cke auf www.example.com und blockt:

root@www:~# fail2ban-client status apache-dos-1
Status for the jail: apache-dos-1
|- Filter
| |- Currently failed: 53
| |- Total failed: 1894165
| `- File list: /var/log/apache2/www.example.com-access.log
|- Currently banned: 1
|- Total banned: 4
`- Banned IP list: 45.137.22.238

Beginn:

45.137.22.238 - - [02/Nov/2023:20:14:00 +0100] "GET / HTTP/1.1" 302 5289 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)"

Ende:

45.137.22.238 - - [02/Nov/2023:20:15:49 +0100] "GET /pfad/zu/ressource HTTP/1.1" 200 22386 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)"

Dazwi­schen 1235 Requests — nicht schlecht, Herr Specht! Ist Goog­le völ­lig durch­ge­knallt? Aber Moment:

❯ host 45.137.22.238
238.22.137.45.in-addr.arpa domain name pointer hosted-by.rootlayer.net.

Das ist doch gar nicht Google?
Nein, ist es nicht:

❯ whois 45.137.22.238
[…]
inetnum: 45.137.20.0 - 45.137.23.255
netname: BD-ROOTLAYER-20190805
[…]
organisation: ORG-RWSL1-RIPE
org-name: RootLayer Web Services Ltd.
country: BD
org-type: LIR
address: 134/7 B, Furfura Sharif Road, Darus Salam, Mirpur, Dhaka
address: 1216
address: Dhaka
address: BANGLADESH

Wenn das Goog­le ist, dann bin ich Jesus.

Trau schau wem!

Open Source

Schon seit lan­ger Zeit gehen mir man­che, vie­le OSS-Ver­tei­di­ger auf die Ner­ven, ein­fach weil sie (also die, die mir auf die Ner­ven gehen) kom­plett blau­äu­gig sind.
Da wird ad infi­ni­tum wie­der­holt: “OSS ist bes­ser, weil da jeder in den Quell­code rein­se­hen kann und jeder den Code ver­bes­sern kann.”
Ja, natür­lich stimmt das — nur macht es den Code nicht bes­ser, solan­ge es nicht auch pas­siert. Karl Marx, elf­te Feu­er­bach-The­se: “Die Phi­lo­so­phen haben die Welt nur ver­schie­den inter­pre­tiert, es kommt aber dar­auf an, sie zu ver­än­dern.” Mit ande­ren Wor­ten: vom blo­ßen Rein­se­hen ändert sich gar nichts.
Und schließ­lich muß man auch kom­pe­tent sein. Hat­te Open­BSD eine FBI-Back­door im IPSEC? Am Ende hat man sich wohl auf “Wir haben jeden­falls nix gefun­den” geei­nigt. Und wer sagt, daß das Debi­an-Desas­ter mit vor­her­seh­ba­rem Zufall in open­s­sl heu­te unmög­lich ist? Heartbleed?

Ich kom­me dar­auf wegen Squid. 35 Zero­days seit Jah­ren!!! Und war­um? Darum:

Howe­ver, they (das Squid-Team) are effec­tively under­staf­fed, and sim­ply do not have the resour­ces to fix the dis­co­ver­ed issues.

Nun hat hier jemand mit sehr viel Ahnung sich den Code nicht nur ange­se­hen, son­dern ihn auch begut­ach­tet. Bugs sogar gemel­det — hat alles nichts genützt, bis heu­te schein­bar nicht. Was ist jetzt bes­ser? Ein squid mit 35 allen Bösen (TLAs, Blackhats) bekann­ten Zero­days, oder ein IIS mit 350 nur den TLAs und Micro­soft bekann­ten Zerodays?

Ein ande­res Pro­blem: Was, wenn die Sicher­heits­lü­cken in den Algo­rith­men lie­gen? Ein offe­ne­res Ver­fah­ren als die Kürung von NIST-Stan­dards kann es ja kaum geben — und doch war lan­ge Zeit auch den bes­ten Fach­leu­ten nicht klar, ob die NSA nicht in Dual_EC_DRBG eine Hin­ter­tür ein­ge­baut hat (sie hat es)
Habt ihr alle ed25519 reviewed? 😛
Und die Welt bricht gleich ganz zusam­men, wenn der Com­pi­ler Back­doors ein­baut. Da kann man dann noch so inten­siv es geht den Quell­text ana­ly­sie­ren — er wird kei­ne Back­door haben, jeden­falls nicht die, die der Com­pi­ler ein­ge­baut hat.

Open source ist nicht bes­ser als clo­sed source, nur weil sie open ist. Es muß sich jemand küm­mern, und ich bezweif­le, daß der Anteil der OSS-Ver­fech­ter, die wirk­lich a) in den Code gese­hen und b) ihn auch ver­stan­den haben, über der Meß­bar­keits­gren­ze liegt.
Oh, und: “Ja, aber bei clo­sed source weißt du gar nichts, kannst gar nichts wis­sen!” ist natür­lich rich­tig, aber What­a­bou­tism. Denn es ändert an Open source gar nichts, wenn Clo­sed source noch kaput­ter ist.

Einen Lösungs­vor­schlag habe ich auch nicht, aber viel­leicht dies: Dort, wo Soft­ware für die Infra­struk­tur essen­ti­ell ist (aus der Grab­bel­kis­te: open­s­sl, libcurl) soll­te der Staat Code Review und Pen­test­ing bezahlen.

Alter Mac, aktuelles OS

Mein Mac von 2014 wird schon lan­ge nicht mehr unter­stützt: https://support.apple.com/en-us/HT213772 — und doch hat er die letz­te MacOS Ver­si­on (Sono­ma), gera­de mal ein paar Tage alt:

Dan­ke, Open Core Lega­cy Patcher! Sieht so aus, als wür­de alles funktionieren 🙂 !

Natür­lich weiß ich, daß das mit Linux alles kein Pro­blem wäre — ich hat­te lan­ge genug ver­schie­de­ne Linuxen auf dem Desk­top — bis hin zu Com­piz mit drölf­zig Plug­ins, die wirk­lich geil sind. Und zum Arbei­ten völ­lig unnö­tig. Irgend­wann war ich es leid, nur noch zum Selbst­zweck Stun­den um Stun­den an einer gei­len Kon­fig zu schrau­ben, wo ich doch eigent­lich nur ein brau­che: einen Ter­mi­nal­mul­ti­ple­xer mit einem anstän­di­gen Terminalemulator.
Also MacOS mit Got­tes Ter­mi­nal: iTerm 😉
Und der iMac war damals preis­lich unschlag­bar, deut­lich güns­ti­ger als jeder ver­gleich­ba­re PC.