30. Mai 2011

MiniDLNA - Kleiner aber feiner DLNA-Server

Das Projekt MiniDLNA stellt eine Server-Software  für DLNA/UPnP-AV Clients bereits, die auch auf kleinen NAS-Servern läuft.
Leider funktioniert das Statische-File nicht auf einem Armel-Server. Man muss also das ganze aus dem Sourcecode selbst kompilieren.
Vorher werden jedoch noch einige Pakete benötigt:
apt-get install libavcodec-dev libavformat-dev libavutil-dev libflac-dev libvorbis-dev libogg-dev libid3tag0-dev libexif-dev libjpeg62-dev libsqlite3-dev
Danach den Sourcecode entpacken und kompilieren:
tar xvzf minidlna_1.0.19_src.tar.gz

cd minidlna1.0.19

make
Nach erfolgreichen kompilieren noch die Programmdatei und die Konfiguration kopieren:
cp minidlna /usr/sbin/
cp minidlna.conf /etc
und die /etc/minidlna.conf anpassen. Viel ist dabei nicht zu tun. Als Standardschnittstelle ist eth0 eingestellt, sollte der Server eine andere nutzen, muss die in der minidlna.conf eingetragen werden.
Dann sollte man das media_dir nach den eigenen Erfordernissen ändern, also dass Verzeichnis in dem die Media-Dateien liegen. Das kann für Audio, Video und Bilder auch getrennt erfolgen.
Wer man kann noch den Namen des Servers (friendly_name) ändern.

28. Mai 2011

Webserver mit lighttpd

Anleitung für die Installation eine Webservers mit lighttpd, php5 und sqlite3 unter Debian Squeeze

folgende Pakete werden benötigt:

apt-get install lighttpd php5-cgi sqlite3 php5-sqlite

Anschließend muss noch php5 aktiviert werden:
lighty-enable-mod fastcgi fastcgi-php

/etc/init.d/lighttpd reload
Danach sollte der Server bereits verfügbar sein. Wenn statt der Startseite nur das Verzeichnis mit der Datei index.lighttpd.html angezeigt wird, so liegt das an einem Fehler in der Datei /etc/lighttpd/lighttpd.conf. Hier werden unter index-file.names alle möglichen Startseiten definiert. Bei der Default-Startseite ist jedoch ein Leerzeichen zuviel. Wenn man aus " index.lighttpd.html" das Leerzeichen am Anfang entfernt und den Server neustartet wird die Startseite angezeigt:

Im Verzeichnis /var/www nun die Datei index.php anlegen:
cat /var/www/index.php

Damit kann man gleich die Funktionsfähigkeit von PHP testen.

Zusätzliche Module für php5 lassen sich ebenfalls problemlos installieren. So z.B.:
apt-get install php5-gd

Absichern mit Fail2ban

Installation mit
apt-get install fail2ban

Anschließend die Konfigurationsdatei erstellen:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

In der jail.local sollten einige Anpassungen vorgenommen werden:
Alle IP-Adressen, die nicht blockiert werden sollen (z.B. Rechner im eigenen LAN)
ignoreip = 127.0.0.1 192.168.178.xxx

Empfängeradresse für evtl. Warnemails
destemail = root@localhost

Was soll erfolgen, nur Ban oder auch eine (ausführliche) EMail
action = %(action_mwl)s

Danach noch einzelne Einstellungen für die verschiedenen überwachten Dienste wie SSH, Proftpd usw.

SSMTP als Alternative zu sendmail

Wenn es nur darum geht, hin und wieder eine Mail vom Server zu verschicken benötigt man kein sendmail. Es genügt das kleinere SSMTP zum Verschicken.

Installiert wird es mit
apt-get install ssmtp

Danach müssen noch die beiden folgenden Dateien konfiguriert werden:
cat /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=postmaster # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=smtp.live.com:587 # Beispiel für live/hotmail # Where will the mail seem to come from? #rewriteDomain= # The full hostname hostname=SERVERNAME # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES AuthUser=LOGIN-Name AuthPass=Passwort UseTLS=yes UseSTARTTLS=yes



# cat revaliases
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:LOGIN-Name:smtp.live.com:587
www-data:LOGIN-Name:smtp.live.com:587

Da die Datei ssmtp.conf das Passwort im Klartext enthält sollte man verhindern, dass unbefugte Nutzer diese auslesen können. Andererseits muss aber auch sichergestellt werden, dass Dienste und User die Datei auslesen können.

11. Februar 2011

Automatische Emails vom Server - Teil 2: Verarbeitung

Nachdem die Email mit getmail vom Server geladen wurde [*]
ist nun Zeit die Nachrichten auszuwerten und zu reagieren.

Dafür wird die Konfiguration für procmail angelegt:
cat .procmailrc
MAILDIR=$HOME/procmail
LOGFILE=/var/log/procmail/procmail.log
VERBOSE=off

