Remotely deploy a WSGI application (as a Debian package) with Ansible

This is a mini workshop as an introduction into using Ansible for the administration of Debian systems. As an example it’s shown how this configuration management tool can be used to remotely set up a simple WSGI application running on an Apache web server on a Debian installation to make it available on the net. The application which is used as an example is httpbin by Runscope. This is an useful HTTP request service for the development of web software or any other purposes which features a number of specific endpoints that can be used for different testing matters. Read On →

Zero-Day-Exploits zuvorkommen mit American Fuzzy Lop

Spricht man von Speicherzugriffsfehlern (memory fault) von Programmen, so handelt es sich dabei meistens um Pufferüberläufe (buffer overflow/overrun), die in verschiedenen Typen vorkommen. Bei einem Stack Overflow – wie er in einem klassischen Artikel von dem Hacker Aleph One das erste Mal ausführlich beschrieben worden ist – oder einem Heap Overflow schreibt ein Programm bei der Ausführung unerwünscht über vorgesehen Datenbereiche hinaus in den Arbeitsspeicher, ohne die Daten ausreichend auf ihre Länge hin zu überprüfen. "Pufferüberlauf" wird oft auch als Sammelbegriff benutzt für verschiedene verwandte Phänomene wie den arithmetischen Überlauf (integer overflow). Mit in dieselbe Kategorie gehören aber auch Speicherunterläufe (buffer undeflow/underrun), und Lesefehler (out-of-bounds-read bzw. read overflow). Read On →

Zur Problematik von UEFI Secure Boot

Wo auf Personal Computern und Laptops vor einigen Jahren direkt nach dem Einschalten das BIOS (Basic Input-Output System) wie etwa vom Hersteller American Megatrends, Inc. (AMI) für die Initialisierung von Systemkomponenten am Beginn des Bootvorganges zuständig gewesen ist, findet sich dort heute gemeinhin ausgewachsene PC-Firmware nach dem UEFI-Standard. Beim Unified Extensible Firmware Interface handelt es sich um eine Weiterentwicklung von EFI, das Intel bereits Ende der 90er Jahre für 64 Bit-Server eingesetzt hatte, und das sich mit modernen Rechnern, die mit Microsoft Windows verkauft werden, endgültig im PC-Bereich durchgesetzt hat. Read On →

APT programming snippets for Debian system maintenance

The Python API for the Debian package manager APT is useful for writing practical system maintenance scripts, which are going beyond shell scripting capabilities. There are Python2 and Python3 libraries for that available as packages, as well as a documentation in the package python-apt-doc. If that’s also installed, the documentation then could be found in /usr/share/doc/python-apt-doc/html/index.html, and there are also a couple of example scripts shipped into /usr/share/doc/python-apt-doc/examples. The libraries mainly consists of Python bindings for the libapt-inst and libapt-pkg C++ core libraries of the APT package manager, which makes it processing very fast. Read On →

Howto create a Debian 9 preview as Vagrant box with Packer

I’ve got some little scripts and a template here to automatically create Vagrant boxes from cutting edge Debian testing daily snapshots (netinstall ISO image) using HashiCorp’s Packer. To create Vagrant boxes with these, you first need a running binary of Packer. There is a Debian package available if that’s also your working environment, but Packer is going to be introduced into the stable branch with the upcoming Stretch release itself. However, Ubuntu already has it, and some other derivatives, too. Read On →

Git in der Debian-Paketpflege

Die Pflege von Debian-Paketen kommt eigentlich auch vollkommen ohne eine Versionsverwaltung wie Git aus. Wenn Änderungen anstehen wie zum Beispiel ein Update auf ein neues Release mit einem neuen Ursprungs-Tarball (upstream tarball), oder wenn etwas zu verbessern oder ein Patch einzuspielen ist, dann kann ein Paketbetreuer zunächst einfach das entsprechende Quellpaket mit `apt-get source` aus dem offiziellen Paketarchiv auf seinen Arbeitsrechner herunter laden. Dort werden dann die gewünschten bzw. notwendigen Änderungen vorgenommen, dann die Debian-Version in `debian/changelog` um einen Zähler erhöht bzw. auf die Versionsnummer des neuen Releases gestellt Read On →

Linux erobert IBM Mainframes

