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.