"Deny:DNS Error" log meldingen op een FortiGate

kennislevel 1 kennislevel 2 kennislevel 2 Technisch niveau Waddinxveen, 05 maart 2018 Waddinxveen, 05 maart 2018 Networking Networking

Als u weleens in het log van een FortiGate heeft gekeken, zal de melding "Deny: DNS Error" en "Threat: 262144" u niet onbekend voorkomen. Deze melding wordt vrij vaak gegenereerd en kan u op het verkeerde been zetten, wanneer u aan het troubleshooten bent.

Waarom wordt deze melding gegenereerd? Wordt er ook daadwerkelijk DNS verkeer geblokkeerd? Dit artikel behandelt deze melding en geeft antwoord op deze vragen.

Hoe ga je te werk?

De "Deny:DNS Error" meldingen zijn geïmplementeerd in FortiOS 5.4. In deze versie wordt een log melding gegenereerd wanneer de FortiGate detecteert dat er een DNS fout plaatsvindt. Verschillende oorzaken kunnen de melding genereren:

1. Er wordt niet-DNS verkeer door de DNS poort (UDP/53) verstuurd.

2. DNS pakket is te groot of heeft ongeldige waarden.

3. Het antwoord van de DNS server heeft een andere status dan "NOERROR".

4. Er wordt een ongeldig antwoord verstuurd door de DNS server.

Meestal is oorzaak 3 van toepassing. Als een domein opgevraagd wordt dat niet bestaat, wordt deze beantwoord met een error. Een voorbeeld: We hebben een linux machine waarbij we (door een FortiGate heen) opvragen welk IP adres "google.com" heeft aan de Google DNS server (8.8.8.8):
linux:~$ dig @8.8.8.8 google.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6005
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 278 IN A 172.217.17.110

;; Query time: 21 msec
;; SERER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Feb 13 11:14:27 CET 2018
;; MSG SIZE rcvd: 55
Deze aanvraag wordt door de FortiGate behandeld zonder foutmelding: Google DNS server (8.8.8.8) Google DNS server (8.8.8.8) Om de DNS Error te genereren, vragen we nu een niet-bestaand domein op en krijgen we een "status: NXDOMAIN" als antwoord: linux:~$ dig @8.8.8.8 wxwxwxwxw.google.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 wxwxwxwxw.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30760
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;wxwxwxwxw.google.com. IN A

;; AUTHORITY SECTION:
google.com. 59 IN SOA ns1.google.com. dns-admin.google.com. 185470036 900 900 1800 60

;; Query time: 28 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Feb 13 11:15:27 CET 2018
;; MSG SIZE rcvd: 99
Nu zien we 2 log vermeldingen verschijnen in het Forwarding log van de FortiGate: Een "Deny:DNS error" en een DNS Allow erachteraan: DNS Error te genereren In de DNS Error log zien we de volgende melding: DNS Error log Om deze melding in het kort samen te vatten: De FortiGate logt in dit geval een "Deny: DNS Error" omdat de DNS server antwoordt met status "NXDOMAIN" (Non existent domain). De FortiGate ziet dit als een DNS fout en stuurt een DNS antwoord naar de client met dezelfde DNS status en logt zowel de eerste toelating van de DNS sessie, als het feit dat de DNS server een ander antwoord stuurt dan "NOERROR".

Over het algemeen is de foutmelding "Deny: DNS Error" dus geen gevaar. De bedoeling van deze melding is om netwerkbeheerders te helpen met DNS ontwerp en DNS fouten te onderscheppen en uit een log te halen, maar helaas leidt dit vaak tot verwarring.

Als het DNS verkeer van een (vertrouwde) interne machine naar een vertrouwde interne DNS server gaat, kan deze melding over het algemeen genegeerd worden. Zolang de client antwoord krijgt op alle DNS vragen zult u er ook niets van merken.

Er is ook een mogelijkheid om DNS inspectie uit te zetten en deze meldingen dus uit te schakelen.

Notitie: Als U gebruik maakt van een DNS server die vanaf internet benaderbaar is, is het zeer onverstandig om DNS inspectie uit te zetten. Over het algemeen wilt u DNS inspectie ingeschakeld houden om een betere veiligheid te garanderen.

DNS inspectie kan als volgt uitgezet worden:

Verbind met de Console van de FortiGate, middels de GUI of SSH en zoek de DNS-UDP entry op onder "config system session-helper":
FortiGate # config system session-helper

FortiGate # show
(snip) edit 14 set name dns-udp
set protocol 17
set port 53
next
(snip)
Verwijder vervolgens deze entry met het volgende commando: FortiGate # delete 14
FortiGate # end

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