• Linux
  • Netzwerk
  • Samba
  • Windows
  • Freigabe
  • Installation
  • Gruppenrichtlinien
  • WindowsXP
  • Windows7
  • Server
  • Apache
  • MySQL
  • Programmierung
  • YiiFramework
  • Virtuemart
  • SQL
  • WLAN
  • Cisco
  • Netgear
  • Astaro
  • Sophos
  • Firewall
  • Routing
  • Fritz.Box
  • Raspberry
  • VPN
  • Monitoring
  • Zabbix
  • Nagios
  • Virtualisierung
  • LXC
  • Proxmox
  • Virtualbox
  • Hausautomation
  • FHEM
  • MAX
  • HomeEasy
  • Scripting
  • Datenmigration
  • Fehlersuche
  • Fernzugriff
  • RemoteDesktop
  • PHP
  • Perl
  • Python
  • Javascript
  • HTML
  • CMSimple
  • SIP
  • Homematic
  • Bash
  • Test
  • Startseite
  • Leistungen
  • Referenzen
  • FAQ
  • Kontakt
  • Impressum
  • Aktuelles
  • Downloads
  • You are here:  
  • Netzwerk

#savetheinternet

Details
Published: 17 March 2019

Die geplante Urheberrechtsreform der EU wird die Freiheit des Internet einschränken.

Aus Protest gegen diese Reform gab es in den letzten Tagen bereits europaweit Demonstrationen. Wikipedia schließt sich den Protesten an und wird am 21.03.2019 die Seite für den ganzen Tag schließen.

Für Joomla habe ich leider kein Tool gefunden, dass einen zeitbasierten Wartungsmodus möglich machen würde. Alternativ kann man seine Seite aber auch per htaccess an diesem Tag auf eine Infoseite umleiten.

RewriteCond %{TIME_YEAR} =2019
RewriteCond %{TIME_MON} =03
RewriteCond %{TIME_DAY} =21
RewriteRule .* savetheinternet.html [L]
#RewriteRule .* https://timokoessler.gitlab.io/savetheinternet/ [R=302,L]

Alternativ zu einer eigenen Infomationsseite, kann auch auf eine externe Seite umgeleitet werden. Im obigen Beispiel ist die zugehörige Regel jedoch deaktiviert.

Keine Sicherheitsupdate mehr für Windows XP

Details
Published: 17 March 2014

Zum 8. April 2014 endet der 12-jährige Support von Microsoft für Windows XP¹.

Ab diesem Zeitpunkt werden keine automatischen Updates mehr bereitgestellt und neu-entdeckte Sicherheitslücken werden nicht mehr automatisch geschlossen.
Einige Hersteller von Antivirensoftware haben bereits angekündigt Windows XP auch weiterhin zu unterstützen. Einen Freifahrtschein zur Virenabwehr stellt das aber mitnichten dar, da Angriffe per Trojaner, Viren und sonstiger Malware unter Umständen auch an der Antivirensoftware vorbei erfolgt.

Wechseln Sie daher Ihr Betriebssystems in nächster Zeit.

Ob Windows 7/8/8.1 oder ein Umstieg auf Linux für Sie am sinnvollsten ist, lässt sich meist in einer kurzer Beratung klären.
Schreiben Sie uns eine kurze Nachricht über das Kontaktformular und wir setzen uns mit Ihnen in Verbindung.

 

Startseite

Details
Published: 12 March 2014

Wenn Sie einen Ansprechpartner für Ihre Webseite, für die Betreuung Ihrer Bürohard- und Software suchen oder allgemeine Fragen rund um das Thema Computer und Technik haben, dann sind Sie hier richtig.

Für die Umsetzung von Webseiten greifen wir vornehmlich auf das freie Content Management System (CMS) Joomla zurück, dass auch für Nicht-Techniker die Pflege von Webseiteninhalten sehr einfach macht.

Für den grafischen Entwurf von Webseiten arbeiten wir mit lokalen Mediendesignern zusammen, die in der Lage sind, den kompletten Nicht-Internetbereich abzudecken. Von der Erstellung von Corporate Design bis hin zu Großformatdruck ist alles aus einer Hand möglich.

Sortierung der Lieder auf MP3-Stick

Details
Published: 07 April 2019

Manche ältere MP3-Sticks scheinen keine Sortierung nach Dateinamen oder MP3-Tags zu unterstützen.

Stattdessen wird als einzige Sortiervorgabe das Dateialter auf dem Datenträger verwendet.

