
Ein Benutzermodus-Anwendungsautorisierungssystem für macOS, geschrieben in Swift.
Sinter ist ein 100%iger Benutzermodus-Endpunktsicherheitsagent für macOS 10.15 und höher, geschrieben in Swift.
Sinter verwendet die Benutzermodus-API EndpointSecurity, um Autorisierungs-Callbacks vom macOS-Kernel für eine Reihe sicherheitsrelevanter Ereignistypen zu abonnieren und zu empfangen. Die aktuelle Version von Sinter unterstützt das Erlauben/Verweigern von Prozessausführungen; in zukünftigen Versionen planen wir, andere Ereignistypen wie Datei-, Socket- und Kernel-Ereignisse zu unterstützen.
Sinter ist ein Work-in-Progress. Rückmeldungen sind willkommen. Wenn Sie Interesse haben, einen Beitrag zu leisten oder uns zu sponsern, um sein Potenzial zu entfalten, nehmen Sie Kontakt auf.
Geplante zukünftige Funktionen:
Die erste Open-Source-macOS-Lösung zum Erlauben/Verweigern von Prozessen war Google Santa. Wir sind Fans von Santa und haben in der Vergangenheit zu seiner Codebasis beigetragen. Lange Zeit jedoch haben viele in der macOS-Community nach einer Open-Source-Lösung gefragt, um mehr als nur Prozessereignisse zu verfolgen und zu verwalten.
Wir sahen die ideale Plattform, um eine solche Fähigkeit mit der EndpointSecurity-API in macOS 10.15 aufzubauen. Von Grund auf um eine strikte Benutzermodus-API herum aufgebaut, bedeutete dies, dass wir ein einfacheres Design versuchen und eine moderne Programmiersprache mit sichererem Speichermanagement und besserer Leistung verwenden konnten. Also machten wir uns daran, Sinter zu entwickeln, kurz für 'Sinter Klausen', ein anderer Name für den Weihnachtsmann.
Laden Sie die neueste Version von Sinter mit dem pkg-Installer-Link von der Releases-Seite herunter und installieren Sie sie.
Nach der Installation von Sinter müssen Sie die Berechtigung 'Voller Festplattenzugriff' für Sinter.app aktivieren. Öffnen Sie dazu die Systemeinstellungen, den Tab Sicherheit, Datenschutz, Voller Festplattenzugriff. Aktivieren Sie das Element für Sinter.app. Wenn Sie MDM verwenden, können Sie diese Berechtigung automatisch auf Ihren Endpunkten aktivieren, und es ist keine Benutzerinteraktion erforderlich.
Sinter benötigt eine Konfigurationsdatei unter /etc/sinter/config.json. Ein Beispiel befindet sich im Quellbaum unter ./config/config.json:
{
"Sinter": {
"decision_manager": "local",
"logger": "filesystem",
"allow_unsigned_programs": "true",
"allow_invalid_programs": "true",
"allow_unknown_programs": "true",
"allow_expired_auth_requests": "true",
"allow_misplaced_applications": "true",
"config_update_interval": 600,
"allowed_application_directories": [
"/bin",
"/usr/bin",
"/usr/local/bin",
"/Applications",
"/System",
"/usr/sbin",
"/usr/libexec",
],
},
"FilesystemLogger": {
"log_file_path": "/var/log/sinter.log",
},
"RemoteDecisionManager": {
"server_url": "https://server_address:port",
"machine_identifier": "identifier",
},
"LocalDecisionManager": {
"rule_database_path": "/etc/sinter/rules.json",
}
}
Das Decision-Manager-Plugin kann durch Ändern des Werts decision_manager ausgewählt werden. Das lokale Plugin aktiviert den Konfigurationsabschnitt LocalDecisionManager, der Sinter anweist, die lokale Regelbasis am angegebenen Pfad zu verwenden. Es ist möglich, einen Santa-kompatiblen Sync-Server zu verwenden, indem stattdessen das sync-server-Plugin verwendet wird. Dies aktiviert den Konfigurationsabschnitt RemoteDecisionManager, in dem die Server-URL und die Maschinenkennung festgelegt werden können.
Es sind derzeit zwei Logger-Plugins implementiert:
Es ist möglich, Sinter so zu konfigurieren, dass Anwendungen, die nicht aus einem zulässigen Ordner gestartet wurden, protokolliert und optional verweigert werden.
sudo /Applications/Sinter.app/Contents/MacOS/Sinter --install-notification-server/Applications/Sinter.app/Contents/MacOS/Sinter --start-notification-serverModi sind in Sinter nicht implementiert, da alles regelbasiert ist. Die Überwachungsfunktionalität kann durch Anpassen der folgenden Einstellungen implementiert werden:
Regeldatenbanken werden im JSON-Format geschrieben. Hier ist ein Beispiel für eine Datenbank, die das CMake-Anwendungsbündel von cmake.org erlaubt:
{
"rules": [
{
"rule_type": "BINARY",
"policy": "ALLOWLIST",
"sha256": "BDD0AF132D89EA4810566B3E1E0D1E48BAC6CF18D0C787054BB62A4938683039",
"custom_msg": "CMake"
}
]
}
Sinter unterstützt derzeit nur BINARY-Regeln, entweder mit ALLOWLIST- oder DENYLIST-Richtlinien. Der Code-Verzeichnis-Hash-Wert kann aus der Ausgabe des codesign-Tools entnommen werden (Beispiel: codesign -dvvv /Applications/CMake.app). Beachten Sie, dass die CLI-Tools den vollständigen SHA256-Hash abrufen können, die Kernel/EndpointSecurity-API jedoch auf die ersten 20 Bytes beschränkt ist.
Das Erstellen von Sinter erfordert bestimmte Code-Signing-Zertifikate und Berechtigungen, die Apple Ihrer Organisation gewähren muss. Sinter kann jedoch dennoch aus dem Quellcode erstellt und lokal auf einem Testsytem mit deaktiviertem SIP ausgeführt werden. Anweisungen finden Sie im Sinter-Wiki.
Sinter ist unter der AGPLv3-Lizenz lizenziert und verteilt. Kontaktieren Sie uns, wenn Sie eine Ausnahme von den Bedingungen suchen.