Archiv August 2016

Mittwoch, 31. August 2016

Server mit vergessenen SSH-Schlüsseln ausfindig machen

Vor einigen Tagen habe ich das Schlüsselmanagement für meine SSH-Zugänge völlig umgekrempelt.

Da ich auf Nummer sicher gehen wollte, dass ich den alten Private Key nicht auf bei mir in Vergessenheit geratenen Systemen übersehen hatte, analysierte ich in den Folgetagen die Log-Datei /var/log/auth.log auf meinem zentralen Linux-Server.

Sucht man mittels cat | grep nach „Failed“, erhält man Einträge in der folgenden Form:

...
Aug 25 22:37:09 ALPHA sshd[8539]: Failed publickey for %user% from 85.X.X.X
...

Dies ist aber nur der Beginn der Nachforschung — als nächstes muss man stark hirnen, auf welchem Server das betreffende Script laufen könnte — schliesslich gibt ssh nur eine öffentliche IP-Adresse aus (der verursachende Server steht hinter einem NAT-Router und besitzt eine private IP).

Tags: , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

SMB (Samba) unter OS X El Capitan schneller machen

Obwohl ich vorher gar keine Tests gefahren bin, habe ich folgende Konfigurationseinstellung gleich nach der Installation von El Capitan aktiviert:

/etc/nsmb.conf

[default]
signing_required = no

Quelle: OS X 10.11 El Capitan: Langsame SMB-Verbindungen!

Motto: Nützt’s nüt, schadt’s nüt.

Tags: , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

Xcode für die Verwendung mit MacPorts bereit machen

Bevor man anfängt, mit MacPorts Pakete zu kompilieren, muss man Apples Xcode installieren.

Damit ist es aber noch nicht getan — einerseits gehören die Command Line Tools installiert:

$ xcode-select --install

Quelle: How to Install Command Line Tools in OS X Mavericks & Yosemite (Without Xcode)

Anschliessend muss man noch die Lizenzbestimmungen abnicken:

# xcodebuild -license accept

Tags: , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

MIBs unter Debian installieren

Da es sich dabei um teilweise Copyright-geschützte Werke handelt, stehen sie über die normalen Debian-Repositories nicht zur Verfügung. Nachfolgend ist erklärt, wie man diese trotzdem installiert.

/etc/apt/sources

Hier fügt man die non-free-Pakete hinzu:

...
deb 		http://debian.ethz.ch/debian/ testing main non-free
...
deb		http://debian.ethz.ch/debian/ stable main non-free
...

Danach aktualisiert man das Paketverzeichnis:

# apt-get update

Jetzt findet Debian das Paket snmp-mibs-downloader:

# apt-get install snmp-mibs-downloader

Sobald das Paket installiert ist, muss man das Bash-Script ausführen, welches unter /usr/bin/download-mibs liegt:

# download-mibs

Die (von mir nicht berührten) Konfigurationsdateien des Tools liegen unter /etc/snmp-mibs-downloader.

Das Script lädt allerlei MIBs herunter, deponiert diese zeitweile in /tmp und kopiert sie dann in das Verzeichnis /var/lib/mibs.

Interessanterweise finden sich gemäss einer E-Mail-Konversation auch unter /usr/share/snmp/mibs/ weitere MIBs. Ich denke aber, dass snmpwalk diese ignoriert.

/etc/snmp/snmp.conf

Damit snmpwalk diese MIBs nun auch wirklich interpretiert, muss noch die Konfigurationsdatei angepasst, das heisst konkret die Zeile mibs : auskommentiert werden:

# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
#mibs :

Quelle: SNMP Clients — Command line client applications

Um zu sehen, ob man richtig liegt, führt man am Besten den folgenden Testbefehl aus (vorausgesetzt, auf dem Server lauscht auch ein snmpd):

$ snmpwalk -c s1kr1t -v 1 localhost hrStorageTable
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
...

Auf einem System, welche diese MIBs nicht installiert hat, erhält man stattdessen folgende Fehlermeldung:

$ $ snmpwalk -c s1kr1t -v 1 localhost hrStorageTable
hrStorageTable: Unknown Object Identifier (Sub-id not found: (top) -> hrStorageTable)

Probiert man es mit der OID, klappt es — logischerweise:

$ snmpwalk -c s1kr1t -v 1 localhost .1.3.6.1.2.1.25.2.3
iso.3.6.1.2.1.25.2.3.1.1.1 = INTEGER: 1
...

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

Mit chmod gleichzeitig unterschiedliche Berechtigungsbits von Dateien und Verzeichnissen setzen

Wer kennt es nicht? Hantiert man rekursiv mit chmod herum, steht man immer vor dem Problem, dass man Verzeichnisse unterschiedlich von Dateien behandeln muss. Verlieren nämlich Verzeichnisse das Execution-Bit (--x), kann man nicht mehr in diese cden …

