10 Best Practices voor Linux Hardening

10 Best Practices voor Linux Hardening

Het beveiligen en beheren van Linux servers, ook wel bekend als Linux hardening, is essentieel om de integriteit, vertrouwelijkheid en beschikbaarheid van je systemen te waarborgen. In dit artikel bespreken we tien best practices voor Linux hardening, inclusief voorbeelden van hoe je deze kunt realiseren met behulp van Ansible automatisatie.

1. Beperk toegang tot de server

Zorg ervoor dat alleen geautoriseerde gebruikers toegang hebben tot de server. Gebruik sterke wachtwoorden en overweeg het gebruik van twee-factor authenticatie (2FA). Het beperken van toegang helpt om ongeautoriseerde toegang en mogelijke beveiligingsinbreuken te voorkomen.

Zo maak ik bijvoorbeeld gebruik van Duo 2FA om toegang tot servers te voorzien van een extra laag security.

2. Gebruik een bastion host

Een Bastion host fungeert als een poortwachter voor toegang tot je netwerk, wat zorgt voor een extra beveiligingslaag. Gebruikers moeten eerst inloggen op de Bastion host voordat ze toegang krijgen tot interne servers. Dit minimaliseert het risico op aanvallen, omdat alleen de Bastion host van buitenaf bereikbaar is terwijl andere servers onbereikbaar blijven voor externe aanvallen.

3. Beperk root toegang

Beperk directe root toegang en gebruik ‘sudo’ voor beheertaken. Dit helpt om ongeautoriseerde wijzigingen aan de server te voorkomen en dit maakt het gemakkelijker om acties te loggen en te auditen.

Ansible voorbeeld:

- name: Disable root login
  tasks:
    - name: Update SSHD config
      lineinfile:
        path: /etc/ssh/sshd_config
        state: present
        regexp: '^PermitRootLogin'
        line: 'PermitRootLogin no'
    - name: Restart SSH service
      service:
        name: sshd
        state: restarted

4. Regelmatig updaten en patchen

Zorg ervoor dat je servers up-to-date zijn door ze te voorzien van de nieuwste security patches. Regelmatige updates en patches helpen om beveiligingslekken te dichten en kwetsbaarheden op servers te reduceren.

5. Configuratie van de local firewall

Implementeer lokale firewallregels op de server om ongeautoriseerde toegang te blokkeren. Een goed geconfigureerde firewall beschermt je server tegen onbedoelde netwerkintrusies en kwaadaardige activiteiten.

Ansible voorbeeld:

---
- name: Configure firewall with UFW
  become: yes
  vars:
    allowed_ssh_ip: "192.0.2.1"  # Bastion IP address

  tasks:
    - name: Ensure UFW is installed
      ansible.builtin.apt:
        name: ufw
        state: present
      when: ansible_os_family == "Debian"

    - name: Ensure UFW is installed
      ansible.builtin.yum:
        name: ufw
        state: present
      when: ansible_os_family == "RedHat"

    - name: Set default deny policy for incoming traffic
      ufw:
        default: deny
        direction: incoming

    - name: Allow SSH from specific IP
      ufw:
        rule: allow
        proto: tcp
        from_ip: "{{ allowed_ssh_ip }}"
        port: 22

    - name: Enable UFW
      ufw:
        state: enabled

    - name: Ensure UFW is enabled and started on boot
      ansible.builtin.service:
        name: ufw
        enabled: yes
        state: started

6. Log monitoring en auditing

Monitor en audit log files om verdachte activiteiten te detecteren. Door regelmatig je logs te controleren, kun je vroegtijdig inbreuken of misbruik detecteren en hierop reageren. Bij voorkeur is dit geen taak die je manueel uitvoert, zo kan je log files verwerken, analyseren en visualiseren via een ELK stack.

7. Schakel onnodige services uit

Schakel alle niet-essentiële services en netwerkpoorten uit om de aanvalsoppervlakte te verkleinen. Hoe minder services er draaien, hoe kleiner de kans dat een kwetsbaarheid wordt uitgebuit.

8. Gebruik van sterke encryptie

Gebruik sterke encryptieprotocollen zoals TLS/SSL voor veilige gegevensoverdracht. De encryptie van data beschermt gegevens tijdens het transport tegen afluisteren en manipulatie.

9. Back-ups en herstelplannen

Zorg voor regelmatige back-ups en herstelplannen om gegevensverlies te voorkomen. Back-ups zijn cruciaal voor het herstellen van gegevens na een incident of storing. Hierbij is het belangrijk om op regelmatige basis (bij voorkeur dagelijks) back-ups te maken van de volledige server maar ook om application aware back-ups te maken. Hierbij maak je back-ups van de data door middel van back-up tools en mechanismen die voorzien worden door de software zelf. Een voorbeeld van zo’n tool is MyDumper waarmee je MySQL back-ups kan maken.

10. Implementatie van Intrusion Detection Systemen (IDS)

Gebruik Intrusion Detection Systemen om verdachte activiteiten en potentiële inbreuken te detecteren. IDS helpt bij het identificeren van ongebruikelijke patronen die kunnen wijzen op een aanval.

Conclusie

Het implementeren van deze best practices zal de beveiliging en het beheer van je Linux servers aanzienlijk verbeteren. Door gebruik te maken van tools zoals Ansible, kun je veel van deze taken automatiseren en consistentie in je beveiligingsbeleid garanderen. Het gebruik van een bastion host biedt een extra beveiligingslaag door de toegang tot je netwerk te reguleren.

Met de juiste aanpak en hulpmiddelen kun je een robuuste en veilige Linux omgeving opzetten en onderhouden, waardoor je systemen beter bestand zijn tegen mogelijke bedreigingen en aanvallen.

Wil je meer weten over het beveiligen van je Linux servers, laat dan zeker iets weten.

Jouw feedback

Chatten
1
💬 Meer info?
Hallo 👋🏼
Kan ik een vraag voor jou beantwoorden?