Alle Beiträge von adlerweb

Cisco ASA via TFTP starten

17Cisco-Geräte starten üblicherweise von einer Firmwaredatei, welche auf einem internen Flash-Laufwerk gespeichert ist. Ist der Flash beschädigt oder möchte man nur temporär eine andere Version testen kann es nützlich sein einen anderen Weg einzuschlagen: Über den eingebauten Bootmanager, auch ROMMON genannt, lässt sich eine Firmwaredatei von einem TFTP-Server starten.

Als Voraussetzung sollte im Netz ein TFTP-Server vorbereitet und eine gültige ASA-Firmware dort hinterlegt sein. Unter Windows kann hierzu z.B. TFTPD32 verwendet werden. Auch muss bereits eine serielle Verbindung per COM (9600-8N1) oder USB-Kabel und einem Terminalclient wie PuTTy hergestellt werden.

Um den Bootloader zu starten wird während des Hochfahrens auf die Ausgabe der seriellen Schnittstelle geachtet. Hier erscheint nach kurzer Zeit ein entsprechender Hinweistext mit 10-Sekunden-Countdown. Durch drücken der ESC-Taste lässt sich der Start unterbrechen und in den Bootloader wechseln.

Cisco Systems ROMMON Version xxxxxx
Use BREAK or ESC to interrupt boot.Use SPACE to begin boot immediately.
Boot in 10 seconds.
                                                
Boot interrupted.

Management0/0
Link is DOWN
MAC Address: xxxxxx


Use ? for help.

Als nächstes muss die lokale IP (hier .10), die IP des TFTP-Servers (hier .11) und ein Gateway festgelegt werden. Befinden sich TFTP-Server und Router im selben Netz ist als Gateway der TFTP-Server und nicht der lokale Router einzutragen. Es folgen der Dateiname der Imagedatei und – wenn die Verbindung nicht über den Management-Port hergestellt werden soll – die Passende Netzwerkschnittstelle.

rommon #0> ADDRESS=192.168.0.10
rommon #1> SERVER=192.168.0.11
rommon #2> GATEWAY=192.168.0.11
rommon #3> IMAGE=asa962-smp-k8.bin
rommon #4> PORT=GigabitEthernet0/1
GigabitEthernet0/1
Link is UP
MAC Address: xxxxxx

rommon #5>

Um sicherzugehen, dass alle Einstellungen korrekt sind lassen sich mit set nochmal alle Parameter prüfen.

rommon #5> set
ROMMON Variable Settings:
  ADDRESS=192.168.0.10
  SERVER=192.168.0.11
  GATEWAY=192.168.0.11
  PORT=GigabitEthernet0/1
  VLAN=untagged
  IMAGE=asa962-smp-k8.bin
  CONFIG=
  LINKTIMEOUT=20
  PKTTIMEOUT=4
  RETRY=20

Um den das Laden und Starten der Datei einzuleiten gibt man schlussendlich tftp ein.

rommon #6> tftp
ROMMON Variable Settings:
  ADDRESS=192.168.0.10
  SERVER=192.168.0.11
  GATEWAY=192.168.0.11
  PORT=GigabitEthernet0/1
  VLAN=untagged
  IMAGE=asa962-smp-k8.bin
  CONFIG=
  LINKTIMEOUT=20
  PKTTIMEOUT=4
  RETRY=20

tftp asa962-smp-k8.bin@192.168.0.11 via 192.168.0.11
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[...]
Received 89837568 bytes

Launching TFTP Image...

Execute image at 0x14000
Cisco Security Appliance admin loader xxxxxx
Platform ASAxxxx

Loading...
IO memory blocks requested from bigphys 64bit: xxxxxx

INIT: version 2.88 bootingStarting udev
Configuring network interfaces... done.
Populating dev cache
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
[...]

Windows Server 2012R2: „Ereignisdaten können nicht abgerufen werden“ durch LDS-Rolle

Eigentlich ist der Server Manager ja eine tolle Idee: Windows-Server können hiermit auch von Personen ohne Textkonsolenaffinität in großen Teilen zentral verwaltet werden. Dumm nur, wenn entscheiderabweisende, rote Fehlermeldungen das Dashboard zieren. Klickt man eine dieser Warnungen an erscheint als Serverstatus

Online – Ereignisdaten können nicht abgerufen werden

