aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/sysctl.d/99-sysctl.conf40
1 files changed, 39 insertions, 1 deletions
diff --git a/etc/sysctl.d/99-sysctl.conf b/etc/sysctl.d/99-sysctl.conf
index 3177c28..3a43da9 100644
--- a/etc/sysctl.d/99-sysctl.conf
+++ b/etc/sysctl.d/99-sysctl.conf
@@ -1,6 +1,13 @@
+# Dev concessions (intentionally not hardened):
+# kernel.sysrq=1 — emergency reboot from a frozen Sway session.
+# kernel.dmesg_restrict=0 — read dmesg as user during driver/kernel debug.
+# kernel.perf_event_paranoid=-1 — `perf record` on own user-space binaries
+# without sudo. Kernel-space tracepoints still need root.
+# kernel.yama.ptrace_scope is left at the kernel default (1, parent-only),
+# which keeps `gdb ./a.out`, `lldb -- ./bin`, `rust-gdb target/...` working;
+# attach-by-PID (`gdb -p`) requires sudo.
kernel.sysrq = 1
kernel.dmesg_restrict = 0
-kernel.yama.ptrace_scope = 0
kernel.perf_event_paranoid = -1
net.core.netdev_max_backlog = 16384
net.core.somaxconn = 8192
@@ -30,3 +37,34 @@ net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
+
+# Info-disclosure / kernel-surface hardening
+# Hide kernel pointers from /proc and dmesg even with read access.
+kernel.kptr_restrict = 2
+# Block unprivileged eBPF program loading (bpftrace as non-root, etc.).
+# We don't run BPF programs against the system kernel; own user-space
+# profiling via `perf` is unaffected.
+kernel.unprivileged_bpf_disabled = 1
+# Harden the BPF JIT against spectre-style speculative leaks.
+net.core.bpf_jit_harden = 2
+# We never use kexec; disabling permanently closes a rootkit persistence
+# vector. Cannot be re-enabled until reboot once set.
+kernel.kexec_load_disabled = 1
+# SUID processes cannot produce core dumps (prevents leaking secrets).
+fs.suid_dumpable = 0
+
+# ICMP / TCP hygiene
+# Reaffirm syncookie defence (default on, explicit anyway).
+net.ipv4.tcp_syncookies = 1
+# Drop broadcast pings and bogus ICMP errors (smurf-style amplification).
+net.ipv4.icmp_echo_ignore_broadcasts = 1
+net.ipv4.icmp_ignore_bogus_error_responses = 1
+# Disable TCP timestamps — minor uptime/fingerprint info leak; modern
+# congestion control (BBR + cake) does not depend on RFC1323 timestamps.
+net.ipv4.tcp_timestamps = 0
+
+# IPv6 router advertisements are handled by systemd-networkd; ignore RA
+# at the kernel layer in case networkd is bypassed or an attacker forges
+# rogue RAs on a hostile network.
+net.ipv6.conf.all.accept_ra = 0
+net.ipv6.conf.default.accept_ra = 0