我已经阅读有关防火墙的文章大约一上午,并且我想出了以下公共区域:
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<source address="167.114.37.0/24"/>
<source address="92.222.185.0/24"/>
<source address="92.222.184.0/24"/>
<source address="92.222.186.0/24"/>
<source address="149.202.34.10/32"/>
<service name="dhcpv6-client"/>
<service name="http"/>
<service name="ssh"/>
<service name="https"/>
</zone>
我能想到的最好的办法是,这个区域应该只允许这些端口/服务的传入连接,并提供对这些子网的完全访问权限。但是,当我使用 nmap 扫描我的服务器时,我得到了大量开放端口(而且我肯定不在白名单子网中)。
PORT STATE SERVICE
1/tcp open tcpmux
3/tcp open compressnet
4/tcp open unknown
6/tcp open unknown
7/tcp open echo
9/tcp open discard
13/tcp open daytime
17/tcp open qotd
19/tcp open chargen
20/tcp open ftp-data
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
24/tcp open priv-mail
25/tcp filtered smtp
26/tcp open rsftp
30/tcp open unknown
32/tcp open unknown
33/tcp open dsp
37/tcp open time
42/tcp open nameserver
43/tcp open whois
49/tcp open tacacs
53/tcp open domain
70/tcp open gopher
79/tcp open finger
80/tcp closed http
81/tcp open hosts2-ns
82/tcp open xfer
83/tcp open mit-ml-dev
84/tcp open ctf
85/tcp open mit-ml-dev
88/tcp open kerberos-sec
89/tcp open su-mit-tg
90/tcp open dnsix
99/tcp open metagram
100/tcp open newacct
106/tcp open pop3pw
109/tcp open pop2
110/tcp open pop3
111/tcp open rpcbind
113/tcp open ident
119/tcp open nntp
125/tcp open locus-map
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
... 这个清单还在继续,我想我就到此为止了。我在这里遗漏了什么?
编辑如果我尝试访问其中一个开放或过滤的端口,比如说curl
,我会得到以下信息
$ curl myserver.example.com:125
curl: (7) Failed to connect to myserver.example.com port 125: Operation timed out
connection refused
当我尝试访问其中一个关闭的端口时,我能够正确获取信息。
答案1
您的测试计算机和服务器之间可能有一个中间路由器。在这种情况下,路由器会通过发送虚假回复来混淆 nmap,这可能是 NAT 实现的细微差别。如果我没记错的话,如果您从计算机扫描任何随机 IP,您都会得到类似的结果。