Fortigate conserve-mode

kennislevel 1 kennislevel 2 kennislevel 3 Technisch niveau Waddinxveen, 10 oktober 2017 Waddinxveen, 10 oktober 2017 Security Security

Wanneer er een geheugentekort dreigt op te treden op een FortiGate systeem, gaat deze ter zelfbescherming in "conserve-mode". De FortiGate activeert daarmee beschermingsmaatregelen om een geheugentekort te voorkomen. Wanneer er weer voldoende geheugen "vrij" is, gaat het systeem "uit" de "conserve-mode".

Er zijn twee soorten conserve-mode: proxy conserve mode en kernel conserve mode.

Conserve-mode Fortigate

Proxy Conserve-Mode Het proxy conserve-mode mechanisme wordt geactiveerd bij gebruik van "proxy-based" inspectie.

De geheugen drempelwaarden voor het activeren en het deactiveren, zijn afhankelijk van de hoeveelheid vrij geheugen. Deze drempel varieert per model en wordt bepaald door het totale geheugen dat beschikbaar is op dat model (meestal rond de 20%). De werking en troubleshooting van conserve mode is ook firmware afhankelijk, lees daarom goed de release notes!

Totaal Geheugen Enter Drempelwaarde - Vrij Geheugen Exit Drempelwaarde - Vrij Geheugen
>=128MB 10MB 20MB
>=256MB 40MB 60MB
>>=512MB 20% 30%
>>=1GB 12% 18%
Proxy conserve mode wordt, ofwel veroorzaakt door processen, die te veel geheugen verbruiken (zeldzaam geval) maar in de meeste gevallen door het hoge gebruik van "shared memory" (SHM).

Gedeeld geheugen zijn buffers, die onder verschillende processen kunnen worden gedeeld. Het is niet vermeld op de procesgeheugenkolommen van “diag sys top”. Gedeeld geheugen wordt hoofdzakelijk gebruikt door proxies (om de gebufferde gegevens op te slaan) b.v. anti-virus , maar ook voor logging, quarantining enz.

Bij het activeren en verlaten van de proxy conserve mode, worden de volgende log meldingen weergegeven:

conserve=on total=<totalmemMB> free=<freememMB> entermargin=<LF> exitmargin=<HF> msg="The system has entered conserve mode"
conserve=exit total=<totalmemMB> free=<freememMB> entermargin=<LF> exitmargin=<HF> msg="The system exited conserve mode"

Wanneer de FortiGate in proxy conserve mode staat, zijn de effecten daarvan afhankelijk van wat er onder "av-failopen" staat ingesteld. Er zijn 4 configuratie-instellingen mogelijk, waarbij "pass" de default is.

config system global
set av-failopen {off | pass | one-shot | idledrop}
end


OFF:
De "off" instelling zorgt dat de FortiGate alle verkeer, dat is geconfigureerd voor inhoudsinspectie door beveiligingsprofielen, in de AV-proxy stopt. Nieuwe sessies zijn niet toegestaan, maar de huidige sessies worden normaal verwerkt, tenzij ze meer geheugen vragen. Sessies die meer geheugen vragen, worden beëindigd.

Als een policy bijvoorbeeld is geconfigureerd om antivirus-scanning te gebruiken, wordt het verkeer dat het normaal gesproken zou toelaten, geblokkeerd. Een policy met alleen IPS-scanning wordt normaal afgehandeld. Een policy met zowel IPS als antivirus-scanning wordt geblokkeerd omdat antivirus-scanning de AV-proxy vereist.

Gebruik de "off" instelling wanneer beveiliging belangrijker is dan een verlies van toegang, totdat het probleem is opgelost.

PASS:
De "pass" instelling stelt het verkeer in staat om de AV-proxy te omzeilen en door te gaan naar de bestemming. Aangezien het verkeer de proxy omzeilt, wordt het scannen van policies die de AV-proxy vereisen, niet uitgevoerd. Policies, die het AV-proxy niet nodig hebben, gaan normaal door.

Gebruik de pasinstelling als toegang belangrijker is dan beveiliging, Totdat het probleem is opgelost.

Pass is de standaardinstelling!!!

ONE-SHOT:
De "one-shot" instelling is te vergelijken met de "pass" instelling: het omzeilt ook de AV-proxy. Het verschil is dat een systeem dat is geconfigureerd met "one-shot", nieuwe sessies zal dwingen om de AV-proxy te omzeilen, zelfs nadat het de conserve-mode heeft verlaten. De FortiGate hervat het gebruik van de AV-proxy alleen als de "av-failopen" instelling handmatig is gewijzigd of het apparaat opnieuw wordt gestart.

IDLEDROP:
De "idledrop" instelling herstelt geheugen en sessieruimte door alle sessies, die geassocieerd zijn met de host die de meeste sessies heeft geopend, te beëindigen. De FortiGate kan deze sessieafsluiting een aantal keren dwingen, totdat er voldoende geheugen beschikbaar is om de conserve-mode te verlaten.

