Prüfsummen und Signaturen
Nahezu alle Distributionen haben die Gefahr erkannt und treffen entsprechende Schutzvorkehrungen. Dabei geht es nicht nur um absichtliche Manipulationen, sondern in erster Linie darum, ein viel häufiger auftretendes Problem zu verhindern: Die Installation beschädigter Pakete, beispielsweise durch einen fehlerhaften Download.
Per Definition enthalten RPM-Pakete in ihrem Header Prüfsummen in den Formaten SHA1 und MD5 sowie Informationen über die Dateigröße. Damit kann der Admin die Integrität eines heruntergeladenen Paketes wirkungsvoll überprüfen. Eine Authentifizierung des Herausgebers ist damit jedoch noch nicht möglich, die Quelle des Paketes bleibt vorerst im Unklaren. Die Integrität eines RPMs prüft das Kommando:
$ rpm --checksig beaver-0.4.1-1.x86_64.rpm beaver-0.4.1-1.x86_64.rpm: sha1 md5 OK
Wer sicherstellen will, dass ein Paket auch wirklich vom angegebenen Herausgeber stammt, greift auf dessen Signatur zurück – seriöse Entwickler signieren ihre Pakete. Genau wie bei E-Mail oder Dateien kommt hier das freie Kryptographiesystem GPG zum Einsatz. Der Entwickler erstellt als erstes ein GPG-Schlüsselpaar, mit dem er seine Pakete anschließend digital signiert. Das Erstellen des Schlüssels erledigt der Befehl »gpg --gen-key«
(Listing 1).
Listing 1
gpg --gen-key
01 [...] 02 gpg: enabled debug flags: memstat 03 Bitte wählen Sie, welche Art von Schlüssel Sie möchten: 04 (1) RSA und RSA (voreingestellt) 05 (2) DSA und Elgamal 06 (3) DSA (nur signieren/beglaubigen) 07 (4) RSA (nur signieren/beglaubigen) 08 Ihre Auswahl? 2 09 DSA-Schlüssel können zwischen 1024 und 3072 Bit lang sein. 10 Welche Schlüssellänge wünschen Sie? (1024) 11 Die verlangte Schlüssellänge beträgt 1024 Bit 12 Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll. 13 0 = Schlüssel verfällt nie 14 <n> = Schlüssel verfällt nach n Tagen 15 <n>w = Schlüssel verfällt nach n Wochen 16 <n>m = Schlüssel verfällt nach n Monaten 17 <n>y = Schlüssel verfällt nach n Jahren 18 Wie lange bleibt der Schlüssel gültig? (0) 365 19 Key verfällt am Mi 18 Apr 2012 05:37:07 CEST 20 [...] 21 gpg: Schlüssel C6B8BAFB ist als uneingeschränkt vertrauenswürdig gekennzeichnet 22 Öffentlichen und geheimen Schlüssel erzeugt und signiert. 23 [...]
Der Anwender wählt Algorithmen, Länge und Verwendungszweck des Schlüssel aus und definiert ein Verfallsdatum. Das ist wichtig, damit Keys, die verloren gehen, automatisch inaktiv werden und nicht für immer als eigentlich nicht mehr gültige Authentifizierungsquelle durchs Web geistern. GPG erstellt anschließend eine User-ID, die den Schlüssel identifizierbar macht, wofür es einige Zufallsdaten benötigt. Dazu verlangt es zufälligen Input an der Konsole oder mit der Maus, bevor es abschließend die Kerndaten des Keys ausgibt.
Den erzeugten öffentlichen Schlüssel lädt der Entwickler mit »gpg --send-key«
auf einen der offiziellen Schlüsselserver hoch (Listing 2). Welchen Server er hier verwendet, spielt keine Rolle, da die Server ihre Schlüssel untereinander austauschen.
Listing 2
gpg --send-key
01 $ gpg --keyserver hkp://pgp.mit.edu --send-key C6B8BAFB 02 gpg: enabled debug flags: memstat 03 gpg: sende Schlüssel C6B8BAFB auf den hkp-Server pgp.mit.edu 04 random usage: poolsize=600 mixed=0 polls=0/0 added=0/0 outmix=0 getlvl1=0/0 getlvl2=0/0 06 secmem usage: 0/32768 bytes in 0 blocks
Die Buildumgebung
Im nächsten Schritt geht es daran, eine passende Umgebung für den Bau der RPM-Pakete durch das Kommando Rpmbuild zu schaffen. Entwickler sollten dabei ihre Pakete niemals als Root bauen, denn ein Fehler in einer ».spec«
-Datei oder einem Makefile könnten böse Folgen haben. Ganz Vorsichtige legen sogar einen dezidierten Benutzer zum Paketbau an, um ihre Dateien zu schützen.
Ein »mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}«
erzeugt die passende Verzeichnisstruktur. Wer davon abweichen und beispielsweise ein anderes Directory als »~/rpmbuild«
verwenden möchte, muss Rpmbuild dessen Pfad übergeben. Das erledigt am Einfachsten das Makro »%_topdir«
in der Datei »~/.rpmmacros«
(Listing 3). Wer will, erweitert bei dieser Gelegenheit seine Konfiguration gleich um nützliche und zum Signieren notwendige Makros [2].
Listing 3
~.rpmmacros
03 %_topdir %(echo $HOME)/linux/rpmbuild 04 %packager Max Mustermann <max.mustermann@example.net> 05 %vendor Max Mustermann 06 %_signature gpg 07 %_gpg_name C6B8BAFB 08 %_hkp_keyserver http://pgp.mit.edu
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 5 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





