Archiv ‘Linux’

Montag, 17. Juli 2006

Bilder aus PDF extrahieren

Die meisten Power-User werden es kennen: Da hat man eine PDF-Datei vor sich, die Bilder enthält. Und an diese Bilder will man rankommen. Aber wie?

Kein Problem, wie immer eilt uns OSS zu Hilfe:

pdfimages -j datei.pdf ~/JPEGs/

Sofern das Dokument nicht geschützt ist, werden mit diesem Kommandozeilen-Befehl alle Bilder der Datei datei.pdf im Format JPEG in den angegebenen Ordner extrahiert.

Nachtrag

Folgender, leicht angepasster Befehl habe ich im August 2018 verwendet:

pdfimages -all -p datei.pdf gugus

Der Präfix resp. der Ordner gugus ist wichtig; gibt man bspw. . (Punkt) an, werden keine Bilder extrahiert. -all weist pdfimages an, jegliche Art von Bildern zu extrahieren, mit -p werden dem Dateinamen neben dem Präfix die Seiten- und Bildnummer mitgegeben.

Nachtrag 2

Damit das unter macOS klappt, muss das MacPorts-Paket poppler installiert sein.

Tags: , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 7. Juli 2006

Partyguide Strikes Back


Partyguide Strikes Back I
Originally uploaded by emeidi.

Partyguide Strikes Back II
Originally uploaded by emeidi.

Gestern Donnerstag, kurz nach Mitternacht, muss es Jason und den Argonauten endgültig den Nuggi rausgejagt haben. Wenige Tage vor dem siebenjährigen Geburtstag der (in den letzten sechs Monaten wohl am häufigsten gehacktenTM) schweizerischen Party-Community blies man nun zum Gegenschlag gegen den so verhassten think eMeidi.

Die Verantwortlichen entdeckten – ob durch Hinweis eines Dritten Mitstreiters sei dahingestellt – meine Arbeiten am vierten Partyguide-Hack (JavaScript-Injection, später dazu mehr – dank an Anonymous für den ursprünglichen Tipp).

Nach stundenlangen Beratungen im Tipi des Häuptling Jasons kamen die geistreichen Argonauten zum Schluss, mit geballter Feuerkraft zurückzuschiessen. Für was verfügt man denn über genug Bandbreite und eine Vielzahl an Servern (zum Teil gar durch Gönner mitfinanziert)?

So wurde mein Debian-Server kurz nach 00:00 Uhr Ziel einer stümperhaften DoS-Attacke, die erst heute Nachmittag kurz vor 16:00 Uhr abbrach. Wie man es den beiden cacti-Graphen ansieht, äusserten sich die geballten Aufrufe meines Scriptleins, das Usernamen und Passwort-Hashes (aus dem Cookie) in Empfang nahm, sowohl in einem konstanten ein- und ausgehenden Traffic auf eth0 sowie einer stark erhöhten Load Average auf meiner schmalbrüstigen Pentium III-CPU (600MHz).

Fazit

Ein access.log, das fünfmal so schwer wiegt wie sonst:

ALPHA:/var/log/apache2# ls -l
total 44808
-rw-r--r-- 1 root adm  29612337 2006-07-08 01:01 access.log
-rw-r--r-- 1 root adm   5789490 2006-07-02 06:24 access.log.1

… und uns auch noch etwas über die Technik von Partyguide erzählt:

217.150.245.77 - - [07/Jul/2006:15:50:27 +0200] "GET /b.gif?i=84455&p=ab5c62bbb11b644fdcecd91e89acd768 HTTP/1.1" 302 - "-" "curl/7.12.1 (i686-pc-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.6m zlib/1.2.2"

… sowie auch die IP des mutmasslichen „Täters“ freigibt:

84.72.129.186 - - [07/Jul/2006:00:06:25 +0200] "GET /b.gif?i=100&p=1234 HTTP/1.1" 302 20 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

217.150.245.77 - - [07/Jul/2006:00:29:04 +0200] "GET /b.gif?i=196828 HTTP/1.1" 302 700 "-" "curl/7.12.1 (i686-pc-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.6m zlib/1.2.2"

