Kategorien
Netzwerk(e) Windows Wissen

„Quickie“ – reverse DNS-Einträge mit separatem DHCP-Server

Denkbar sind Szenarien, bei denen DNS- und DHCP-Server nicht auf ein- und demselben System laufen. Ich hatte in einem Testnetz den Fall, in dem DNS über ActiveDirectory lief und IP-Adressen vom Router verteilt wurden.

Das geht tatsächlich und stellt im Großen und Ganzen auch kein Problem dar. Auffällig ist nur, dass für die Clients in dem Fall keine reversen Einträge erstellt werden.

Microsoft schreibt dazu in KB816592:

Standardmäßig ist Adressen dieser Verbindung in DNS registrieren aktiviert und DNS-Suffix dieser Verbindung in DNS-Registrierung verwenden deaktiviert. Bei dieser Standardkonfiguration fordert der Client an, dass die Registrierung des A-Ressourceneintrags durch den Client und die Registrierung des PTR-Ressourceneintrags durch den Server erfolgt.

https://support.microsoft.com/de-de/help/816592/how-to-configure-dns-dynamic-updates-in-windows-server-2003

Auf Deutsch: Der Client trägt sich im DNS ein, der reverse Eintrag erfolgt durch den DHCP-Server.

Dieses Verhalten lässt sich über eine Gruppenrichtlinie ändern. Dort (Default Domain Policy -> Computerkonfiguration -> Richtlinien -> Netzwerk -> DNS-Client) den kann man den Eintrag PTR-Einträge registrieren setzen.

Im Anschluss werden die reversen Auflösungen ebenfalls durch den Client eingetragen.

Kategorien
Netzwerk(e) Windows Wissen

„Quickie“: Unerwünschte Aktivierung von Mozillas „DNS over HTTPS“ in pfSense verhindern

Mozilla macht jetzt wohl wirklich Ernst mit „DNS over HTTPS“ (kurz: DoH). Damit werden sämtliche DNS-Anfragen zu entsprechenden Anbietern geleitet. Der im Betriebssystem konfigurierte DNS-Server wird dabei von Firefox ignoriert.

