iptables를 사용하여 DNS 유출 방지

iptables를 사용하여 DNS 유출 방지

openvpn 서비스를 시작하고 서버에 연결할 때 다음 명령을 실행합니다.

sudo iptables -A INPUT -j DROP'
sudo iptables -A OUTPUT -j DROP
sudo iptables -A OUTPUT -o tun0 -j ACCEPT
read -p "PRESS ANY KEY TO STOP" VAR //just for easily reversing the drops when i want without bashing another file
sudo iptables -I INPUT -j ACCEPT
sudo iptables -I OUTPUT -j ACCEPT

VPN을 테스트할 때https://ipleak.net/, 누출이 없습니다. 그런데 이걸 시도해보니https://www.dnsleaktest.com/, 몇 가지 누출이 있습니다.

Wireshark를 사용하여 모든 요청과 응답을 캡처했고 포트 53에 대한 DNS 요청과 DNS 응답을 보았습니다. iptables를 사용하여 포트 53으로 나가는 것을 차단하려고 시도했지만 dns 쿼리가 계속 발생합니다. 또한 resolv conf를 업데이트하고 ip6를 비활성화하기 위해 VPN 파일에 보안 스크립트 2를 추가했습니다.

iptables나 ufw의 DNS 유출을 방지하려면 어떻게 해야 합니까?

답변1

VPN을 사용하여 연결된 시스템이 VPN 터널을 통해 DNS 요청을 VPN 공급자의 DNS 서버(또는 선택한 다른 DNS 서버)로 전달하는 대신 DNS 쿼리에 로컬 인터넷 서비스 공급자의 DNS 서버를 사용할 때 발생합니다.

VPN이 아닌 네트워크 인터페이스에서 나가는 DNS 요청을 삭제하면 호스트 이름을 사용하는 네트워크 액세스가 매우 느려질 수 있습니다. 왜냐하면 각각의 새로운 연결 전에 필요한 DNS 쿼리가 VPN에 의해 ​​백업 DNS 서버가 종료되기 전에 시간 초과되어야 하기 때문입니다. 시도됨) 또는 완전히 중지됩니다(로컬 DNS 확인자가 아직 VPN 클라이언트로부터 새 DNS 서버를 받지 못하고 차단한 ISP 서버만 계속해서 다시 시도하는 경우).

단순히 "유출을 막으려고" 노력하는 대신, VPN 연결을 활성화할 때 VPN 공급자의 DNS 서버가 단독 사용으로 구성되지 않은 이유를 알아내야 합니다.

먼저 VPN 연결이 활성화되면 ISP의 DNS 서버를 참조하는 설정이 VPN 클라이언트에서 구성한 다른 DNS 서버로 대체되는지 확인해야 합니다.

어디를 봐야 할지 알려면 먼저 실행하여 grep hosts /etc/nsswitch.conf출력을 확인하세요. 형식은 다음과 같습니다.

hosts:  <some keywords>

이는 호스트 이름을 확인하는 데 사용되는 메커니즘을 정의합니다.

<some keywords>는 적어도 files(의미 /etc/hosts) 및 dns또는 로 대체되어야 합니다 resolve. 다른 키워드가 있을 수도 있습니다.

dns./etc/resolv.confresolvconf/etc/resolv.conf​이 resolvconf도구는 각 네트워크 인터페이스와 연관된 DNS 설정을 추적하여 /etc/resolv.conf구성 가능한 네트워크 인터페이스 우선 순위에 따라 앙상블을 생성하고 네트워크 인터페이스가 종료될 때 적절한 DNS 설정이 복원되도록 합니다.

시스템에서 하나를 사용하는 경우 구성 파일을 resolvconf읽고 man 5 interface-order확인하여 /etc/resolvconf/interface-orderVPN 인터페이스가 VPN 연결이 실행 중인 물리적 인터페이스보다 더 높은 우선순위를 갖고 있는지 확인하십시오.

resolve해당 구성을 보기 위해 systemd-resolved새 실행을 사용함을 나타냅니다 . resolvectl status이는 일반적으로 이전 glibc 확인자를 사용하여 수행된 DNS 쿼리 /etc/resolv.confnameserver 127.0.0.53다시 systemd-resolved.

resolvconfVPN 클라이언트가 둘 중 하나 또는 둘 다를 사용할 때 도구나 메커니즘이 존재한다는 사실을 알지 못한다면 systemd-resolved결과는 엉망이 될 것입니다. 불행하게도 이러한 도구가 시스템에서 사용되는 경우 openvpn 서비스가 이러한 도구와 완전히 통합될 수 있는지 확인해야 합니다.

이 데몬은 NetworkManager네트워크 인터페이스의 전반적인 제어에도 사용될 수 있습니다. 데몬은 resolvconf및/또는 시스템에서 이러한 다른 구성 요소가 사용되지 않는 경우 직접 업데이트 할 수 있습니다 systemd-resolved./etc/resolv.conf

Linux 배포판의 이름과 버전, 현재 구성을 알지 못하면 추가 조언을 제공하기가 어렵습니다.

더 나은 답변을 원하시면 다음 정보를 최대한 많이 포함하도록 질문을 편집하십시오.

  • Linux 배포판의 이름과 버전은 무엇입니까?
  • 네트워크 관리자인가요?
  • hosts:당신의 대사는 무엇을 말합니까 /etc/nsswitch.conf?
  • 귀하의 OpenVPN 서비스는 NetworkManager통합되어 있거나 resolvconf직접 편집됩니까 /etc/resolv.conf?

관련 정보