Libreboot – Installation auf einem Thinkpad X200

März 19th, 2018 § 0 comments § permalink

Was ist Libreboot?

Libreboot ist ein Fork des etwas bekannteren Coreboot. Beide sind freier, open-source Ersatz für proprietäre BIOS (aka das Ding, was immer kommt, wenn ihr euren PC bootet).

Und warum das ganze?

Ihr habt also auf eurem Rechner Linux laufen, und denkt jetzt seid ihr sicher vor Trojanern und Rootkits? Tja, da muss ich euch enttäuschen. Auf so einem BIOS-Chip sind meist mindestens 4MB Platz. Manchmal auch 8MB, manchmal 16MB. Da passt verdammt viel drauf – zur Visualisierung: Auf einem Freifunk-Router mit 4MB läuft ein komplettes Linux. Und was ist jetzt auf diesem doofen Chip? Das weiß leider niemand außer dem Hersteller, denn so ist das nunmal mit proprietärer Software. Auf fast allen Thinkpads ist da schonmal Computrace – eine nette kleine Spyware mit Rootkit und eigenem TCP/IP-Stack. Die telefoniert nach Hause und fragt regelmäßig einen Server in Kalifornien, ob das Thinkpad als gestohlen gemeldet wurde. Tolles Feature für Firmenkunden. Doofer Bug für alle, die Datenschutz cool finden. Mit einer einfachen Neuinstallation eures Systems werdet ihr die nicht los – denn die ist auf dem BIOS-Chip. Und die hat immer Root – denn sie ist noch eine Ebene über dem System. Allein das war für mich genug um den Mist zu ersetzen.

Dann ist da noch die nette Sache mit den whitelists: An sich ist miniPCI ein Standard. Ihr solltet also jegliche miniPCI-Karte in euren Rechner einbauen können, und das muss laufen. Tut es aber nicht – weil euer BIOS nach der Lenovo-Herstellerkennung sucht – und wenn es die nicht findet, verweigert es den Bootvorgang. Und wenn ihr jetzt die serienmäßige Broadcom-WLAN-Karte durch eine bessere ersetzen wollt? Tja, doof gelaufen.

Und wie mache ich das jetzt?

Tja, das ist jetzt der schwierige Part. Denn ihr müsst direkt an die Hardware – theoretisch könntet ihr den Chip auch einfach über Software neu beschreiben, aber leider hat der (zumindest bei Lenovo) einen Schreibschutz, der nur extern umgangen werden kann. Wenn ihr dann erst mal Libreboot installiert habt, könnt ihr den Schreibschutz auch deaktiveren – und in Zukunft direkt auf den Chip zugreifen.

Ihr braucht also ein passendes Programmiergerät – das kann z.B. ein Raspberry Pi sein, oder ein Bus Pirate.

In diesem Beispiel benutze ich einen Raspberry, weil der eben gerade da war. :) Mittlerweile gibt im Maschinenraum aber auch wieder einen Bus Pirate.

Raspberry vorbereiten:

- Raspbian Lite runterladen: https://www.raspberrypi.org/downloads/raspbian/
- auf SD-Karte (>4gb) kopieren, z.B. $ dd bs=1M if=[IMG] of=[DEVICE]
- SSH aktivieren: Datei namens SSH in Boot-Partition anlegen
- SD-Karte in den Raspberry stecken, Ethernet anschließen, Netzteil anschließen
- die IP rausfinden (z.B. auf der Oberfläche des Routers nachschauen)
- Terminal öffnen und verbinden: ssh pi@your.pi.address -p 22 (passwort: raspberry)
- $ sudo raspi-config
- Expand Filesystem, Change Locale (de_DE.UTF-8 UTF-8), en_GB.UTF-8, timezone einstellen, aktivieren: SSH server, SPI, I2C
- $ sudo apt-get update && sudo apt-get dist-upgrade && reboot
- $ sudo apt-get update && sudo apt-get install libftdi1 libftdi-dev libusb-dev libpci-dev subversion libusb-1.0-0-dev
Flashrom installieren:
- $ svn co https://code.coreboot.org/svn/flashrom/trunk flashrom
- $ cd flashrom
- $ make
- $ sudo make install

Libreboot-ROM-Image vorbereiten (auf dem PC):

- Utils & ROMs runterladen: http://mirror.helium.in-berlin.de/libreboot/stable/20160907/
- Ordner erstellen als Zwischenspeicher: # mkdir ~/work
- Entpacken: # cd ~/work && tar -xvJf ~/Downloads/libreboot_r20160907_util.tar.xz
- Bios-Chip-Größe rausfinden: # sudo dmidecode | grep ROM\ Size

- dementsprechend dafür passendes ROM aussuchen
- MAC-Adresse des Rechner finden: ifconfig eth0
- MAC-Adresse passend einfügen: # cd ~/work/libreboot_r20160907_util/ich9deblob/x86_64 ; # sudo ./ich9gen --macaddress XX:XX:XX:XX:XX:XX
- ins ROM kopieren: bei 8mb-rom: # dd if=ich9fdgbe_8m.bin of=<pfad zur vorlage> bs=1 count=12k conv=notrunc ; bzw. 4mb: # dd if=ich9fdgbe_4m.bin of=<pfad zur vorlage> bs=1 count=12k conv=notrunc
- auf den Pi kopieren: # scp ~/work/libreboot.rom pi@your.pi.address:~/flashrom/libreboot.rom

Pi ausschalten:
pi# sudo shutdown now -hP

Installation:

Thinkpad zerlegen, Chip finden, Nummer/Typ aufschreiben, entsprechend anschließen: http://netzfueralle.blog.rosalux.de/2016/05/15/libreboot-auf-lenovo-thinkpad-x200/#raspberry_pi_mit_dem_romchip_verkabeln
https://github.com/bibanon/Coreboot-ThinkPads/wiki/X200-X201-Hardware-Flashing-with-Raspeberry-Pi
(Chip-Namen: https://www.flashrom.org/Supported_hardware)

Pi booten, per ssh anmelden
pi# cd ~/flashrom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread1.rom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread2.rom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread3.rom
pi# sha512sum romread*.rom
-> checksum gleich? -> cool, rom speichern als backup
-> dann flashen:
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -w libreboot.rom
-> ok? -> dann Pi aus, alles gut! Ansonsten eben nochmal.

Yeah! Freiheit!

Mehr Infos und das ganze in live und Farbe gibt's am 18.04. in unserem Workshop zum Thema.

OS/2-Install-Party am Mittwoch

März 16th, 2018 § 0 comments § permalink

Linux-Install-Party? Nee, das ist viel zu Mainstream für uns!

Deswegen treffen wir uns am Mittwoch, den 21.03., ab 20 Uhr zu einer OS/2-Install-Party.

Wir bringen mit: ein Thinkpad mit unglaublichen 300MHz PentiumII-Power & einen Stapel Disketten mit OS/2 Warp 4.

Ihr bringt mit: gute Laune, Popcorn, und bitte keine technischen Fachfragen ;)

Wer im 90er-Jahre-Manager-Kostüm erscheint, bekommt eine Mate gratis!

Uni-Weimar VPN Client unter Linux mit OpenConnect

März 2nd, 2018 § 0 comments § permalink

Seit einiger Zeit gibt es ein neues VPN-Setup an der BUW, die Technik dahinter nennt sich Cisco AnyConnect und für Linux-Nutzer gibt es zwar einen closed-source Client von Cisco, der auch manchmal funktioniert (Anleitung hier, Client gibt es hier) - aber idealerweise möchte man sein VPN direkt in den NetworkManager integrieren und möglichst auf proprietäre Software verzichten.

Glücklicherweise gibt es eine Lösung dafür - OpenConnect - Normalerweise lässt sich das für jede Distribution installieren, wenn es entsprechende Pakete gibt. Für Arch Linux z.B.

pacman -S networkmanager-openconnect wget

Ubuntu/Debian:

apt install network-manager-openconnect network-manager-openconnect-gnome wget

UPDATE 04/2021: 'Cisco Desktop Trojaner erlauben' ist nicht mehr notwendig. 

Damit kann man sich auch ohne die nervige Cisco-Software mit dem VPN verbinden - zumindest in der Theorie - denn bei der Konfiguration gibt es ein interessantes Häkchen "Cisco Desktop Trojaner erlauben", was gesetzt werden muss:

Die OpenConnect Website klärt auf:

The 'Cisco Secure Desktop' is a bit of a misnomer — it works by downloading a trojan binary from the server and running it on your client machine to perform some kind of 'verification' and post its approval back to the server. This seems anything but secure to me, especially given their history of trivially-exploitable bugs.

It's also fairly easy to subvert, by running your own modified binary instead of the one you download from the server. Or by running their binary but poking at it with gdb.

We support this idiocy, but because of the security concerns the trojan will be executed only if a userid is specified on the command line using the --csd-user= option, or the --csd-wrapper= option is used to handle the script in a 'safe' manner.

Bei Cisco liest sich das so:

The AnyConnect Posture Module provides the AnyConnect Secure Mobility Client the ability to identify the operating system, antivirus, antispyware, and firewall software installed on the host. The Host Scan application, which is among the components delivered by the posture module, is the application that gathers this information.

In the adaptive security appliance (ASA), you can create a prelogin policy that evaluates endpoint attributes such as operating system, IP address, registry entries, local certificates, and filenames. Based on the result of the prelogin policy’s evaluation, you can control which hosts are allowed to create a remote access connection to the security appliance.

Wieso ist das überhaupt aktiv? Es funktioniert jedenfalls auch ohne Virenscanner und Firewall...

Hier ist das entsprechende Script was für den BUW-VPN funktioniert - zusätzlich muss wget noch installiert sein.

Das muss im entsprechenden Formular angegeben werden: csd-wrapper.sh - herunterladen und ausführbar machen z.B. so:

wget -O ~/csd-wrapper.sh https://gitlab.bau-ha.us/snippets/4/raw

chmod +x ~/csd-wrapper.sh

Dann noch im Network-Manager Dialogfeld auswählen und dann sollte es funktionieren.

Testen kann man via

$ openconnect vpngate.uni-weimar.de --csd-wrapper ./csd-wrapper.sh

Damit kann man sich dann mit NetworkManager mit dem VPN verbinden.

 

Und dann kann man direkt bei der Netzwerkauswahl den VPN anschalten ohne Umwege über den Cisco-Client.

Links:

https://web.archive.org/web/20161006072143/http://blog.yunak.eu/2013/07/19/openconnect/

http://kozelj.org/anyconnect-picket-fence-torn-down

Vortrag zu CC-Lizenzen von Konrad Behr

Februar 27th, 2018 § 0 comments § permalink

Leider kommt der Beitrag etwas spät und wir hätten das ganze auch etwas besser ankündigen können... aber so zumindest das "Review"...

» Read the rest of this entry «

Vortrag: Open Hardware & co – 28.2. ab 21Uhr

Februar 27th, 2018 § 0 comments § permalink

Um die Freie-Software/Open-Source/Lizenzen-Reihe im Maschinenraum fortzusetzten gibt's am Mittwoch ab 21Uhr einen Vortrag & anschließende Diskussion zu Open Hardware.

Kommt vorbei & lernt was & diskutiert mit!