De "idledrop" instelling is voornamelijk bedoeld voor situaties waarin bijvoorbeeld malware steeds nieuwe sessies opent totdat de AV-proxy geen nieuwe sessies kan accepteren, waardoor de conserve-mode wordt geactiveerd. Als de FortiGate in de buurt van zijn topcapaciteit werkt, kan deze instelling leiden tot beëindiging van geldige sessies. Gebruik deze optie voorzichtig.
Kernel Conserve-Mode
Totaal Geheugen Enter Drempelwaarde - Vrij Geheugen Exit Drempelwaarde - Vrij Geheugen
>>=512MB 20% 30%
>>=1GB 200MB 300MB
Bij het activeren of verlaten van de kernel conserve-mode worden gebeurtenislogboeken zoals hieronder weergegeven:

"The system has entered system conserve mode"
"The system exited system conserve mode"

In het GUI dashboard:

"FortiGate has reached system connection limit for x seconds"

De kernel conserve mode is onafhankelijk van de proxy conserve mode, in die zin dat het controlemechanisme altijd aan staat, ongeacht of er policies gebruikt worden met AV-proxy. Dit is een "last resort" mechanisme om te garanderen dat de FortiGate blijft functioneren.
Door gebruik te maken van "diagnose hardware sysinfo memory", kunnen alle geheugen tellers die betrokken zijn in de conserve-mode en de kernel conserve mode berekening worden gezien.

diagnose hardware sysinfo memory
MemTotal: 8188884 kB
MemFree: 2338140 kB
Buffers: 134000 kB
Cached: 2088456 kB
SwapCached: 0 kB
Active: 3067120 kB
Inactive: 1014748 kB
Active(anon): 2009888 kB
Inactive(anon): 79104 kB
Active(file): 1057232 kB
Inactive(file): 935644 kB
Unevictable: 96836 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 604 kB
Writeback: 0 kB
AnonPages: 1956248 kB
Mapped: 126512 kB
Shmem: 132744 kB
Slab: 168184 kB
SReclaimable: 100972 kB
SUnreclaim: 67212 kB
KernelStack: 1120 kB
PageTables: 31456 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4094440 kB
Committed_AS: 27110464 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 665708 kB
VmallocChunk: 34359070548 kB
DirectMap4k: 8192 kB
DirectMap2M: 8380416 kB


Met het commando "diag sys top-summery" kan je zien of een bepaald proces veel geheugen gebruikt:
CPU [] 3.0%
Mem [] 71.0% 5718M/7996M
PID RSS CPU% MEM% FDS TIME+ NAME
* 18776 19M 4.7 0.2 12 00:00.79 sshd [x4]
18764 52M 1.9 0.7 1021 20:46.80 wad [x5]
18747 390M 0.9 4.9 254 43:17.80 ipsmonitor [x5]
Om bijvoorbeeld een proces dat veel geheugen gebruikt, te herstarten of te troubleshooten, kan je het volgende commando gebruiken:

diagnose test application <application name> <level>

Als je de level waarde niet weet, voer dan het commando uit zonder een level, je krijgt dan een menu met opties te zien:

diag test application ipsmonitor

IPS Engine Test Usage:

1: Display IPS engine information
2: Toggle IPS engine enable/disable status
3: Display restart log
4: Clear restart log
5: Toggle bypass status
6: Submit attack characteristics now
10: IPS queue length
11: Clear IPS queue length
12: IPS L7 socket statistics
13: IPS session list
14: IPS NTurbo statistics
15: IPSA statistics
16: Display device identification cache
17: Clear device identification cache
21: Reload FSA malicious URL database
22: Reload whitelist URL database
24: Display Flow AV statistics
25: Reset Flow AV statistics
96: Toggle IPS engines watchdog timer
97: Start all IPS engines
98: Stop all IPS engines
99: Restart all IPS engines and monitor


Het commando "diag hardware sysinfo shm" geeft de shared memory waardes en de status van conserver mode weer.

diag hardware sysinfo shm
SHM counter: 281658
SHM allocated: 81920
SHM total: 6496452608
conserve mode: off
system last entered: n/a
sys fd last entered: n/a
SHM FS total: 6632353792
SHM FS free: 6632181760
SHM FS avail: 6632181760
SHM FS alloc: 172032

Als de FortiGate "vaak" in conserve-mode gaat, zijn er een paar opties om geheugengebruik te minimaliseren, "fijntunen":

• Schakel "logging to memmory" uit
• Verminder policy regels waar anti-virus word uitgevoerd
• Schakel DHCP-server uit
• Schakel DNS forwarding uit
• Wijzig sessie TTL waardes
• Wijzig DNS cache waardes

Wanneer dit niet het gewenst effect heeft, is het hoogste tijd om je Fortigate te upgraden naar een groter model.

Wilt u hulp van een gecertificeerd Fortinet expert?

Contact

SolidBE B.V.
Maarten Schoutenstraat 19
2741 SV Waddinxveen

KVK 51248794
NL 82 3170 846 B01
NL07 RABO 0157 5353 98