Software-RAID: resync=PENDING

openlogo-100Viele meiner Leser nutzen sicher die „Standard-RAID-Lösung“ mdadm unter Debian.

Ab und zu kommt es hier zu „Fehlern“, die im Monitoring recht unschön aussehen und nicht nur daher behoben werden sollten.

Einer dieser Fehler ist der Status „resync=PENDING“, der ausgegeben wird, wenn man sich den Status des Verbundes mit cat /proc/mdstat anschaut.

root@server ~ # cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
      470949888 blocks super 1.2 [2/2] [UU]
      bitmap: 1/4 pages [4KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      523712 blocks super 1.2 [2/2] [UU]

md0 : active (auto-read-only) raid1 sda1[0] sdb1[1]
      16760832 blocks super 1.2 [2/2] [UU]
        resync=PENDING

Wie man sieht ist das RAID hier als auto-read-only gekennzeichnet und wird daher nicht synchronisiert. Viele Lösungen im Internet drängen darauf, die Geschichte im Rettungssystem zu beheben, was aber oft gar nicht nötig ist.

Man sollte einfach als root den Verbund wieder auf read-write setzen

mdadm --readwrite md0

und schon sollte die Ausgabe von cat /proc/mdstat wieder besser aussehen:

root@server ~ # cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
      470949888 blocks super 1.2 [2/2] [UU]
      bitmap: 2/4 pages [8KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      16760832 blocks super 1.2 [2/2] [UU]
      [================>....]  resync = 84.6% (14193408/16760832) finish=0.1min speed=222222K/sec

Aktueller Hinweis vom BSI

Das Bundesamt für Sicherheit in der Informationstechnik (kurz: BSI) versendet momentan wieder einige Abuse-Meldungen, die gerade Hetzner gerne als Information an den Kunden weiterleitet.

Ein Auszug aus der Mail, die ich erhalten habe:

Sehr geehrte Damen und Herren,

der Portmapper-Dienst (portmap, rpcbind) wird bentigt, um RPC-Anfragen
(Remote Procedure Calls) dem korrekten Dienst zuzuordnen. Der Portmapper-
Dienst wird u.a. fr Netzwerkfreigaben ber das Network File System (NFS)
bentigt. Der Portmapper-Dienst verwendet Port 111 tcp/udp [1].

Im Rahmen des Shadowserver ‚Open Portmapper Scanning Projects‘ werden
Systeme identifiziert, welche Anfragen an den Portmapper-Dienst aus dem
Internet beantworten. Diese Systeme knnen fr DDoS-Angriffe missbraucht
werden, sofern keine anderen Gegenmanahmen implementiert wurden.

Über Sinn und Unsinn dieser Mail lässt sich nun vorzüglich streiten, dennoch haben mich einige Kunden gefragt, ob ihre Server „sicher“ sind oder alternativ, was sie dagegen tun können.

Folgende iptables-Regeln blockieren den für den Portmapper genutzen Port 111 von außen komplett:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 111 -j DROP
/sbin/iptables -A FORWARD -i eth0 -p tcp --destination-port 111 -j DROP
/sbin/iptables -A INPUT -i eth0 -p udp --destination-port 111 -j DROP
/sbin/iptables -A FORWARD -i eth0 -p udp --destination-port 111 -j DROP

Bitte beachten Sie dabei, dass iptables-Regeln bei einem Neustart geleert werden. Möchten Sie die Regeln persistent machen, können Sie dafür z.B. iptables-persistent nutzen.

Darüber, ob Portscans auf ganze Netzbereiche vom BSI aus nicht auch eine Abuse-Meldung wert wären, lasse ich mich nun nicht aus… ;-)

nginx: Status-Seite aktivieren

nginx, die bekannte Apache-Alternative, sollte mittlerweile jedem ein Begriff sein. Allerdings wissen viele nicht, dass auch nginx eine Status-Seite nach dem Apache-Vorbild bietet, die perfekt ist, um Statistiken zu erstellen und den nginx zu überwachen. Folgend möchte ich kurz erläutern, wie man diese Seite aktiviert und nutzt.

Voraussetzung

Vorausetzung für die Aktivierung der Status-Seite ist ein mit dem HttpStubStatusModule kompilierter nginx. Bisher war das auf allen Maschinen, die ich nutzte, der Fall – darunter Debian, Ubuntu und CentOS. Leicht herauszufinden ist das, indem man folgendes Kommando absetzt:

nginx -V 2>&1 | grep -o with-http_stub_status_module

Sofern nun der folgenden Text angezeigt wird, ist alles vorbereitet.

with-http_stub_status_module

Ist dies nicht der Fall, sollte man entsprechende Vorbereitungen treffen, auf die ich in diesem Artikel nicht näher eingehen möchte.

Konfiguration

In der aktivierten Website (oft default), muss folgender Absatz innerhalb des server-Blocks eingefügt werden:

location /nginx_status {
        stub_status on;
        access_log   off;
        allow 127.0.0.1;
        deny all;
}

Hier ist lediglich die allow-Zeile zu beachten, die den Bedürfnissen entsprechend angepasst werden sollte. Natürlich kann auch die Location geändert werden, einen echten Sicherheitsvorteil bringt dies aber nicht mit sich – der Zugriff wird sowieso per allow begrenzt. Dies bietet sich an, wenn man den nginx per Nagios-Plugin überwachen möchte.

Danach muss nginx neugestartet werden.

Ausgabe

Mit Hilfe des folgenden Kommandos kann leicht ermittelt werden, ob nginx alles richtig ausliefert.

wget http://localhost/nginx_status

Folgende Ausgabe sollte der nginx liefern:

Active connections: 43 
server accepts handled requests
 7368 7368 10993 
Reading: 0 Writing: 5 Waiting: 38

Natürlich wird diese Ausgabe von Server zu Server unterschiedlich sein.

Interpretation

Die Ausgabe ist recht einfach zu verstehen, trotzdem möchte ich hier kurz darauf eingehen.

  • Active connections: Zahl aller zu diesem Zeitpunkt geöffneten Verbindungen
  • server accepts handled requests
    • 1. Wert: alle akzeptierten Verbindungen
    • 2. Wert: alle verarbeiteten Verbindungen (im Normfall sind Wert 1 und 2 gleich)
    • 3. Wert: alle verarbeiteten Anfragen (dieser Wert ist im Normfall größer als Wert 1 und 2)
  • Reading: Webserver liest die Request-Header ein
  • Writing: Webserver liest Request-Body ein, bearbeitet die Anfrage oder gibt dem Client eine Antwort
  • Waiting: Zahl der keep-alive-Verbindungen

Auf Basis dieser Hinweise ist es nun möglich, entweder entsprechende Monitoring-Plugins zu nutzen oder eine eigene Routine zu erstellen, die die Werte ausliest.

Ich nutze zu diesem Zweck Bloonix, eine Monitoring-Software in der Cloud, mit der man kostengünstig einige Services überwachen kann und Graphen von diesen erstellen kann.