K.inc Tec Blog

Mein kleines EDV Logbuch

Page 2 of 23

Debian Linux – Zeichenkodierung einstellen

dpkg-reconfigure locales

Wenn das Kommando nicht auf Anhieb funktioniert (weil die Pakete bereits installiert sind), dann folgende Pakete nachinstallieren:

apt-get install locales language-env

Ob es geklappt hat sieht man mit dem Kommando

locale

In der Ausgabe müsste nun der neue Zeichensatz hinterlegt sein.

Wenn das nicht funktioniert, bitte vor der Konfiguration der locales noch die ENV Variable LC_ALL exportieren, mit der gewünschten locale:

export LC_ALL="de_DE.UTF-8"
dpkg-reconfigure locales

Debian Linux – Mails über Terminal senden

Es gibt hierzu mehrere Methoden. Ich konzentriere mich hierbei auf die wohl gängiste Methode per mailutils.

Weiterlesen

Ubuntu LTS Update 22.04 DNS Probleme

Zuerst einmal muss ich loswerden, dass mich Ubuntu langsam richtig aufregt. Ich rate davon ab sowas als Produktivserver zu nutzen. Da gibt es meiner Meinung nach bessere Alternativen, wie Debian oder CentOS, die weitaus stabiler laufen.

Weiterlesen

PostgresSQL Superuser Passwort zurücksetzen

Der Superuser für Postgres heißt postgres. Das Passwort kann zurückgesetzt werden, indem man die Authentifizierungsmethode in der Konfigdatei ändert.

Weiterlesen

PowerShell XML bearbeiten

Hier am Beispiel einer iManage Konfig-Datei, bei der das Debug-Log aktiviert wird.

$XMLPath = join-path $env:APPDATA "iManage\Work\Configs\logconfig.xml"
$XMLOUTPath = join-path $env:LOCALAPPDATA "iManage\Work\Configs\logconfig.xml"

$xmlDoc = [System.Xml.XmlDocument](Get-Content $XMLPath);

$xmldoc.configuration.log4net.logger.level.value = "DEBUG"

$xmlDoc.Save($XMLOUTPath);

PowerShell Mail senden

Authentifiziertes Senden

$MailFrom = "absender@domain.de"
$MailTo = "empfaenger@domain.de"
$Username = "Benutzername@domain.de"
$Password = "Password"
$SmtpServer = "mail.domain.de"
$SmtpPort = "25"
$MessageSubject = "Mail Betreff"
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
$Message.IsBodyHTML = $true
$Message.Subject = $MessageSubject
$Message.Body = @'
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Testnachricht
</body>
</html>
'@
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
$Smtp.EnableSsl = $true
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
$Smtp.Send($Message)

Attachments können wie folgt hinzugefügt und entfernt werden:

$Message.Attachments.Add("C:\test.txt")
$Message.Attachments.Add("C:\test.txt")

# Über Index entfernen
$Message.Attachments.RemoveAt("0")
$Message.Attachments.RemoveAt("1")

Header können mit folgendem Befehl hinzugefügt werden:

$Message.Headers.Add("X-Test-Header","Daten")

Anonymes Senden

Mit folgender einfachen Funktion kann man über Powershell emails anonym, also ohne Benutzeraccount, an einen Mailserver senden. Bitte vorher die Empfänger, das From und den Mailserver anpassen.

function Send-Mail($subject, $body="", $attachments="", $highpriority=$false)
{
$msgTo = @("rcp1@domain.de", "rcp2@domain.de")
$msgFrom = "$($env:computername)@domain.de"

$mailServer = ""

$utf8 = New-Object System.Text.utf8encoding

$anonUsername = "anonymous"
$anonPassword = ConvertTo-SecureString -String "anonymous" -AsPlainText -Force
$anonCredentials = New-Object System.Management.Automation.PSCredential($anonUsername,$anonPassword)

if ($highpriority -and $attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High -Attachments $attachments
}
elseif ($attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -Attachments $attachments
}
elseif ($highpriority) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High
}
else {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 
}
}

Anmerkungen:

Das Script baut eine anonyme Verbindung mit dem Mailserver auf. Der Mailserver benötigt hierzu also einen EmpfangsConnector (MS Exchange), der anonyme Verbindungen von dem Host erlaubt, auf dem das Script ausgeführt wird.

Powershell S-FTP Upload

Man kann mit der WinSCP Assembly über PowerShell ganz einfach SFTP-Uploads durchführen. WinSCP hat dazu eine gute Doku, die auch zeigt, wie man die Assembly als COM Objekt nutzt und wie man Ressourcen zu einem .NET Projekt hinzufügt und in eine temporäre Datei entpackt:

https://winscp.net/eng/docs/library_install#downloading

Weiterlesen

Event Log – Wichtige Abfragen

Konfiguration

Wichtig ist, dass die Logs auch verfügbar sind, wenn man sie braucht. Das geht entweder über die Retention Policy pro Server und Log oder über eine SIEM-Lösung (Security Information and Event Management). Ein SIEM-Client schickt dabei alle relevanten Logs an einen zentralen Server. Ähnlich wie bei Remote Syslog. Ein SIEM kann normalerweise auch Syslogs direkt empfangen und verarbeiten.

Retention Policy

Um hier alle Logs nach einer Vorgabe zu konfigurieren, sollte man die Retention Policy per PowerShell Script ausrollen. Anleitung hierfür folgt.

SIEM

Abschnitt folgt.

Wer hat Software installiert?

im Application Log nach dem Event 11707 filtern:

AzureAD SAML und Conditional Access

In diesem Artikel wird die Authentifikation über AzureAD SAML Single Sign On beschrieben und wie man die Zugriffsberechtigungen hierzu auf Gruppen einschränkt. Zusätzlich wird die Möglichkeit zur Authentifizierung per Conditional Access auf IP-Ebene eingeschränkt.

Microsoft weist inzwischen darauf hin, dass man für neue Projekte die Microsoft Identity Platform verwenden soll. Das ist dan OpenID oder OAuth.

Wir benötigen einen AzureAD Admin mit entsprechenden Zugriffsrechten auf die folgenden Portale:

  • portal.azure.com
  • admin.microsoft.com

Das Portal admin.microsoft.com erreicht man auch über portal.office.com und dann links über das Symbol Admin.

Als erstes eine kleine Empfehlung: belasst das Portal portal.azur.com und admin.office.com auf Englisch. Die Übersetzung ist maximal schlecht. Meine Meinung.

SAML Dienst erstellen

Portal: aad.portal.azure.com

Unter Enterprise Applications eine neue Applikation erstellen.

In der rechten Seitenleiste einen sinnvollen Namen vergeben und Non-gallery Application erstellen:

Die neue Applikation findet man nun in der Liste aller Applikationen oder man sucht alternativ nach dem eben vergebenen Namen. Mit einem Klick auf den Namen gelangt man in das Konfigurationsmenu für unsere neue Applikation.

Hier wählen wir nun den Punkt Single Sign On->SAML

Etwas Theorie: SAML funktioniert über REST-Endpunkte. Der Dienst, für den man die SAML Authentifikation aufetzt, liefert normalerweise ein sogenanntes Metadata File in XML-Format. In der Datei sind die Endpunkte und das Zertifikat der gegenseite hinterlegt. Man kann diese Datei nun einfach in unsere AzureAD Applikation importieren. Dazu klicken wir oben auf „Upload metadata file“.

Wählt man die Datei aus erscheint rechts ein neuer Dialog, in dem man die Daten nochmal überprüfen kann. Im Normalfall kann man hier einfach oben auf „Save“ klicken.

Attribute und Claims

Der Dienst kann aus dem AzureAD bestimmte Attribute abfragen, bzw. diese werden beim einer Authentifizierung einfach mitgeliefert. Wenn also die Authentifizierung eines Benutzers über SAML erfolgreich ist, werden die hier definierten Attribute an den Dienst geliefert. Der Dienst sagt normalerweise über Hilfeseiten oder den Support an, welche Attribute benötigt werden. Das wichtigste Attribut ist hier der Unique User Identifier. Man verwendet normalerweise entweder den Userprincipalname (UPN) oder die E-Mail Adresse. Der UPN ist vorausgewählt. Wir ändern beispielhaft auf die E-Mail-Adresse.

Wir ändern den Wert user.principalname, indem wir auf das Feld klicken und aus der vorgegebenen Liste user.mail auswählen. Dann oben auf „Save“ klicken:

Metadata File

https://learn.microsoft.com/de-de/azure/active-directory/azuread-dev/azure-ad-federation-metadata

Die Gegenseite benötigt nun unser Metadata File. Die Datei kann man einfach unter Download Metadata File runterladen. Sie liegt im XML-Format vor.

Man kann dem Dienst auch noch das Base64-Zertifikat, die LoginURL, den AzureAD Identifier und die LogoutURL mitgeben. Damit könnte der Dienst seine Seite auch ohne Metadata File von uns konfigurieren (z.B. falls er die nicht importieren kann).

Zugriff auf bestimmte Benutzer beschränken

1. Benutzerquelle aus onPremise AD per AzureAD Connect

AzureAD Connect->Synchronisierungsoptionen anpassen->Kontodaten eingeben->Verzeichnis auswählen

