SSH Login mit authorized_keys (ohne Passwort )

Problem : Man möchte mit einem Bash Script (Server A) z.B. Sicherungen von einem entfernten Server (Server B) automatisiert abholen. Da hier die Eingabe eines Passwortes hinderlich ist realisiert man das über einen SSH Key.

Lösung :

1.) erstellen eines SSH Keys auf Server A mit dem Befehl
ssh-keygen -t rsa


2.) erstellen des Ordners .ssh im Homeverzeichnis auf Server B, sollte dieser bereits existieren auch gut :-)
mkdir -p ~/.ssh


3.) importieren des erstellten Keys von Server A in der Datei .ssh/authorized_keys auf Server B
cat ~/.ssh/id_rsa.pub | ssh user@[Hostname von Server B] 'cat >> .ssh/authorized_keys'
oder
cat ~/.ssh/id_rsa.pub | ssh user@[IP-Adresse von Server B] 'cat >> .ssh/authorized_keys'


Anmerkung: Man kann auch Schritt 2 und 3 in einem zusammenfassen. Das gute daran man muss sich nicht erst auf Server B anmelden ;-)
cat ~/.ssh/id_rsa.pub | ssh root@[Hostname von Server B] 'mkdir -p ~/.ssh ; cat >> .ssh/authorized_keys'



4.) testen des Zugangs ohne Passwort z.B. mit diesem Befehl von Server A aus
ssh user@hostname
oder
ssh user@ip-adresse

Debian ( 6 ) Squeeze - Bash Shellshock schließen und testen

Ein Debian Squeeze System auf die Bash-Lücke: ShellShock testen und diese schließen.

Bash Shellshock testen :
env x='() { :;}; echo "WARNUNG: SHELLSHOCK GEFUNDEN"' bash --norc -c ':' 2>/dev/null;
Sieht der output so aus ist das System verwundbar
WARNUNG: SHELLSHOCK GEFUNDEN

Die Jungs von #shellshock haben einen besseren Test geschrieben, in der Sektion "Testing Your System" ist der Aufruf dafür zu finden.

Auf meinen Debian (6) Squeeze Server konnte ich die Lücke , soweit bekannt , schließen.

Ich habe meine /etc/apt/sources.list auf den LTS Zweig konfiguriert
deb http://http.debian.net/debian/ squeeze main contrib non-free
deb-src http://http.debian.net/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://http.debian.net/debian squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian squeeze-lts main contrib non-free
danach nur das Packet bash geupdatet
apt-get update && apt-get install --only-upgrade bash
Erneut Bash Shellshock testen :
env x='() { :;}; echo "WARNUNG: SHELLSHOCK GEFUNDEN"' bash --norc -c ':' 2>/dev/null;
Wenn hier jetzt kein Output mehr zu sehen ist dann ist die bekannte Lücke geschlossen.

Weitere Quellen :
Bash-Luecke-Shellshock-Tests-auf-Verwundbarkeit-und-Abwehr
how-to-fix-shellshock-vulnerability-on-debian-squeeze
Mitigating the shellshock vulnerability (CVE-2014-6271 and CVE-2014-7169)
#shellshock

Apache2 Einstellungen eine VHosts ohne Neustart des Servers

Wenn man an einem VHOST unter Apache2 eine Änderung vornimmt muss man entweder den Apache2 neustarten dies macht man mit
/etc/init.d/apache2 restart


oder man läd nur die Konfigurationsdateien neu. Dann hat man keine Downtime ;-)

1.) Überprüfen ob die Konfiguratinsdateien geparst werden können
apache2ctl configtest

2.) Konfigurationsdateien einlesen , gemachte Einstellung werden aktiv
apache2ctl graceful


MYSQL Server Konfiguration online ändern

Es gibt mehrere Wege um das Logging auf einem MySQL Server zu aktivieren. Der eine Weg ist über die /etc/mysql/my.cnf allerdings muss hier MySQL neu gestartet werden.
Um die Konfiguration ohne Neustart zu ändern bietet sich dieser Weg an.

