全球主机交流论坛

标题: 求助:禁止用ip通过https指向非nginx认证过的主机 [打印本页]

作者: PPS    时间: 2016-8-7 13:13
标题: 求助:禁止用ip通过https指向非nginx认证过的主机
本帖最后由 PPS 于 2016-8-7 23:27 编辑

求助:禁止用ip通过https指向非nginx认证过的主机

######IP:12.34.56.78只能通过域名访问,禁止用ip通过http访问#######
                server {

                                                listen       12.34.56.78:80 default_server;
                        server_name     "";                                                       
                                                access_log off;
                                                return  444;
                }
                               
                server {
                                                        listen       12.34.56.78:80;
                                                        listen       12.34.56.78:443 ssl http2;
                                                        server_name     av.baidu.com;
                                                        index index.html index.php index.htm;
                                                        root  /baidu/av;
                                                       
                                                        ssl                         on;
                                                        ssl_certificate                      ssl/av.baidu.com/fullchain.pem;
                                                        ssl_certificate_key                  ssl/av.baidu.com/privkey.pem;

                }
######IP:12.34.56.78只能通过域名访问,禁止用ip通过http访问#######

http协议禁止我能搞定,
但是禁止IP通过https协议我就搞不定了。

假如某mjj通过他的https://av.mjj.com 域名 指向我的ip 12.34.56.78,他的 https://av.mjj.com可以访问(虽然提示ssl证书有问题,但是可以访问),某mjj就可以说 https://av.mjj.com 这大人站是他的,但实际上内容都是https://av.baidu.com的。
有什么办法阻止mjj的https域名指向?
不通过我nginx配置里的域名不给用,直接return  444;

各位大侠都来帮帮忙


###通过各个楼层的帮助但是不知道还有什么漏洞缺陷,请各位继续指正。###

###为了https更安全,添加        HSTS                        ####


                server {
                                                        listen       12.34.56.78:80;
                                                        listen       12.34.56.78:443 ssl default_server;
                                                        server_name     av.baidu.com;

                                                        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

                                                        index index.html index.php index.htm;
                                                        root  /baidu/av;

                                                        if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }
                                                        if ($host != 'av.baidu.com' ) { return 444; }
                                                       
                                                        ssl                         on;
                                                        ssl_certificate                      ssl/av.baidu.com/fullchain.pem;
                                                        ssl_certificate_key          ssl/av.baidu.com/privkey.pem;

                }

###通过各个楼层的帮助,目前效果是基本实现了,但是不知道还有什么漏洞缺陷,请各位继续指正。###


########################################
                server {
                                        listen       12.34.56.78:80;
                                        listen       12.34.56.78:443 ssl default_server;
                                        server_name     av.baidu.com;

                                        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

                                        index index.html index.php index.htm;
                                        root  /baidu/av;

                                        if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }
                                        if ($host != '$server_name' ) { return 301 https://$server_name$request_uri; }
                                                       
                                        ssl                         on;
                                        ssl_certificate                      ssl/av.baidu.com/fullchain.pem;
                                        ssl_certificate_key          ssl/av.baidu.com/privkey.pem;

                }
####################################
改成这样。
这样就算 mjj的网址https://av.mjj.com ip指向你的vps,也会强行转跳成你的网址(在浏览器地址栏显示你的网址)https://av.baidu.com
作者: SKIDROW    时间: 2016-8-7 13:20
强行SNI
作者: PPS    时间: 2016-8-7 13:22
SKIDROW 发表于 2016-8-7 13:20
强行SNI

求详细解说
作者: 柳逸寒    时间: 2016-8-7 13:28
直接网站加个判断不行?域名非https://av.baidu.com跳转gov.cn
作者: SKIDROW    时间: 2016-8-7 13:29
PPS 发表于 2016-8-7 13:22
求详细解说

做多个https站点,其中一个加default_server
作者: PPS    时间: 2016-8-7 13:35
柳逸寒 发表于 2016-8-7 13:28
直接网站加个判断不行?域名非https://av.baidu.com跳转gov.cn

网站用https,先是ssl握手建立加密连接,此时并不知道时要连接哪个主机名的。不像http,一开始就直接连接主机名了
作者: PPS    时间: 2016-8-7 13:38
SKIDROW 发表于 2016-8-7 13:29
做多个https站点,其中一个加default_server

是在这里吗 ?listen       12.34.56.78:443 default_server ssl http2;
作者: SKIDROW    时间: 2016-8-7 14:01
PPS 发表于 2016-8-7 13:38
是在这里吗 ?listen       12.34.56.78:443 default_server ssl http2;

我认为默认站点就不用加什么http2了
作者: drice    时间: 2016-8-7 23:06
关注,同需求。




欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/) Powered by Discuz! X3.4