假设我想确保没有恶意行为者或进程试图在 Linux 上使用自己的恶意服务器来错误地表示合法 Web 服务器,并预期用户将访问外部可执行文件。
例如,添加类似 的条目12.34.56.78 legitsite.com
,那么下次我访问时legitsite.com/downloads/setup.sh
,我实际上会下载12.34.56.78/downloads/setup.sh
,这是恶意软件。
看起来至少我必须检查/etc/hosts
和/etc/resolv.conf
,但是还有什么我想检查的吗?我是否应该检查该ip route
命令是否也有目标条目legitsite.com
?
答案1
如果其他方拥有 root 权限来修改名称解析,您将无能为力。这意味着他们已经可以搞乱你的所有软件了。你输了。你在你的机器上所做的任何事情都无法被那个全能的攻击者压制。
但是:对某人能够做到这一点的可能性的适当响应非常简单,并且已经部署:它是带有证书检查的 TLS。
就是这样。这里的所有都是它的。使用https
。如果您不能信任网络,那么没有什么比正确的加密更有效的了,而 TLS 就是这样。
如今,设置网络服务器来支持这一点是微不足道的;使用letsencrypt.org,一旦它工作,就启用严格的主机安全。
答案2
您可以尝试使用 chattr linux 命令将文件的属性更改为不可变。
这是使用 chattr 命令的一些示例。
[root@my-server ~]# lsattr /etc/hosts
-------------e- /etc/hosts
[root@my-server ~]# chattr +i /etc/hosts
[root@my-server ~]# lsattr /etc/hosts
----i--------e- /etc/hosts
[root@my-server ~]# chattr -i /etc/hosts
[root@my-server ~]# lsattr /etc/hosts
-------------e- /etc/hosts
所以其他用户无法修改该文件。
答案3
不会。检查您自己的 /etc/hosts 和 /etc/resolv.conf 不会给您任何信息。这些是您主机上的文件,它们对不受您控制的外部主机没有影响。
攻击者可能会向您发送虚假 IP 地址,或尝试以其他方式欺骗您。