guidugli.kernel_config

Rola Ansible: kernel_config

Jest to rola Ansible, która instaluje i konfiguruje sysctl na systemach RHEL/CentOS, Fedora oraz Debian/Ubuntu. Rola ta umożliwia również wyłączanie, dodawanie do czarnej listy lub ustawianie modułów jądra do autostartu. Może też ustawiać zasady UDEV związane z zarządzaniem energią.

UWAGA: Wyłączanie modułów jądra lub ustawianie urządzeń do uśpienia (ustawienia udev) może wpłynąć na działanie systemu i może wymagać jego odzyskiwania (logowanie w trybie jednego użytkownika lub uruchomienie z płyty Live).

Wymagania

System operacyjny uruchomiony na sprzęcie fizycznym lub na wirtualizacji hypervisora. W zależności od ustawień, ta rola może nie działać poprawnie w systemach kontenerowych.

Zmienne roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml):

kernel_disable_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'squashfs',
                         'dccp', 'sctp', 'rds', 'tipc']

Użyj tej zmiennej, aby wymienić moduły jądra, które powinny być wyłączone. Możesz dodać usb-storage do listy, ale to uniemożliwi działanie wszelkich urządzeń pamięci USB. Rozważ użycie USBGuard. Wartości domyślne będą działać na większości systemów. Jeśli system potrzebuje używać niektórych z tych modułów, nadpisz tę zmienną odpowiednią konfiguracją.

kernel_blacklist_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'squashfs',
                           'dccp', 'sctp', 'rds', 'tipc']

Moduły, które mają być dodane do czarnej listy. Wartości domyślne będą działać na większości systemów. Jeśli system potrzebuje używać niektórych z tych modułów, nadpisz tę zmienną odpowiednią konfiguracją.

#kernel_autostart_modules: ['br_netfilter']

Moduły, które mają być uruchamiane automatycznie.

kernel_sysctl:
  • { name: fs.suid_dumpable, value: "0" }
  • { name: fs.protected_hardlinks, value: "1" }
  • { name: fs.protected_symlinks, value: "1" }
  • { name: fs.inotify.max_user_instances, value: "1024" }
  • { name: kernel.dmesg_restrict, value: "1" }
  • { name: kernel.yama.ptrace_scope, value: "1" }
  • { name: kernel.randomize_va_space, value: "2" }
  • { name: kernel.kptr_restrict, value: "1" }
  • { name: kernel.nmi_watchdog, value: "0" }
  • { name: net.ipv4.ip_forward, value: "0" }
  • { name: net.ipv4.conf.all.forwarding, value: "0" }
  • { name: net.ipv4.conf.all.send_redirects, value: "0" }
  • { name: net.ipv4.conf.default.send_redirects, value: "0" }
  • { name: net.ipv4.conf.all.accept_source_route, value: "0" }
  • { name: net.ipv4.conf.default.accept_source_route, value: "0" }
  • { name: net.ipv4.conf.all.accept_redirects, value: "0" }
  • { name: net.ipv4.conf.default.accept_redirects, value: "0" }
  • { name: net.ipv4.conf.all.secure_redirects, value: "0" }
  • { name: net.ipv4.conf.default.secure_redirects, value: "0" }
  • { name: net.ipv4.conf.all.log_martians, value: "1" }
  • { name: net.ipv4.conf.default.log_martians, value: "1" }
  • { name: net.ipv4.icmp_echo_ignore_broadcasts, value: "1" }
  • { name: net.ipv4.icmp_ignore_bogus_error_responses, value: "1" }
  • { name: net.ipv4.conf.all.rp_filter, value: "1" }
  • { name: net.ipv4.conf.default.rp_filter, value: "1" }
  • { name: net.ipv4.tcp_syncookies, value: "1" }
  • { name: net.ipv6.conf.all.disable_ipv6, value: "1" }
  • { name: net.ipv6.conf.default.disable_ipv6, value: "1" }

Określa parametry sysctl, które mają być skonfigurowane w systemie. Domyślna konfiguracja jest odpowiednia dla systemów, które nie działają jako routery i nie używają IPv6. Sprawdź zasady i nadpisz tę zmienną, jeśli zajdzie taka potrzeba.