:0 w
* ^From:.*admin@server.de
* ^Subject:.*IP-Codewort
| $HOME/sendip.sh

:0 w
* ^From:.*admin@server.de|!^FROM_DAEMON
| $HOME/weiter.sh

:0 w
/dev/null
MAILDIR gibt an, wo die Nachrichten abgelegt werden - wenn welche angelegt werden ;-)
Anschließend folgen "Rezepte" für die Bearbeitung der Emails.

Im ersten Rezept werden Nachrichten bearbeitet, deren Absender (From) der Admin ist und die im Betreff das IP-Codewort haben. Diese Nachrichten werden an das Script sendip.sh übergeben (welches noch anlegen werden muss).

Im zweiten Rezept werden die Nachrichten bearbeitet, die vom Admin kommen aber nicht das Code-Wort enthalten ODER alles anderen Nachrichten, die nicht von einem Daemon kommen. Damit sollen Endlosschleifen vermieden werden. Hier werden die Nachrichten an das Script weiter.sh übergeben - welches auch noch angelegt werden muss.

Am Ende werden alle restlichen Nachrichten gelöscht.

Automatische Emails vom Server - Teil 1: Empfang

Ausgangsproblem:
Grundsätzlich sendet der Mini-Server regelmäßig seine dynamische IP mit ddclient an den Dienst DynDns. Dadurch ist er über eine URL erreichbar. Bedingt durch eine Störung bei DynDns hat dies aber nicht funktioniert und somit war der Server von außen nicht erreichbar. Wie kommt man jetzt an die IP?

Lösung:
Per Email, den im Header der EMail ist die IP des Absenders enthalten. Außerdem kann man dann natürlich auch gleich eine EMail verschicken, die die derzeitige IP als Text enthält.

Ansatz:
Natürlich soll der Server nun nicht unnötigerweise ständig die IP-Mail durch die Gegend schicken. Am besten wäre es, wenn er dies nur auf Anforderung macht. Diese Anforderung muss der Server automatisch empfangen und verarbeiten. Eine Möglichkeit wäre also eine EMail. Die kann der Server selbstständig abrufen und auswerten. Aus Sicherheitsgründen soll er dies nur tun, wenn
1. er eine Email von einer festgelegten EMail-Adresse erhält (also zum Beispiel dem Administrator)
2. die Email ein bestimmtes Code-Wort im Betreff enthält


Umsetzung - der Empfang:
Zuerst muss der Server also autark ein Email-Konto abfragen und die enthaltenen Emails bearbeiten. Unter Linux gibt es dafür z.B. die Programme getmail und procmail
Mit getmail wird das Email-Konto abgefragt und die Nachrichten anschließend zur Weiterverarbeitung an procmail übergeben.

Zuerst also die Pakete installieren
apt-get install getmail4 procmail

Anschließend wird ein neuer User sysmail eingerichtet, der sich um die ganze Geschichte kümmert.
adduser sysmail
Der User sysmail soll dabei keinen Zugang zum FTP-Server haben und wird deshalb in die Datei /etc/ftpusers eingetragen. Zusätzlich wird er nach der gesamten Einrichtung für die Bash gesperrt /etc/passwd

Die Konfigurationen für getmail und procmail erfolgen im Home-Verzeichnis von sysmail.
cat .getmail/getmailrc
[options]
delete = false
message_log = /var/log/getmail/getmail.log
read_all = false

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.googlemail.com
port = 993
username = sysmail@server.de
password = ******
#mailboxes = ("INBOX","[Gmail]/Alle Nachrichten")
mailboxes = ("INBOX",)

[destination]
type = MDA_external
path = /usr/bin/procmail
Dabei bedeutet die Optionen, dass
-die Nachrichten nach dem Herunterladen nicht gelöscht werde
-die Log-Datei im entsprechenden Verzeichnis angelegt wird (sysmail braucht dort Schreibrechte!)
-nur neue Dateien heruntergeladen werden

Dann kommen die Angaben zum EMail-Konto. In diesem Fall für der sicheren (SSL-)Zugang über IMAP zum Server von Googlemail. Alternative wäre auch POP3 und ein unsicherer Zugang möglich.
mailboxes gibt an, welche IMAP-Ordner abgefragt werden sollen.

Am Ende noch die Konfiguration für die Weiterverarbeitung, hier werden alle Nachrichten an procmail übergeben. Alternative könnte man die Nachrichten z.B. auch lokal ablegen.

Das Verzeichnis .getmail und die Datei getmailrc sollten nur für den User sysmail lesbar sein:
chmod 700 .getmail; chmod 600 .getmail/getmailrc

Aufgerufen wird getmail als User sysmail mit getmail, da procmail aber noch nicht eingerichtet ist lass wir das.