Auch die Details sind nicht wesentlich aussagekräftiger:

Ereignisse aus adam.events.xml konnten nicht aufgezählt werden

Ursache in meinem Fall: Microsoft Active Directory Lightweight Directory Services (AD LDS). Diesen hatte ich seinerzeit,in der Vermutung, dass er für einen LDAP-Zugriff auf das AD notwendig wäre, mit angeklickt. Knackpunkt: Er wurde nie fertig eingerichtet. Der hierzu nötige Wizzard ist nur im Startmenü zu finden und wird nicht, wie bei anderen Rollen üblich, direkt im Servermanager verlinkt. Durch die fehlende Konfiguration wird eine Warnung generiert, welche ihrerseits wegen eines Fehlers im Servermanager nicht korrekt angezeigt wird.

Als Lösung kann man entweder die LDS-Rolle über das Startmenü fertig konfigurieren oder – wenn man sie wie ich wegen falscher Vermutungen installierte – einfach entfernen. Ein LDAP-Zugriff auf das AD ist auch ohne sie möglich.

Graylog: Informationen durch Regex-Pipeline extrahieren

Graylog ist ein System zum zentralen Sammeln und Auswerten von Log-Meldungen. Das System selbst ist open source und basiert auf Java. Mit der neuen Version wurde die Funktion „Processing Pipelines“ eingeführt, welche es erlaubt eingehende Log-Meldungen durch Scripte weiter anzureichern.

In meinem Fall lasse ich den Proxyserver Squid seine Zugriffe auf den Graylog-Server protokollieren, dort kommt hierdurch jedoch ausschließlich die nicht weiter aufgeschlüsselte Zeile im Squid Log Format an. Über eine Pipeline mit Regex wird diese weiter zerlegt und in einzelne Felder aufgeteilt, sodass ein granulareres Suchen möglich ist.

Das Ganze ist nur als Testaufbau zu sehen, es fehlt eine Fehlerbehandlung etc. Da ich aber etwas an der Syntax hing hilft es eventuell ja anderen Suchenden. Wichtig ist es die Backslashes selbst zu escapen um als gültiger Java-Code angenommen zu werden. Die Benennung der Treffer durch das letzte Array im Regex-Aufruf ist optional – ohne werden die Treffer mit 0 beginnend durchnummeriert.

rule "test squid"
when
    contains(to_string($message.message), "HIER_DIRECT")
then
    let sqmat = regex(".*([\\d\\.]+)\\s+(\\d+) ([\\d\\.\\:A-Fa-f]+) (\\w+)/(\\d+) (\\d+) (\\w+) ([^ ]+) \\- HIER_DIRECT/([\\d\\.\\:A-Fa-f]+) ([^\\s]+).*", to_string($message.message), ["timestamp", "duration", "user", "result", "status", "bytes", "method", "url", "mime"]);
    set_field("squid_request", true);
    set_field("squid_duration", sqmat.groups.duration);
    set_field("squid_user", sqmat.groups.user);
    set_field("squid_result", sqmat.groups.result);
    set_field("squid_status", sqmat.groups.status);
    set_field("squid_bytes", sqmat.groups.bytes);
    set_field("squid_method", sqmat.groups.method);
    set_field("squid_url", sqmat.groups.url);
    set_field("squid_mime", sqmat.groups.mime);
end

Otto Waalkes – Grund zum feiern, Lyrics in Englisch

Da aktuell durch ein für viele wohl eher unverständliches Video das Interesse am Klassiker „Grund zum feiern“ von „Otto Waalkes“ geweckt wurde wollte ich die Bedeutung der „weisen Worte“ auch den Mitbürgern, welche nur englisch sprechen, nicht vorenthalten. Da das Netz keine brauchbare Übersetzung lieferte dann halt hier…