kernel_sysctl_flush_network_routes: yes

Jeśli ustawione na "yes", ustawi parametry net.ipv4.route.flush i net.ipv6.route.flush na 1 oraz przeładowań.

#kernel_udev_sata_link_power_mgmt: med_power_with_dipm

Polityka zarządzania zasilaniem linku SATA. Ważne wartości to min_power, max_performance, medium_power, med_power_with_dipm.

#kernel_udev_autosuspend_ahci_devices: yes

Automatyczne wstrzymywanie kontrolerów AHCI i urządzeń ATA.

#kernel_udev_autosuspend_scsi_devices: yes

Automatyczne wstrzymywanie urządzeń SCSI, driver=sd.

#kernel_udev_disable_bluetooth: no

Wyłącza Bluetooth.

#kernel_udev_disable_wake_on_lan: yes

Wyłącza "wake on LAN".

#kernel_udev_usb_autosuspend_devices:
#  - { vendor: '13fe', product: '5500' }   # Silikonowy napęd flash
#  - { vendor: '1532', product: '0f13', autosuspend: 120 }    # Klawiatura

Lista urządzeń do automatycznego wstrzymywania. Zwykle Linux już ustawia automatyczne wstrzymanie dla hubów USB i innych urządzeń, dlatego nie trzeba korzystać z tej opcji. Sprawdź, które urządzenia są ustawione na automatyczne wstrzymanie, przeglądając /sys/bus/usb/devices/*/power/control.

#kernel_udev_pci_autosuspend_devices:
#  - { vendor: '0x8086', device: '0x0c00' }
#  - { vendor: '0x8086', device: '0x0412' }

Lista urządzeń PCI do automatycznego wstrzymywania.

#kernel_udev_enable_wlan_powersave: yes

Włączyć oszczędzanie energii w WLAN?

Poniższe zmienne nie muszą być zmieniane w przypadku docelowych systemów (patrz vars/main.yml):

kernel_udev_reload_cmd: "udevadm control --reload-rules && udevadm trigger"

Polecenie do przeładowania zasad udev.

Zależności

Brak zależności.

Przykład Playbooka

- hosts: servers
  vars:
    kernel_disable_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'vfat', 'squashfs']
    kernel_blacklist_modules: ['radeon', 'amdgpu']
    kernel_sysctl:
      - { name: net.ipv4.conf.all.forwarding, value: "0" }
      - { name: net.ipv4.conf.all.send_redirects, value: "0" }
      - { name: net.ipv4.conf.default.send_redirects, value: "0" }
      - { name: net.ipv4.conf.all.accept_source_route, value: "0" }
      - { name: net.ipv4.conf.default.accept_source_route, value: "0" }
      - { name: net.ipv4.conf.all.accept_redirects, value: "0" }
      - { name: net.ipv4.conf.default.accept_redirects, value: "0" }
      - { name: net.ipv4.conf.all.secure_redirects, value: "0" }
      - { name: net.ipv4.conf.default.secure_redirects, value: "0" }
      - { name: net.ipv4.conf.all.log_martians, value: "1" }
      - { name: net.ipv4.conf.default.log_martians, value: "1" }
      - { name: net.ipv4.icmp_echo_ignore_broadcasts, value: "1" }
      - { name: net.ipv4.icmp_ignore_bogus_error_responses, value: "1" }
      - { name: net.ipv4.conf.all.rp_filter, value: "1" }
      - { name: net.ipv4.conf.default.rp_filter, value: "1" }
      - { name: net.ipv4.tcp_syncookies, value: "1" }
    kernel_sysctl_flush_network_routes: yes

  roles:
     - { role: guidugli.kernel_config }

Licencja

MIT / BSD

Informacje o autorze

Ta rola została stworzona w 2020 roku przez Carlosa Guidugli.

O projekcie

Disable kernel modules and configure sysctl settings on linux

Zainstaluj
ansible-galaxy install guidugli.kernel_config
Licencja
mit
Pobrania
102
Właściciel