Fortgeschrittene Linuxer verwenden in solchen Fällen wahrscheinlich einen Zweizeiler in der Form …

$ find /unclean-directory -type d -exec chmod 700 '{}' ';'
$ find /unclean-directory -type f -exec chmod 600 '{}' ';'

Doch die wahren Profis wissen (wie ich seit gestern), dass das noch viel, viel einfacher funktioniert:

$ chmod -R u=rwX,go= /unclean-directory

Das grosse X sagt chmod, dass es das Executable-Bit nur bei Verzeichnissen setzen soll (und bei Dateien, die dieses bereits gesetzt haben). u=rwX bedeutet, dass der Owner der Datei Lese-, Schreib und (variable) Exekutionsrechte erhält. go= sagt aus, dass die Gruppe sowie die Anderen (others) keine Berechtigung erhalten. Ausgedeutscht also 700 für Verzeichnisse und 600 für Dateien.

Quellen: The use of the uppercase X in chmod und How can I change all of the contents inside of directory to what the default file ownership and permissions are?

Tags: , , , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

Nach einem Update rkhunter aktualisieren

Seit einiger Zeit habe ich rkhunter auf meinen Linux-Servern am Laufen. Das Tool soll helfen, irgendwie auf das System gelangte Rootkits aufzuspüren und mich — im Schadensfall — darüber zu informieren.

Wenn ich zuweilen an Konfigurationsdateien selber Hand anlege, kann es vorkommen, dass rkhunter danach Warnungen ausspuckt:

Warning: User 'globi' has been added to the passwd file.
Warning: Group 'globi' has been added to the group file.

Dies behebt man mit folgenden Befehlen:

# rkhunter --update
[ Rootkit Hunter version 1.4.0 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ No update ]
  Checking file programs_bad.dat                             [ No update ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n/cn                                      [ No update ]
  Checking file i18n/de                                      [ No update ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ No update ]
  Checking file i18n/tr.utf8                                 [ No update ]
  Checking file i18n/zh                                      [ No update ]
  Checking file i18n/zh.utf8                                 [ No update ]
# rkhunter --propupd
File updated: searched for 177 files, found 150

Quelle: How To Use RKHunter to Guard Against Rootkits on an Ubuntu VPS

Tags: , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 30. August 2016

Mit cacti Synology-Partitionen aufzeichnen

Synology verfügt Out-of-the-Box über einen SNMP-Server, welchen man mittels weniger Klicks aktivieren kann. Diesen SNMP-Daemon verwende ich im Heimnetzwerk mit dem Tool cacti, um Vitaldaten meines NAS aufzuzeichnen.

Damit man auch die Informationen über die Festplattenbelegung des NAS aufzeichnen kann, muss man in cacti in der Device-Ansicht des vorgängig eingerichteten Synology-NAS im Abschnitt Associated Data Queries das Data Query mit dem Namen „SNMP – Get Mounted Partitions“ hinzufügen, welches den SNMP-Baum hrStorageTable (.1.3.6.1.2.1.25.2.3) abfrägt.

Im Gegensatz zum Data Query „ucd/net – Get Monitored Partitions“ (SNMP-Baum dskTable (.1.3.6.1.4.1.2021.9)) findet die SNMP-Version entsprechende Werte.

Dies, weil Synology die HOST-RESOURCES-MIB verwendet, um Informationen über Partitionen und Festplattenbelegung zu teilen:

cacti-associated-data-queries-snmp-get-mounted-partitions

Via: Monitoring disk stats with Cacti

Hintergrundinfos

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 29. August 2016

MacPorts kann spidermonkey und mozjs17 nicht installieren

Nach meiner kürzlichen Migration auf OS X El Capitan habe ich noch mit den einen oder anderen Kinderwehen zu kämpfen.

Unter anderem bringt es MacPorts nicht fertig, die Pakete spidermonkey und mozjs17 zu installieren.

Die Fehlermeldungen lauteten:

--->  Building spidermonkey
Error: org.macports.build for port spidermonkey returned: command execution failed
Please see the log file for port spidermonkey for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_spidermonkey/spidermonkey/main.log
Error: Unable to upgrade port: 1
Error rebuilding spidermonkey
    while executing
"error "Error rebuilding $portname""
    (procedure "revupgrade_scanandrebuild" line 395)
    invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
    (procedure "macports::revupgrade" line 5)
    invoked from within
"macports::revupgrade $opts"
    (procedure "action_revupgrade" line 2)
    invoked from within
"action_revupgrade $action $portlist $opts"
    (procedure "action_upgrade" line 25)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 103)
    invoked from within
"process_cmd $remaining_args"
    invoked from within
