방화벽 없이 Fedora를 실행하면 libvirt dnsmasq가 네트워크에 노출됩니까?

방화벽 없이 Fedora를 실행하면 libvirt dnsmasq가 네트워크에 노출됩니까?

우분투에 관해 좋은 말이 있습니다:열린 포트 없음기본 설치에서. Fedora를 포함한 다른 Linux 운영 체제도 비슷해 보입니다. 방화벽 정책을 구성하는 것은 번거로울 수 있으므로 이것이 좋은 기본값입니다.

Ubuntu는 특히 DHCP 클라이언트(필수) 및 mDNS를 면제합니다. (구별할 방화벽 영역이 없으므로 mDNS는 활성화된 상태로 두는 것이 가장 좋습니다. Poettering은 avahi-daemon을 안전하게 만드는 데 몇 가지 작업을 추가했다고 생각합니다. 이러한 이유 때문입니다.)

따라서 Fedora를 종료하여 firewalld가상 머신의 브리지/라우팅된 네트워크를 사용할 수 있습니다. 제외 - 이 dnsmasq 포트는 어떻습니까? 외부 네트워크에 노출되나요?

sudo ss -nultp  # List TCP and UDP listening sockets
Netid    State     Recv-Q    Send-Q                           Local Address:Port        Peer Address:Port                                                                                                                 
udp      UNCONN    0         0                                    127.0.0.1:323              0.0.0.0:*        users:(("chronyd",pid=1249,fd=5))                                                                           
udp      UNCONN    0         0                                      0.0.0.0:41662            0.0.0.0:*        users:(("avahi-daemon",pid=1216,fd=14))                                                                     
udp      UNCONN    0         0                                      0.0.0.0:5353             0.0.0.0:*        users:(("avahi-daemon",pid=1216,fd=12))                                                                     
udp      UNCONN    0         0                                192.168.122.1:53               0.0.0.0:*        users:(("dnsmasq",pid=2011,fd=5))                                                                           
udp      UNCONN    0         0                               0.0.0.0%virbr0:67               0.0.0.0:*        users:(("dnsmasq",pid=2011,fd=3))                                                                           
udp      UNCONN    0         0                                      0.0.0.0:68               0.0.0.0:*        users:(("dhclient",pid=2354,fd=6))                                                                          
udp      UNCONN    0         0                                      0.0.0.0:68               0.0.0.0:*        users:(("dhclient",pid=2184,fd=6))                                                                          
udp      UNCONN    0         0                                        [::1]:323                 [::]:*        users:(("chronyd",pid=1249,fd=6))                                                                           
udp      UNCONN    0         0            [fe80::f3a:8415:60b9:e56b]%wlp2s0:546                 [::]:*        users:(("dhclient",pid=2373,fd=5))                                                                          
udp      UNCONN    0         0             [fe80::7e73:7a0c:e16f:a0d4]%eno1:546                 [::]:*        users:(("dhclient",pid=2242,fd=5))                                                                          
udp      UNCONN    0         0                                         [::]:5353                [::]:*        users:(("avahi-daemon",pid=1216,fd=13))                                                                     
udp      UNCONN    0         0                                         [::]:48210               [::]:*        users:(("avahi-daemon",pid=1216,fd=15))                                                                     
tcp      LISTEN    0         32                               192.168.122.1:53               0.0.0.0:*        users:(("dnsmasq",pid=2011,fd=6))                                                                           
tcp      LISTEN    0         5                                    127.0.0.1:631              0.0.0.0:*        users:(("cupsd",pid=4225,fd=6))                                                                             
tcp      LISTEN    0         5                                        [::1]:631                 [::]:*        users:(("cupsd",pid=4225,fd=5))

답변1

2012년 11월 23일 오후 12시 50분에 Gene Czarcinski는 다음과 같이 썼습니다.

Libvirt는 dnsmasq 인스턴스가 지원하는 가상 네트워크 인터페이스의 주소에 대해 발생하지 않은 포트 53 쿼리에 dnsmasq가 응답하는 보안 관련 문제를 해결하기 위해 본드 인터페이스 사용에서 본드 역학 사용으로 변경하고 있습니다.

보기에는 ps -ax|grep dnsmasq구성 파일을 사용하고 있는 것 같습니다 /var/lib/libvirt/dnsmasq/default.conf.

## dnsmasq conf file created by libvirt
strict-order
pid-file=/var/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
#...

bind-dynamic그래서 그들은 실제로 에서 로 이사했습니다 bind-interfaces. src/network.cdnsmasq 도 참조하세요 .

--bind-interfaces에서 유일한 액세스 제어는 우리가 듣고 있는 주소입니다. 일반적인 경우 내부 인터페이스의 주소가 RFC1918...인 경우를 제외하고 쿼리를 허용하지 않는 외부 인터페이스를 통해 도착하는 내부 인터페이스 주소에 대한 쿼리를 피할 수 있는 방법은 없습니다.

수정 사항은 실제로 도달 인터페이스도 확인하는 --bind-dynamic을 사용하는 것입니다. 플랫폼이 이를 지원하지 않으면 어렵습니다.

표준 IPv6 API는 도착 인터페이스 확인을 지원하며 항상 이를 수행합니다.

DHCP 소켓(포트 67)은 궁극적으로 특정 인터페이스에 바인딩됩니다. 따라서 DHCP에 대해서는 걱정할 필요가 없고 DNS(포트 53)만 걱정하면 됩니다.

(dnsmasq는 하나의 DHCP 소켓만 사용합니다. 모든 주소를 수신하지만 인터페이스가 하나뿐인 경우 해당 인터페이스에 대한 바인딩을 사용할 수 있습니다 SO_BINDTODEVICE. 왜 하나의 DHCP 소켓만 사용하는지 설명하지 마세요. DHCP를 수행하는 것은 일반적으로 이상합니다. 그리고 낮은 수준).

두 번째 시스템에서 dnsmasq를 테스트합니다.

$ ip route add 192.168.124.1 via $FEDORA_IP
$ sudo nmap -A -F 192.168.124.1

Starting Nmap 6.47 ( http://nmap.org ) at 2016-01-18 16:11 GMT

Nmap scan report for 192.168.124.1
Host is up (0.0023s latency).
Not shown: 98 closed ports
PORT   STATE SERVICE    VERSION
22/tcp open  ssh        OpenSSH 7.1 (protocol 2.0)
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
53/tcp open  tcpwrapped
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.11 - 3.14
Network Distance: 1 hop

TRACEROUTE (using port 8888/tcp)
HOP RTT     ADDRESS
1   0.80 ms 192.168.124.1

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.42 seconds

그러면 열린 TCP 포트가 보입니다. 그러나 "tcpwrapped"인 것처럼 응답합니다. 즉 virbr0, 다른 인터페이스를 통해 연결하면 dnsmasq데이터를 읽지 않고 연결이 닫힙니다. 따라서 보내는 데이터는 중요하지 않습니다. 예를 들어 전통적인 버퍼 오버플로를 이용할 수 없습니다.

관련 정보