Ob das jetzt Sinn macht oder nicht, ich persönlich habe mindestens(!) folgende Bedenken:

  • Abhängigkeit von einem externen DNS-Anbieter
  • Der externe Anbieter „fährt“ unter Umständen eine Firmenpolitik, die nicht im Einklang mit den persönlichen Bedürfnissen steht (Möglichkeiten zur Zensur usw.)
  • Datenschutzaspekte – der externe Anbieter erhält Einsicht in alle(!) Internetaufrufe aus dem lokalen Netz
  • keine Erreichbarkeit lokaler Adressen (z.B. http://fritz.box/)
  • Aushebeln von lokalen, DNS-basierten Werbeblockern, Sicherheitsfiltern

Glücklicherweise hat man einen Weg geschaffen, die Aktivierung netzwerkweit zu verhindern. Dies erfolgt über die so genannte „Canary Domain“ (use-application-dns.net). Das Verfahren ist hier beschrieben: https://support.mozilla.org/en-US/kb/canary-domain-use-application-dnsnet

Zusammenfassung: Irgendwann entsteht im Firefox-Browser die Begehrlichkeit, DoH zu aktivieren. In dem Fall wird ein Lookup auf die „Canary Domain“ gestellt und ausgewertet. Folgende Ergebnisse können dabei herauskommen:

  • Die Abfrage liefert keinen NOERROR (NXDOMAIN, SERVFAIL) -> DoH bleibt deaktiviert
  • Die Abfrage liefert einen NOERROR, A- und AAAA-Record sind leer -> DoH bleibt deaktiviert
  • Die Abfrage liefert einen NOERROR und es wird ein A- oder AAAA-Record geliefert -> DoH wird aktiviert

Abhängig vom Ergebnis wird DoH im Anschluss aktiviert. Wichtig ist also, dass die Domain bereits blockiert ist, während dieser einmalige Test läuft. Wird die Domain erst später blockiert, hat das auf ein bereits aktiviertes DoH keine Auswirkung(en).

Wer den DNS-Resolver auf der pfSense nutzt, ist relativ schnell fertig. In der Konsole (SSH-Zugang) legt man eine entsprechende Konfigurationsdatei an:

echo 'local-data: "use-application-dns.net IN CNAME ."' > /var/unbound/ff_canary.conf

Auf der pfSense bindet man diese Konfiguration unter Services -> DNS Resolver -> General Settings ein. Dort gibt es unten ein Feld „Custom Settings“, wo man folgende Zeile ergänzt:

server:include: /var/unbound/ff_canary.conf

Danach startet man den DNS-Resolver einmal über das WebUI neu.

Ob es geklappt hat, kann man z.B. mit einem Windows-Client in der Eingabeaufforderung oder der Powershell mit nslookup überprüfen. Bei mir sieht das in etwa so aus:

C:\Users\altmetaller> nslookup use-application-dns.net
Server: sensenmann.lan.altmetaller
Address: 192.168.11.1

Name: use-application-dns.net

PS C:\Users\altmetaller>

Man sehe und staune – die Domain ist dem DNS bekannt, es wird jedoch kein A- oder AAAA-Record ausgeliefert.

Kategorien
Linux Netzwerk(e) Wissen

„Quickie“ – lokale DNS-Zonen mit pi-Hole

In einem Netzwerk kommen manchmal mehr DNS-Zonen zusammen, als einem lieb ist. Neben dem obligatorischen .box bringen häufig auch andere Router / AccessPoints, Domaincontroller, DLAN-Adapter usw. usf. eigene DHCP-Server mit.

Wer hier – wie ich – mit unterschiedlichen DNS-Zonen arbeitet, möchte natürlich dennoch einen zentralen Anlaufpunkt haben, der einem alle Anfragen beantwortet.

Jetzt könnte man natürlich beginnen, eine entsprechende „Kette“ zusammenzulöten. Der Internetrouter fragt den Provider, der Domaincontroller fragt den Internetrouter, die AccessPoints fragen den DC usw. usf.

Das funktioniert und ist eine todsichere Methode, sich diverse „Single point of failure“ ins Netz zu stellen. Spätestens bei der Fehlersuche hat man weder Zeit, noch Muße, diese Kette wieder von hinten aufzudröseln.

Ich betreibe dafür in meinem Netwerk einen pi-Hole DNS Server. Dieser ist so konfiguriert, dass er alle Anfragen an die DNS-Server von Quad9 weiterleitet.

Das funktioniert solange gut, wie man nicht versucht, einen Hostnamen wie z.B. http://fritz.box/ via Browser aufzurufen 🙂

Die Kür besteht also darin, dem pi-Hole mitzuteilen, welche Zone er wo aufgelöst bekommt. Und weil es so schön ist, machen wir das nicht nur für die Vorwärts-, sondern auch für die Rückwärtsauflösung.

So, lange genug geschwafelt. Hier der versprochene „Quickie“:

In meinem imaginären Beispielnetz gibt es drei DNS-Zonen:

  • .box (192.168.178.0/24) – das Netz von der FRITZ!Box. DNS-Server hierfür ist 192.168.178.1
  • .lan.altmetaller (192.168.11.0/24) – meine PCs. DNS-Server für diese Zone ist 192.168.11.1
  • .dmz.altmetaller (192.168.22.0/24) – meine DMZ. DNS-Server für diese Zone ist 192.168.22.1

Im Verzeichnis /etc/dnsmasq.d/ lege ich für jede Zone eine entsprechende Datei an.

/etc/dnsmasq.d/10-box.conf

server=/box/192.168.178.1
server=/178.168.192.in-addr.arpa/192.168.178.1
local=/box/

/etc/dnsmasq.d/10-lan.altmetaller.conf

server=/lan.altmetaller/192.168.11.1
server=/11.168.192.in-addr.arpa/192.168.11.1
local=/lan.altmetaller/

/etc/dnsmasq.d/10-dmz.altmetaller.conf

server=/dmz.altmetaller/192.168.22.1
server=/22.168.192.in-addr.arpa/192.168.22.1
local=/dmz.altmetaller/

Der Neustart des Deamon erfolgt übrigens mit

sudo pihole restartdns

Noch etwas zur Sicherheit: In dem vorgenannten Beispiel habe ich die Rebind-Protection für die jeweiligen Netze abgeschaltet.

Das mag jetzt der Eine oder Andere als Sicherheitsloch sehen. Ein Rebind-Angriff ist tatsächlich denkbar, allerdings müsste der Angreifer dafür Kontrolle über die DNS-Server in meinem lokalen Netz erlangen. Oder halt dem Client (oder den Pi-Hole) dazu veranlassen, einen anderen DNS zu fragen.

Und, mal ernsthaft: In dem Fall wäre ein DNS-Rebind noch das kleinste Übel…

Kategorien
Allgemein Wissen

Zum Thema „Cookies…“

„Eigentlich“ gibt es sogar zwei Motivationen, an dieser Stelle etwas über Cookies zu schreiben.

Zum Einen, weil diese Webseite – entsprechend Ihrer Einstellungen – selber Cookies verwendet und ich daher schlichtweg verpflichtet bin, Sie über das Thema aufzuklären.

Zum Anderen geht es auf dieser Homepage auch darum, Wissen zu vermitteln. Ich erkläre Ihnen gerne, was es damit auf sich hat.

Was sind Cookies?

Cookies sind im Grunde genommen (Text-)Dateien, die eine Webseite auf der Festplatte Ihres Computers speichern darf. Stellen Sie sich das wie eine Art imaginäre Diskette vor, die Ihr Computer dieser Webseite zur Verfügung stellt.

Es handelt sich wie gesagt um reine Text-Dateien ohne Formatierung oder Binärinhalte. Es ist ausgeschlossen, dass ein Cookie Viren o.Ä. transportiert.

Anzumerken wäre auch, dass ein Cookie nur von der Webseite ausgelesen werden kann, die es gesetzt hat. Das heißt, es ist dieser Internetseite nicht möglich, Cookies von Google o.Ä. auszulesen. Zu Berücksichtigen wären in dem Zusammenhang aber so genannte Drittanbieter-Cookies, siehe etwas weiter unten.

Warum überhaupt Cookies?

Erstes Beispiel auf meiner Homepage ist der Cookie-Handhabung „an sich“.

Diese bietet individuelle Einstellungsmöglichkeiten. Die Einstellungen, die Sie hier vornehmen, werden in einem Cookie gespeichert. Somit ist sichergestellt, dass Sie die Verwendung von Cookies auf dieser Webseite nur einmal ablehnen müssen. Über das Bedienelement unten links können Sie die Cookie-Einstellungen natürlich jederzeit verändern (und erneut abspeichern).

Wenn Sie ihren Computer neu starten und diese Homepage erneut aufrufen, wird das Cookie mit den Einstellungen (sofern vorhanden) ausgelesen und diese Homepage passt sich ihren vorherigen Wünschen an. Wird kein Cookie gefunden, wird ihnen der Einstellungsdialog angezeigt.

Drittanbieter-Cookies

Ich habe vorhin geschrieben, dass Cookies nur von der Seite gelesen werden können, die sie auch ausgeliefert hat. Das stimmt 🙂

Eine Homepage kann sich jedoch aus Elementen von mehreren Internetseiten zusammensetzen. So ist es zum Beispiel möglich, in eine eigene Seite Scripte von anderen Servern einzubinden.

Wenn Sie den Drittanbieter-Cookies zustimmen, erlauben Sie dieser Seite, dass der „Google Analytics“ Dienst Cookies auf ihrer Festplatte speichert. In dem Fall wird bei jedem Seitenabruf ein Google-Script mitgeladen, dass Cookies auf ihrer Festplatte speichert.

Diese Zustimmung ist optional. Die Funktion dieser Internetseite ist nicht eingeschränkt, wenn Sie diese Zustimmung verweigern.

Ich benutze diesen Dienst, um Statistiken über meine Homepage auszuwerten. Dabei geht es mir nicht darum, Nutzer zu identifizieren. Das wäre anhand dieser Daten auch gar nicht möglich.

Für mich ist vielmehr interessant, wie oft bestimmte Seiten angeklickt wurden, wie lange ein Benutzer auf einer Seite verblieben ist usw. usf.

Die daraus gewonnenen Erkenntnisse fließen in die weitere Gestaltung dieser Homepage ein. Mit anderen Worten: Ich würde hier gerne bestmöglich auf Sie und Ihre Interessen eingehen 🙂

Am einfachsten lässt es sich wohl mit diversen bekannten Webshops vergleichen. Dort finden Sie am Ende der Suche eine Rubrik „Kunden, die xxx kauften, kauften auch yyy“, in der Ihnen z.B. zu der Taschenlampe die passenden Batterien angeboten werden. Wenn Sie sich jetzt noch vorstellen, dass die hierfür zuständige künstliche Intelligenz nicht vom Shop, sondern von einem externen KI-Anbieter stammt, kommt das den hier verwendeten Techniken schon ziemlich nahe.

Warum kann ich den Schieberegler bei den erforderlichen Cookies nicht bewegen?

Die Speicherung der Einstellungen ist nur über ein Cookie möglich. D.h., wenn Sie den Schieberegler auf „nicht erlaubt“ stellen, könnten Sie diese Einstellung nicht abspeichern – insofern macht es keinen Sinn, diese Kombination anzubieten: Sie würden dann ja letztendlich das verbieten, was Sie selber aktiv veranlassen 🙂

Wenn gar keine Cookies gespeichert werden sollen, treffen Sie diese Entscheidung, indem Sie diesbezüglich unternehmen und den Hinweis offen stehen lassen. Das nennt man Opt-In: Cookies werden nur dann erlaubt, wenn Sie dieses ausdrücklich erlauben. Das „Nichtstun“ führt automatisch zur Datensparsamkeit.

Der Schieberegler hat somit eher informativen Character. Er dient der Transparenz und erinnert Sie daran, dass das Anklicken von „Einstellungen Speichern“ oder „Erlauben“ zumindest den Cookie-Status „an sich“ in einem Cookie ablegt.

Bitte erinnern Sie sich

Diese Einstellungen in Bezug auf Cookies können jederzeit über das Bedienelement in der unteren linken Ecke geändert werden. Danach sollte die Seite einmal neu geladen werden.

Über die Bedienelemente Ihres Browsers können Sie übrigens ebenfalls Cookies blockieren oder löschen – diese Einstellungen haben eine höhere Priorität als die spezifischen Einstellungen für diese Seite.

Und ich nehme es Ihnen wirklich nicht übel, wenn Sie „mir“ nicht alles erlauben 🙂

Kategorien
Windows Wissen

WSUS auf einem SBS2011 reparieren (Timeout)

Grundsätzliches bei SBS-Themen

Der SBS2011 ist „nicht ohne“ und verkommt bei schlechter Behandlung zur wiederlichsten Zicke, die Sie in ihrem Leben getroffen haben.

Wenn Sie sich „nur“ mit Computern oder Windows auskennen: Lassen Sie um Himmels Willen die Finger von allem, was außerhalb der „Small Business Standard Konsole“ abläuft. Bitte denken Sie ernsthaft darüber nach, diese Aufgabe (und die Verwantwortung!) zu delegieren.

Wenn Sie sich mit Windows Server 2008r2 und dem Microsoft SQL Server auskennen: Bitte lesen Sie diese Anleitung vollständig und handeln Sie erst dann, wenn Sie der Meinung sind, alles verstanden zu haben.

Die Bereinigung nimmt durchaus mal ein paar Tage Zeit in Anspruch. Das ist aber nicht weiter dramatisch, da das letztendlich im Hintergrund abläuft und die Ressourcenbelastung „eher moderat“ ist.

Meiner Erfahrung nach kann man das durchaus im Geschäftsbetrieb durchführen. Zumindest haben meine Kunden noch nie etwas davon mitbekommen 🙂

Problembeschreibung

Der WSUS-Server vom SBS2011 bzw. 2008r2 „hakt“. Entweder, er liefert gar keine Updates mehr aus oder er holt keine neuen Updates. Der Assistent zur Serverbereinigung läuft auf einen Timeout hinaus.

Was machen wir?

Wir werden den WSUS-Server bzw. dessen Datenbank entschlacken. Gerade bei älteren Systemen wächst diese durchaus auf mehrere Gigabyte an und bremst die Mühle bis zum Stillstand herunter. Erschwerend hinzu kommt beim SBS2011, dass das zugrundeliegende Betriebssystem maximal 32GB RAM verwalten kann. Irgendwann ist also definitiv „Ende Gelände“.

Natürlich werden wir eine Menge löschen, was aber nicht dramatisch ist.

Bei der Aufräumaktion geht es primär darum, historische Protokolle, Statistiken, zurückgezogene oder aus anderen Gründen obsolete Updates zu löschen.

Ab in die Datenbank

Im Startmenü unter „Microsoft SQL Server 2008 R2“ das „SQL Management Studio“ starten und mit dem Datenbankmodul

\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query

verbinden (Windows-Authentifizierung). Hier ein Screenshot vom Anmeldefenster:

Schritt 1: Löschen der Synchronisationshistorie

Wir klicken auf „Neue Abfrage“. Zum Löschen geben wir diesen Text in das Abfragefenster ein:

USE SUSDB
GO
DELETE FROM tbEventInstance WHERE EventNamespaceID = '2' AND EVENTID IN ('381', '382', '384', '386', '387', '389')

Auch wenn es verleitet: Der „! Ausführen“ Button ist der mit dem roten Ausrufezeichen und nicht der Button mit dem grünen Pfeil.

Wir klicken also auf „! Ausführen“ und erhalten wenige Sekunden später das Ergebnis der Löschaktion.

Schritt 2: Löschen aller obsoleten Updates

Bitte das folgende Script im Abfragefenster eingeben:

DECLARE @var1 INT
DECLARE @msg nvarchar(100)
CREATE TABLE #results (Col1 INT) INSERT INTO #results(Col1)
EXEC spGetObsoleteUpdatesToCleanup
DECLARE WC Cursor FOR SELECT Col1 FROM #results
OPEN WC
FETCH NEXT FROM WC INTO @var1 WHILE (@@FETCH_STATUS > -1)
BEGIN SET @msg = 'Deleting ' + CONVERT(varchar(10), @var1) RAISERROR(@msg,0,1) WITH NOWAIT
EXEC spDeleteUpdate @localUpdateID=@var1
FETCH NEXT FROM WC INTO @var1
END
CLOSE WC
DEALLOCATE WC
DROP TABLE #results

Auch hier wieder aus „Ausführen“ klicken. Achtung – dieses Script kann tatsächlich Tage(!) laufen. Aber, keine Angst: Die Serverbelastung durch das Script ist moderat, die Performancebelastung ist nicht bemerkbar.

Dass es noch läuft, sehen wir an der Statusleiste:

Wenn das Script durchgelaufen ist, sieht das Ganze so aus:

Es ist sehr warscheinlich, dass nicht alle Updates gelöscht wurden (z.B. dann, wenn nach der Ausführung bis zur Betrachtung des Ergebnisses eine erneute Synchronisation stattgefunden hat).

Ob wir fertig sind, überprüfen wir mit dieser Datenbankabfrage:

USE SUSDB
GO
exec spGetObsoleteUpdatesToCleanup

Wenn unten im Ergebnisfenster eine Liste mit Nummern angezeigt wird, führt man das Script zum Löschen der obsoleten Updates erneut aus.

Das Ganze machen wir so lange, bis „der Dreizeiler“ keine Updates mehr anzeigt.

Schritt 3: Reindizierung der Datenbank

Der Index der Datenbank (also das „Was steht wo?“) wird anhand des aktuellen Datenbankinhaltes komplett neu aufgebaut.
Hier das passende Script für das Abfragefenster vom SQL-Studio:

/
This sample T-SQL script performs basic maintenance tasks on SUSDB
Identifies indexes that are fragmented and defragments them. For certain
tables, a fill-factor is set in order to improve insert performance.
Based on MSDN sample at http://msdn2.microsoft.com/en-us/library/ms188917.aspx
and tailored for SUSDB requirements
Updates potentially out-of-date table statistics.
/
USE SUSDB;
GO
SET NOCOUNT ON;
-- Rebuild or reorganize indexes based on their fragmentation levels
DECLARE @work_to_do TABLE (
objectid int
, indexid int
, pagedensity float
, fragmentation float
, numrows int
)
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @schemaname nvarchar(130);
DECLARE @objectname nvarchar(130);
DECLARE @indexname nvarchar(130);
DECLARE @numrows int
DECLARE @density float;
DECLARE @fragmentation float;
DECLARE @command nvarchar(4000);
DECLARE @fillfactorset bit
DECLARE @numpages int
-- Select indexes that need to be defragmented based on the following
-- * Page density is low
-- * External fragmentation is high in relation to index size
PRINT 'Estimating fragmentation: Begin. ' + convert(nvarchar, getdate(), 121)
INSERT @work_to_do
SELECT
f.object_id
, index_id
, avg_page_space_used_in_percent
, avg_fragmentation_in_percent
, record_count
FROM
sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'SAMPLED') AS f
WHERE
(f.avg_page_space_used_in_percent < 85.0 and f.avg_page_space_used_in_percent/100.0 * page_count < page_count - 1) or (f.page_count > 50 and f.avg_fragmentation_in_percent > 15.0)
or (f.page_count > 10 and f.avg_fragmentation_in_percent > 80.0)
PRINT 'Number of indexes to rebuild: ' + cast(@@ROWCOUNT as nvarchar(20))
PRINT 'Estimating fragmentation: End. ' + convert(nvarchar, getdate(), 121)
SELECT @numpages = sum(ps.used_page_count)
FROM
@work_to_do AS fi
INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id
INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id
-- Declare the cursor for the list of indexes to be processed.
DECLARE curIndexes CURSOR FOR SELECT * FROM @work_to_do
-- Open the cursor.
OPEN curIndexes
-- Loop through the indexes
WHILE (1=1)
BEGIN
FETCH NEXT FROM curIndexes
INTO @objectid, @indexid, @density, @fragmentation, @numrows;
IF @@FETCH_STATUS < 0 BREAK;
SELECT
@objectname = QUOTENAME(o.name)
, @schemaname = QUOTENAME(s.name)
FROM
sys.objects AS o
INNER JOIN sys.schemas as s ON s.schema_id = o.schema_id
WHERE
o.object_id = @objectid;
SELECT
@indexname = QUOTENAME(name)
, @fillfactorset = CASE fill_factor WHEN 0 THEN 0 ELSE 1 END
FROM
sys.indexes
WHERE
object_id = @objectid AND index_id = @indexid;
IF ((@density BETWEEN 75.0 AND 85.0) AND @fillfactorset = 1) OR (@fragmentation < 30.0) SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE'; ELSE IF @numrows >= 5000 AND @fillfactorset = 0
SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD WITH (FILLFACTOR = 90)';
ELSE
SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';
PRINT convert(nvarchar, getdate(), 121) + N' Executing: ' + @command;
EXEC (@command);
PRINT convert(nvarchar, getdate(), 121) + N' Done.';
END
-- Close and deallocate the cursor.
CLOSE curIndexes;
DEALLOCATE curIndexes;
IF EXISTS (SELECT * FROM @work_to_do)
BEGIN
PRINT 'Estimated number of pages in fragmented indexes: ' + cast(@numpages as nvarchar(20))
SELECT @numpages = @numpages - sum(ps.used_page_count)
FROM
@work_to_do AS fi
INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id
INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id
PRINT 'Estimated number of pages freed: ' + cast(@numpages as nvarchar(20))
END
GO
--Update all statistics
PRINT 'Updating all statistics.' + convert(nvarchar, getdate(), 121)
EXEC sp_updatestats
PRINT 'Done updating statistics.' + convert(nvarchar, getdate(), 121)
GO

