DNS over TLS를 사용하여 Linux에서 DNS 개인 정보 보호를 얻는 방법

컴퓨터는 매일 수많은 DNS 쿼리를 인터넷으로 전송합니다. 대부분의 경우, 운영 체제는 이러한 쿼리를 제대로 보호하지 않으며, 악의적인 목적을 가진 사람이 개인 정보를 손쉽게 탈취할 수 있는 위험에 노출되어 있습니다.

과거에 저희는 DNSCrypt에 대해 논의한 적이 있습니다. 이는 DNS 개인 정보 보호를 위한 훌륭한 방법 중 하나입니다. 그러나 이것만이 유일한 해결책은 아닙니다. 또 다른 유용한 대안으로 TLS를 통해 DNS 쿼리를 전송하는 방법을 고려해 볼 수 있습니다.

방법 1 – 스터비(Stubby)

Stubby는 일부 Linux 배포판에서 TLS를 통해 DNS 쿼리를 전송할 수 있도록 지원하는 사용하기 쉬운 프로그램입니다.

Stubby 도구는 Ubuntu Linux, Debian Linux 및 Arch Linux에서 정상적으로 작동합니다. 이 도구를 설치하려면 키보드에서 Ctrl + Alt + T 또는 Ctrl + Shift + T 키를 눌러 터미널 창을 실행하십시오. 그런 다음 현재 사용 중인 Linux 운영 체제에 맞는 명령줄 지침을 따라 진행하시면 됩니다.

우분투 (Ubuntu)

Ubuntu에 Stubby를 설치하려면 먼저 Ubuntu “Universe” 소프트웨어 저장소를 활성화해야 합니다. 터미널 창에서 다음의 apt-add-repository 명령을 사용하여 이를 수행할 수 있습니다.

sudo add-apt-repository universe

add-apt-repository 명령을 실행한 후, Ubuntu가 소프트웨어 업데이트를 확인하도록 업데이트 도구를 실행해야 합니다. 또한 Universe 소프트웨어 소스에서 릴리스 정보를 다운로드하여 시스템에 추가합니다.

sudo apt update

업데이트 명령이 완료되면, Apt install 명령을 사용하여 Ubuntu Linux 운영 체제에 Stubby를 설치합니다.

sudo apt install stubby

데비안 (Debian)

Debian 버전 10의 경우 “Sid” 저장소의 “Main” 소프트웨어 저장소에서 Stubby 도구를 찾을 수 있습니다. 설치하려면 터미널 창을 실행하고 아래의 apt-get 명령을 사용하십시오.

sudo apt-get install stubby

아치 리눅스 (Arch Linux)

Arch Linux 사용자는 “커뮤니티” 소프트웨어 저장소가 설정되어 있다면 Stubby를 설치할 수 있습니다. 설정을 위해서는 /etc/pacman.conf 파일을 편집하고 파일의 맨 아래로 스크롤한 다음, “커뮤니티” 앞의 # 기호를 제거한 후 시스템을 업데이트해야 합니다.

“커뮤니티”가 설정되면, Pacman 패키지 관리자를 사용하여 Stubby 애플리케이션을 설치합니다.

sudo pacman -S stubby

Stubby 애플리케이션이 설치되면, 구성 파일을 수정할 필요가 없습니다. Stubby에는 TLS를 지원하는 일부 우수한 DNS 서비스가 미리 설정되어 있기 때문입니다.

참고: DNS 서비스를 변경하려면 /etc/stubby/stubby.yml 파일을 편집하십시오.

Stubby를 사용하여 TLS를 통한 DNS를 설정하는 마지막 단계는 현재 사용 중인 주소에서 기본 DNS 설정을 127.0.0.1 주소로 변경하는 것입니다.

DNS 설정 변경 방법은 사용 중인 Linux 데스크톱 환경에 따라 다를 수 있으므로, 이 게시물에서는 자세히 다루지 않습니다. 자세한 내용은 DNS 설정을 변경하는 방법에 대한 다른 가이드를 참조하시기 바랍니다.

DNS 설정이 127.0.0.1로 변경되면 Linux 시스템은 TLS를 통해 DNS를 사용하게 됩니다!

방법 2 – Systemd-resolved 활용

Stubby 도구는 설정이 쉽고, Linux에서 TLS를 통한 DNS 전송을 매우 간단하게 만들어주지만, 모든 배포판에서 정상적으로 작동하는 것은 아닙니다.

Linux에서 DNS over TLS를 구성하기 위한 Stubby 프로그램의 훌륭한 대안은 Systemd-resolved DNS 캐싱 시스템을 사용하는 것입니다. 그 주된 이유는 대부분의 Linux 운영 체제에서 이미 사용하고 있는 Systemd init 시스템에 내장되어 있고, 사용을 시작하기가 쉽기 때문입니다. 그러나 TLS를 통한 DNS를 위해 Systemd-resolved를 설정하기 전에, Systemd-resolved를 위해 현재 사용 중인 DNS 캐시 시스템을 종료해야 합니다.

Systemd-resolved 시스템을 설정하려면 키보드에서 Ctrl + Alt + T 또는 Ctrl + Shift + T를 눌러 명령줄 터미널을 실행하십시오. 그런 다음 systemctl 명령을 사용하여 현재 사용 중인 DNS 캐시 시스템을 비활성화합니다.

참고: DNS Masq 또는 NSCD를 사용하지 않는 경우, 이미 Systemd-resolved를 사용하고 있을 가능성이 높으므로 아무것도 비활성화할 필요가 없을 수 있습니다.

DNS 마스크 (DNS Masq)

sudo systemctl stop dnsmasq.service
sudo systemctl disable dnsmasq.service -f

NSCD

sudo systemctl stop nscd.service -f
sudo systemctl disable nscd.service -f

Linux PC에서 기본 DNS 공급자가 꺼져 있으면, Systemd-resolved로 전환해야 합니다. 이를 위해 다시 한번 systemctl 명령을 사용하십시오.

sudo systemctl enable systemd-resolved.service -f
sudo systemctl start systemd-resolved.service

Systemd를 통해 도구를 활성화하면 TLS를 통한 DNS를 사용하도록 프로그램을 구성할 수 있습니다. 시작하려면 Nano 편집기를 사용하여 도구의 구성 파일을 실행하십시오.

sudo nano -w /etc/systemd/resolved.conf

Nano를 사용하여 resolved.conf 파일을 편집하고 DNS= 라인까지 아래로 스크롤합니다.

= 기호 뒤에 CloudFlare의 개인 정보 DNS 서버와 같은 안전한 TLS 사용 DNS 서버를 추가합니다. 다음과 같아야 합니다.

DNS=1.1.1.1

그런 다음 Domains= 라인으로 이동하여 아래 코드와 같이 변경합니다.

Domains=~.

“Domains” 라인 다음으로 DNSOverTLS= 라인으로 이동하여 아래 코드와 같이 변경합니다.

DNSOverTLS=opportunistic

Ctrl + O 키를 눌러 수정 사항을 resolved.conf에 저장한 다음, Ctrl + X 키로 종료하고, DNS 시스템을 다시 시작하여 Systemd-resolved로 TLS를 통한 DNS를 활성화하십시오!

sudo systemctl restart  systemd-resolved