Archiv ‘Linux’

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

Samstag, 27. August 2016

Dem Raspberry Pi 3 chinesische Schriftzeichen beibringen

Seit einigen Woche betreibe ich mein heimisches Dashboard auf einem Raspberry Pi 3 und bin von der Performance begeistert! Sogar Chrome kriegt man nun als Installationspaket mitgeliefert.

Leider zeigte Chrome nach der Standardinstallation chinesische Schriftzeichen (bei den Währungsinfos) nicht an. Folgende Pakete rüsten chinesische Schriftzeichen nach:

# apt-get install fonts-arphic-bkai00mp fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp

Quelle: Chinese Debian Mini Howto — 2. Installing Chinese Fonts

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

Keine Kommentare | neuen Kommentar verfassen

Samstag, 27. August 2016

PHP-Fehlermeldungen ausser E_DEPRECATED loggen

Unter Apache (.htaccess oder VirtualHost-Konfiguration) stellt man dies folgendermassen ein:

...
php_value error_reporting 24575
...

Den ersten Hinweis lieferte How to disable deprecated messages in Joomla?. Doch die dort angegebene Konstante (22527) ist überholt, weil PHP 7 neue Fehlerkonstanten mitbringt, welche noch hinzuaddiert werden müssen.

Hierfür habe ich mich der Liste unter Error Handling — Predefined Constants bedient, und

32767 - 8192 = 24575

berechnet.

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 27. August 2016

Auf dem Laptop einen Web-Server aktivieren, um Dateien auf ein iPad und iPhone herunterzuladen

Update 2021: Unter Python 3 lässt sich der Server folgendermassen starten:

$ python3 -m http.server

Quelle: What is the Python 3 equivalent of “python -m SimpleHTTPServer”

In den Ferien stand ich vor dem Problem, eine ca. 50 MB grosse Datei (Teneriffa-Reiseführer von Lonely Planet) von meinem Laptop auf mein iPad und mein iPhone zu kopieren.

Ein Versand per E-Mail war aus zwei Gründen ausgeschlossen: Mein Mail-Server akzeptiert solch grosse Dateien gar nicht erst, und ausserdem verfügte unser AirBnB nur über ein popeliges ADSL-Modem mit Geschwindigkeiten um die Jahrhundertwende. Das Modem hätte mich dementsprechend zuerst mit einem extrem langen Upload zum Mail-Server und anschliessend mit einem extrem langen Download vom Mail-Server genervt. Zu guter Letzt unterstützt mein MacBook auch kein AirDrop, um Dateien per Bluetooth oder WLAN zwischen iOS und OS X-Geräten auszutauschen.

Was nun? Das standardmässige unter OS X installierte Python eilt einem zur Hilfe: Man öffnet das Terminal, navigiert zum Verzeichnis, in welcher sich die gewünschte Datei befindet, und gibt dann folgenden Befehl ein:

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Nachdem man mittels ifconfig oder dem Network-Modul unter System Preferences die IP-Adresse des Laptops ausfindig gemacht hat, surft man auf den iOS-Geräten die folgende URL mit Safari an:

http://10.1.2.3:8000/

Ein Klick auf den Dokumentenlink, und innert weniger Sekunden wird das grosse PDF angezeigt und kann in iBooks gespeichert werden.

Python meldet auf der Kommandozeile dabei Folgendes:

10.25.9.220 - - [04/Jul/2016 10:14:18] "GET / HTTP/1.1" 200 -
10.25.9.220 - - [04/Jul/2016 10:14:20] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -
10.25.9.208 - - [04/Jul/2016 10:15:12] "GET / HTTP/1.1" 200 -
10.25.9.208 - - [04/Jul/2016 10:15:18] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -
10.25.9.235 - - [04/Jul/2016 10:15:57] "GET / HTTP/1.1" 200 -
10.25.9.235 - - [04/Jul/2016 10:16:03] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -

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

Keine Kommentare | neuen Kommentar verfassen

Samstag, 27. August 2016

SNMPd schreibt standardmässig kein PID-Datei mehr

Ein kürzlich erfolgtes Update des SNMPd-Pakets auf meinem Debian-Server hatte zur Folge, dass meine monit-Installation den Service fälschlicherweise als offline meldete.

Dies, weil monit nach der PID-Datei des SNMP-Daemons Ausschau hält, um dessen Prozess-ID auszulesen und auf Existenz zu prüfen. Bei Debian liegt diese Datei unter /var/run/snmpd.pid.

Folgendermassen re-aktivierte ich die PID-Datei:

/etc/systemd/system/multi-user.target.wants/snmpd.service

Vor der Anpassung …

...
ExecStart=/usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f
...

… und nach der Anpassung:

...
ExecStart=/usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /var/run/snmpd.pid
...

Anschliessend folgte noch ein Neustart des Daemons:

# systemctl stop snmpd
Warning: snmpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
# systemctl daemon-reload
# systemctl stop snmpd
# systemctl start snmpd

Und prompt meldete mir monit, dass der Service wieder online sei.

Tags: , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 16. Mai 2016

