−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS

Een zelfgehoste AI-agent beveiligen op een VPS

26 sep 2026 · 4 min lezen · EQVPS Team

Een klassieke webapp doet wat zijn code zegt. Een AI-agent doet wat zijn code zegt, plus alles waartoe de tekst die hij leest hem weet over te halen. Geef hem een shell, een API-sleutel en een budget, laat hem los op het open internet, en je hebt iets nieuws gebouwd: een proces dat je met social engineering kunt manipuleren. De oplossing is geen paranoia, maar de oude sysadmin-gewoonte van minimale rechten, toegepast op een heel spraakzaam programma.

Ken de echte dreigingen

Alles hieronder maakt deze dingen minder waarschijnlijk of goedkoper als ze toch gebeuren.

1. Geef de agent een eigen machine en een eigen gebruiker

Draai agents die code uitvoeren of op het web surfen op een aparte VPS, niet naast je productiedatabase. Op die machine nooit als root:

adduser --disabled-password --gecos "" agent
mkdir -p /home/agent/work && chown agent:agent /home/agent/work

Geen sudo, geen SSH-sleutels naar andere servers, geen toegang tot iets wat hij niet nodig heeft.

2. Zet hem in een systemd-sandbox

systemd kan een proces omheinen zonder containers. De agent kan het systeem lezen, maar alleen naar zijn werkmap schrijven:

# /etc/systemd/system/agent.service
[Unit]
Description=AI agent
After=network-online.target

[Service]
User=agent
WorkingDirectory=/home/agent/work
EnvironmentFile=/home/agent/.agent.env
ExecStart=/home/agent/venv/bin/python run_agent.py
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/agent/work
PrivateTmp=yes
PrivateDevices=yes
MemoryMax=2G

[Install]
WantedBy=multi-user.target

ProtectSystem=strict maakt het hele bestandssysteem alleen-lezen behalve ReadWritePaths. MemoryMax voorkomt dat één ontspoorde taak de server platlegt. Controleer het resultaat met systemd-analyze security agent: dat geeft de unit een score en somt op wat er nog openstaat.

3. Behandel sleutels alsof ze gaan lekken

4. Begrens wat hij kan kopen

Kan de agent geld uitgeven, dan moet de limiet buiten de agent liggen. Bij EQVPS bestelt en verlengt een agent servers vanuit het prepaid saldo van het account via de MCP-server of REST API, dus het saldo is een hard plafond. Waardeer het op met het bedrag dat je bereid bent te verliezen, niet met je hele budget. Geef de agent een eigen account als hij je andere servers niet hoeft te zien.

5. Zet een mens voor onomkeerbare acties

Data verwijderen, geld versturen, naar main pushen, klanten mailen: laat die langs een bevestigingsstap gaan; een Telegram-bericht met een goedkeurknop is genoeg. Alleen-lezen-tools mogen vrij draaien; schrijvende tools verdienen hun vertrouwen langzaam.

6. Beperk de uitgangen (als je ermee kunt leven)

Een allowlist voor uitgaand verkeer maakt het wegsluizen van geheimen veel lastiger:

ufw default deny outgoing
ufw allow out 53          # DNS
ufw allow out 443/tcp     # HTTPS APIs
ufw allow out 80/tcp      # package mirrors
ufw default deny incoming && ufw allow 22/tcp && ufw enable

Eerlijk gezegd is dit de stap die de meeste mensen laten vallen: surfende agents hebben willekeurig HTTPS nodig, en dan voegt een allowlist op poort weinig toe. Het is de moeite waard voor agents die alleen een vaste set API's aanroepen.

7. Houd logs bij en een weg terug

Log elke tool-aanroep met zijn argumenten. Maak een snapshot voordat je een agent op iets nieuws loslaat: Managed Backups geven je dagelijkse herstelpunten plus snapshots op aanvraag, zodat een slechte middag een restore kost en geen herbouw.

De eerlijke conclusie

Niets hiervan maakt een agent veilig om blind te vertrouwen. Het maakt het goedkoop om fout te zitten: een gecompromitteerde agent op een eigen machine, onder een eigen gebruiker, met een begrensd saldo en beperkte sleutels, kan alleen kleine, herstelbare schade aanrichten. Dat is het realistische doel. Begin met de basis in een nieuwe VPS beveiligen en voeg daarna de agentspecifieke lagen hierboven toe.

FAQ

Wat is het grootste risico van een AI-agent op een server?

Prompt injection: de agent leest tekst die hij niet zelf schreef (een webpagina, een e-mail, een reactie in een issue) en die tekst zegt hem iets te doen waar je nooit om vroeg, zoals zijn omgevingsvariabelen tonen of een commando uitvoeren. De rest van deze gids gaat over het beperken van de schade als dat gebeurt.

Moet de agent als root draaien?

Nooit. Geef hem een eigen gebruiker zonder rechten en zonder sudo, en beperk met systemd-sandboxing waar hij mag schrijven. Wordt hij misleid om een destructief commando uit te voeren, dan kan hij alleen zijn eigen werkmap beschadigen.

Hoe voorkom ik dat een agent te veel uitgeeft?

Gebruik harde limieten die buiten de agent liggen: bestedingslimieten op de sleutels van je modelprovider en een prepaid saldo voor alles wat hij kan kopen. Bij EQVPS geeft een agent uit vanaf het accountsaldo, dus het saldo zelf is het plafond: waardeer het op met wat je bereid bent te verliezen, niet meer.

Kan ik prompt injection volledig blokkeren?

Nee: er bestaat vandaag geen betrouwbaar filter voor. Wat werkt is de impact beperken: tools met minimale rechten, menselijke bevestiging voor destructieve of betaalde acties, geen geheimen in de context van de agent en logs die je kunt nalopen.

Is een aparte VPS voor een agent het waard?

Ja, als de agent code uitvoert of op het web surft. Een kleine eigen machine houdt hem weg van je databases, andere projecten en inloggegevens. Raakt hij gecompromitteerd, dan bouw je één server opnieuw op, niet je hele omgeving.

← Terug naar blogBekijk plannen & prijzen →

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.