Es werden nun die Active Directory OU’s angezeigt. Hier die OU’s auswählen, deren Benutzer/Gruppen mit dem AzureAD synchronisiert werden sollen.

ACHTUNG: AzureAD unterstützt keine verschachtelten Gruppen. Stand 2022.

2. Benutzerquelle direkt über AzureAD

Portal: admin.microsoft.com

3. Zugriff auf AzureAD Applikation einschränken

Die benötigten Daten sind nun durch die obige Konfiguration im AzureAD verfügbar. Wir wählen die AzureAD Applikation aus und wählen dort:

Users and Groups->Add user/group

Rechts geht die Liste der verfügbaren Benutzer und Gruppen auf. Hier einfach die entsprechende Auswahl treffen.

Conditional Access Location einrichten

Portal: azure.mocrosoft.com

Pfad: Azure Active Directory > Security > Conditional Access > Named Locations

https://www.penthara.com/configuring-conditional-access-policy-to-restrict-access-from-specific-ip-or-location/

https://learn.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition

Azure Active Directory > Security > AzureAD Conditional Access > Named locations

Auf „+IP ranges location“ klicken. Es geht rechts eine neue Eingabemaske auf.

Wenn wir ein vertrauenswürdiges Netz einrichten wollen, den Haken für „Mark as trusted location“ setzen. Dann einen Namen für das Netz vergeben, z.B. „Trusted Location Branch Office 1“. Unten auf das + klicken und die entsprechenden Netzbereiche eingeben. Wenn es nur eine IP ist, wird trotzdem eine Netzmaske verlangt. Wir geben dann IP/32 ein und speichern alles.

Damit haben wir die Conditional Access Location konfiguriert. Im nächsten Schritt verknüpfen wir die Location mit dem Dienst.

MFA Trusted IP’s

Portal: portal.azure.com

Pfad: Azure Active Directory > Security > Conditional Access > Named Locations

Eine Conditional Access Policy setzt normalerweise mindestens einen weiteren Sicherheitsfaktor voraus, meist Multi Factor Authentication. Um das zu umgehend Setzen die IP’s auch als MFA Trusted IP’s.

Conditional Access Policy für SAML Dienst einrichten

Portal: portal.azure.com

Wir wählen in der linken Spalte „Enterprise Applications“. Es werden alle Applikationen aufgelistet, die wir im Tenant konfiguriert haben. Wir wählen nun die App aus, für die wir den Conditional Access einrichten wollen. Dann wählen wir im Bereich Security „Conditional Access“ und klicken auf „+New policy“.

Folgende Informationen werden für eine Contitional Access Policy benötigt:

  • Ein Name für die Policy
  • Welchen Benutzern die Policy zugewiesen wird
  • Die Anwendung, der die Policy zugewiesen wird
  • Die Konditionen (Conditions, z.B. IP’s)
  • Access Control über Grant oder Session Block

Folgendes sollte man außerdem beachten:

  • Nie alle Benutzer in eine Policy einschließen. Es sollte sogenannte Break Glass Benutzer geben, die Zugreifen können, falls man sich über eine Fehlkonfiguration ausgeschlossen hat.
  • Die Richtlinie nie direkt aktivieren, sondern erst über Report-only prüfen was passiert.
Wir vergeben einen Namen, klicken auf Conditions->Locations->Configure: Yes und wählen die im obigen Abschnitt konfigurierten Locations. ACHTUNG: unten die Policy aktivieren, sonst wird nur berichtet was passieren würde, wenn man die Policy aktiviert hätte.

Wir bauen uns nun eine Deny-Regel. Wir blockieren also alle Locations, bis auf die oben spezifizierten Locations. Diese Regel wenden wir auf alle Benutzer an, bis auf die Break Glass Benutzer und evtl. spezielle Admins.

Users or workload identities

Include: All users

Exclude: Break Glass und Admins

Cloud apps or actions

Die SAML App auswählen

Conditions

Locations -> Include: Any location

Locations -> Exclude: Selected Locations (hier die Locations auswählen, die wir erlauben wollen)

Access Control

Block access

Pizza

Teig

1g Hefe auf 500g

24 Std ziehen lassen

ca 300 ml Wasser (bis alles Mehl in der Teigmasse aufgeht)

Mit Mixer mixen, bis man den Teig ohne Verkleben vom Schüsselrand lösen kann.

Wenn der Teig schneller gehen muss 1pkg. Hefe benutzen

Evtl. 2 TL Salz

Tomatensoße (kalt)

Dose Schältomaten

(viel) Knoblauch

Salz

Pfeffer

etwas Zucker

Basilikum

Oregano

© 2016 kinc.de