Für die Laufzeit würde ich maximal 2 Stunden einkalkulieren. Auch hier ist die Systemauslastung eher moderat.

Schritt 4: Verzeichnis aufräumen

Die ganzen Updates „liegen ja irgendwo auf der Platte“ und das Verzeichnis mit dem Inhalt kann tatsächlich enorme Ausmaße beanspruchen.

Um das Verzeichnis aufzuräumen, bediene ich mich eines Powershell-Scriptes.

Performs a cleanup of WSUS.
Outputs the results to a text file.
Adapted and tested by BigTeddy
3 July 2012
$outFilePath = '.\wsusClean.txt'
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope) | Out-File -FilePath $outFilePath

Zur Ausführung des Scriptes speichert man dieses unter einem einprägsamen Namen (z.B. „WSUS-Cleanup.ps1“) und startet eine Powershell als Administrator.

Danach wechselt man in das Verzeichnis mit dem Script, startet es und findet im gleichen Ordner nach erfolgter Ausführung die Datei wsusClean.txt mit dem Ergebnis:

SupersededUpdatesDeclined : 7
ExpiredUpdatesDeclined : 0
ObsoleteUpdatesDeleted : 0
UpdatesCompressed : 19717
ObsoleteComputersDeleted : 0
DiskSpaceFreed : 46590272