"if { [llength $remaining_args] > 0 } {

    # If there are remaining arguments, process those as a command
    set exit_status [process_cmd $remaining..."
    (file "/opt/local/bin/port" line 5268)
Done.

Die Datei /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_spidermonkey/spidermonkey/main.log enthält über 9000 Zeilen, doch schlussendlich fand ich die aussagekräftigsten Stellen:

:debug:archivefetch Found Dependency: receipt exists for nspr
...
:info:build cat: ../../dist/Darwin_OPT.OBJ/nspr/Version: No such file or directory

… sowie viel weiter unten …

:info:build ld: symbol(s) not found for architecture x86_64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
:info:build make[1]: *** [Darwin_OPT.OBJ/libjs.dylib] Error 1

Nach einigem herumgoogeln (das Problem ist im Netz nirgends erwähnt; es handelt sich also um ein ganz spezifisches Aeby-Problem) stiess ich auf den über sechs Jahre alten Fehlerreport Spidermonkey build failure (undefined symbols) with non-default build_arch.

Irgendwie schien mein spidermonkey Symbole für die x86_64-Architektur nicht zu finden, und vielleicht hing dies ja mit einer Einstellung in macports.conf zusammen.

Und siehe da:

/opt/local/etc/macports$ ls -l
total 112
-rw-r--r--  1 root  admin  1941 17 Mai  2014 archive_sites.conf
-r--r--r--  1 root  admin  1941  1 Okt  2015 archive_sites.conf.default
-rw-r--r--  1 root  admin  8251 17 Mai  2014 macports.conf
-r--r--r--  1 root  admin  8248  1 Okt  2015 macports.conf.default
-rw-r--r--  1 root  admin   523 17 Mai  2014 pubkeys.conf
-r--r--r--  1 root  admin   523  1 Okt  2015 pubkeys.conf.default
-rw-r--r--  1 root  admin  1243 17 Mai  2014 sources.conf
-r--r--r--  1 root  admin  1243  1 Okt  2015 sources.conf.default
-rw-r--r--  1 root  admin   461 17 Mai  2014 variants.conf
-r--r--r--  1 root  admin   461  1 Okt  2015 variants.conf.default

Ich hatte offenbar noch eine uralte macports.conf herumliegen, und aus irgendeinem Grund wurde bei einem Upgrade die neuere Version der Datei (.default) nicht über die Alte kopiert. Doch was ist der Unterschied zwischen den beiden Dateien?

$ diff macports.conf.default macports.conf 
1c1
< # $Id: macports.conf.in 117120 2014-02-17 00:55:33Z jmr@macports.org $
---
> # $Id: macports.conf.in 108047 2013-07-11 06:19:13Z larryv@macports.org $
63c63
< # "x86_64 i386" on OS X 10.6 and later.
---
> # "x64_64 i386" on OS X 10.6 and later.

Ein Schreibfehler! Es hätte heissen sollen „x86_64“, stattdessen aber hatte wohl jemand in aller Flüchtigkeit „x64_64“ geschrieben. Ich löschte die alte Datei und platzierte die neue Datei an ihrer Stelle.

Als nächstes installierte ich npsr erneut …

# port install nspr

… welches im gleichen Rutsch eine ganze Ladung Dependencies ebenfalls aktualisierte (unter anderem GTK3, welches mörderisch lange zum kompilieren braucht).

Schlussendlich führte ich ein ordentliches MacPorts-Update aus:

# port selfupdate
# port upgrade outdated
# port uninstall inactive
# port clean --all vile

Fertig.

Tags: , , , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 28. August 2016

Mit Atom HTML-Code konvertieren

Gestern war es soweit: Ich habe (endlich!) TextMate in die Wüste geschickt und bin auf Githubs Atom als meinen Text-Editor der Wahl umgestiegen.

Essentiell ist, dass man als erstes die Kommandozeilen-Unterstützung installiert: Atom > Install Shell Commands. Denn ich rufe den Text-Editor meistens aus einem Ordner mit zu editierenden Dateien von der Kommandozeile auf:

$ atom .

Anschliessend habe ich mir über den Paketmanager apm auch noch als allererstes das Paket html-entities installiert. Damit kann ich HTML-Code so umwandeln, dass ich ihn in WordPress-Artikeln in ein <pre> einfüllen kann:

$ apm install html-entities

Tags: , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 28. August 2016

launchd vergisst nach Upgrade auf OS X El Capitan die Pfade (PATH)

Dies ist bei mir ganz kritisch, da meine Scripts auf viele MacPorts-Tools angewiesen sind — unter anderem realpath, wget sowie curlftpfs.

Abhilfe schafft man folgendermassen:

~/Library/LaunchAgents/com.emeidi.environment.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /opt/local/bin:/opt/local/sbin:$PATH</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Quelle: Setting the system-wide PATH environment variable in Mavericks

Anschliessend startet man den „Job“:

$ launchctl load ~/Library/LaunchAgents/com.emeidi.environment.plist

Tags: , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen