Nginx禁止ip方式访问80、443端口

道锋潜鳞
2020-09-05 / 0 评论 / 201 阅读 / 正在检测是否收录...

很多时候,在部署CDN的Https回源的时候,令人烦躁的Shodan引擎会让世界知道你的源站地址,带来不少麻烦

比如惨烈的本站,在云锁防恶意解析功能不知道跑哪去以后,变成了这样

源站地址直接暴露,这样做cdn防御还有什么用,,,

根据证书查询到源服务器。。。。

于是就寻思着在NGINX上手动配置一个默认站点,NGINX的默认站点寻找顺序是按照配置文件顺序排列的,在找不到可用server_name的时候,自动返回第一个站点。

于是乎,我们需要在server标签最前面配置一个默认server标签来屏蔽大部分错误的请求。

不过首先,我们肯定不会特意去买了个证书去配置443的默认站点吧。

那就先使用OpenSSL自签发一份NGINX可用的证书

一、签发证书

1.生成私钥文件:

openssl genrsa -des3 -out server.key 2048

Ps:会提示需要给证书加密码

2.去除口令:

mv server.key server.key.backopenssl 
rsa -in server.key.back -out server.key

Ps:会提示询问证书的密码

3.创建请求证书:

openssl req -new -key server.key -out server.csr

PS:会提示输入一些信息,可以乱填或一路回车

4.生成证书文件:

openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt

这样我们就得到了这样四个文件

二、配置NGINX

1.上传我们的server.crt server.key文件到我们NGINX所在的服务器下

2.修改配置文件,在所有server的最前面添加

server {
	        listen       80  default_server;
		listen       443 default_server;
                server_name  _;
		ssl		on;
		ssl_certificate      /www/server.crt;//证书上传地址
		ssl_certificate_key  /www/server.key;
		ssl_prefer_server_ciphers  on;
		ssl_session_cache    shared:SSL:10m;
		ssl_session_timeout  10m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		return 403;//返回403错误,可以自定义页面或其他错误码
}

PS:代码放置需求,在虚拟主机配置文件前或主站点前

eg.(宝塔)

三、结束

然后咋办?还要说?当然是保存重启了或者重载拉:—)

如果返回403的话,正常就是这样了

这样一来,可以有效阻止绝大部分的针对主机和域名的扫描器,保障服务器安全

0

评论 (0)

取消