Zugegeben: Der Speicherplatzgewinn ist in diesem Beispiel nicht sooooo dramatisch. Aber vielleicht hängt das ja auch damit zusammen, dass ich diese Anleitung kurz nach einer erfolgreichen Bereinigung geschrieben habe 🙂

Kategorien
Linux Netzwerk(e) Wissen

„Quickie“ – Ubuntu Linux als Router einrichten

Einleitung

Im Ubuntu-Wiki findet man eine Anleitung, wie man einen Linux-PC als Router verwendet. Diese enthält ein paar Fallstricke.

Da man bei der Fehlersuche auf diverse „Wahnsinnsvorschläge“ (resolved deinstallieren, Upstream-DNS in resolv.conf eintragen, DNSStubListener deaktivieren usw.) stößt, erklärt diese auf das Wesentliche reduzierte Anleitung die „Best practice“.

In meinem Beispiel hat der Linux-PC zwei Schnittstellen:

  • eth0: Internetanbindung
  • eth1: Hier hängen die Geräte, die den Rechner als Router nutzen sollen

Zur Vorbereitung bekommt eth1 eine statische IP-Adresse zugewiesen. In meinem Beispiel habe ich, dem Ubuntu-Wiki entsprechend, die 192.168.3.1/24 gewählt.

Konfiguration Server

