- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在为我的大学创建一个 Java 项目,我的项目的一个特点是阻止/允许由老师设置的网站(它是一个开源实验室监控软件)。 实际上我需要更简单的方法:阻止所有网站但只允许少数(允许大约 2 或 3 个网站,所有其他网站必须被阻止)。
我找到了 this excellent tutorial它使用 /etc/hosts.allow
和 /etc/hosts.deny
来完全满足我的需要。然而I discovered that these files and this method of blocking / allowing websites is deprecated .
我不认为 IPTables 是实现我的目标的好方法,因为要允许访问单个网站,我需要允许一个 IP 地址 - 但请记住,一个主机名可以有多个 IP 地址(就像任何 Google 服务一样, Facebook 甚至我大学的 Moodle)。
最佳答案
IPtables 使用 IP 地址而不是 DNS 地址的原因是坏人相对容易阻止或欺骗 DNS 服务器,从而逃避您设置的阻止。
最好的方法是使用 iptables(或等效的)因为它们基于 IP 地址进行阻止。
I don't think IPTables is a good way to achieve my aim, because to allow the access to a single website I need allow an IP address - but remember that a single hostname can have several IP addresses (like any Google service, Facebook and even Moodle of my university).
IPTables 很乐意允许(或阻止)属于单个服务的多个 IP 地址。您必须告诉那些 IP 地址是什么,但是一旦您这样做了,它就会允许/阻止它们。
事实上,这就是防火墙管理问题的核心。没有办法知道:
不能依赖 DNS 来回答任何这些问题。 Facebook 不需要在 DNS 中公布他们的 IP 地址,因为他们不需要依赖 DNS 查找。而且他们可能不知道他们的主机之一是否已被劫持。
您还询问是否真的不推荐使用“/etc/hosts.allow”和“/etc/hosts.deny”来阻止或允许网站。
好吧,这取决于你所说的“弃用”是什么意思。当我在我的 (Fedora 20) Linux 机器上运行“man hosts.allow”时,它没有提到“deprecated”这个词,而当我用谷歌搜索“hosts.allow deprecated”时,我没有看到任何可信的东西。 (提示:将 SO 答案视为权威是不明智的。)
我对软件“弃用”的理解是,这意味着供应商建议您停止使用它。我没有看到发生这种情况的迹象。
但是,“hosts.allow”方法(或更准确地说,“tcpd(8)”)确实有其局限性。引自 "HOWTO - Limiting Access to TCP-wrapped Services with hosts.allow"
"Hosts.allow is quite an interesting and useful facility that can help increase the security of the host, but typos and poorly written rules can make the host as or more susceptible to exploits than without those rules. Typos could also end up locking yourself out of the box when you least expect it. As stated above, using the access control facility for "TCP wrapped" services and daemons can and probably will take a hit on the host's performance and possibly limit the response rate for the client."
"The facility is not a complete security solution nor should it be treated as such, rather it's a compliment to packet filtering and firewall solutions available (be it gratis, free-speech or commercial). There are some features that are available only by using the hosts.allow facility such as redirecting specific clients to other services, or returning specific error messages, and banners specific to the service and/or client. Nonetheless, this is a great facility that some people overlook as a method to provide a simple means to deny access to specific services to specific hosts."
还需要注意的是,该 HOWTO 的源文章相当过时。它写于 2002 年,从那以后发生了很多变化。
最后,请注意,如果您将 DNS 名称放入“hosts.allow”和“hosts.deny”文件中,您就会面临我上面解释的问题。
关于java - 阻止或允许带有 "/etc/hosts"的网站真的被弃用了吗?用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084715/
Windows“主机”文件编码是什么?是UTF-8吗?还是 ASCII + 系统代码页?应如何添加 IDN(带有变音符号等的国际域名)条目以及它们是否可以添加? 最佳答案 它应该是没有 BOM 的 A
我已经在谷歌上搜索了大约 90 分钟,但仍然没有答案。在哪里设置 default_url_options?我已经将其设置为 config.action_mailer.default_url_optio
我正在从它的样式文件中设计一个 Angular 组件,我发现我必须使用 :host ,:host() 或 :host-context selector ,它们各自有什么不同? 最佳答案 :主机 是用于
我正在创建简单的网络应用程序。而且我在服务器配置方面遇到了问题。当我尝试启动服务器时,收到错误消息 The element type "Host"must be terminated by the m
这个有效: 127.0.0.1 www.somesite.com 但不是这个: 127.0.0.1/somepath/www www.mysite.com 我做错了什么?是否可
我必须查看我的前同事留下的一些脚本,我很好奇为什么他在参数中使用 $a = $(Read-Host -Prompt "Write Something")节而不是 $a = (Read-Host -Pr
我在远程连接到 MySQL 服务器时遇到问题。我知道我的用户设置了来自任何主机的“%”通配符,因此我应该有权访问服务器。我可以使用我的凭据本地登录 MySQL 服务器,但不能远程登录。 我在 my.c
我正在尝试使用 angular 2 构建一个双主题应用程序。有问题的组件 css 已经使用 :host/deep/强制对子组件进行样式设置。 但是我正在尝试根据 html 主题切换此样式,并且我正在使
我需要将特定的传出连接(从我系统上的任何 网络客户端)重定向到特定的 IP。是的,可以通过在 /etc/hosts 文件中添加这一行来完成: 123.456.789.012 www.mydomain
尝试在开发中预览我的邮件程序,但出现上述错误。(使用 Michael Hartl 教程)。 我相信它因为我的主机而无法正常工作。但是,使用 cloud 9 我很难找到我的主机。在书中,它被定义为 Cl
nc 当我在虚拟机上执行它时工作正常。 Connection to 10.0.0.10 22 port [tcp/ssh] succeeded! 但是当我在 docker 容器内执行相同的命令时,它会
我正在学习PowerShell,想知道两者之间的区别 Read-Host -Prompt "Text" 和 Read-Host "Text" 是同一件事还是我没有看到的区别? 最佳答案 这是同一件事。
我无法对 Cassandra 节点进行查询。我能够连接到集群并进行连接。然而,在执行查询时,它失败了 Caused by: com.datastax.driver.core.exceptions.No
我有这样的场景,比如我需要运行一个位于 12.34.567 的 API curl 请求,登录后我必须再登录一台主机 98.76.543。 登录到第二个主机后,我必须运行curl -XPOST -H"C
当我尝试 git push -u origin master到我的存储库,我得到 400 Bad Request .我特意用 编辑了一些信息。 最近从 gitlab-ee 中解绑了 nginx,并验
假设我有某个程序的源代码,源代码使用 GNU autotools,为了简单起见,假设该程序绝不是任何类型的开发工具。如果我手边有交叉工具链,我可以使用 --host configure 为平台 foo
在我的 ASP.NET Core 2.0 项目中,我一直在使用 Microsoft.Extensions.Hosting 命名空间中的 IHostingEnvironment 和 IApplicati
我正在使用以 Python3.6 为基础的 docker 镜像。突然间它开始崩溃(启动后立即退出)。所以我冲进了容器,发现它崩溃是因为与容器化 postgres 数据库的连接突然失败。我设法得到的唯一
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我尝试使用 ssh命令连接到另一个远程主机。 ssh -p 21098 -i $OPENSHIFT_DATA_DIR/.ssh/host_key user@domain.com The authe
我是一名优秀的程序员,十分优秀!