Beim Kopieren ganzer Ordner und ggf. parallelen Zugriffen bzw. unterschiedlichen Abarbeitungsreihenfolgen, ist damit die gewünschte Sortierung auf dem Stick nicht mehr vorhanden. Das Umbenennen der einzelnen Daten bringt keinen Erfolg.

Lösung

cd "[Herkunftsordner]"
find . | sort | xargs -I % sh -c '{ echo "$@"; cp "$@" --parents --target-directory=[Zielordner]; sleep 1; }'

Durch das Hinzufügen einer 1-sekündigen Wartezeit wird die Skriptlaufzeit verlängert, mögliche Doppelkopien (Verdrehungen) innerhalb einer Sekunde aber ausgeschlossen.

Beispielgeräte

  • Micropix IM-1LN3-EZWO

Diff/Patch zur Quellcodewartung

Details
Published: 12 September 2018

Anlegen/Sichern der Originaldateien

mkdir -p /tmp/osg_courts/admin/ /tmp/osg_courts/front/
cp -r /var/www/html/veranstaltungen.gera.de/administrator/components/com_osgcourts/* /tmp/osg_courts/admin/
cp -r /var/www/html/veranstaltungen.gera.de/components/com_osgcourts/* /tmp/osg_courts/front/
cp /var/www/html/veranstaltungen.gera.de/language/de-DE/de-DE.com_osgcourts.ini /tmp/osg_courts/front_de-DE_osg_courts.ini
cp /var/www/html/veranstaltungen.gera.de/administrator/language/de-DE/de-DE.com_osgcourts.ini /tmp/osg_courts/admin_de-DE_osg_courts.ini

Anpassungen vornehmen

Stellvertretend für andere Änderungen wird das "JURI" durch "JUri" ersetzt. Dies geschieht rekursiv beginnend am aktuellen Verzeichnis und wird direkt in die Datei zurückgespielt.

Wenn hier ein Fehler auftritt, kann es sein, dass die Ausgabedatei anschließend leer ist. Ein Backup ist also sinnvoll.

find . -name "*.php" -exec sed -ri "s|JURI::|JUri::|" {} \;

Patch erstellen

Die oben gesicherten Verzeichnisse bzw. Dateien werden jetzt mit den aktuellen, geänderten Versionen verglichen und daraus Patch-Dateien erstellt.

diff -crB /tmp/osg_courts/admin /var/www/html/veranstaltungen.gera.de/administrator/components/com_osgcourts/ > /tmp/osg_courts_admin.patch
diff -crB /tmp/osg_courts/front /var/www/html/veranstaltungen.gera.de/components/com_osgcourts/ > /tmp/osg_courts_front.patch
diff -Naru /tmp/osg_courts/front_de-DE_osg_courts.ini /var/www/html/veranstaltungen.gera.de/language/de-DE/de-DE.com_osgcourts.ini > /tmp/front_de-DE.com_osgcourts.ini.patch
diff -Naru /tmp/osg_courts/admin_de-DE_osg_courts.ini /var/www/html/veranstaltungen.gera.de/administrator/language/de-DE/de-DE.com_osgcourts.ini > /tmp/admin_de-DE.com_osgcourts.ini.patch

Patch einspielen

cd /var/www/html/veranstaltungen.gera.de/administrator/components/com_osgcourts/
patch < /tmp/osg_courts_admin.patch

cd /var/www/html/veranstaltungen.gera.de/components/com_osgcourts/
patch < /tmp/osg_courts_front.patch

cd /var/www/html/veranstaltungen.gera.de/administrator/language/de-DE/
patch < /tmp/admin_de-DE.com_osgcourts.ini.patch

cd /var/www/html/veranstaltungen.gera.de/language/de-DE/
patch < /tmp/front_de-DE.com_osgcourts.ini.patch

 

Zabbix-Alarme mit dynamischen Items

Details
Published: 18 July 2018
  • Zabbix
  • Email
  • Items
  • Alarm
  • alert
  • mail

Mit der Monitoringlösung Zabbix ist es relativ einfach möglich, bei der Über-/Unterschreitung bestimmter Grenzwerte Alarme zu erstellen und diese auf verschiedenen Wegen versenden zu lassen. Zabbix verfügt dabei über eine relativ einfache Struktur.

Zabbix-Grundstruktur

  • Geräte sind "hosts".
  • "hosts" haben "items", also einzeln überwachte Variablen mit Werten "values".
  • Grenzwerte eines "items" heißen "trigger".
  • Wenn ein Grenzwert über-/unterschritten wird, wird ein "event" ausgelöst.
  • Eine "action" startet einen (Benachrichtigungs-) Prozess, nachdem ein "event" ausgelöst wurde.
  • Eine Benachrichtigung wird an Nutzer oder Nutzergruppen geschickt über unterschiedliche Wege ("media") geschickt.
  • Das Ziel der Benachrichtigung wird in der "action" anhand des zu alarmierenden Nutzers ermittelt. Über "macros"1 lassen sich die Texte anpassen.
  • Diese "macros" können auch verschiedene Werte des host-Objektes annehmen.

 

Es ist nicht möglich, jede Art von item-Wert für die Benachrichtigung zu nutzen.

Wie man das dennoch dynamisieren kann, zeigt dieses Beispiel.

Beispiel

  • Es wird ein Emailzugang angelegt, der die Daten nur dem lokalen Benutzer (auf dem Zabbix-Server) zustellt.
  • Auf dem Server sind Zusatzprogramme notwendig.
    • fetchmail (Zum Abholen der Email.)
    • procmail (Zum Verarbeiten der Email.)
    • formail (Zum Umformatieren der Emaildatei.)

Über die systemd-Services (analog cronjob) werden die Emails regelmäßig abgeholt und die Weiterverarbeitung gestartet.

nano /etc/systemd/system/multi-user.target.wants/mailrelay.service 
[Unit]
Description=Mail relay (service)
[Service]
Type=simple
ExecStart=/bin/sh -c '/bin/mv /var/mail/zabbix /var/mail/zabbix.tmp && /usr/bin/formail -s /usr/bin/procmail < /var/mail/zabbix.tmp && /bin/rm /var/mail/zabbix.tmp'
[Install]
WantedBy=multi-user.target
nano /etc/systemd/system/multi-user.target.wants/mailrelay.timer 
[Unit]
Description=Mail relay

[Timer]
OnCalendar=*:0/5
Persistent=true

[Install]
WantedBy=multi-user.target

fetchmail startet procmail

nano /root/.fetchmailrc
set no bouncemail
defaults:
batchlimit 100 
poll localhost with protocol imap
user "zabbix" password "[PASSWORT]" is zabbix
ssl
fetchall 
# keep 
no rewrite 
mda "/usr/bin/procmail -f %F -d %T";

procmail verarbeitet die Email

nano /root/.procmailrc
SHELL=/bin/sh
PATH=/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin 
MAILDIR=$HOME
DEFAULT=/dev/null
LOGFILE=/var/log/procmail.log
LOG="" 
VERBOSE="yes"
 
SUBJ=`formail -xSubject: ` 
NEW_SUBJ=`echo "${SUBJ}" | expand | /bin/sed -e 's|#[^# ]*#||g' -e 's|^\s*||g'`
NEW_TO=`echo "${SUBJ}" | expand | /bin/sed -n 's/.*#\([^# ]*\)#.*/\1/p' | /bin/grep -E "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,63}$"` 

