SELinux know how

Debugging von SELinux Policy-Problemen

Hat man eine Anwendung, die mit aktivierter SELinux enforce Probleme bereitet, können in der /var/log/audit/audit.log die Violations beobachtet werden.

Ein optimaler Testablauf ist:

SE Policy auf Permissive setzen – jetzt werden alle Blockierungen protokolliert – jedoch aber dann erlaubt

Jetzt kann der Entwickler/Anwender seine Anwendung ausgiebig testen

Abschließend können alle Violations in /var/log/audit.log an audit2allow verfüttert werden

Danke an Uwe für die Erklärung!

Elastic-Search ESzabbix – zabbix – patch

Gepachte ESzabbix.py Version – Entwickler wurde darüber informiert – jedoch keine Rückmeldung – hier der Code:

#!/usr/bin/env python

# Created by Aaron Mildenstein on 19 SEP 2012

from pyes import *
import sys

# Define the fail message
def zbx_fail():
print "ZBX_NOTSUPPORTED"
sys.exit(2)

searchkeys = ['query_total', 'fetch_time_in_millis', 'fetch_total', 'fetch_time', 'query_current', 'fetch_current', 'query_time_in_millis']
getkeys = ['missing_total', 'exists_total', 'current', 'time_in_millis', 'missing_time_in_millis', 'exists_time_in_millis', 'total']
docskeys = ['count', 'deleted']
indexingkeys = ['delete_time_in_millis', 'index_total', 'index_current', 'delete_total', 'index_time_in_millis', 'delete_current']
storekeys = ['size_in_bytes', 'throttle_time_in_millis']
cachekeys = ['filter_size_in_bytes', 'field_size_in_bytes', 'field_evictions']
clusterkeys = searchkeys + getkeys + docskeys + indexingkeys + storekeys
returnval = None
# build hostname
hostname = sys.argv[1] + ':9200'
# __main__

# We need to have two command-line args:
# sys.argv[1]: The node name or "cluster"
# sys.argv[2]: The "key" (status, filter_size_in_bytes, etc)

if len(sys.argv) < 3: zbx_fail() # Try to establish a connection to elasticsearch try: # connect to user supplied hostname conn = ES(hostname,timeout=25,default_indices=['']) except Exception, e: zbx_fail() # changed the logic from == to != if sys.argv[1] != 'cluster': if sys.argv[2] in clusterkeys: nodestats = conn.cluster.node_stats() subtotal = 0 passcount = 0 for nodename in nodestats['nodes']: if sys.argv[2] in indexingkeys: indexstats = nodestats['nodes'][nodename]['indices']['indexing'] elif sys.argv[2] in storekeys: indexstats = nodestats['nodes'][nodename]['indices']['store'] elif sys.argv[2] in getkeys: indexstats = nodestats['nodes'][nodename]['indices']['get'] elif sys.argv[2] in docskeys: indexstats = nodestats['nodes'][nodename]['indices']['docs'] # Docs are cluster-wide, despite the sub-index being "by node". Until this is changed, we have to do this by passcount passcount += 1 elif sys.argv[2] in searchkeys: indexstats = nodestats['nodes'][nodename]['indices']['search'] try: if passcount < 2: subtotal += indexstats[sys.argv[2]] except Exception, e: pass returnval = subtotal else: # Try to pull the managers object data try: escluster = managers.Cluster(conn) except Exception, e: zbx_fail() # Try to get a value to match the key provided try: returnval = escluster.health()[sys.argv[2]] except Exception, e: zbx_fail() # If the key is "status" then we need to map that to an integer if sys.argv[2] == 'status': if returnval == 'green': returnval = 0 elif returnval == 'yellow': returnval = 1 elif returnval == 'red': returnval = 2 else: zbx_fail() else: # Not clusterwide, check the next arg nodestats = conn.cluster.node_stats() for nodename in nodestats['nodes']: if sys.argv[1] in nodestats['nodes'][nodename]['name']: if sys.argv[2] in indexingkeys: stats = nodestats['nodes'][nodename]['indices']['indexing'] elif sys.argv[2] in storekeys: stats = nodestats['nodes'][nodename]['indices']['store'] elif sys.argv[2] in getkeys: stats = nodestats['nodes'][nodename]['indices']['get'] elif sys.argv[2] in docskeys: stats = nodestats['nodes'][nodename]['indices']['docs'] elif sys.argv[2] in searchkeys: stats = nodestats['nodes'][nodename]['indices']['search'] elif sys.argv[2] in cachekeys: stats = nodestats['nodes'][nodename]['indices']['cache'] try: returnval = stats[sys.argv[2]] except Exception, e: pass # If we somehow did not get a value here, that's a problem. Send back the standard # ZBX_NOTSUPPORTED if returnval is None: zbx_fail() else: print returnval # End

Monitoring VSphere with Zabbix and vCLI

First of all, the items that can be fetched with zabbix from vsphere servers are very limited.

https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/simple_checks/vmware_keys

If you want to fetch additional items from ESX-Servers, you can use the vSphere CLI – a perl toolkit with several handy tools.

https://my.vmware.com/web/vmware/details?downloadGroup=VCLI_PERL50U1_OSS&productId=242

One of the tools i can recommend from the toolkit is performance.pl

You can fetch almost all available items from virtual machines and feed it to zabbix. We are fetching the cpu readystates to monitor the machines and decided whether they are overcommitted.

