podman and opensnitch

This commit is contained in:
Sergei Poljanski 2026-01-13 17:59:24 +02:00
commit 5dadd4f858
Signed by: asxpi
GPG key ID: 4F8851660FA4121B
5 changed files with 26 additions and 11 deletions

View file

@ -88,7 +88,7 @@
awscli2 awscli2
# azure-cli # azure-cli
google-cloud-sdk google-cloud-sdk
docker-compose podman-compose
argocd argocd
fluxcd fluxcd
kubectx # switch between contexts/namespaces kubectx # switch between contexts/namespaces

View file

@ -43,6 +43,10 @@
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true; programs.virt-manager.enable = true;
# Docker # Container Runtimes
virtualisation.docker.enable = true; virtualisation.podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
} }

View file

@ -5,13 +5,10 @@
./usb-devices.nix ./usb-devices.nix
]; ];
# Use the hardened kernel for better security
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_hardened; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_hardened;
# Only allow members of the wheel group to execute sudo
security.sudo.execWheelOnly = true; security.sudo.execWheelOnly = true;
# Linux Audit Framework
security.auditd.enable = true; security.auditd.enable = true;
security.audit.enable = true; security.audit.enable = true;
security.audit.rules = [ security.audit.rules = [
@ -20,10 +17,8 @@
"-w /etc/shadow -p wa -k shadow_changes" "-w /etc/shadow -p wa -k shadow_changes"
]; ];
# Kernel Hardening
security.protectKernelImage = true; security.protectKernelImage = true;
# Sysctl hardening
boot.kernel.sysctl = { boot.kernel.sysctl = {
"kernel.dmesg_restrict" = 1; "kernel.dmesg_restrict" = 1;
"kernel.kptr_restrict" = 2; "kernel.kptr_restrict" = 2;
@ -42,13 +37,15 @@
"net.ipv6.conf.default.accept_redirects" = 0; "net.ipv6.conf.default.accept_redirects" = 0;
}; };
# USBGuard configuration
services.usbguard = { services.usbguard = {
enable = true; enable = true;
dbus.enable = true; dbus.enable = true;
implicitPolicyTarget = "block"; implicitPolicyTarget = "block";
}; };
# OpenSnitch Application Firewall
services.opensnitch.enable = true;
security.pam.loginLimits = [ security.pam.loginLimits = [
{ domain = "*"; item = "core"; type = "-"; value = "0"; } { domain = "*"; item = "core"; type = "-"; value = "0"; }
]; ];
@ -58,7 +55,7 @@
RestrictAddressFamilies = "AF_UNIX AF_NETLINK"; RestrictAddressFamilies = "AF_UNIX AF_NETLINK";
}; };
# Podman socket for all users # Declaratively enable Podman socket for all users
systemd.user.sockets.podman.wantedBy = [ "sockets.target" ]; systemd.user.sockets.podman.wantedBy = [ "sockets.target" ];
virtualisation = { virtualisation = {
@ -84,5 +81,7 @@
lynis lynis
audit audit
tcpdump tcpdump
bandwhich
opensnitch-ui
]; ];
} }

12
modules/usb-devices.nix Normal file
View file

@ -0,0 +1,12 @@
{ ... }:
{
services.usbguard.rules = ''
allow id 1d6b:0002 serial "0000:07:00.3" name "xHCI Host Controller" hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" parent-hash "0ucliRMjldIprxe48uLucRla+MwXWjm3BjOe1IwriL0=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0003 serial "0000:07:00.3" name "xHCI Host Controller" hash "O6iOpcl9StImWT62SrbeXacqbG6N/mTIipTRc0ipCGM=" parent-hash "0ucliRMjldIprxe48uLucRla+MwXWjm3BjOe1IwriL0=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0002 serial "0000:07:00.4" name "xHCI Host Controller" hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" parent-hash "yDUn2DiXqqtcIEdDBTvWPAS3N3pEqZ4rLl1feEAXV9U=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0003 serial "0000:07:00.4" name "xHCI Host Controller" hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" parent-hash "yDUn2DiXqqtcIEdDBTvWPAS3N3pEqZ4rLl1feEAXV9U=" with-interface 09:00:00 with-connect-type ""
allow id 2357:0604 serial "EC750C9EF6C2" name "TP-Link Bluetooth USB Adapter" hash "8yVJfhZNa1ezefblgi5rzbI/GwSPhCMRRHgbUgMtJ1I=" parent-hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" with-interface { e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 } with-connect-type "hotplug"
allow id 058f:9540 serial "" name "EMV Smartcard Reader" hash "j6z/wqFtA1bZWwBIPmIr/g8KfsEQJ63vpgf4cBcNLbU=" parent-hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" via-port "1-3" with-interface 0b:00:00 with-connect-type "not used"
'';
}

View file

@ -8,7 +8,7 @@
users.users.asxpi = { users.users.asxpi = {
isNormalUser = true; isNormalUser = true;
description = "Sergei P"; description = "Sergei P";
extraGroups = [ "networkmanager" "wheel" "dialout" "libvirtd" "docker" ]; extraGroups = [ "networkmanager" "wheel" "dialout" "libvirtd" "podman" ];
shell = pkgs.zsh; shell = pkgs.zsh;
packages = with pkgs; [ packages = with pkgs; [
# Internet # Internet