84.72.129.186 - - [07/Jul/2006:00:30:05 +0200] "GET /b.gif HTTP/1.1" 302 224 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

84.72.129.186 - - [07/Jul/2006:00:30:24 +0200] "GET /b.gif?i=196828 HTTP/1.1" 302 218 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

Eine MySQL-Tabelle mit knapp 110’000 Records, die allesamt vom Partyguide-Server aus kamen:

mysql> SELECT COUNT( * )  FROM  `xss`  WHERE ip =  '217.150.245.77';
+------------+
| COUNT( * ) |
+------------+
|     109342 |
+------------+
1 row in set (0.47 sec)

Und nicht zuletzt ein Beweis, wie robust Debian Linux mit Apache 2.0.55, PHP 4.4.2 und MySQL 4.1.15 ist.

Fehler von meiner Seite

Das nächste Mal schalte ich E_ALL in solch sensitiven Verzeichnissen wieder aus:

[Fri Jul 07 00:29:04 2006] [error] [client 217.150.245.77] PHP Notice:  Undefined index:  p in /var/www/pg-search/xss.php on line 12

Leider Gottes ein zu guter Ansatzpunkt für potentielle PG-Hacker …

Zu guter Letzt noch dies …

Es tut mir wirklich leid, das sagen zu müssen: Anstelle eure Energie an einem kleinen Fisch wie mir zu verschwenden, unterzieht ihr all eure PHP-Scripts einmal einem richtig gründlichen Security-Audit.

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 30. Juni 2006

Apache: Address already in use

Nach einer Aktualisierung meiner Debian-Pakete kam Apache nicht mehr hoch:

Starting apache 2.0 web server...(98)Address already in use: make_sock: could not bind to address 192.168.0.101:80
no listening sockets available, shutting down
Unable to open logs
 failed!

Dank Google fand ich bald den richtigen Befehl, um den verantwortlichen Prozess ausfindig zu machen:

fuser 80/tcp

Die angezeigten Nummern entsprechen den pids (Process IDs), die man dann mittels

kill -9 <pid>

abschiesst.

Nun noch ein

/etc/init.d/apache2 start

und schon funkt man wieder im Internet.

Via: Apache – Address already in use: make_sock: could not bind to address

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 14. Juni 2006

How-To: LPRng als Print-Server

Ziel: Im Netzwerk einen Druckserver zur Verfügung zu stellen, der Aufträge mit LPR/LPD entgegennimmt und auf einem Postscript-fähigen Drucker am Parallelport ausgibt.

Obwohl sich cups nach den Anpassungen an der Konfigurationsdatei wieder starten liess, produzierte der Drucker bei Netzwerkdrucken nur noch Zeichensalat (PostScript wurde als plain/text ausgedruckt …).

Da ich unfähig war, das Problem zu beheben, entschied ich mich, auf LPRng downzugraden.

Hierzu installierte ich auf meinem Debian-Server das Paket mittels

apt-get install lprng

Danach musste ich mit viel Googeln noch die Konfigurationsdateien anpassen. Das hier ist herausgekommen:

/etc/printcap

Laserdrucker:Laserdrucker
        :server
        :cm=HP Laserjet 1300
        :lp=/dev/lp0
        :sd=/var/spool/lpd/lp
        :lf=/var/log/lprng.log
        :af=/var/log/lprng-accounting.log
        :mx=0

/etc/lprng/lpd.perm

Folgender Befehl muss auskommentiert werden, sonst können Clients im Netzwerk keine Verbindung auf Port 515 aufnehmen:

##  If you want to have connections only from programs on
##  the local host,  then uncomment the next line:
#REJECT NOT SERVER

Mit dem Befehl checkpc überprüft man die Konfigurationseinstellungen. Gibt es Fehlermeldungen, hilft

checkpc -f

Damit werden alle nötigen Verzeichnisse und Dateien angelegt und mit den richtigen Berechtigungen versehen.

Am Schluss startet man den Druckserver mit dem Befehl

/etc/init.d/lprng restart

von Hand neu.

Konfiguration der Clients

