如果我在沒有防火牆的情況下執行 Fedora,libvirt dnsmasq 是否會暴露在網路中?
來自 Ubuntu 的一句好話:預設安裝時沒有開放埠。其他 Linux 作業系統的外觀類似,包括 Fedora。配置防火牆策略可能會讓人頭疼,所以這是一個很好的預設設置。
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))
23/11/12 12:50,Gene Czarcinski 寫道:
Libvirt 正在將使用 bind-interface 更改為使用 bind-dynamic 來修復與安全相關的問題,其中 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.c
dnsmasq:在 –bind-interfaces 中,唯一的訪問控制是我們正在監聽的地址。沒有什麼可以避免對通過外部介面到達的內部介面地址的查詢,我們不想接受查詢,除了在通常情況下內部介面的地址是 RFC1918 …
解決方法是使用 –bind-dynamic,它實際上也檢查到達介面。如果您的平台不支持這一點,那就太難了。
請注意,標準 IPv6 API 支持檢查到達介面,並且始終完成。
DHCP 套接字(埠 67)最終綁定到特定介面。所以我們不需要擔心 DHCP,只需要擔心 DNS(53 埠)。
(dnsmasq 只使用一個 DHCP 套接字。它偵聽所有地址,但是當只有一個介面時,它能夠使用
SO_BINDTODEVICE
.低級)。從第二台機器測試 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
連接而不讀取任何數據。因此,您發送給它的數據無關緊要;例如,它不能利用經典的緩衝區溢出。