blog.bartlweb - a technologist's external brain

Thema: Linux

Port für den Zugriff via SSH unter CentOS ändern

Wer unter CentOS den Port für SSH ändern möchte, muss nicht nur die SSH-Konfiguration anpassen, sondern auch die zugehörigen Regeln in iptables verändern.

Anpassen von iptables

Damit der Zugriff auf den gewählten Port auch von außen gewährt wird, muss die iptables-Konfiguration angepasst werden.

In der Datei  /etc/sysconfig/iptables wird in der folgenden Zeile der Wert des Parameters dport entsprechend auf die neue Portnummer geändert:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Sollte die Zeile noch nicht vorhanden sein, müssen Sie diese unbedingt ergänzen.

Die Änderungen werden über den Befehl service iptables reload wirksam.

PHP-Skripte als Daemon mit systemd unter Linux als Services betreiben

PHP kann nicht nur als Skriptsprache für dynamische Websites genutzt werden, sondern auch als Programmiersprache für Hilfsprogramme oder asynchrone Server-Dienste wie z.B. einem Chatbot.

Damit die Skripte dann am Server auch entsprechend beim Systemstart gestartet werden und vor allem auch jederzeit entsprechend gestoppt oder neu gestartet werden können, lassen sich diese (wie jedes andere Programm auch) als Daemon mit systemd einrichten.

Daemon-Konfiguration erstellen

Dazu wird ein entsprechendes Init-Skript erstellt und unter /etc/init.d/ abgelegt. Der Name des Skriptes gibt den Namen des Daemons vor (stellen Sie sicher, dass Sie die Datei ohne Dateiendung erstellen, z.B. php-slackbot). Wichtig sind dann vor allem die Berechtigungen für die erstellte Datei. Nur wenn diese korrekt gesetzt sind, lässt sich der Daemon auch ausführen. Setzen Sie diese mit chmod +x /etc/init.d/<daemon>.

Cronjobs für unterschiedliche Nutzer einrichten

Cronjobs dienen unter Linux zum Ausführen wiederkehrender Aufgaben. Für den aktuell angemeldeten Nutzer kann man diese mittels crontab -e editieren. Aber wie funktioniert das für andere Nutzer bzw. Nutzer wie www-data die zum Ausführen von Diensten genutzt werden aber über keinen Shell-Login verfügen?

Dazu kann man crontab als root-Nutzer ausführen und den Zielnutzer mitgeben:

crontab -u user1 -e crontab -u www-data -e

Allgemeine Infos zu Cronjobs: https://blog.bartlweb.net/2011/02/cronjobs-wiederkehrende-aufgaben-unter-linux-managen/

SSL-Verbindung zwischen Postfix und einem externen SMTP-Server mithilfe von stunnel

Wer Postfix für den Versand seiner E-Mails so konfiguriert hat, dass dieser einen externen Server (Relayhost) zum Versand der Mails benutzt und diese Verbindung mittels SSL schützen möchte, muss zu einem Trick greifen. Postfix selbst unterstützt zwar TLS- aber keine SSL-Verbindungen. Abhilfe schafft stunnel, ein kleiner Zwischenserver der die verschlüsselte Kommunikation zwischen lokalem Postfix und externem SMTP-Server übernimmt.

Postfix konfigurierien

Passen Sie die Konfiguration von Postfix so an, dass der Relayhost auf die lokale Loopback-IP-Adresse und einen freien Port über 1024 (muss danach in stunnel konfiguriert werden) zeigt.

Linux-Server mit logwatch überwachen

logwatch parsed die Logdateien des Systems bzw. der prominentesten Dienste wie SSH oder Apache und erstellt daraus Reports. Die Zeitfenster für die Erstellung des Reports lassen sich dabei beliebig adaptieren. Sie können Sie sich entweder tägliche oder so wie in dieser Anleitung beschrieben wöchentliche Reports zu einem definierten Zeitpunkt per E-Mail zusenden lassen.

logwatch benötigt für den Versand von E-Mails eine für den externen Versand konfigurierte Installation von sendmail. Sobald diese Voraussetzung gegeben ist, können Sie logwatch mit dem unten stehenden Befehl installieren.

apt-get install logwatch

logwatch konfigurieren

Logwatch wird über die Konfigurationsdatei /usr/share/logwatch/default.conf/logwatch.conf konfiguriert. Die folgenden Parameter sollten Sie an Ihre Bedürfnisse anpassen:

Perl-Warnung “Setting locale failed” beheben

Einige Ubuntu-Systeme zeigen direkt nach der Installation z.B. beim Aktualisieren via apt-get folgende Warnmeldung in Bezug auf perl bzw. der Spracheinstellungen des Systems an:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "de_AT.UTF-8",
LC_ADDRESS = "de_AT.UTF-8",
LC_MONETARY = "de_AT.UTF-8",
LC_NUMERIC = "de_AT.UTF-8",
LC_TELEPHONE = "de_AT.UTF-8",
LC_MEASUREMENT = "de_AT.UTF-8",
LC_TIME = "de_AT.UTF-8",
LC_NAME = "de_AT.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

Lösung

Um die Fehlermeldung zu beheben, muss die Lokalisierungsinformation für die nicht erkannten Sprachen neu erzeugt werden und die Spracheinstellungen des System aktualisiert werden. Nutzen Sie zur Erzeugung der Lokalisierungsdateien den Befehl locale-gen und Listen sie durch Leerzeichen getrennt alle in der Warnmeldung angezeigten Sprachen auf.

Postfix – SALS authentication failed – no mechanism available

Ich richte Postfix auf meinen Servern generell immer so ein, dass dieser seine E-Mails über einen externen SMTP-Server versendet. Die Anmeldung an diesem Server erfolgt mittels Benutzername und Passwort (siehe dazu auch: SMTP Relay Host mit Authentifizierung in Postfix konfigurieren). Bei der Neuinstallation meines Servers bin ich dabei wieder einmal über einen Fehler gestolpert, bei dem Postfix das Fehlen eines geeigneten Mechanismus bekrittelt:

(SASL authentication failed; cannot authenticate to server example.com[0.0.0.0]: no mechanism available)

Die Lösung ist simpel. Postfix fehlt die Cyrus Simple Authentication Service Layer (SASL) Library. Unter Ubuntu installieren Sie diese mit dem folgenden Befehl nach und schon klappt die Authentifizierung.

Der Texteditor vi

Der Standardtexteditor unter Linux nennt sich vi und lässt sich vollständig mit der Tastatur bedienen. Aufgerufen wird der Editor über den Befehl vi <Dateiname>. Durch drücken der Taste i wechselt man in den Bearbeiten-Modus und kann den Text nun verändern. Alle Befehle zum Steuern des Editors lassen sich nach dem Drücken der Taste Esc eingeben. Die am häufigsten benötigten Befehle sind:

  • dd - löscht die aktuelle Zeile
  • 0 - springt zum Anfang der aktuellen Zeile
  • $ - springt zum Ende der aktuellen Zeile
  • yy - kopiert die aktuelle Zeile in den Zwischenspeicher

Inhalt von Textdateien über die Linux Konsole durchsuchen

Es gibt wenig, dass sich über die Konsole von Linux nicht bewerkstelligen lässt. Der folgende Befehl durchsucht alle Dateien des aktuellen Verzeichnisses nach einem Schlüsselwort und listet die Dateinamen, jener Dateien in denen das Schlüsselwort gefunden wurde, auf.

grep -li "suchwort" *

Time Capsule mit Ubuntu 12.04 simulieren

Die in Apples OS X integrierte Backupsoftware TimeMachine erlaubt standardmäßig nur Backups auf externe Festplatten oder teuer zugekaufte Time Capsules, sowie OS X Serverumgebungen. Gerade wer allerdings schon einen Heimserver betreibt, ist oft auf der Suche nach einer Alternative. Mit OS X Mountain Lion hat Apple das Workaround über Samba Shares unterbunden und verlangt nun nach einer AFP-Freigabe. Mit Hilfe von Ubuntu 12.04 und Netatalk 2.2 lässt sich eine Time Capsule simulieren und sogar für den Mehrbenutzerbetrieb optimieren. So ist es möglich, für jeden vorhanden Mac, eine eigene virtuelle Freigabe zu erstellen und pro Freigabe den zu Verfügung gestellten Speicherplatz zu begrenzen. Somit kann das Volllaufen des Backupvolumes unterbunden werden bzw. allen Macs gleich viel Speicherplatz zu Verfügung gestellt werden.