Currently the classic „Grund zum feiern“ by „Otto Waalkes“ is getting some interes because of a for most people somewhat incomprehensible video.  I liked to share these wise words also with people not speaking German but could not find a descend translation – so here it is…

  • Faber Krönung (sparkling wine)
  • Deinhard Lila (sparkling wine)
  • Grappa (pomace brandy)
  • Calvados (apple brandy)
  • tequila
  • Asbach Uralt (brandy)
  • Spätburgunder (Pinot Noir, red wine)
  • Vermouth (fortified wine) and
  • Pernod (distilled anise beverage).
  • Poire Williams (brandy)
  • Dujardin (Cognac)
  • Hennessy (Cognac)
  • Rémy Martin (Cognac)
  • Fernet Branca (bitter herbal liqueur)
  • Underberg (digestif bitter)
  • Port Wine (fortified wine) and
  • Bordeaux (wine)
  • Johnnie Walker (whiskey)
  • Jägermeister (liquor)
  • Amaretto (liquor)
  • Keller Geister (sparkling wine)
  • Scharlachberg (wine) and
  • Doppelkorn (liquor).
  • The whole thing now again from the start.
  • We have reason to celebrate.
  • No one can still run but we can still booze.
  • We have reason to celebrate.
  • Even if we feel like vomiting, bring the next bucket.
  • Bommerlunder (Akvavit)
  • Ballentine’s (scotch whiskey)
  • today it’s all the same to us.
  • Pear brandy and
  • cider
  • We really pour in everything.

 

  • whiskey sweet and
  • whiskey sour
  • main thing is we’re getting more drunk
  • Rammazotti (amaro)
  • Ratzeputz (Schnaps) and
  • a bottle of rum
  • Gin (spirit)
  • Campari (liqueur)
  • Grand Marnier (liqueur)
  • finally the skull hurts
  • With Doornkaat (liquor) and
  • Mariacron (brandy)
  • into delirium.
  • Klosterfrau Melissengeist (kind of high-alcohol-medicine)
  • or however the stuff is called
  • Kölnisch Wasser (aka 4711, perfume)
  • Pitralon (aftershave)
  • we do not burp it, we are vomiting it already.
  • We have reasons to puke
  • even if it erodes the guts
  • it spends us warmth
  • We have reason to celebrate
  • Our death-bed will:
  • Even higher alcohol level.

Ranttime: Kino & Star Trek Beyond (Spoilers, doh…)

Mal wieder eine runde sinnloses Rumgebrabbel zu den Tücken der Kinos und dem neuen Star Trek Film. Vorsicht, Spoiler.

Nachschlag zur Serie: Andere haben beim Trailer etwas genauer hingeschaut und einiges an Infos extrahiert. Wer in die Tiefen abtauchen will sollte mal bei DerBastard vorbeischauen.

Arch Linux/Aur: stcgal zur Programmierung von STC 8051-Klonen

stcgal ist ein in Python geschriebenes Tool um 8051-Nachbauten der Firma STCMicro zu programmieren. Die MCUs verfügen über einen seriellen Bootloader und kommen vor allem in Produkten und Bausätzen aus Fernost als günstige Zentraleinheit zum Einsatz.

Da mit sdcc und MCU 8051 IDE bereits ein großer Teil des Toolsets im Repo und auf AUR rumfliegt habe ich stcgal nun auch mal hinzugefügt, so kann man ohne großes Gefummel eine komplette Bastelumgebung aufsetzen.

OnePlusOne / TWRP / Android 6.0.x: Entschlüsseln nicht möglich

…und nur noch schnell ein Backup machen – oder auch nicht. Während der Erstellung eines Handy-Backups über TWRP auf meinem OPO konnte ich plötzlich den verschlüsselten Datenbereich nicht mehr freischalten. Zuletzt nutzte ich diese Funktion unter Android 5, entsprechend dürfte wohl Marshmallow der Verursacher sein.

Bei der Verschlüsselung wird beim OPO eine Funktion des Prozessors genutzt. Die hierzu verwendete API wurde offenbar in CM13 geändert, sodass TWRP an dieser Stelle in’s leere greift. Im passenden Bug-Report wurde das Problem bereits ausführlich behandelt, ein Patch für die Version 3.0.3 angekündigt – welche weiterhin auf sich warten lässt. Für die Übergangszeit hat AtAM1 ein passendes Image bereitgestellt. Mit dem konnte dann auch die Recovery an die Daten ran und ein Backup erstellen. Fein.

rsync vs. curlftpfs: mkstemp-Fehler

Hach ja, wenn Theorie und Praxis mal passen würden. Bei vielen meiner Server bietet der Anbieter einen kostenfreien Backupspeicher an. Gut, ob man dem Vertraut steht wo anders, aber eine weitere (verschlüsselte) Kopie kann ja nicht schaden, richtig?

