From 31b4a31d60bf549f3061d9760fee533d76521b66 Mon Sep 17 00:00:00 2001 From: J S Date: Wed, 20 Dec 2023 13:06:27 -0500 Subject: [PATCH] feat[lib,readme] Added -s flag Added -s security flag. Added image to readme --- .assets/lisplogo_128.png | Bin 0 -> 15552 bytes README.org | 6 +++++- lib/preconfigs.lisp | 13 +++++++++++++ packages.lisp | 4 ++++ src/main.lisp | 2 ++ sst.asd | 5 ++++- test/test.service | 8 +++++++- 7 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 .assets/lisplogo_128.png create mode 100644 lib/preconfigs.lisp diff --git a/.assets/lisplogo_128.png b/.assets/lisplogo_128.png new file mode 100644 index 0000000000000000000000000000000000000000..c205b6db296b2d0ada5cf1f6c3149c6b2156da2e GIT binary patch literal 15552 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 K52+N<5Bwk5)>NJV literal 0 HcmV?d00001 diff --git a/README.org b/README.org index 7a669d3..f791afe 100644 --- a/README.org +++ b/README.org @@ -12,10 +12,14 @@ and an easy-to-use command-line interface. * Features - [X] Edit systemd files from the command-line - [X] =-b= backup flag to save .systemd files into LOCATION. -- [ ] =-s= security flag to apply quick configurations +- [X] =-s= security flag to apply quick configurations +- [ ] =-S= security flag for extreme security. +- [ ] =-n= security flag to block network reconfig - [ ] Default configurations for common services - [ ] Automatic Apache and Nginx =READWRITEPATHS= detection +[[file:.assets/lisplogo_128.png][Lisp logo]] + * Building The makefile is set up for steel bank common lisp, but it should be trivial to use another implementation that loads =asdf=. As of [2023-12-20] I have not knowingly used any sbcl-specific features. diff --git a/lib/preconfigs.lisp b/lib/preconfigs.lisp new file mode 100644 index 0000000..770c8d4 --- /dev/null +++ b/lib/preconfigs.lisp @@ -0,0 +1,13 @@ + + ; This file will contain prebaked settings designed to be dropped in. + +(in-package :sst-drop-ins) +(defparameter *security-drop-ins* + '("ProtectSystem=full" + "InaccessiblePaths=/etc/shadow" + "ProtectKernelLogs=true" + "ProtectKernelModules=true" + "ProtectKernelTunables=true" + "LockPersonality=true" + "ProtectControlGroups=true" + )) diff --git a/packages.lisp b/packages.lisp index 7e98a72..99db4a4 100644 --- a/packages.lisp +++ b/packages.lisp @@ -21,3 +21,7 @@ (defpackage :sst-edit (:use :common-lisp) (:export :add-settings)) + +(defpackage :sst-drop-ins + (:use :common-lisp) + (:export :*security-drop-ins*)) diff --git a/src/main.lisp b/src/main.lisp index e8fb89e..e0718c6 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -20,6 +20,8 @@ (uiop:copy-file file (merge-pathnames backup))) ;; Apply the settings to the file. (let ((settings-table (systemd-parse:read-service file))) + (if secure + (sst-edit:add-settings sst-drop-ins:*security-drop-ins* settings-table)) (sst-edit:add-settings direct-settings settings-table) ; Inject all the settings options required (systemd-parse:write-service file settings-table))) diff --git a/sst.asd b/sst.asd index 7cc2e1a..82338ec 100644 --- a/sst.asd +++ b/sst.asd @@ -23,7 +23,10 @@ (:file "ui") (:file "edit") (:file "main") - ))) + )) + (:module "lib" + :serial t + :components ((:file "preconfigs")))) :author "Judah Sotomayor " :maintainer "Judah Sotomayor " :license "GPLv3" diff --git a/test/test.service b/test/test.service index 0022703..87af863 100644 --- a/test/test.service +++ b/test/test.service @@ -12,12 +12,18 @@ Type=notify Sockets=dbus.socket OOMScoreAdjust=-900 LimitNOFILE=16384 -ProtectSystem=full +ProtectSystem=strict PrivateTmp=false PrivateDevices=true ExecStart=/usr/bin/dbus-broker-launch --scope system --audit ExecReload=/usr/bin/busctl call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus ReloadConfig NewBinding=Yes +InaccessiblePaths=/etc/shadow +ProtectKernelLogs=true +ProtectKernelModules=true +ProtectKernelTunables=true +LockPersonality=true +ProtectControlGroups=true [Install] Alias=dbus.service