Nginx禁止IP直接访问、防止域名恶意解析、源IP扫描SSL泄露

默认情况下,只要将域名解析到服务器的IP上,访问该域名就会访问到lnmp默认虚拟主机的默认页面。

关于http

为了防止别人恶意将域名解析到自己的IP上,可以通过以下方法进行,修改/usr/local/openresty/nginx/conf/nginx.conf  (具体看nginx配置文件存放位置),将里面的默认的虚拟主机server{}段修改为如下即可:

server {
  listen 80 default_server;
  server_name _;
  return 444;
}

 

当然也可以将return 444; 替换为rewrite ^(.*) https://cimen.club permanent; 将流量导入到你指定的网站上。

最后nginx -s reload 重载配置。

Ps:使用空主机头后,原默认虚拟主机下的文件,如phpmyadmin将无法访问,需要加个二级域名指向phpmyadmin目录就可。

以上搬运自:https://bbs.vpser.net/thread-1794-1-1.html

关于https

如果你站点配置了ssl,那么可以尝试访问访问 https://你的建站机器ip ,会发现它会跳转到你的站点上。大部分源ip泄露也是这个原因,他们可以通过这种方式,比如简单的curl请求,就看到当前ip下的一些ssl证书所绑定的域名信息。

解决方式很简单,配置个自签证书,返回444或者其它一些状态码关闭连接、禁止访问就行了。

可以在上面的配置中,你可以加入listen 443 ssl default_server;,然后随便配置一个自签的ssl证书,当然其它的ssl证书也可以,只要不是和你站点相同的。最终配置大概是这个样子的,可以参看一下:

server
    {
        listen 80 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        listen 443 ssl default_server;
        #listen [::]:443 ssl default_server ipv6only=on;
        ssl_certificate /usr/local/openresty/nginx/conf/ssl/abc.cer;
        ssl_certificate_key /usr/local/openresty/nginx/conf/ssl/abc.key;
        server_name _;
        return 444;
        #……
        #……
    }

 

最后使用 nginx -s reload 重载配置。然后你去访问 https://你的ip 会发现不再跳转到你的站点上了。

可以一定程度上保护源IP不被泄露。当然,前提条件很多,比如CDN、反代源站机、源站的ssl申请等。
阅读剩余
THE END