Zuerst installiert man dnsmasq:

sudo apt-get install dnsmasq

In der Datei /etc/dnsmasqd.conf werden folgende Einstellungen vorgenommen:

# DHCP-Server aktiv für Interface
interface=eth1
# DHCP-Server nicht aktiv für Interface
no-dhcp-interface=eth0
# Als DHCP-Range verwenden wir 192.168.3.2 bis 192.168.3.254
dhcp-range=192.168.3.2,192.168.3.254,12h

Ganz wichtig: Mit dieser Konfiguration kann der dnsmasq noch nicht starten, da er versucht, sich an Port 53 vom localhost zu klemmen. Dort residiert aber schon der resolved und der Port kann nur einmal belegt werden. „Best practice“ ist hier, folgende zusätzliche Option in der /etc/dnsmasqd.conf zu setzen:

bind-interfaces

Damit wird erreicht, dass der Service nur an Schnittstellen gebunden wird, die wir explizit angegeben haben. In unserem Beispiel also nur an eth1.

Zum Testen starten wir den dnsmasq manuell:

sudo systemctl start dnsmasq

Ob er läuft bzw. warum er nicht startet, verrät uns folgender Befehl:

sudo systemctl status dnsmasq -l

Wenn das funktioniert, möchten wir, dass dnsmasq bei jedem Systemstart automatisch geladen wird:

