如何阻止访问从一些 IP 地址(不是到)?
我有一个 Apache/CentOS6 个 Web 服务器,运行我家的一些小型家庭网站,使用动态 IP 地址更新Namecheap的 DNS 客户端。我不希望人们能够将我的 IP 地址输入到浏览器中并获取我的默认网站。但是,我需要它像现在这样工作,而不改变我的家人连接它的方式,以避免我的叔叔、阿姨、祖母、妈妈、姐姐、侄子等打来无数个支持电话,询问他们的快捷方式为什么不起作用。
我将 IP 地址配置为虚拟主机,以将请求发送到显示默认 Apache 索引文件的空文件夹,但我想隐藏那里有一个用于 IP 地址请求的 Web 服务器的事实。我应该如何配置 Apache 或 .htaccess 才能完全丢弃或拒绝(无论哪种方式都可以防止人们进一步挖掘)在浏览器中使用我的 IP 地址的人?
我的理由是:我不想去色情网站,让某个人(网站管理员、脚本小子、恶意软件人员,不管是谁)获取我的 IP 地址,将其输入到他们的浏览器中,然后获取我的家人和狗的照片。“哦,Sol LastName - 住在佛罗里达州的 Random Town。在 X 公司工作,制作小部件。有一个妻子和 7 个孩子,所有孩子的照片和名字都在上面。喜欢穿着羊服装的大屁股怀孕侏儒,用意第绪语唱歌。直接向他的妻子发送消息(与 Facebook 交叉引用)并建议如何更挑逗地穿着羊服装听起来很有趣!”
或者某个随机脚本小子因为我在他们的论坛上贬低了 Faygo 而生气。将我的 IP 地址输入他们的浏览器,找到我的网站、我的名字、我家庭的一般信息,决定在当地城镇论坛上发帖,说 Sol LastName 正在寻找合适的单身汉。我还需要继续说下去吗?
答案1
您无法完全隐藏那里有一个 Web 服务器,因为与服务器的连接是通过 IP 地址而不是主机名建立的。Apache 随后读取请求,其中包含一个 Host 字段,指示用于访问此站点的 IP,但到那时,TCP 连接已经建立。不过,一旦 apache 找到正确的 vhost,您就可以使用 mod_security 关闭 TCP 连接,而无需发送 HTTP 回复,请参阅https://serverfault.com/questions/401517/how-to-drop-all-requests-using-mod-security。
另外,请确保您用来删除这些请求的 vhost 是 apache 在其配置中读取的第一个 vhost,因为如果没有 vhost 匹配,则会选择该 vhost(例如,如果有人使用他们的 hosts 文件为您的 IP 地址提供随机名称)。
答案2
您可以向 apache 添加用户名和密码,这样,直到他们登录后他们才会获得任何信息。
https://wiki.apache.org/httpd/PasswordBasicAuth
/path/to/htpasswd -c /etc/htpasswd/.htpasswd user1
/path/to/htpasswd /etc/htpasswd/.htpasswd user2
<Directory "/var/www/html/protected">
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/htpasswd/.htpasswd"
Require valid-user
Order allow,deny
Allow from all
</Directory>