:0 bfhw
* ^To: <zabbix@localhost>
* !^X-Loop: This email address is being protected from spambots. You need JavaScript enabled to view it.
* !^Subject:.*Re:
* !^FROM_DAEMON
| formail -k -X "Content-Type:" -X "Content-Transfer-Encoding:" -X "Subject:" -X "From:" -X "Subject:" -X "Message-Id:" -X "Date:" -X "To:" -I "Content-Transfer-Encoding: base64" -I "From: This email address is being protected from spambots. You need JavaScript enabled to view it." -A "X-Loop: This email address is being protected from spambots. You need JavaScript enabled to view it." -I "To: ${NEW_TO}" -I "Subject: ${NEW_SUBJ}" | $SENDMAIL -oi ${NEW_TO} 

zabbix-1
zabbix-1
zabbix-1 zabbix-1

zabbix-2
zabbix-2
zabbix-2 zabbix-2

Rekursive Darstellung eines Verzeichnisbaums als Liste

Details
Published: 24 January 2018
$startdir = "[Startverzeichnis]";
$files = glob_recursive("*", GLOB_NOSORT|GLOB_MARK, $startdir);
sort($files);


$prev_level = -1;
for($i=0; $i<count($files); $i++) {
	$files[$i] = str_replace($startdir,"", $files[$i]);
	$curr_level = substr_count(substr($files[$i],0,-1),"/");
	$dir = (substr($files[$i],-1)=="/");
	if($prev_level<$curr_level) {
		echo "<ol>";
	} else if ($prev_level>$curr_level) {
		echo str_repeat("</ol></li>", $prev_level-$curr_level);
	}
	echo "<li>".$files[$i];
	if(!$dir) {
		echo "</li>";
	} else {
		echo "<ol>";
		$curr_level++;
	}
	$prev_level = $curr_level;
}
echo str_repeat("</ol></li>", $prev_level);
echo "</ol>";