sudo systemctl enable dnsmasq

Ganz wichtig: Hier lautet der zweite Fallstrick, da die benötigten Schnittstellen beim Systemstart u.U. noch nicht aktiv sind. Wir holen uns die Startdatei wie folgt in den Editor:

sudo systemctl edit --full dnsmasq.service

Hier finden wir den Abschnitt [Unit], dort ergänzen wir folgende Beiträge:

After=network-online.target
Wants=network-online.target

Nach dem Speichern können wir das Ergebnis dieser Änderung in /etc/systemd/system/dnsmasq.service überprüfen.

Portweiterleitung

IP-Forwarding aktivieren:

sudo sysctl -w net.ipv4.ip_forward=1

Das Forwarding funktioniert nur bis zum nächsten Neustart. Möchte man es dauerhaft etablieren, entfernt man die Auskommentierung in der /etc/sysctl.conf

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Wir benötigen Regeln für die iptables:

sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.3.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

NAT aktivieren:

sudo iptables -t nat -A POSTROUTING -o eth0 --j MASQUERADE

Zum (dauerhaften) Speichern der Regeln installieren wir das folgende Paket:

sudo apt-get install iptables-persistent

Während der Installation (und nur dann!) werden wir gefragt, ob wir die Regeln dauerhaft speichern sollen. Dies bejahen wird für IPv4.

Die Regeln werden übrigens in /etc/iptables/rules.v4 gespeichert. Das Format entspricht dem von iptables-save bzw. iptables-restore. D.h., wenn wir die Regeln irgendwann einmal erweitern, können wir sie wie folgt dauerhaft etablieren:

sudo iptables-save > /etc/iptables/rules.v4

Viel Erfolg!

Kategorien
Nachdenkliches

MIME-signierte E-Mails – Eigentlich „für die Katz“

Meine Erfahrungen mit MIME-signierten E-Mails sind ausgesprochen ernüchternd. Mein Test im persönlichen Umfeld ist letztendlich auf zwei Kernaussagen hinausgelaufen:

„Da war ein Anhang dabei – da habe ich nicht draufgklickt. Ich klicke grundsätzlich keine Anhänge an. War die E-Mail überhaupt von Dir?“

Auch wenn das jetzt „eigentlich“ falsch ist, empfinde ich diese Grundeinstellung doch als lobenswert. Durch ein derartiges Verhalten entsteht in meinen Augen ein größerer Sicherheits- und Vertraulichkeitsgewinn als durch eine digitale Unterschrift. Wenn Ihr „im Zweifelsfall“ nicht auf Anhänge klickt oder erst einmal nachfragt, ist das natürlich „völlig O.K.“

„Die war signiert?“

Tatsächlich ist es so, dass die Signatur eigentlich nur in Desktop-Anwendungen (Outlook, Thunderbird) so präsent dargestellt wird, dass die der Anwender überhaupt wahrnimmt. Der Markt in der privaten Kommunikation wird meiner Beobachtung nach zunehmend von iOS und Android dominiert. Hier muss man schon gezielt nach der Signatur suchen.

