我想阻止代码与其他特定主机建立 http 连接。我的理解是,这可以在 /etc/hosts.deny 中完成。它会是什么样子?
答案1
您可以在 /etc/hosts 中将主机名映射到本地主机(比 hosts.deny 更容易设置,但缺乏精细的控制)。
hosts 文件中的示例条目:
google.com 127.0.0.1
someotherdomain.com 127.0.0.1
哦,顺便说一句,这个问题更适合serverfault.com。
答案2
这种/etc/hosts/
方法很糟糕,因为无论您将“禁止主机”重定向到哪个地址,另一个 Web 服务器都可能会监听。
如果你有写权限/etc/hosts
,你通常根并负责设置防火墙。您应该在此处设置有关传出流量的规则。
答案3
Linux 内核具有防火墙功能。这些功能可能会给您带来最佳效果。从您的问题中不清楚您是否要阻止从您的机器到特定主机的所有 http 连接,还是仅阻止特定程序 - 但如果需要,您还可以按来源应用程序或用户过滤流量。
我通常使用火力全开它是基本防火墙配置命令的便捷包装器。
答案4
不,hosts.deny 不会这样做。对 /etc/hosts 进行黑客攻击也没有任何作用(它可能会破坏解析器库,但如果应用程序不使用标准解析器或以其他方式查找地址,则不会阻止应用程序进行出站连接)。
使用防火墙确实是最明显的方法。对于本地生成的流量,iptables 能够通过用户 ID、组 ID 或进程 ID 阻止出站数据包,这意味着您可以将其限制到特定进程。可能最简单的方法是通过用户 ID 执行此操作,并在某个受限制的用户下运行它。