function glob_recursive($pattern, $flags = 0, $startdir = ''){
	$files = glob($startdir.$pattern, $flags);
	foreach (glob($startdir.'*', GLOB_ONLYDIR|GLOB_NOSORT|GLOB_MARK) as $dir){
		$files = array_merge($files, glob_recursive($pattern, $flags, $dir));
	}
	return $files;
}

OpenWRT als WLAN-Repeater

Details
Published: 18 May 2016

TP-Link 841D, die unter OpenWRT laufen, sind relativ einfach als Repeater-Ersatz nutzbar.

Dafür wird allerdings nicht das Originalnetz weiter verteilt, sondern es erfolgt ein Routing eines lokalen Netzes in das Original-WAN-Netz.

Mit dieser Variante umgeht man einige Fallstricke, die bei einem reinen Repeater-Einsatz zu meistern sind. Zum Dauerbetrieb sollte die WLAN-Struktur allerdings angepasst und verbessert werden.

 

Die Konfiguration kann auch per WLAN durchgeführt werden. Dafür sind Vorbereitungen notwendig, die einem dann bspw. im Urlaub die Mitnahme eines Laptops ersparen.

Zentralisierte Backups mit BURP

Details
Published: 13 October 2015
  • Backup
  • Linux
  • Odroid
  • Server

Vor einiger Zeit musste ich mehrfach hintereinander meine Systemlandschaft neu ausetzen.

Jedes einzelne Mal habe ich mir dabei vorgenommen:

"Gleich wenn ich fertig bin, kümmere ich mich um die Backups!"

Meist habe ich jedoch stattdessen anschließend wieder neu aufgesetzt, weil meine Hardwareplattform (Odroid C1) schon wieder die Daten auf den USB-Sticks zerstört hatte.

 

Ich habe mir während der Recherche verschiedene Backuptools angeschaut und mit dem verglichen, was ich nutzen wollte und was KO-Kriterien für den Einsatz waren.

Meine Anforderungen

  • Client-/Serverarchitektur
    • zentralisiertes Backup zur einfachen Administration
    • Clients für verschiedene Betriebssysteme (Windows und Linux ist zwingend, Android, IOS wäre schön)
    • Server unter Linux lauffähig
  • Web-basierte Verwaltung

 

Nach einigen Abwägungen kamen BURP und UrBackup in den Test. Dort gefiel mir die Optik und das Handling von BURP einfach besser.

Installation

apt-get update
apt-get install burp

An den Einstellungen in /etc/burp/burp-server.conf habe ich nur die SSL-Pfade angepasst.

ssl_key = /etc/burp/ssl_cert_backup.key
ssl_cert = /etc/burp/ssl_cert_backup.crt
ssl_cert_ca = /etc/burp/CA/CA_ca.mydomain.crt
ca_name = ca.mydomain
ca_server_name = ca.mydomain

Der Speicherort ist auf eine nach /var/spool/burp eingebundene USB-Festplatte ausgelagert.

Zum einfachen Hinzufügen von Clients habe ich mir eine kleine Bash-Datei geschrieben, die neue Clients anlegt (Zertifikate generiert) und die Client-Konfiguration auf den Geräte gleich anpasst.

nano /root/burp-add-client.sh

#!/bin/bash
SERVER="backup.mydomain"
HOSTNAME=$1
PASSWORD=`< /dev/urandom tr -dc a-zA-Z-0-9 | head -c 16 ; `
CANAME="ca.mydomain"
CACERT="CA_ca.mydomain.crt"

if [ $2 = "sent" ]; then
        echo "use existing certificates";
else
        # create client certs
        burp_ca --name ${HOSTNAME} --ca ${CANAME} --key --request --sign --batch
fi

scp /etc/burp/CA/${HOSTNAME}.key root@${HOSTNAME}:/etc/burp/ssl_cert_${HOSTNAME}.key
scp /etc/burp/CA/${HOSTNAME}.crt root@${HOSTNAME}:/etc/burp/ssl_cert_${HOSTNAME}.crt
scp /etc/burp/CA/${CACERT} root@${HOSTNAME}:/etc/burp/${CACERT}

# create client config on server
echo "cname = ${HOSTNAME}" > /etc/burp/clientconfdir/${HOSTNAME}
echo "password = ${PASSWORD}" >> /etc/burp/clientconfdir/${HOSTNAME}
echo "server = ${SERVER}" >> /etc/burp/clientconfdir/${HOSTNAME}