Die Clients werden nun so eingerichtet, dass sie mittels LPR (bei Windows über ‚Erweiterte UNIX-Druckdienste‘ oder ähnlich nachzuinstallieren, bei Mac OS X selbstverständlich schon dabei) auf die IP x.x.x.x drucken und dazu den Queue Laserdrucker verwenden.

Tags:
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Mittwoch, 14. Juni 2006

cupsd: Unable to read configuration file

Wer kürzlich die neueste Version von cups installiert hat und beim Starten des Daemons folgende Fehlermeldung erhält:

cupsd: Unable to read configuration file '/etc/cups/cupsd.conf' - exiting!

sollte in der cupsd.conf nach (mittlerweile) fehlerhaften IP-Notationen Ausschau halten. Bei mir waren das

Allow From 192.168.

die ich in

Allow From 192.168.0.0/24

umwandeln musste.

Via: Bug#372291: cupsd: Unable to read configuration file ‚/etc/cups/cupsd.conf‘ – exiting!

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 4. Juni 2006

Installing snmpd on IPCop router for MRTG monitoring

Ein englischer Artikel, der bisher von meinem lokalen Server in die weite Welt „gebroadcastet“ wurde. Die deutschen (und des Englischen nicht mächtigen) Leser mögen mir verzeihen.

This article first was published several years ago when I switched from fli4l to IPCop (open source router software based on GNU/Linux).

The Task

After some days of testing I finally found out a relative simple solution to run a SNMP-Daemon on my IPCop-Router. You will like this added value when graphing traffic stats on a second server running MRTG or RRD or cacti.

Package management under Mac OS X

First of all, I had to deal with Debian-packages. This posed some problems to me, because I don’t have any linux box here except the one running IPCop, which hasn’t package-managers installed [addendum: In the meantime, I switched from Windows to Debian Linux – a reasonable choice. Bye bye Microsoft!]. After I dived into manuals for dpkg i was able to extract the files on my PowerMac running Mac OS X. Before you can execute the shell command below, you need to download and install Fink. After that, continue:

dpkg-deb -x <package>.deb <destination-dir>

Installation

You now do have the required files on your workstation, but yet they need to be put on the IPCop-box. Make use of an SFTP-Client, which requires the SSH-Service enabled on the router. With a SSH-connection to the box, I checked the error messages which occured upon start of the snmpd and then went out to look for the additional files required. The ’search file within packages‘-Function of some package-sites helped me a lot!

Packages needed

These 3 Debian-Packages are essential for your success. Download the .debs and extract them to a single folder with the command mentioned above:

  • snmpd (4.2.3-2)
  • libsnmp4.2 (= 4.2.3-2)
  • libwrap0

File locations

I had to copy all files over to IPCop manually, therefore I made this list to monitor all the files necessary.

/lib/libwrap.so.0
/usr/lib/libucdagent-0.4.2.so
/usr/lib/libucdmibs-0.4.2.so
/usr/lib/libsnmp-0.4.2.so

/usr/sbin/snmpd

You can download the files (confirmed working with IPCop 1.4.0b6) from my local server.

Caveats

Don’t try to copy snmpd.conf over to the box. In my case, it prevented snmpd to act the way it should. I have no idea where the problem lied, but after deleting snmpd.conf, everything worked fine. I hope this saves you a lot of headaches.

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 20. Mai 2006

syslog-ng läuft Amok

(Grosses Vorbild für diesen (ebenso grossen) Artikel: Anatomy of a Bug – lesenswert! Fazit: Microsoft sucks, as always)

Den letzten Dienstag-Nachmittag wollte ich ursprünglich vollständig meinem Vortrag vom Donnerstag widmen. Leider kam ich nur etwa eine Stunde dazu, danach hielt mich mein Debian-Server bis in die frühen Morgenstunden in Schach.

Vorneweg muss ich sagen, dass mein Server seit Jahren zufriedenstellend läuft. Er ist es, dem ich die Faszination für Linux zu verdanken habe. Er ist es auch, der mich über meinen Windows-Horizont hinausblicken liess und mir zeigte, wie schön, kontrollierbar und funktionell die Welt ausserhalb von Redmond ist.

