# Linux - Kernel Parameter (sysctl)

<p class="callout info">Der Befehl **sysctl** wird in Linux verwendet um Kernel-Parameter zur Laufzeit auszulesen und zu ändern.</p>

##### Auflisten aller Kernel Parameter

```bash
sysctl -a
```

##### Auslesen eines Kernel Parameters

```
sysctl net.ipv6.conf.all.disable_ipv6
```

##### Temporäres ändern eines Kernel Parameters

```
sysctl net.ipv6.conf.all.disable_ipv6 = 1
```

##### Permanentes ändern von kernel Parametern

Um Kernel Parameter permanent zu ändern legt man eine Datei mit den gewünschten Kernel Parametern im Verzeichnis **/etc/sysctl.d** an:

```bash
nano /etc/sysctl.d/100-mykernelparameters.conf
```

<p class="callout info">Die Zahl (Prefix) gibt die Reihenfolge der Ausführung an. Ein Wert in einer Datei mit niedrigem Prefix (z. B. 10) würde durch den Wert in einer Datei mit höherem Prefix (z. B. 100) überschrieben werden!</p>

##### Beispiel

```shell
# Kernel security settings
dev.tty.ldisc_autoload = 0
fs.protected_fifos = 2
kernel.core_uses_pid = 1
kernel.dmesg_restrict = 1
kernel.kexec_load_disabled = 1
kernel.kptr_restrict = 2
kernel.randomize_va_space = 2
kernel.sysrq = 0
kernel.unprivileged_bpf_disabled = 1
kernel.yama.ptrace_scope = 1
net.core.bpf_jit_harden = 2

# IPv4 settings
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.log_martians = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_syncookies = 1

# disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

# disable IPv6 redirects
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
```