# create client config on client
ssh root@${HOSTNAME} "echo \"\
	mode = client
	ssl_peer_cn = ${SERVER}
	server = ${SERVER}
	password = ${PASSWORD}
	cname = ${HOSTNAME}
	port = 4971
	pidfile = /var/run/burp.client.pid

	# SSL certificate authority - same file on both server and client
	ssl_cert_ca = /etc/burp/${CACERT}

	# Client SSL certificate
	ssl_cert = /etc/burp/ssl_cert_${HOSTNAME}.crt

	# Client SSL key
	ssl_key = /etc/burp/ssl_cert_${HOSTNAME}.key

	#backup_script_pre=/BACKUP/preBackup.sh
	#backup_script_post=/BACKUP/postBackup.sh
	#restore_script_pre=/BACKUP/preRestore.sh
	#restore_script_post=/BACKUP/postRestore.sh

\" > /etc/burp/burp.conf"

Die Pfade, die von den Clients gesichert werden sollen, werden per "include = /PFAD/" hinzugefügt. Unerwünschte Unterordner können per "exclude = /PFAD/" ausgeschlossen werden.

 

Hinzufügen eines Clients

(Linux-)Client

Installation

apt-get update
apt-get install burp

Anpassung des daemons

nano /etc/default/burp
	RUN=yes

Start per cronjob

crontab -e
	*/20    *       *       *       *       /usr/sbin/burp -a t

Server

sh /root/burp-add-client.sh [HOSTNAME]

Client (nochmal)

nano /etc/burp/burp.conf
    include = /opt/fhem/
    exclude = /opt/fhem/backup/
    exclude = /opt/fhem/demolog/
    exclude = /opt/fhem/log/
    exclude = /opt/fhem/restoreDir/
    include = /root/
    include = /etc/
    include = /var/spool/cron/
    include = /BACKUP/
    include = /usr/local/share/zabbix/

Quellen:

  • http://www.cyberciti.biz/open-source/awesome-backup-software-for-linux-unix-osx-windows-systems/
  • https://en.wikipedia.org/wiki/List_of_backup_software

Fehlendes json-Modul in lxc

Details
Published: 04 May 2015
  • bash
  • LXC
  • Python

Plötzlich (vermutlich nach einem normalen Update) liefen die lxc-Befehle nicht mehr.

root@lxc:# lxc-ls
Traceback (most recent call last):
File "/usr/bin/lxc-ls", line 30, in <module>
 import json
 ImportError: No module named 'json'

Über "pip" wurde das json-Modul nicht gefunden. Ein simplejson-Modul war jedoch verfügbar.

root@lxc:# pip install simplejson
Requirement already satisfied (use --upgrade to upgrade): simplejson in /usr/local/lib/python2.7/dist-packages
Cleaning up...

Der angezeigte Modulpfad wurde in die aktuelle Sitzung exportiert...

root@lxc:# export PYTHONPATH=/usr/local/lib/python2.7/dist-packages

...und lxc-ls an den geänderten Modulnamen angepasst.

root@lxc:# nano /usr/bin/lxc-ls
#import json
import simplejson

Ein anschließendes Ausführen der geänderten lxc-ls war wieder problemlos möglich.

Bereitstellung von Bildern per Phocagallery

Details
Published: 10 January 2015
  • Joomla
  • Phocagallery

Die Reihenfolge der Ausführungen der nachfolgenden Anleitung ist nicht zwingend so einzuhalten.

Für einen sinnvollen Arbeitsablauf haben sich diese Schritte allerdings bewährt.

 

  1. Hochladen der Bilder per FTP (z.B. mit Filezilla)
    • Unterordner unter "images/phocagallery" anlegen
    • sinnvollen Namen verwenden, keine Leerzeichen, keine Sonderzeichen (z.B. island)
    • Bis hier sind es normale Dateioperationen. (Wie am PC, wenn man Dateien im Explorer verschiebt.)
  2. Im Joomla-Administrator anmelden
    • http://IHRESEITE/administrator/
  3. In der Kategorieliste eine neue Kategorie anlegen
    • Komponenten -> Phocagallery -> Kategorien
    • Neu
    • Die Kategorie ggf. "unter" eine andere hängen. (z.B. "Europa").
  4. Bilder hinzufügen
    • Komponenten -> Phocagallery -> Bilder
    • Zum passenden Verzeichnis navigieren
    • Alle Bilder auswählen
    • Passende Kategorie auswählen
    • Speichern & Schließen
  5. Die Vorschaubilder werden jetzt automatisch erstellt.
  6. Falls die neue Kategorie auch über die Navigation erreichbar sein soll, dann muss noch ein Menüpunkt dafür angelegt werden.
  • Sitemap
  • Downloads
  • PGP