Mainframes von IBM mit ihrer immensen Datenverarbeitungskapazität finden sich seit den 60er Jahren des vergangenen Jahrhunderts traditioneller Weise im Keller von im sehr großen Maßstab agierenden Playern wie Fluggesellschaften, Banken und Kreditkarteninstituten, Logistikdienstleistern, Einzelhandelsketten und Versicherungen als Rückgrat der Unternehmens-IT. Die aktuellen I/O-Monster der z-Generation (für "zero downtime"; auch: IBM System z, System-z, zSeries, offiziell: IBM z Systems) wie der im Januar 2015 vorgestellte z13 werden progressiv als Cloudservice-Alternative beworben, die für Echtzeit-Transaktionen im globalen Maßstab ausgelegt sind und sich damit für Zukunftsmärkte wie eine Welt von mobilen Endgeräten, das Internet der Dinge und Echtzeit-Massendatenanalyse eignen, sehr ausgiebig ohne mit den Transaktionsraten an Kapazitätsgrenzen zu stoßen – auch wenn wieder mal "alle gleichzeitig" zugreifen. Read On →

Liska/Gallo: "Ransomware: Defending Against Digital Extortion". O'Reilly 2016

Das mit den Krypto- bzw. Erpressungs-Trojanern verbundene "Geschäftsmodell" stammt bereits aus den späten 80er Jahren, und ist recht einfach gestrickt: die von versteckten kriminellen Banden verbreitete Software wird über das Internet auf so viele Rechner wie möglich geschleust und verschlüsselt dort unbemerkt von deren Benutzern flink eine Vielzahl der dort gespeicherten Dateien, was diese damit praktisch unbrauchbar macht. Daraufhin meldet sich der Trojaner auf dem Rechner mit einem Verkaufsangebot über eine Entschlüsselungslösung für die betroffenen Daten inklusive dem dafür erforderlichen kryptografischen Gegenschlüssel. Read On →

How to cheat setuptools-scm (Debian diary)

[2016-12-19: some additions] This is another little issue from Python packaging for Debian which I came across lately packaging the compressed NumPy based data container Bcolz. Upstream uses setuptools-scm to determine the software’s version during build time from the source code management environment the code is in. This method is convenient for the upstream development because with that the version number doesn’t need to be hard-coded, and often people just forget to update that (and other version carrying files like docs/conf. Read On →

FTBFS on armhf: clang defaults NEON instructions (Debian diary)

This is a little subject matter I came across recently. Since American Fuzzy Lop (AFL) was started to build with LLVM higher than 3.7 there were problems on the officially supported port armhf. The build always breaks over an illegal instruction while trying to compile the tests for the instrumentation. Read On →

Collected notes from Python packaging (Debian diary)

This article discusses some particular problems which came up in packaging Python software for Debian. It's about UnicodeDecoreError on open() of Python 3 running in non-UTF-8 environments, and on the non-deterministic order of requirements in egg-info/requires.txt. It's the first post of a planned series on specialized Python related issues like these. Read On →

Theano on Debian: maintenance, BLAS and CUDA

This an end-user oriented 'field manual' for running the math expression compiler and deep learning engine Theano on Debian systems. It discusses maintenance tasks like using the helper scripts for running the tests and purging the cache, choosing between different available BLAS implementations, and finally howto use a GPU device for Theano by the CUDA backend. And in contrast to the official documentation all that with a special focus on running the new packages within the Debian environment. Read On →

A complete Debian package build in detail

This is an exhaustive explanation of a complete build process of a Debian package, the C++ computer vision library Vigraimpex. The debian/rules file of the discussed package revision is 'old school', containing explicitly written individual build targets. This would be interesting for people want to get deeper into Debian packaging along a quite demanding debian/rules file, which actually is GNU Make code. Its ideal for that purpose that the upstream package has a rather easy outline. Read On →

Fixing ppc64el chroots for Sbuild (Debian diary)

A workaround for a temporary problem with ppc64el emulated chroots for the package builder sbuild. Read On →

Vagrant in the clouds

This article describes howto use the portable development environments of HashiCorp's Vagrant on virtual machines provided by the cloud service DigitalOcean. That's easy to do with the plugin vagrant-digitalocean from devopsgroup.io. Read On →

Binaries-have-conflict

Here are some notes on how to deal with a certain problem in Debian packaging, which might be useful for people coming across the same issue. In certain cases you want to have two binary packages co-installable, which normally wouldn't be because of the restriction that two packages can't be installed at the same time which contain the same files: every single file in the filesystem have to belong to a single package, and couldn't be overwritten by another package. Read On →

Reproduzierbarer Paketbau in der Praxis

Hier noch ein kleiner Blogbeitrag über reproduzierbaren Paketbau in der derzeitigen Praxis von Debian GNU/Linux-Paketbetreuern. Das ist eine gute Gelegenheit, in diesem Blog auch einmal den Builder Pbuilder anzusprechen, mit dem der derzeitig noch experimentelle Toolchain des Reproducible Builds-Projektes schon in Betrieb genommen werden kann. Read On →