Zusätzlich habe ich mir noch die Frage erlaubt, welche Schlussfolgerungen der Empfänger aus der Signatur zieht. Die korrekte Antwort wäre gewesen: „Ein von meinem Gerät als vertrauenswürdig eingestufter Anbieter behauptet, dass der Inhalt von jemanden stammt, der irgendwann einmal Zugriff auf das Absenderpostfach hatte“(*).

Diese Antwort habe ich von niemanden gehört. Entweder es wurde geraten:

  • „Das ist jetzt irgendwie verschlüsselt, oder?“
  • „Das kann keiner mitlesen“
  • …oder es gab eine allgemeine Antwort („das ist jetzt sicherer“)

Fazit: Sehr traurig und ernüchternd. Eigentlich machen Signaturen schon Sinn. Nur benötigt der korrekte Umgang damit ein (Fach-)Wissen, dass nur dann vorhanden ist, wenn man sich bewusst damit beschäftigt.

(*) Die Signatur sagt in den meisten Fällen natürlich noch mehr aus. Da die Verifizierungsprozesse der Trustcentren jedoch erheblich differieren und Schlüssel u.U. auch vom Anbieter generiert werden, dürfte dies der kleinste gemeinsame Nenner sein.

Kategorien
Nachdenkliches

Ich mache „etwas mit Computern“

Liebe(r) Freund(in),

ich mache etwas mit Computern.

Jetzt bittest Du mich vielleicht, abends herumzukommen und deinen Computer zu reparieren. Aber hast Du auch mal daran gedacht, dass ich vielleicht Feierabend habe? Es hat sicherlich seinen Grund, warum ich zwei verschiedene Mobiltelefone und zwei E-Mail-Postfächer habe. Ich trenne das Berufliche vom Privaten.

Ich bin sehr gewissenhaft. Kannst Du dir vorstellen, dass ich der damit verbundenen Verantwortung im Grunde genommen gar nicht spontan und unvorbereitet gerecht werden kann?

Wer sagt mir beispielsweise, dass deine Datensicherung nicht nur vorhanden ist, sondern auch problemlos zurückgespielt werden kann? Hast Du das mal ausprobiert, oder möchtest Du, dass wir das zusammen ausprobieren? Damit könnten wir dann die ersten vier Stunden verbringen. Wir haben nur eine Hardware zur Verfügung und virtualisieren nichts. Falls das Wiedereinspielen nicht klappen sollte, war das somit der einzige Versuch.

Achso – Du hast keine Datensicherung. Und wenn doch etwas passiert wäre? Wärst Du dann mit mir über die digitale Planke gesprungen? Oder hättest Du die die volle Verantwortung übernommen?

Es gibt Viren, die aktivieren sich erst 1-2 Wochen nach der Infektion. Wie soll ich im ungünstigsten Fall beweisen, dass der Virus auf deinem PC bereits vorher vorhanden war und nicht von meinem USB-Stick stammt? An so etwas sind bereits wertvolle Freundschaften zerbrochen!

Wie soll ich die ganze Komplexität an Einstellungen, die Du in deinen lieb gewonnenen Anwendungsprogrammen vorgenommen hast, in kürzester Zeit erfassen?

Was genau hat die Tuning-Software von der letzten Zeitschriften-CD mit deinem System angestellt? Und was waren das für Powershell-Befehle und Registry-Einstellungen, die Du vor 13 Monaten von irgendeiner Homepage abgetippt hast um die Menüleiste der Textverarbeitung grün einzufärben?

Wo wir gerade bei Anwendungsprogrammen sind: Kannst Du dir vorstellen, dass ich Word, Excel, Powerpoint usw. usf. so gut wie gar nicht kenne? Meine Arbeit endet dort, wo Du auf das Programmsymbol klickst und das Programm fehlerfrei startet.

Ich bin Angestellt(er). Was soll ich meinem Arbeitgeber erzählen wenn er mitbekommt, dass ich ich das, womit unser Unternehmen Geld verdient, „auf einmal auch nebenbei kostenlos mache“?

Und – falls mir tatsächlich einmal ein Unglück passiert – wer kommt für den Schaden auf? Meine Privathaftpflicht zahlt sicher nicht bei Schwarzarbeit.

Ich bin ein sehr hilfsbereiter Mensch und wenn Du Schwierigkeiten hast und mich um Hilfe bittest, bemühe ich mich gerne, zu einer Lösung beizutragen. Das Thema muss nicht einmal etwas mit Computern zu tun haben.

Aber bitte – meine Freizeit ist mir genau so wichtig wie Dir deine Freizeit ist. Du beschäftigst dich mit deinem PC, weil dich das interessiert. Für mich ist es schlichtweg ein Beruf. Mein Bedarf an Feierabend(en) ist genau so ausgeprägt wie Deiner.

Achja: Auf meinem Schreibtisch steht keine Tasse, auf der die chemischen Formel von Kaffee abgebildet ist. Und ich möchte so etwas bitte auch nicht zum Geburtstag geschenkt bekommen.

ganz liebe Grüße,
altmetaller