Systemd / Upstart in Debian/Ubuntu – Notiz an mich

Das bewährte SysvInit-System (/etc/init.d/servicename) ist in die Jahre gekommen und so erfolgen derzeit aus unterschiedlichen Gründen Umstellungen aller großen Distributionen.

Ubuntu hat seit 2012 Upstart als neues System verwendet – wechselt aber jetzt ebenso wie Arch Linux, Fedora,OpenSuse und Debian zu systemd¹.

Der größte und merkliche Vorteil von systemd ist, dass der Systemstart enorm beschleunigt wird, da jetzt parallel gearbeitet wird. Zuvor wurde ein Dienst nach dem anderen gestartet.

Ein weiter Vorteil ist, dass mit Systemd ein Dienst überwacht werden kann und dieser bei Bedarf automatisch neugestartet wird².

Bei der Konfiguration haben sich einige Pfade verändert. /etc/init.d ist obsolet – während der Übergangszeit werden weiterhin init-Skripts in /etc/init.d berücksichtigt, sollte es keine passende Konfiguration für Systemd geben.

Mit Systemd werden nicht nur Dienste zur Laufzeit gestartet bzw. zur Verfügung gestellt, sondern auch mount points, devices oder sockets.

All dies bezeichnet man als Unit³.

Dienste – also service units liegen bei Debian jetzt unter /lib/system/system/

Der Dienst ssh hat typischerweise die Konfigurationsdatei /lib/system/system/ssh.service

Die passende ssh.service zeigt sich wie folgt:

[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=sshd.service

Abfragen von Dienstzuständen:

Bei Sysv-Init reichte ein /etc/init.d/ssh status

Bei Systemd nutzt man systemctl ssh status

Starten von Diensten (service units) mit wechselnden Parametern

Der Dienst openvpn ist das Paradebeispiel. Man besitzt 10 Tunnel zu unterschiedlichen Zielen und möchte jetzt mit dem systemd Skript unterschiedliche Tunnel starten/stoppen.

Service units, die Parameter/Konfigurationen beim Starten erwarten, erkennt man an dem @-Zeichen hinter dem Namen. Z.B. also /lib/systemd/system/openvpn@.service

Hat man eine Konfigurationsdatei /etc/openvpn/kunde1.conf – startet man diese Verbindung mit:

systemctl start openvpn@kunde1

 

Quelle:

¹ http://wiki.ubuntuusers.de/Upstart#Kritik

² http://www.freedesktop.org/software/systemd/man/systemd.service.html#Restart=

³ https://wiki.archlinux.org/index.php/systemd#Using_units

Spamfilterung mit EX2013 für Dummies

Der EX2013 besitzt mehrere Agenten, die Spam abwehren. Diese müssen installiert werden mit:

InstallAntispamAgents.ps1

Dies aktiviert alle mitgelieferten Agenten. Für den Agent Sender-ID muss die eigene Absender-IP des Mailservers in der Konfiguration ergänzt werden mit

Set-TransportConfig -InternalSMTPServers 127.0.0.1, IP-Adresse-des-Mailservers

A1.at – A1 Österreich – Verzugszinsen + Preiserhöhung ohne Ankündigung

Gehts noch in Österreich? A1 berechnet mir seit einem Jahr jeweils Verzugszinsen, weil sie es nicht gebacken kriegen, meine SEPA-Überweisung aus Deutschland zeitnah zu verbuchen.

Zusätzlich hat mir A1 an meine seit über einem Jahr nicht mehr bewohnte und abgemeldet Adresse in Österreich eine Preiserhöhung angekündigt mit Sonderkündigungsrecht. A1 – bitte schickt sowas an die Rechnungsadresse – da schickt ihr ja auch eure Rechnungen hin, die komischerweise immer ankommen…

1&1 Faxversand über Kundenmenü – Deckblatt erzwungen

Verschickt man wie ich häufig Faxe digital (PDF -> Fax) über das 1&1 Kundenmenü, bezahlt man pro Seite einen Betrag. Das wäre völlig in Ordnung, aber 1&1 fügt vor meinem Dokument ein Deckblatt ein, das ich auch bezahlen soll.

Leider ist man nicht einsichtig – Antwort von 1&1:

Sehr geehrter Herr Bauer,

vielen Dank für Ihre E-Mail.

Eine Deaktivierung der Statusseite ist technisch nicht möglich.

Wir bedauern sehr, dass wir Ihnen keine andere Lösung anbieten können. Für weitere Fragen sind wir gerne für Sie da.

Mit freundlichen Grüßen

Max Mustermann
Kundenservice 1&1 WebHosting

Microsoft Lizenzwahnsinn – KMS – MAK – Office 2013 – Windows 7

Ich glaub mich trifft der Schlag. Ab Windows Vista, gibt es keine „Flatrate“ Lizenzschlüssel als Volumenlizenzen mehr. Das heißt, auch wenn Firma X für viel Geld eine Volumenlizenz kauft um mit einem Schlüssel 1000 PCs zu installieren, die Aktivierung der Installation noch völlig unabhängig davon ist.

 

Nach der Installation bleibt die Aktivierung mit einem Schlüssel auf jedem Rechner – dies ist die MAK Variante.

 

Die zweite Möglichkeit ist, einen Key Management Server zu installieren (KMS).

Dies kann Windows 7 Prof. mit Volumen-LIzenz sein. Damit lässt sich das Win7 + Office 2013 aktivieren.