Am schönsten wäre es für mich Borg einfach ein weiteres Repo auf dem Backupspeicher anlegen zu lassen. Leider gibt es da ein Problem: Der Anbieter bietet den Zugriff nur per FTP an, welches von Borg nicht nativ unterstützt wird.

Zwar ist es mit curlftpfs möglich den Server als lokalen Ordner einzubinden, allerdings unterstützt der Dateisystemtreiber viele Standardoperationen nicht wirklich und hat seit 2008 kein Update mehr gesehen. Mangels Alternativen bleibt wohl nur herumbasteln. Leider konnte ich mit keiner noch so exotischen Kombination – egal ob mount-Parameter oder loop-Devices – eine Funktionierende Umgebung für Borg kreieren, also muss ein weiterer Umweg als Workaround her.

Da lokal genug Platz vorhanden ist lautet das Konzept: Borg sichert in einen lokalen Ordner, der wird dann auf den FTP gespiegelt. Klarer Job für rsync, oder? Naja, sieht die Software anders:

rsync: mkstemp "/mnt/backup/ftp/repo/data/0/.1290.dU25tM" failed: Operation not supported (95)

Glücklicherweise betrifft das Problem wohl ausschließlich die mkstemp-Funktion, welche rsync nur für temporäre Kopien benötigt. Diese werden Standardmäßig auf dem Ziel erstellt, lassen sich über einen passenden Parameter aber auch in anderen, lokalen Ordnern ablegen. Der komplette Befehl lautet dann z.B.

rsync --temp-dir=/tmp/rsync --no-owner --no-group -avP /mnt/backup/staging/ /mnt/backup/ftp/

So werden nur noch die wirklichen Zieldaten auf dem FTP-Server abgelegt und die Kopie scheint zuverlässig zu funktionieren. Alles nicht sonderlich schön, aber immerhin funktioniert das Konstrukt und eine weitere Kopie liegt irgendwo rum. Man könnte natürlich auch einfach NFS/iSCSI/… anbieten, aber das wäre ja moderne Technik…

virt-manager/libvirt: Installation nicht möglich: virtlogd-sock

Beim Erstellen einer neuen VM über virt-manager erhielt ich heute folgende Meldung:

Installation konnte nicht fertiggestellt werden: «Socket-Erstellung zu '/var/run/libvirt/virtlogd-sock' fehlgeschlagen: Datei oder Verzeichnis nicht gefunden»

Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/create.py", line 2288, in _do_async_install
guest.start_install(meter=meter)
File "/usr/share/virt-manager/virtinst/guest.py", line 461, in start_install
doboot, transient)
File "/usr/share/virt-manager/virtinst/guest.py", line 396, in _create_guest
self.domain = self.conn.createXML(install_xml or final_xml, 0)
File "/usr/lib/python2.7/site-packages/libvirt.py", line 3777, in createXML
if ret is None:raise libvirtError('virDomainCreateXML() failed', conn=self)
libvirtError: Socket-Erstellung zu '/var/run/libvirt/virtlogd-sock' fehlgeschlagen: Datei oder Verzeichnis nicht gefunden

Ursache ist das Logging, welches in einen eigenen Dienst ausgelagert wurde. Neben libvirtd muss nun auch virtlogd vor dem Start der VM geladen werden. Für systemd-Nutzer heißt das also…

systemctl start virtlogd
systemctl enable virtlogd

 

Gentoo: Pakete von Distcc/pump ausnehmen

Verteiltes Kompilieren mit distcc und pump macht vor allem auf langsamen Systemen eine Menge Sinn. Leider vertragen nicht alle Pakete diese Lastverteilung, so z.B. mysql/mariadb. Um einzelne Pakete von distcc oder pump auszunehmen geht man wie folgt vor:

Folgende Dateien erstellen:

FEATURES="${FEATURES} -distcc -distcc-pump"
FEATURES="${FEATURES} -distcc-pump"

Nun ggf. den Ordner /etc/portage/package.env anlegen und dort – analog zu package.use/package.keywords/… – dateien für die Pakete anlegen, z.B.

dev-db/mariadb no-distcc-pump.conf

So wird z.B. für MariaDB der Pump-Modus abgeschaltet, distcc bleibt jedoch aktiv. Alternativ kann die ebenfalls erstellte no-distcc.conf verwendet werden um das verteilte Kompilieren komplett zu unterbinden.