P.S.: Was machst Du so beruflich? Bist Du zufällig Dachdecker? Falls Du Lust hast, können wir mal auf einen Samstag ein paar Frankfurter Pfannen bei uns auflegen. Und wenn Du KFZ-Lackierer bist: Die Motorhaube von meinem Mazda 2 sieht arg verwittert aus. Da gehst Du doch bestimmt mal kostenlos drüber. Weil: Bezahlt werden „Freundschaftsdienst“ ja grundsätzlich nicht, oder?

Kategorien
Humor Nachdenkliches

„Neusprech“ bei der Bewerbung

Was den Arbeitgeberzeugnis für den (zukünftigen) Arbeitgeber ist, ist die Stellenanzeige für das Unternehmen. Glücklicherweise hat sich auch hier eine Geheimsprache etabliert, dies es uns erlaubt, „zwischen den Zeilen“ zu lesen.

  • „Flache Hierachien“: Niemand möchte etwas entscheiden. Du hingegen hast nichts zu entscheiden.
  • „Vielfältige Aufgaben“: Schneeschippen vor unserer sibirischen Zweigstelle gehört auch zu deinen Aufgaben.
  • „Familärer Umgang“: Wertschätzung gibt es nicht mal von den Führungskräften. Bei uns mobbt der Chef persönlich.
  • „Ein starkes Team“: Kleiner – bevor Du deine Kaffeetasse in unseren Küchenschrank stellst, erkämpfst Du dir gefälligst erst mal einen Platz im Geschirrspüler.
  • „Neue Herausforderungen“: Bis jetzt hat noch jeder die Flinte ins Korn geworfen…
  • „Spannende Aufgaben“: …und wer weiß schon, was ihre Vorgänger alles an schlummernden Altlasten hinterlassen haben!
  • „Leistungsgerechte Bezahlung“: Wer wie ein Sklave bezahlt wird, der schuftet gefälligst auch wie einer!
  • „Ein hoher Entscheidungsspielraum“: Wir haben keine Ahnung von der Materie. Und ehrlich gesagt interessiert es uns auch nicht. Mach, was Du willst – Hauptsache, Du bist verantwortlich.
  • „Entwicklungsmöglichkeiten“: Dein Platz steht fest. Wenn dein Vorgesetzter gute Beziehungen hat und sich ein anderer Dummer für deinen Job findest, darfst Du ihm unter Beibehaltung der Hackordnung hinterherwackeln.
  • „Wir erwarten Teamfähigkeit“: Eigentlich bräuchte die Truppe einen Mediator – aber den können wir uns nicht leisten. Viel Glück – Du wirst es brauchen!
  • „Erste Erfahrungen“: Du solltest mit maximal 25 Jahren so viel Erfahrung wie ein 50-jähriger vorweisen.
  • „Ein hoher Gestaltungsspielraum“: Wir haben keine Idee, wie wir ’s machen wollen. Mach einen Vorschlag und wenn Du unser Genöle 6 Wochen ertragen hast, darfst Du uns um eine Umsetzungserlaubnis anbetteln. Budget gibt es natürlich nicht.
  • „Selbstständiges Arbeiten“: Bitte nicht mit dem Thema nerven. Es ist eh‘ egal, was Du machst. Hauptsache, es wird perfekt und wir bekommen nichts davon mit.
  • „Eigenständiges Arbeiten“: Die Steigerung vom selbstständigen Arbeiten. Dein Vorgesetzter hat keine Ahnung, würde das aber nie zugeben. Wehe Du wagst es, ihn mit Fachfragen bloßzustellen!!!
  • „Verantwortung von Beginn an“: Es brennt! Dein Vorgänger ist geflüchtet oder sitzt mit Burn-Out vor der Spielekonsole. Sieh‘ zu, dass Du an die Burg kommst und dich sofort um den Scheiß kümmert.
  • „Wir erwarten Kommunikationsgeschick“: Wir sind etwas begriffsstutzig. Bitte Sätze mit maximal 5 Wörtern formulieren. Keine Kommas! Und überhaupt – warum übertragen wir nicht auch den Strom per WLAN?
  • „Traditionsbetrieb“: Wir nutzen noch die mechanischen Rechenmaschinen aus Opas Zeiten!
  • „Dynamisches Arbeitsumfeld“: Unser dienstältester Mitarbeiter hat nächstes Jahr sein Fünfjähriges!
  • „In einem wachsenden Markt“: Wir wurden gnadenlos abgehängt. Zumindest theoretisch kann es nur noch nach oben gehen.

Ihr kennt weitere Bewerbungsschwurbeleien? Tut euch keinen Zwang an, der Kommentarbereich ist eröffnet 🙂

Kategorien
Allgemein

Hier passiert etwas Großartiges!

Da ich meinen Besuchern auch in Zukunft den höchstmöglichen Datenschutz gewähren möchte, habe ich mich entschieden, bei der Gestaltung meiner Homepage weitestgehend auf externe Dienstleister und Diensteanbieter zu verzichten.

Die Überführung der bestehenden Inhalte nimmt natürlich eine gewisse Zeit in Anspruch 🙂

In Zukunft werden Sie hier wieder diverse Beiträge aus dem Bereich IT lesen.