找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 62|回复: 8

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

[复制链接]

80

主题

806

回帖

1960

积分

金牌会员

积分
1960
发表于 2016-8-7 13:13:11 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

10

主题

618

回帖

1306

积分

金牌会员

积分
1306
发表于 2016-8-7 13:28:13 | 显示全部楼层
直接网站加个判断不行?域名非https://av.baidu.com跳转gov.cn
回复

使用道具 举报

33

主题

6071

回帖

1万

积分

论坛元老

积分
12347
发表于 2016-8-7 13:20:03 | 显示全部楼层
强行SNI
回复

使用道具 举报

80

主题

806

回帖

1960

积分

金牌会员

积分
1960
 楼主| 发表于 2016-8-7 13:22:41 | 显示全部楼层

SKIDROW 发表于 2016-8-7 13:20

强行SNI

求详细解说
回复

使用道具 举报

33

主题

6071

回帖

1万

积分

论坛元老

积分
12347
发表于 2016-8-7 13:20:00 | 显示全部楼层

PPS 发表于 2016-8-7 13:22

求详细解说

做多个https站点,其中一个加default_server
回复

使用道具 举报

80

主题

806

回帖

1960

积分

金牌会员

积分
1960
 楼主| 发表于 2016-8-7 13:29:33 | 显示全部楼层

柳逸寒 发表于 2016-8-7 13:28

直接网站加个判断不行?域名非https://av.baidu.com跳转gov.cn

网站用https,先是ssl握手建立加密连接,此时并不知道时要连接哪个主机名的。不像http,一开始就直接连接主机名了
回复

使用道具 举报

80

主题

806

回帖

1960

积分

金牌会员

积分
1960
 楼主| 发表于 2016-8-7 13:22:00 | 显示全部楼层

SKIDROW 发表于 2016-8-7 13:29

做多个https站点,其中一个加default_server

是在这里吗 ?listen       12.34.56.78:443 default_server ssl http2;
回复

使用道具 举报

33

主题

6071

回帖

1万

积分

论坛元老

积分
12347
发表于 2016-8-7 13:35:08 | 显示全部楼层

PPS 发表于 2016-8-7 13:38

是在这里吗 ?listen       12.34.56.78:443 default_server ssl http2;

我认为默认站点就不用加什么http2了
回复

使用道具 举报

94

主题

224

回帖

794

积分

高级会员

积分
794
发表于 2016-8-7 13:28:00 | 显示全部楼层
关注,同需求。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-4-20 04:19 , Processed in 0.019241 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表