Systems and methods for zero trust DNS based networking
Examples of the present disclosure describe systems and methods for zero trust domain name system (DNS) (ZTDNS) based networking. A computing device implementing ZTDNS based networking blocks any outbound connections that are not included in a list of trusted IP addresses. The list of trusted IP addresses is updated in response to the computing device receiving from a trusted DNS server an IP address corresponding to a DNS request. In some examples, the ZTDNS based networking intercepts and evaluates outbound communications for applications that implement a custom application DNS client. In other examples, the ZTDNS based networking intercepts and evaluates outbound communications for virtual environments. The outbound communications for both the custom application DNS client and the virtual environments are proxied through a local DNS client of the computing device.
1 . A system comprising:
a processing system; and
memory comprising executable instructions that when executed, perform operations comprising:
providing, by a client application of a computing device of the system, a first query for a name resolution for a domain name of a resource;
approving, by a filter driver of the computing device, the first query based on a stored first internet protocol (IP) address corresponding to a domain name system (DNS) server, wherein the filter driver is registered with a filtering platform implemented by a Transmission Control Protocol/Internet Protocol (TCP/IP) stack of the computing device to intercept, at the TCP/IP stack, outgoing communications from the computing device;
providing, to the DNS server, the first query;
receiving, from the DNS server, a response comprising a second IP address corresponding to the domain name of the resource;
storing the second IP address at the computing device by providing, from a DNS component associated with the client application, the second IP address to a software library comprising application programming interface wrappers around one or more input/output controls that communicate with the filter driver;
providing a second query to communicate with the resource, wherein the second query comprises the second IP address and is provided in response to receiving the second IP address from a client cache of the computing device;
approving, by the filter driver, the second query based at least in part on the second IP address in the second query matching the stored second IP address; and
transmitting information to the resource based on approval of the second query.
2 . The system of claim 1 , wherein the providing, by the client application, the first query for the name resolution comprises providing the first query to a DNS client of the computing device.
3 . The system of claim 2 , wherein the DNS client is configured to access a DNS cache and search for an IP address stored in the DNS cache corresponding to the domain name of the resource.
4 . The system of claim 1 , wherein the providing, to the DNS server, the first query comprises providing the first query from a DNS client of the computing device to the DNS server.
5 . The system of claim 4 , wherein the first query is encrypted using at least one of:
DNS over Hypertext Transfer Protocol Secure;
DNS over Transport Layer Security;
DNS over Quick User Datagram Protocol Internet Connections; or
DNSCrypt.
6 . The system of claim 1 , wherein the DNS server is trusted based on a certificate stored on the computing device to verify identity of the DNS server.
7 . The system of claim 1 , wherein storing the second IP address at the computing device comprises adding the second IP address to an internal lookup table.
8 . The system of claim 1 , wherein the storing the second IP address at the computing device comprises storing the second IP address in a storage element associated with the filter driver.
9 . The system of claim 1 , wherein the transmitted information comprises an access query to access the resource.
10 . The system of claim 1 , the operations further comprising:
providing, from the software library to the filter driver, the second IP address, wherein the filter driver is configured to store the second IP address at the computing device.
11 . A method, comprising:
providing, from a client application of a computing device to a first domain name system (DNS) client of the client application, a DNS query for a resource, the DNS query comprising a domain name for the resource;
intercepting, by a second DNS client of the computing device, the DNS query;
generating a proxy query representing the DNS query based at least in part on the intercepting;
approving, by a filter driver of the computing device, the proxy query based on a stored first IP address corresponding to a DNS server, wherein the filter driver is registered with a filtering platform implemented by a Transmission Control Protocol/Internet Protocol (TCP/IP) stack of the computing device to intercept, at the TCP/IP stack, outgoing communications from the computing device;
providing the proxy query to the DNS server;
receiving, from the DNS server, a response comprising a second IP address corresponding to the domain name of the resource;
storing the second IP address at the computing device by providing, from the second DNS client, the second IP address to a software library comprising application programming interface wrappers around one or more input/output controls that communicate with the filter driver;
providing, from the client application, a second query to communicate with the resource, wherein the second query is provided in response to receiving the second IP address from a client cache of the computing device;
approving the second query based on the stored second IP address; and
transmitting information to the resource based on approval of the second query.
12 . The method of claim 11 , wherein the computing device is provisioned with a digital certificate enabling the computer device to verify identity of the DNS server.
13 . The method of claim 11 , wherein intercepting the DNS query comprises intercepting the DNS query at the TCP/IP stack of the computing device.
14 . The method of claim 11 , wherein storing the second IP address at the computing device further comprises:
providing, from the software library, the second IP address to the filter driver; and
storing, by the filter driver, the second IP address in a data store of the computing device.
15 . The method of claim 11 , wherein the first DNS client is pre-configured to provide the DNS query to the second DNS client.
16 . A device comprising:
a processing system; and
memory coupled to the processing system, the memory comprising computer executable instructions that, when executed, perform operations comprising:
providing, by a client application of a computing device via a domain name system (DNS) client component, a first query for a name resolution for a domain name of a resource;
approving, by a filter driver of the device, the first query based on a stored first internet protocol (IP) address corresponding to a DNS server, wherein the filter driver is registered with a filtering platform implemented by a Transmission Control Protocol/Internet Protocol (TCP/IP) stack of the computing device to intercept, at the TCP/IP stack, outgoing communications from the computing device;
providing, to the DNS server, the first query;
receiving, from the DNS server, a response comprising a first internet protocol (second IP address corresponding to the domain name of the resource;
storing the second IP address at the computing device by providing, from the DNS component, the second IP address to a software library comprising application programming interface wrappers around one or more input/output controls that communicate with the filter driver;
providing the second IP address to the client application;
providing a second query to communicate with the resource, wherein the second query comprising comprises the second IP address and is provided in response to receiving the second IP address from a client cache of the computing device;
approving, by the filter driver, the second query based on the second IP address in the second query matching the second IP address stored at the computing device; and
accessing the resource using the second IP address.
17 . The device of claim 16 , wherein the DNS component is a DNS client of the computing device.
18 . The device of claim 16 , wherein the DNS component is configured to access the client cache to search for the second IP address.