Kategorien
PHP Server Administration

Nagios Plugins mit PHP schreiben

Nagios Plugins zum Monitoring von Servern und Funktionalitäten kann man in jeder verfügbaren Sprache schreiben. Die einzige Regel, an die man sich halten muss ist, dass der Return Code des Scriptes und der Response Text (enthält auch die Performance Daten) nach einem bestimmten Schema aufgebaut werden muss.

Als Hilfe kann man die Klasse NagiosPlugin benutzen, um Plugins zu schreiben:

abstract class NagiosPlugin {

    /**
     * @var boolean
     */
    protected $verbose = false;

    /**
     * setVerboseModeFromArgv
     * @see https://nagios-plugins.org/doc/guidelines.html#AEN41
     *
     * @param $argv
     * @return void
     */
    public function setVerboseModeFromArgv($argv) {
        if(in_array('-v', $argv)){
            $this->verbose = true;
        }
    }

    /**
     * addVerboseMessage
     *
     * @param $message
     * @return void
     */
    protected function displayVerboseMessage($message){
        if($this->verbose){
            echo $message.PHP_EOL;
        }
    }

    /**
     * endWithStatusOk
     * @see https://nagios-plugins.org/doc/guidelines.html#AEN200
     *
     * @param string $message
     * @param string $performanceData has format "nameOfData=value"
     * @return void
     */
    protected function endWithStatusOk($message, $performanceData){
        print "OK - $message".$this->addPerformaceData($performanceData);
        exit(0);
    }

    /**
     * endWithStatusWarning
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusWarning($message, $performanceData){
        print "WARNING - $message".$this->addPerformaceData($performanceData);
        exit(1);
    }

    /**
     * endWithStatusCritical
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusCritical($message, $performanceData){
        print "CRITICAL - $message".$this->addPerformaceData($performanceData);
        exit(2);
    }

    /**
     * endWithStatusUnknown
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusUnknown($message, $performanceData){
        print "UNKNOWN - $message".$this->addPerformaceData($performanceData);
        exit(3);
    }

    /**
     * addPerformaceData
     *
     * @param string $performanceData
     * @return string
     */
    private function addPerformaceData($performanceData){
        $result = '';
        if(!empty($performanceData)){
            $result = ' | '.$performanceData;
        }
        return $result;
    }
}

 

Kategorien
Docker PHP PHP 7 Symfony

Docker PHP7 und Symfony3 Image mit MySQL und phpMyAdmin

Für die lokale Entwicklung mit Symfony3 und PHP7 habe ich mir das folgende Docker Image zusammengebaut, welches die folgenden Features beinhaltet:

Kategorien
Server Administration

SSH Keys für SFTP erstellen Mac

Mit diesem Konsolenbefehl lässt sich der private und der public key (.pub) auf dem Mac generieren:

ssh -keygen -t rsa -C "foo@bar.de"
Kategorien
Docker

Docker 1.9: error validating certificates

Fehlermeldung:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout You can attempt to regenerate them using 'docker-machine regenerate-certs name'. Be advised that this will trigger a Docker daemon restart which will stop running containers.

Bei der Fehlermledung, die TLS Zertifikate neu regenerieren zu lassen, hat bei mir ncht geholfen, wie empfohlen von anderen, Virtual Box zu updaten auf die aktuelle Version, sondern nur, das default -Image, welches Docker selbst erzegt mit den Zertifikaten zusammen neu generieren zu lassen.

  1. Dafür öffnet man Virtual Box und stopt die laufenden virtuellen Maschine (default) per schließen -> ausschalten
  2. Dann löscht man das Image in Virtual Box.
  3. Anschließend lässt man das Image neu generieren mit Docker über das Ausführen des Docker Terminals

 

 

Kategorien
MySQL Server Administration

Importieren und Exportieren alle MySQL Datenbanken unter Windows und Mac

Unter Windows kann man mit einem Befehl sehr leicht alle Daten exportieren in MySQL mit mysqldump:

cd C:\xampp\mysql\bin
mysqldump.exe -u root -p --opt --all-databases --verbose > C:\export.sql

 

Erläuterung:

 –opt:  Export alle DBs, ohne „system“ databases wie mysql, information_schema, performance_schema und test

 –verbose: um log Meldungen anzuzeigen auf dem Bildschirm, es sind nicht viele, so dass die Performance nicht beeinflusst wird großartig

Kategorien
Server Administration

ProFTPD Sicherheitslücke finden

Gerade ist eine schlimme Sicherheitslücke, mit der man den ganzen Server kompromittieren kann durch ein FTP Programm, welches auf fast jedem Server mit Xampp Installation läuft. Siehe Heise Artkel.

Um seine eigenen Server abzusichern, kann man auf der Linux Shell folgenden Test machen:

telnet myserver.de 21

site cpfr /etc/passwd

Wenn als Antwort ein Fehler 350 zurückkommt, dann gibt es drigenden Handlungsbedarf!

Kategorien
Server Administration

E-Mails an Google Mail landen im Spam

Beim Versenden von Mails an Google Mail/Gmail kam es bei mir immer zu einer Bounce E-Mail von Google mit der folgenden Nachricht:

gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1a] said: 550-5.7.1
    [2a01:4f8:160:61b3::2      12] Our system has detected that this 550-5.7.1
    message is likely unsolicited mail. To reduce the amount of spam sent
    550-5.7.1 to Gmail, this message has been blocked. Please visit 550-5.7.1
    http://support.google.com/mail/bin/answer.py?hl=en&answer=188131 for 550
    5.7.1 more information. u49si23102713eef.172 - gsmtp (in reply to end of
    DATA command)

Die Nachricht ist sehr allgemein und unter dem Link findet man keine direkte Lösung. Bei mir hat folgendes geholfen:

Die Nachricht deutete daraufhin das der Absender-Mail von einer IPV6 Adresse gesendet worden ist: 2a01:4f8:160:61b3::2 und deshalb habe ich Postfix umgestellt auf IPV4 und voila, es hat geklappt:

vi /etc/postfix/main.cf

Zeile ändern:  inet_protocols = ipv4 und Postfix neustarten und fetig – keine Boune Mail von Gmail!

Kategorien
Server Administration

Plesk Webseiten auf anderen VHost verschieben

Um eine Webseite mit Datenbank erfolgreich auf einen anderen VHost (Virtual Hosts) umzuziehen, muss man

  1. die FTP-Einstellungen ändern
  2. Innerhalb des Projektes nach dem Pfad „/var/www/vhosts“ suchen und anpassen auf den neuen Pfad
  3. die Projekt-Dateien per FTP in das neue Verzeichnis kopieren
  4. die Datenbank per Plesk umziehen, was nicht so einfach ist, weil es keine doppelten DB-User-Namen und Datenbank-Namen geben kann. Deswegen als erstes eine vollständige Kopie der Datenbank erzeugen namens „MeinName_backup“, danach die alte Datenbank löschen. Dann kann die „MeinName_backup“ kopiert werden üpber Plesk auf einen anderen VHost unter dem alten Namen. Danach kann der Datenbank-User angelegt werden.
  5. Cronjobs müssen auch umgezogen werden und der Pfad „/var/www/vhosts“ angepasst werden.
Kategorien
Server Administration

Plesk deaktivieren Ubuntu

Aus Sicherheitsgründen sollte Plesk nicht dauerhaft erreichbar sein, weil darüber viele Angriffe zur Übernahme von Servern gefahren werden. Das Risiko ist hoch, weil man mit Zugriff auf Plesk wichtige Einstellungen vornehmen kann. Außerdem ist das Login mit Root-Passwort möglich, wenn das erst gefunden ist, hat der Angreifer volle Kontrolle über den Server.

Man sollte deswegen den Plesk Dienst stoppen und bei Bedarf aktivieren und wieder stoppen nach erfolgreicher Änderung:

Stoppen vom Plesk Dienst unter Ubuntu

/etc/init.d/psa stop

Starten vom Plesk Dienst unter Ubuntu

/etc/init.d/psa start
Kategorien
Apache Webserver

Xampp mehrer Virtual Hosts mit SSL

Wenn man unter Windows mehrere Webseiten mit SSL über das https-Protokoll betreiben will, muss man in der http-vhosts.conf folgende Einträge machen: