본문 바로가기
IT/Linux&Unix

OPNSense와 함께 OpenDNS 사용하기

by 아키다 2019. 1. 11.







*





OPNSense와 함께 OpenDNS 사용하기

   |   출처

나는 OPnetense 를 몇 달 동안 방화벽으로 사용하고 있습니다 . 나는 그것을 정말로 파헤친다. 나는 PFSense에서 전환했는데, 나는 그 때 2 주 동안 운영 해왔다. 그 전에는 Apple AirPort Extreme을 방화벽 / 라우터로 사용하고있었습니다.

소비자 등급의 방화벽 / 라우터에서 벗어난 스위치로 인해 나는 확장 된 컨트롤을 얻었습니다. 특히, 난 정말 즐겼다 쉬운 셋업 의 OpenVPN을 내 홈 네트워크에 다시. 나는 OPNSense로 했던 것처럼 쉽게 AirPort 극한으로 할 수 없었 습니다 .

그러나 공항 익스트림에서 일하기가 매우 쉬웠던 한 가지가 언제나 없었습니다. OpenDNS. 오늘 Freenode 의 #OPNSense IRC 방에있는 PiBa-NL의 도움으로 마침내 모든 것을 정리했습니다.

부인, 보수 및 의존성

이 문제에 너무 많이 들어가기 전에 면책 조항을 발행해야합니다. OPNSense 는 개발중인 제품이기 때문에 상황이 꽤 빨리 돌아 다니는 경우가 있습니다. 현재 OpenSSL 1.0.2d와 FreeBSD 10.1-RELEASE-p14 기반에서 실행되는 OPNsense 15.7.4-amd64에 있습니다. 2015 년 7 월 9 일에 SSL 작업을하고 있습니다. 나는 아래에서 읽으려는 내용이 OPNSense 15.7 버전에서 작동 할 것이라는 점을 의심 스럽지만 보장 할 수는 없습니다 .

OpenDNS 계정 이 있다고 가정하고 DNS가 일반적으로 작동하는 방식에 대해 기본적으로 이해하고 있습니다. 이런 것들이 없다면, 지금 당장은별로 의미가 없을 수도 있습니다.

마지막으로 IP 주소로 192.168.1.1을 사용하여 OPNSense 방화벽 을 나타냅니다 해당 IP 주소를 구성에 적합한 IP 주소 또는 호스트 이름으로 바꿔야합니다.

OPNSense 에서 OpenDNS 계정 설정하기

첫 번째 단계는 OpenDNS 자격 증명으로 OPNSense 를 구성하는  입니다. 에서 OPNSense UI, 당신은 DNS 필터 → 서비스를 통해 거기에 도착하거나 https://192.168.1.1/services_opendns.php로 바로 이동할 수 있습니다. 당신은 오픈 DNS를 사용하고,이에 나타나는 네트워크의 사용자 이름, 암호 및 이름을 입력합니다 확인란을 선택하는 것이 좋습니다 오픈 DNS의 setings .

모든 것을 입력했으면 좋은 측정 값으로 저장을 누르고 테스트 / 업데이트 버튼을 누릅니다. 테스트가 통과되었다는 피드백을 받아야합니다.


=



위로 얼룩진 부분 대신에 OpenDNS의 전자 메일 주소와 IP 주소가 있어야합니다.

이 시점에서 필자는 OpenDNS 자격 증명을 입력함으로써 OPNSense 가 OpenDNS 설정을 마술처럼 빨아 들이고 모든 것을 설정할 수 있다고 가정했습니다 (분명히 잘못되었습니다) 그렇게하지 않은 것 같습니다. 그게 우리를 이끌고 ...

OpenDNS 이름 서버 추가

에서 OPNSense , 시스템 → 설정, 또는 https://192.168.1.1/system_general.php로 이동합니다. 아래로 스크롤하여 DNS 서버 섹션으로 이동하여 여기에 구성 될 수있는 DNS 서버를 모두 지 웁니다. OpenDNS 이름 서버로 바꿉니다.이 서버는 208.67.222.222 및 208.67.220.220입니다. 게이트웨이를 없음으로 설정해야합니다.

=



DHCP 덮어 쓰기 끄기

이 모든 것을 준비하려고 할 때, 저는 포럼에서 많은 시간을 보냈습니다. OPNSense 의 훨씬 오래된 버전 이었지만 DNS 필터 옵션이 추가되기 전에도 일부 답변이있는 것으로 보이는 스레드를 발견했습니다 이 스레드는 OpenDNS를 제대로 작동 시키려면 "WAN에서 DHCP / PPP로 DNS 서버 목록을 무시하도록 허용"옵션을 선택해야합니다. 이 옵션을 선택하면 ISP가 제공하는 DNS 서버가 조회에 사용될 것임을 명확하게 명시하고 있으므로 나에게 이해가되지 않습니다.

솔직히, 나는 내 문제가 모두 OpenDNS 네임 서버를 수동으로하지 않았다고 생각한다. 이것은 그 상자를 선택 해제 할 때 모든 이름 확인을 잃을 것임을 의미했습니다.

TL, 여기서 DR은 "WAN에서 DHCP / PPP에 의해 DNS 서버 목록이 무시되도록 허용"이 선택 해제되어야합니다.

"DNS 전달자를 방화벽의 DNS 서버로 사용하지 마십시오."라는 바로 다음의 확인란은 전적으로 귀하에게 달려 있습니다. 상자를 체크하면 OPNSense 는 조회를 수행 할 때 자신을 이름 서버로 사용합니다. 나는 그것을 체크하지 않았지만 어느 쪽이든 괜찮을 것이다.

결국 DNS 설정은 아래에서 보는 것과 매우 비슷하게 보입니다.

=




기타 DNS 설정

OPNSense 에는 OpenDNS의 성공 가능성 을 간섭 할 수 있는 몇 가지 다른 DNS 서비스 가 있습니다.

첫 번째는 DNS 전달자입니다. DNS 전달자가 활성화되어 있는지 확인해야합니다. 서비스 → DNS 전달자 (또는 https://192.168.1.1/services_dnsmasq.php)로 이동하여 서비스를 활성화 할 상자가 선택되어 있는지 확인하여이를 수행 할 수 있습니다. 선택하지 않은 경우 확인하고 저장을 누릅니다.

두 번째는 DNS Respolver입니다. 내가 말할 수있는 모든 것에서이 서비스를 사용 중지해야합니다. 이것이 가능하다면 아마도 네트워크 내부에서 사용할 일종의 DNS 서버를 만들려고 시도했을 것입니다. 선택을 취소하면이 서비스가 비활성화됩니다. 이것이 OpenDNS에서 작동하고 여전히 작동 할 수있는 것처럼 보이지만, 지금까지는 운이 없었습니다. 내부 DNS 작업을하고 싶기 때문에 계속 게임을 할 것입니다. 당분간, 나는 그것을 떠날 것이다.

DHCP 설정

마지막으로 한 가지 점에서 필자는 DHCP 설정에서 OPNSense 방화벽 의 IP 주소를 전달하려고 시도했었다 왜 이것이 효과가 없었는지 아직 확실하지 않지만 그렇지 않습니다. DHCP 서버 설정 (https://192.168.1.1/services_dhcp.php)에서 DNS 서버는 완전히 비어 있습니다. 이 방법으로 DHCP 서버를 구성하면 OPNSense 는 자동으로 모든 클라이언트가 사용할 수 있도록 DNS 서버로 자신을 넘겨줍니다.

그것을 모두 위로 감싼다.

일단 내가 모든 것을 구성하고 분명히 작동한다면, 마지막 단계는 OPNSense 를 재부팅 하고 다시 테스트하는 것입니다. 재부팅 후 랩톱에서 네트워크를 비활성화하고 다시 활성화하여 새로운 IP 주소를 가져 왔습니다. 내 테스트 브라우저를 열어서 인터넷 나쁜 녀석들 에게 가서 사이트가 OpenDNS에 의해 차단되고 있다는 정보를 받았습니다.

성공!!

일부 그 육즙

일단 모든 것이 작동하면, 나는 또 하나의 문제를 해결하기로 결정했다. 이 문제의 배경은 AirPort Extreme을 가장자리 네트워크 장치로 사용할 때입니다. OpenDNS를 사용하고 있었지만 돌아 다니기가 쉽지 않았습니다. 필요한 모든 일은 컴퓨터에서 DNS 설정을 재구성하는 것이 었습니다. OpenDNS는 문제가되었습니다.

운 좋게도 적절한 방화벽이 다시 실행되었으므로 일부 OB 트래픽 필터링으로이를 해결할 수 있습니다. 내 네트워크는 매우 간단합니다 (현재) - 모든 것이 단일 / 24 서브넷에서 실행됩니다. 그것은 모두 전환 된 다음 OPNSense 와 마지막으로 케이블 모뎀을 통해 인터넷으로 나가게 됩니다. 또한 내부적으로 실행되는 여러 개의 FreeBSD 감옥이 있으며 그 중 하나는 추가 DNS 서버입니다. 다른 모든 감옥은이 내부 DNS 서버를 DNS 용으로 사용합니다. 이렇게하면 IP 주소가 아닌 호스트 이름을 통해 서로 통신하도록 설정할 수 있습니다.

그로 인해, 내가해야 할 일은 포트 53에서 내 LAN에서 오는 요청을 차단하고 OPNSense 로 향하는 것이 아니라 다른 내부 DNS 서버에서 오는 것입니다. 그것은 꽤 쉬워야하는 것처럼 보입니다.

OB DNS 필터링 규칙 추가

돌아 가기 OPNSense , 방화벽 → 규칙 (https://192.168.1.1/firewall_rules.php)로 이동합니다. LAN 탭을 클릭하십시오. 모든 LAN 트래픽이 모든 곳에서 수신되도록하는 몇 가지 기본 규칙을보아야합니다. OPNSense 는 첫 번째로 일치하는 방화벽 이기 때문에 맨 위에는보다 구체적인 규칙이 필요하고 하단에는보다 일반적인 규칙이 필요합니다. 다행히도 규칙을 이동하는 것이 매우 간단합니다.

가장 낮은 플러스 (+) 기호를 사용하여 규칙을 추가하여 목록 맨 아래에 추가했습니다. 지금은 괜찮습니다. 적용하기 전에 필요한 위치로 옮깁니다.

규칙 1 : OPNSense DNS 트래픽 허용 .

=




이것은 통과 규칙입니다. 이는 특정 트래픽이 통과하도록 허용한다는 것을 의미합니다. 선택한 인터페이스는 LAN이어야합니다 (또는 내부 네트워크라고하는 곳). 내 TCP / IP 버전에 대해 IPv4 및 IPv6을 선택했습니다. 요즘에는 ISP에서 IPv6 IP를 배포하고 있기 때문에 안전하다고 생각합니다. UDP가 대부분 DNS에서 발생하지만 TCP가 될 때가 있으므로 두 프로토콜을 모두 선택하는 것이 가장 안전합니다.

이 규칙은 LAN 인터페이스의 트래픽을 찾고 있기 때문에 소스를 "모두"로 유지하는 것이 안전한 방법입니다. 대상에 대해 OPNSense 는 "This Firewall (self)"옵션을 제공하여 IPv4 및 IPv6 용의 두 가지 규칙을 생성하지 않아도됩니다. Obviosuly 대상 포트는 53으로 설정해야합니다.

허용 된 트래픽이어야하므로이 활동을 기록하지 않도록 선택했습니다. 나는 일반적으로 허용 된 트래픽을 추적하는 데 관심이 없다.

규칙을 목록에 넣으려면 저장을 클릭하십시오. 당분간은 목록 하단에 표시됩니다. 괜찮아.

선택 규칙 2 : 다른 내부 DNS 서버가 DNS 쿼리를 수행하도록 허용

=




이 규칙은 첫 번째 규칙과 매우 유사합니다. 날카로운 눈이 느끼는 변화는 다음과 같습니다.

  1. 이 규칙은 IPv4에만 적용됩니다. 내 내부 트래픽은 아직 IPv6를 사용하지 않으므로 v4 트래픽 만 처리합니다.
  2. 이 규칙의 원본은 특정 IP 주소로 설정됩니다. 이것은 FreeBSD jail을 위해 가지고있는 다른 DNS 서버의 IP 주소입니다.
  3. 대상 유형은 "모두"입니다. 그 서버가 필요에 따라 DNS 요청을 할 수 있기를 바랍니다. 자유 롭다.

다시 한 번 저장하여 규칙을 만듭니다.

규칙 3 : LAN 인터페이스에서 제공되는 DNS 트래픽을 거부합니다.

=




이 규칙은 LAN 인터페이스에도 적용되는 블록 규칙입니다. IPv4 & IPv6 및 TCP & UDP에서도 일치하도록 설정됩니다. 소스 유형은 포트 제한없이 "모두"입니다. 대상 유형은 "Any"이며 대상 포트는 53입니다.

주문 수정 및 적용

규칙을 임의로 뒤섞기 위해 방금 추가 된 규칙 3 개를 선택할 수 있습니다. 그런 다음 최상위 규칙의 오른쪽에 왼쪽에있는 화살표가있는 아이콘이 나타납니다. 그 위에 마우스를 가져 가면 "이 규칙 앞에 선택한 규칙 이동"이라는 힌트가 표시됩니다. 최상위 규칙에 대한 아이콘을 클릭하면 아래에서 보는 것과 같은 모양으로 방화벽 규칙이 변경되어야합니다.

=




모든 것이 올바른 순서로되면 변경 사항을 적용 할 수 있어야합니다. 완료되면 다음을 테스트 할 수 있습니다.

$ 호스트 www.kirkg.us
www.kirkg.us 주소 갖는다 104 .24.125.230을
www.kirkg.us는 IPv6 주소 2400 : cb00 : 2048 : 1 :: 6818 : 7de6
$ 호스트 www.kirkg.us 8 .8.8.8
 ;; 연결 시간이 초과되었습니다 . 서버에 도달 할 수 없음
간단한 설명

방화벽 규칙 페이지 하단의 힌트는 모든 것을 설명합니다. 규칙은 위에서 아래로 순서대로 처리됩니다. 즉, 가장 구체적인 규칙이 맨 위에 있어야하며보다 일반적인 규칙이 맨 아래에 있어야합니다. 위의 screesnhot에서 하단 2 규칙은 포괄적 인 "모두 허용"규칙이라는 것을 알 수 있습니다. 동일한 이론이 특정 규칙 유형의 트래픽과 관련된 규칙의 하위 집합에 적용될 수 있습니다. 이 경우 DNS. 오늘 만든 3 가지 규칙을 살펴보면 가장 일반적인 규칙 (규칙 3 : 모든 DNS 트래픽 차단)이 특정 규칙 1 및 2에 있음을 알 수 있습니다.이 규칙은 특정 규칙에 대한 DNS 트래픽을 허용하도록 설계되었습니다 호스트.

이것이 의미하는 바는, 클라이언트 중 하나가 www.kirkg.us를 브라우저에서 입력하면 DNS 요청이 OPNSense 상자로 들어가 첫 번째 DNS 규칙과 일치 한다는 것입니다 트래픽이 허용되며 모든 사람이 행복합니다.

다른 한편으로 누군가가 OpenDNS 필터링을 피해 가려하고 공용 DNS 서버를 사용하도록 컴퓨터의 DNS 설정을 변경하면 거부 당할 것입니다. 예를 들어 DNS 서버로 8.8.8.8을 사용하고 컴퓨터가 www.kirkg.us를 검색하려고하면 LAN 인터페이스에서 트래픽이 들어옵니다. OPNSense 상자에 대한 것이 아니기 때문에 규칙 # 1과 일치하지 않습니다 또한 다른 내부 DNS 서버에서 트래픽이 발생하지 않으므로 두 번째 규칙과 일치하지 않습니다. 그것은 포트 53을 목적지로하기 때문에 3 번째 규칙에서 일치 할 것입니다. 규칙 3은 블록 규칙이므로 트래픽이 기록되고 (그렇게 선택한 경우) 삭제됩니다. 악의적 인 사용자는 대부분 웹 브라우저에서 불친절한 메시지를 받게되고 방해를 받게됩니다.

작은 구멍

논리에는 여전히 하나의 구멍이 있습니다. 그것을 발견 했습니까? 앞서 말한 비겁한 사용자가 내부적으로 다른 DNS 서버를 사용하고 있음을 알고 있다면 DNS 서버로 DNS 서버를 사용하도록 컴퓨터를 구성 할 수 있습니다. 그러면 OpenDNS 필터링을 우회적으로 우회합니다.

지금은 받아 들일만한 위험입니다. 그것이 당신을위한 것이 아니라면, 당신은 확실히 두 번째 규칙을 비활성화해야합니다.


댓글