Letzten Dienstag passierte aber zum ersten Mal (seit ich mich erinnern kann) die Nagelprobe schlechthin. Obwohl ich durch die Jahre hinweg viel über das Funktionieren von Linux gelernt hatte, stand ich zum ersten Mal vor einem unüberwindbaren Berg. Vorerst. Ohne fremde Hilfe bekam ich die Kiste nicht mehr ordnungsgemäss zum Laufen. Was war vorgefallen?

Erste unerklärliche Symptome

Alles begann damit, dass ich wieder einmal das System auf den neuesten Stand bringen wollte. apt-get update, danach apt-get upgrade. Alles verlief wie am Schnürchen, bis bei der Installation des letzten Paketes ssl-cert etwas aus dem Ruder lief:

apt-get upgrade
Setting up ssl-cert (1.0.12) ...

Nach etwa fünf Minuten des Wartens begann ich mich zu fragen, wieso das Paket immer noch nicht fertig installiert war. Natürlich hatte ich das Update in keiner screen-Session gestartet, was die Fehlersuche erschwerte: Ich konnte nicht schnell mal mit Ctrl-A-D in ein verfügbares Shell wechseln und entschied mich deshalb für Ctrl-C, was die Installation abbrach.

Gruppen erstellen schlägt fehl

Ein zweiter Login-Versuch per SSH schlug aus unerklärlichen Gründen fehl. Komisch. Ich vermutete, dass dies mit dem nicht installierten ssl-cert zusammenhing (ssl und ssh haben ja beide die Verschlüsselung gemeinsam). Indem ich das Paket richtig installierte, wollte ich dieses b-Problem lösen. Doch erneut hängte sich die Installation an derselben Stelle auf. Was war da nur los? Ich nahm die Fehlermeldung, die apt-get ausspuckte, genauer unter die Lupe:

addgroup: `/usr/sbin/groupadd -g 111 ssl-cert' exited from signal 2.  Aborting.

So so, das Installations-Script konnte keine Gruppe erstellen? Wieso denn das?

Als erstes fasste ich Platzprobleme ins Auge. df -h – sah alles nicht besorgniserregend aus. / (Root) verfügte vielleicht noch 20MB freien Speicher – zu wenig? Konnte das Hinzufügen einer Gruppe wirklich 20MB mit temporären Daten füllen? Ich löschte deshalb vorsorglich rm -R /usr/share/doc/; ein Verzeichnis, das via einer Google-Suche als vernachlässigbar taxiert wurde. Mit über 100MB an freiem Speicher machte ich mich erneut an die Installation.

Leider brachte dies nichts, wieder hängte sich die Installation, wieder mit derselben Meldung. Hatte die Kiste etwa ihre Tage?

Nun gut, gab es vielleicht ein generelles Problem mit dem Hinzufügen von Gruppen? In der Tat: groupadd resp. addgroup hängten beide, wenn ich manuell eine neue Gruppe hinzufügen wollte!

Als Linux-Kenner weiss man ja, dass die Datei /etc/group eine – wie in der Unix-Tradition üblich – simple Textdatei war. Ich fügte also mittels vim eine neue Zeile am Ende ein:

ssl-cert:x:110

Eine erneute Installation funktionierte nun.

Nicht zu vergessen sind übrigens auch (group|shadow).lock-Dateien, die als Überbleibsel noch vorhanden sein können. Ich habe solche einige Male gelöscht, weiss aber rückblickend nicht, ob dies einen Einfluss auf die Problematik gehabt hat.

sshd spinnt

Mir war es weiterhin nicht möglich, eine zusätzliche SSH-Verbindung aufzubauen. Langsam beschlich mich ein ungutes Gefühl. Was war hier nur los? Ein Neustart des Daemons mittels /etc/init.d/ssh restart brachte nichts. (Nebenbemerkung: Fantastisch, wie das im guten alten Linux funktioniert! Obwohl ich den Daemon abschoss und neu startete, blieb meine Terminal-Sitzung selbstverständlich bestehen. Man stelle sich dies bei Microsoft Windows vor. Unmöglich! Entweder hätte man den Server sowieso bereits zehn Mal neu starten müssen, um so weit zu kommen, oder aber zumindest die Terminal-Sitzung wäre gekappt worden).

Nach dem Neustart des Daemons lauschte nicht mal mehr jemand auf Port 22 … Ziel jetzt: Die einzige noch bestehende Verbindung zum Server nicht verlieren. Ich wollte verhindern, den 15″ CRT in die Stube tragen und an den KVM-Switch anschliessen zu müssen.

Okey – was könnte mir helfen, den Fehler einzugrenzen? Langsam aber sicher vermutete ich ein Problem mit der Benutzerverwaltung. Denn per Zufall entdeckte ich, dass auch ein su mario hängen blieb. Keine Gruppen mehr hinzufügbar, kein su, kein SSH-Login – diese Dinge hatten alles mit Nutzern zu tun.

Prozess-Flut

Ein intuitiver Blick in die Liste der Prozesse (ps ax) offenbarte mir ein grauenhaftes Bild. Unzählige /USR/BIN/CRON-Prozesse standen da aufgelistet, die sich nicht freiwillig beenden lassen wollten.

Im Netz fand ich die Lösung, wie ich unzählige Prozesse mit einem Einzeiler abschiessen konnte:

ps ax | grep CRON | awk '{print $1}' | xargs kill -HUP

BTW: Ich liebe Pipes (tönt wieder neunmalklug, nicht?)

Leider behob die Terminierung der Prozesse meine Probleme nicht.

Ein Neustart des Systems (zu besten Zeiten über 100 Tage Uptime *snüff*) wurde unausweichlich …

Doch weder ein shutdown now noch ein reboot per SSH brachten den Server zum Herunterfahren. Zwar ging der Hinweis an alle User über die Konsole, aber auch nach drei Minuten stand meine SSH-Verbindung noch.

Wäre der Neustart schon traurig genug gewesen, nun musste ich also tatsächlich noch den Monitor in die Stube tragen und an den Server anschliessen, um die Kiste von der physischen Konsole aus herunterzufahren.

Nach dem Kraftakt kam der Schreck: Ich konnte mich auf via Keyboard nicht mehr einloggen. Das Passwort wurde zwar akzeptiert, doch auch hier hing das System. Ich las zwar „You have new mail“, doch weiter kam ich nicht. Mit Drücken von Ctrl-C gelangte ich zwar wieder in die Login-Maske, aber das war ja eigentlich nicht gewünscht …

Ein Druck auf den Reset-Knopf am Gehäuse bereitete der Odyssee ein Ende.

Problems? Linux: Be Root, Windows: Reboot

Nicht ganz, leider:

 3295 ?        S      0:00 /USR/SBIN/CRON
 3297 ?        S      0:00 /USR/SBIN/CRON
 3298 ?        S      0:00 /USR/SBIN/CRON
 3303 ?        S      0:00 /USR/SBIN/CRON
 3307 ?        S      0:00 /USR/SBIN/CRON
 3308 ?        S      0:00 /USR/SBIN/CRON
 3309 ?        S      0:00 /USR/SBIN/CRON
 3316 ?        S      0:00 /USR/SBIN/CRON
 3325 ?        S      0:00 /USR/SBIN/CRON
 3579 ?        Ss     0:00 sshd: bittorrent [priv]
 3581 ?        Z      0:00 [sshd] 
 3640 ?        S      0:00 /USR/SBIN/CRON
 3641 ?        S      0:00 /USR/SBIN/CRON
 3642 ?        S      0:00 /USR/SBIN/CRON
 3643 ?        S      0:00 /USR/SBIN/CRON
 3644 ?        S      0:00 /USR/SBIN/CRON
 4569 ?        S      0:00 /USR/SBIN/CRON
 4570 ?        S      0:00 /USR/SBIN/CRON
 4571 ?        S      0:00 /USR/SBIN/CRON
 4572 ?        S      0:00 /USR/SBIN/CRON
 4573 ?        S      0:00 /USR/SBIN/CRON
 4574 ?        S      0:00 /USR/SBIN/CRON
 4658 ?        S      0:00 /USR/SBIN/CRON
 4659 ?        S      0:00 /USR/SBIN/CRON
 4660 ?        S      0:00 /USR/SBIN/CRON
 4661 ?        S      0:00 /USR/SBIN/CRON
 4662 ?        S      0:00 /USR/SBIN/CRON
 4663 ?        S      0:00 /USR/SBIN/CRON
 4664 ?        S      0:00 /USR/SBIN/CRON
 4737 ?        S      0:00 /USR/SBIN/CRON
 4738 ?        S      0:00 /USR/SBIN/CRON
 4739 ?        S      0:00 /USR/SBIN/CRON
 4740 ?        S      0:00 /USR/SBIN/CRON
 4741 ?        S      0:00 /USR/SBIN/CRON
 4752 ?        S      0:00 /USR/SBIN/CRON
 4753 ?        S      0:00 /USR/SBIN/CRON
 4754 ?        S      0:00 /USR/SBIN/CRON
 4755 ?        S      0:00 /USR/SBIN/CRON
 4756 ?        S      0:00 /USR/SBIN/CRON
 4757 ?        S      0:00 /USR/SBIN/CRON
 4758 ?        S      0:00 /USR/SBIN/CRON
 4759 ?        S      0:00 /USR/SBIN/CRON
 4760 ?        S      0:00 /USR/SBIN/CRON
 4761 ?        S      0:00 /USR/SBIN/CRON
 4762 ?        S      0:00 /USR/SBIN/CRON
 4763 ?        S      0:00 /USR/SBIN/CRON
 4764 ?        S      0:00 /USR/SBIN/CRON
 4765 ?        S      0:00 /USR/SBIN/CRON
 4766 ?        S      0:00 /USR/SBIN/CRON
 4767 ?        S      0:00 /USR/SBIN/CRON
 4768 ?        S      0:00 /USR/SBIN/CRON
 4779 ?        S      0:00 /USR/SBIN/CRON
 4780 ?        S      0:00 /USR/SBIN/CRON
 4781 ?        S      0:00 /USR/SBIN/CRON
 4782 ?        S      0:00 /USR/SBIN/CRON
 4783 ?        S      0:00 /USR/SBIN/CRON
 4784 ?        S      0:00 /USR/SBIN/CRON

Böser cron?

Der Täter schien gefasst: cron! Wieso nur? Und bei welchem Eintrag in der /etc/crontab verschluckte er sich?

Nach und nach schaltete ich Zeile für Zeile ab, dennoch wurden in der Zeit mehrere Reboots nötig: Immer wieder begann das System zu zicken. Immerhin fand ich mit der Zeit heraus, dass ein /etc/init.d/reboot stop einen softwaremässigen Reboot auslöste. Der Gang zum Server entfiel.

Ich fand in dieser Übung heraus, dass es unzählige Orte gibt, wo cron-Jobs abgelegt werden:

/etc/crontab
/etc/cron.d
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
/var/spool/cron/crontabs/<username>

Da die zeilenweise Aktivierung/Deaktivierung nicht den gewünschten Effekt brachte, verschob ich nach und nach jedes einzelne Verzeichnis. Schlussendlich liefen gar keine Cron-Jobs mehr. Das war überaus unbefriedigend. Vorbeugend entschied ich mich, in /etc/init.d/cron ein exit 0 einzubauen, um den Daemon bei den gehäuften Reboots standardmässig nicht mehr zu starten.

lsof und strace

Welcher cron-Job nicht zu Ende geführt werden konnte, entzog sich meiner Kenntnis. Was ich aber genauer analysieren konnte waren die einzelnen Prozesse. lsof, das ich vor wenigen Tagen entdeckt hatte, half aber nicht gross weiter. Mehr versprach ich mir von strace. Ein Tool, das es erlaubt, laufende Prozesse zu analysieren. Auch dies half mir vorerst nicht weiter.

Schlaf

Mittlerweile hatte es Mitternacht geschlagen – der Server lief mehr oder weniger produktiv, verrichtete seine Arbeit und liess mich auch wieder einloggen oder sulen. Das Problem resp. dessen Ursache war zwar noch nicht behoben, ich hatte das System aber zumindest wieder so weit, dass ich damit anständig arbeiten konnte.

syslog-ng!

Dem Mailverkehr mit Kollege Liechti nach zu urteilen hatte ich die Ursache um spätestens 10:32 Uhr des nächsten Tages eingekreist: syslog-ng, der Syslog-Daemon. Nicht der Cron-Daemon war es, der die /USR/SBIN/CRON nicht beenden liess, sondern syslog-ng! Mein Verdikt im breitesten Berndeutsch:

Sit ig das Scheiss-Ding deaktiviert ha, chani eich ume jede cron-job la loufe, woni ufem System finge. Si hängesech nüm.

Mit strace fand ich später heraus, dass tatsächlich dieses ominöse /dev/log die Hänger verursachte:

connect(7, {sa_family=AF_FILE, path="/dev/log"}, 16")

meldete das Debugging-Tool.

/dev/log am Arsch

Ich stiess im Laufe der Recherche über /dev/log auf die Mailing-Liste von syslog-ng und verfasste einen Symptombeschrieb.

Etwas später entdeckte ich in derselben Liste eine Person, die genau mit demselben Problem zu kämpfen hatte.

Ich erhielt einige Antworten auf meine Anfrage, worunter sich auch der hauptsächliche Entwickler Balazs Scheidler zu Wort meldete und auf einen seiner früheren Posts verwies:

It came to my attention that syslog-ng 1.6.10 broke file(„/proc/kmsg“)
support with the recent performance improvement patches as /proc/kmsg
does not support nonblocking mode.

The issue might cause the complete system to deadlock. Non-Linux
platforms, or installation where /proc/kmsg is not directly processed by
syslog-ng is not affected.

I’m going to release 1.6.11 as soon as possible to fix this issue.


Bazsi

sysklogd

Ich sicherte folglich die syslog-ng.conf, entfernte den Syslogger mit apt-get remove syslog-ng und installierte apt-get install sysklogd. Seither hatte ich Ruhe.

syslog-ng – neuer Versuch

Heute Abend nun entschied ich mich, auf eine syslog-ng-Version zu wechseln, die den Bazsi erwähnten Bug (noch) nicht aufwies. Ich fand unter den Debian stable-Packages die Version 1.6.5, welche ich als .deb herunterlud, danach das System mit apt-get remove sysklogd bereit für den Neuankömmling machte und diesen dann mittels dpkg -i syslog-ng_1.6.5-2.2_i386.deb auch installierte. Nur noch die syslog-ng.conf zurück an den angestammten Platz, und fertig ist die ursprünglich lange funktionierende Konfiguration.

apt-pinning

Damit mir die 1.9.x-Development-Series von syslog-ng nicht mehr ungewollt auf die Kiste kommt, habe ich nun die Datei /etc/apt/preferences erstellt und folgenden Inhalt hineinkopiert:

Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Package: *
Pin: release a=unstable
Pin-Priority: 600

Package: syslog-ng
Pin: version 1.6.5*
Pin-Priority: 1000

Die Pin-Priority: 1000 bedeutet soviel wie „Überschreibe die Version 1.6.5* des Packetes syslog-ng auf keinen Fall mit einer anderen Version“.

apt

In der Tat ist dies das erste Mal seit der Installation von Debian, dass mir ein testing-Paket mein System zerschossen hat. Unglaublich. Wenn man überlegt, wie bspw. Branchenriese Microsoft mit seinen (produktiven!) Patches herumeiert

Fazit

Wieder habe ich eine Menge über Linux gelernt, viele neue Tools kennengelernt und mich im Eruierern von Fehlern im Betriebssystem geübt.

Der Vortrag ist übrigens trotz dem Pikett-Einsatz als erfolgreich eingestuft worden.

Dank für die moralische Unterstützung: Kollege Liechti & Kollege Burgdorfer

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 15. Februar 2006

Partyguide bloggt

Okey, ich habe ein wenig gelogen – „nur“ der Regionalmanager Zürich von Partyguide bloggt:

dilorenzo.ch

Fabio „Lulu“ Di Lorenzo kenne ich bereits seit einer Weile – er hat nämlich just vor zwei Jahren meinen Server gehackt. Glücklicherweise hinterliess er derart viele Spuren, dass ich ihn dank Hinweisen im Error-Log und mit Links auf komischen Seiten ausfindig machen konnte – inkl. seiner Bluewin-Mail-Adresse.

Sicherheitslücke

Um mir auf einfachste Art und Weise Dateien zusenden zu können, hatte ich damals auf meinem (Windows)-Server ein selbergeschriebenes PHP-Upload-Script installiert. Mein Denkfehler: Damit war es möglich, auch PHP-Dateien (!) auf den Server zu laden. Eine gewisse Zeit lang bemerkte niemand diesen Fehler – bis „Lulu“ kam. Da Apache mit Windows-System-Rechten lief, hatte er so vollen Zugriff auf meinen Server – Glück im Unglück: Es wurden keine Daten gelöscht.

Heute läuft mein Server unter Debian, mit einem abgesicherten Apache und ohne Upload-Script.

Lulu: Willkommen in der Blogosphäre!

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 9. Februar 2006

Mein erstes MP3

I have a confession to make: the first MP3 that I ever downloaded from the Internet was „When Smokey Sings“ by ABC.

Quelle: Songbird makes Mozilla sing. Will it make the RIAA sing the blues?

Angestossen durch diese Offenbarung habe ich meine grauen Hirnzellen aktiviert und mir überlegt, was wohl mein erstes, aus dem Internet heruntergeladenes MP3 gewesen sei. Diese Frage stelle ich mir übrigens hälbjährlich und verschleudere immer wertvolle Minuten. Deshalb benutze ich nun einen Blog-Artikel, um die Suche künftig zu erleichtern – mittels Auslagern des Gehirninhaltes.

Als erstes kommt mir immer der Begriff train in den Sinn, obwohl ich weiss, dass dieser Begriff nur eine in meinem Hirn verknüpfte Eselsbrücke ist. Leider habe ich danach immer Probleme, auf den tatsächlichen Titel zu kommen. Als nächstes kommt mir dann immer trainspotting in den Sinn, was natürlich überhaupt nicht sein kann. Auch das Jahr ist in etwa umrissen: Spätes 1998.

Dank meinem iTunes-daapd-Server unter Debian habe ich heute nun einfach mal nach train gesucht. Gefunden wurden 24 Songs, aber nicht der Gesuchte. Der ist nämlich bei einem der unzähligen Festplattencrashs in das Datennirvana verschwunden. Doch ein gefundener Song gab den entscheidenden Hinweis: trainstation von vespa 63.

Lovestation

So heisst der Künstler. Mittels dem Archiv der offiziellen Hitparade resp. deren Suchfunktion habe ich den Song auch tatsächlich gefunden:

Lovestation – Teardrops

Quelle: Suche.
Cover & Single-Infos: Lovestation – Teardrops

Und auch mit dem Datum lag ich nahe dran: Ersteintritt Oktober 1998. Yippiiie!

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 6. Januar 2006

apt-get mit GPG error

Gestern habe ich auf der Arbeit aus einem betagten Pentium III einen kleinen Linux-Samba-Server gemacht. Nach der einstündigen Installation hatte ich aber Probleme mit apt-get:

W: GPG error: http://mirror.switch.ch testing Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 010908312D230C5F
W: You may want to run apt-get update to correct these problems

Anscheinend versucht man nun, den Package-Download abzusichern und arbeitet mit Schlüsseln.

Wer also weiterhin vom SWITCH-Server Packages herunterladen möchte, gehe folgendermassen vor:

gpg --keyserver pgp.mit.edu --recv-keys 2D230C5F
gpg --armor --export 2D230C5F | apt-key add -

Den ersten Befehl musste ich auf meiner Kiste nach einigen Minuten mit Ctrl-C abschiessen. Dies hat der Sache glücklicherweise keinen Abstrich getan.

Eventuell muss man sich vorher noch einige andere Packete holen gehen, wie bspw.

apt-get install debian-keyring

Jedenfalls klappt’s jetzt auch mit apt-get upgrade wieder.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen