Helius
Kontakt mig

Kernel og Linux

De fleste indbrud sker gennem noget, ingen vidste lyttede

Servere, I kan beskrive – og forsvare.

Problemet

Jeres servere kører det, base-imaget tilfældigvis kom med. Ingen ved, hvilke processer der taler med internettet, logningen er det, journald nu har gemt, og spørgeskemaet om compliance skal afleveres næste måned. Den kommercielle agent, I har fået tilbud på, koster pr. server og kører kode, I ikke kan se.

Tilgangen

Jeg skærer ned på det, der kører, begrænser det, der kan nås, og gør resultatet reproducerbart, så det holder på hundrede servere – ikke kun på de tre, nogen huskede at rette. Firewall- og adgangspolitik som kode, der kan gennemgås, isolering af services med systemd i stedet for gode intentioner, og pakker, I selv bygger, i stedet for at stole på en fremmed.

Det får I

  • Grundhærdning rullet ud med Ansible, så hver linje kan gennemgås
  • nftables-regler genereret ud fra en beskrevet oversigt over jeres servere – ikke rettet i hånden
  • Sandboxing af systemd-units: capabilities, namespaces og adgang til filsystemet
  • Zero Trust-adgang til administrationsflader, så intet følsomt vender ud mod internettet
  • Reproducerbare Debian/Ubuntu-pakker låst til de versioner, I har valgt
  • En skriftlig trusselsmodel, der siger, hvad det her beskytter imod – og hvad det ikke gør

Eksempel

hardening/tasks/main.yml

- name: Lock down SSH
  ansible.builtin.lineinfile:
    path: /etc/ssh/sshd_config.d/00-hardening.conf
    create: true
    mode: '0600'
    validate: '/usr/sbin/sshd -t -f %s'
    regexp: "^{{ item.key }}"
    line: "{{ item.key }} {{ item.value }}"
  loop:
    - { key: PermitRootLogin,        value: 'no' }
    - { key: PasswordAuthentication, value: 'no' }
    - { key: KbdInteractiveAuthentication, value: 'no' }
    - { key: AllowTcpForwarding,     value: 'no' }
  notify: restart sshd

- name: Default-deny firewall
  ansible.builtin.template:
    src: nftables.conf.j2
    dest: /etc/nftables.conf
    validate: 'nft -c -f %s'   # never ship a ruleset that will not parse
    mode: '0600'
  notify: reload nftables

- name: Persist the audit trail off-box
  ansible.builtin.include_role:
    name: journald_remote

Fortæl mig, hvad der er galt

Et par linjer om problemet er nok. Inden for én arbejdsdag svarer jeg med, hvad jeg tror, det er, hvor lang tid det cirka tager, og om I overhovedet har brug for mig. Nogle gange er det ærlige svar nej.

Jeg svarer inden for én arbejdsdag · Ingen kontaktformularer, ingen sporingspixels og ingen automatiske salgsmails.