我正在努力解决Google ComputeEngine上的mac地址过滤问题。
我有一个要求,即在服务器上运行web应用程序。将使用web应用程序的相同用户也必须能够使用scp和ssh访问同一服务器。
目前的想法是:
-
仅为web应用启用HTTPS-正在工作
-
启用基于DSA的KEY-ONLY ssh,禁用密码访问-正在工作。
-
对web应用程序和ssh启用mac过滤。其想法是,未经授权的人甚至无法看到该服务器IP上有什么内容。
当在家中使用ADSL时,由于IP的变化,客户端IP过滤有点问题。。。。
为了设置和测试这一点,我使用了以下环境,在我们的本地办公网络上使用了三台不同的机器:
CentOS 7服务器在VM(VMWare)内运行。我已启用IP表并禁用防火墙。然后,我添加了以下规则:
这将只允许ssh(端口22)访问mac地址
iptables -A INPUT -p tcp --dport 22 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
现在拒绝其余的ssh尝试。。。
iptables -A INPUT -p tcp --dport 22 -j REJECT
当从其他两台机器(一台windows和一台Ubuntu)进行测试时,这对ssh来说是100%有效的。到现在为止,一直都还不错。
我现在已经转到了Google ComputeEngine上的目标环境(运行CentOS 7 VM)。然而,所有连接都显示与源相同的MAC地址。使用arp-a检索用户列表及其mac地址。
这是arp结果:
arp
Address HWtype HWaddress Flags Mask Iface
10.xxx.xxx.1 ether xx:xx:xx:xx:xx:xx C eth0
问题是,使用不同的用户/不同的机器和不同的互联网服务提供商在ComputeEngine端都会显示相同的mac地址(根据arp)。
使用gcloud防火墙似乎无法过滤mac地址。所有可用的文档都只引用ip/端口过滤。这是我在转储现有防火墙规则(在VM外部)时得到的结果
gcloud compute firewall-rules list
NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS
default-allow-http default 0.0.0.0/0 tcp:80 http-server
default-allow-https default 0.0.0.0/0 tcp:443 https-server
default-allow-icmp default 0.0.0.0/0 icmp
default-allow-internal default 10.240.0.0/16
tcp:1-65535,udp:1-65535,icmp
default-allow-rdp default 0.0.0.0/0 tcp:3389
default-allow-ssh default 0.0.0.0/0 tcp:22
有人知道我如何在CentOS VM中检索正确的mac地址或使用gcloud防火墙来实现同样的目的吗?