Wo befinden sich unter Debian die systemd Service-Dateien?

Unzählige dieser Service-Files finden sich in diesem Ordner:

/lib/systemd/system

Quelle: Making your package work with systemd sowie Getting Started With systemd on Debian Jessie

Das Service-File für MySQL habe ich hingegen hier gefunden:

/etc/systemd/system/mysql.service

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 16. Mai 2016

MariaDB (MySQL) meldet „ERROR 1436 (HY000) at line 574: Thread stack overrun“

Damit die Migration von MySQL nach MariaDB sauber abläuft, ist es wichtig, nach der De-Installation von MySQL und der erfolgreichen Installation von MariaDB folgendes Kommando auszuführen (Anstoss war eine Fehlermeldung in mysql.log):

# mysql_upgrade
...
ERROR 1436 (HY000) at line 574: Thread stack overrun:  5904 bytes used of a 131072 byte stack, and 0 bytes needed.  Use 'mysqld --thread_stack=#' to specify a bigger stack.

Blöd nur, wenn diese Fehlermeldung erscheint. Nach einer kurzen Google-Suche stellte sich heraus, dass mein Konfigurationstuning in /etc/mysql/my.cnf einen Kollateralschaden verursacht hatte. In der Konfigurationsdatei hatte ich nämlich eingestellt:

...
[mysqld]
...
thread_stack		= 128K

Dieser Wert berechnet sich für jedes System basierend auf dessen Eigenschaften und es macht deshalb keinen Sinn, den Wert in my.cnf hartzukodieren, wie der Artikel MySQL error 1436: Thread stack overrun, with simple query aufzeigt.

Das Problem löste sich in Luft auf, indem ich den Eintrag auskommentierte …

#thread_stack		= 128K

… und den Datenbankserver neu startete:

# systemctl restart mysql

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

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 15. Mai 2016

Synologys Diskstation, nmbd und 100 Prozent CPU-Auslastung

Gestern musste ich feststellen, dass meine Synology Diskstation seit ein paar Wochen eine extrem hohe CPU-Auslastung und Linux Load Average aufwies. Cacti ist für eine Analyse sehr nützlich, da die Werte historisiert und in Graphen ausgegeben werden können:

Synology Diskstation CPU Usage Cacti

Synology Diskstation Load Average Cacti

Wieso sich diese Änderung urplötzlich ergeben hat, konnte ich bis jetzt nicht eruieren.

Über SSH und mit Hilfe von top stellte ich rasch fest, dass der Prozess /usr/bin/nmbd -D permanent alle verfügbare CPU-Kapazität auffrass. Was zum Teufel?

Ein Blick in /var/log/samba/log.nmbd, welches mehrere MBs umfasst, zeigte die Ursache des Übels: Die Log-Datei war voller Einträge in der folgenden Form, und mehrmals pro Sekunde kamen neue identische Einträge dazu:

...
../source3/nmbd/nmbd_incomingrequests.c:213: [2016/05/15 01:00:37.670697, all 0, pid=18689] process_name_registration_request
  process_name_registration_request: unicast name registration request received for name XEROX PHASER 32<20> from IP 10.1.2.3 on subnet UNICAST_SUBNET. Error - should be sent to WINS server
...

Die NetBIOS-Komponente in unserem Xerox Phaser 3250DN muss von wahrlichen Profis programmiert worden sein …

Sobald ich den Drucker ausschaltete, beruhigte sich die Diskstation sofort und die CPU-Auslastung wie auch die Load Average sanken auf den langfristig tiefen Wert.

Das Problem löste ich mit folgenden Kniffen:

Samba installieren und als WINS-Server konfigurieren

Auf einem Intel NUC, der mir hier als Linux-Server dient (Beispiel-IP: 10.1.2.4), installierte ich Samba und konfigurierte es folgendermassen, damit Samba sich neu als WINS-Server im Netzwerk anpreist:

/etc/smb.conf

...
[global]
   netbios name = SERVERNAME
   server string = Samba %v on (%L)
   workgroup = WORKGROUP
   wins support = yes
   dns proxy = no
   local master = yes
   os level = 34
   preferred master = yes
...

Quelle: Chapter 7. Name Resolution and Browsing sowie Using Samba: 4.4 Server Configuration

WINS-Server mit DHCP bekanntgeben

/etc/dhcp/dhcpd.conf

...
option netbios-name-servers 10.1.2.4;
...

Anschliessend musste der DHCP-Server noch frisch gestartet werden:

# systemctl stop isc-dhcp-server
# systemctl start isc-dhcp-server

Die Desktop-Clients erhielten den neuen WINS-Server mittels eines „Renew DHCP Lease“ frisch über; beim Drucker führte ich einen Kaltstart durch, um auf Nummer sicher zu gehen.

WINS-Server auf Synology DiskStation einstellen

  1. Synology DiskStation Admin-Oberfläche im Browser öffnen
  2. Control Panel
  3. File Services
  4. Advanced Settings
  5. WINS Server: 10.1.2.4

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

Keine Kommentare | neuen Kommentar verfassen