Anmelden am MySql Server :
BENUTZER und PASSWORT muss natürlich mit den eigenen Werten ersetzt werden.
mysql -uBENUTZER -pPASSWORT


Dann die globalen Variablen setzen
SET global log_output = 'FILE';
SET global general_log_file='/var/log/mysql/mysql_general.log';
SET global general_log = 1;


ausschalten kann man das ganze wieder mit
SET global general_log = 0;


Man sollte das global_log nicht allzu lange aktiv lassen da hier je nach Anwendung schnell 1 GB zusammen kommt.

Debian ( 6 ) Squeeze Update php

Problem : PHP auf einem Debian 6 Server Updaten

Lösung :

Hinzufügen des dotdeb Repository (DotDeb Hilfe) zur /etc/apt/sources.list

# dotdeb.org

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all


Importieren des GnuPG Key

wget http://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg


Update der Packetverwaltung mit apt-get update durchführen.

Dannach bringt ein apt-get dist-upgrade php auf die aktuelle Version

Ein php - version liefert dann diesen Output PHP 5.3.28-1~dotdeb.0 with Suhosin-Patch ....... Stand ( 24.06.2014 )

Nachdem php geupdatet wurde muss der Apache neu gestartet werden da sonst Serverfehler ausgeliefert werden , dies kann mit

/etc/init.d/apache2 restart erledigt werden.

Kursiv = Muss in der Console eingegeben werden oder ist ein Output

Check_MK Plugin | LOCAL Check ! | Linux Updates

Ich habe hier als Server Überwachung Check_MK am laufen , die Serverüberwachung bringt die Möglichkeit mit Windows Systeme auf Updates zu überprüfen. Diese Funktion habe ich für Linux Systeme vermisst und habe einen local Check für Debian geschrieben der die selbe Aufgabe übernimmt.

eine Datei anlegen mit folgendem Inhalt z.B. debian_updates.sh


#!/bin/bash
LOGPATH=`dirname $(readlink -f ${0})`
LOGFILE=debian_updates.log
LOGFULL=$LOGPATH/logs/$LOGFILE
DEBVER=`cat /etc/debian_version`
TNOW=$(date "+%s");
STATUS=0

function Get_Updates {
         apt-get update > /dev/null 2> /dev/nul
         AVUP=`apt-get dist-upgrade -qq -y -s |  grep -c '^Inst '`
         AVPACK=`apt-get dist-upgrade -qq -y -s |  awk '/^Inst / { print $2 }' | sed ':a;N;$!ba;s/\n/ /g'`
         AVUPA=$(($AVUP + 1));
         AVUP=$(($AVUPA - 1));
         if [ $AVUP != 0 ]; then
              STATUS=1
              STATUSTXT="$AVUP Updates ( Debian Version : $DEBVER )__ $AVPACK"
         else
              STATUS=0
              STATUSTXT="System ist auf dem aktuellsten Stand ( Debian Version : $DEBVER )"
         fi

        echo "$STATUS Debian_Update - $STATUSTXT" > $LOGFULL
        echo "$STATUS Debian_Update - $STATUSTXT"
}


if [ -e $LOGFULL ];
   then
   TDATEI=$(stat -c %Z $LOGFULL);
   ALTER=$(($TNOW - $TDATEI));
   MAXALTER=86400;      # ---- Berechnet sich wie folgt 24*60*60=86400 Sekunden
                if [ $ALTER -gt $MAXALTER ];
                        then
                        Get_Updates
                        else
                        while read line; do
                                echo $line
                        done < $LOGFULL
                        exit;
                fi
   else
        Get_Updates
   fi

exit



die Datei ausführbar machen mit chmod u+x Dateiname und dann in /usr/lib/check_mk_agent/local/ kopieren. Ein Unterverzeichnis mit dem Namen logs anlegen und einen Full Scan auf die Maschine ausführen. Ab dann werden die Updates auch in der Serverüberwachung angezeigt.

z.B. keine Updates



z.B. Updates stehen zur Installation

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)