提升网站安全性的一个有效方法是通过访问限制来加固网站,可以有效地防止未经授权的用户进入敏感区域,从而减少潜在的安全风险,同时提供给用户一个更加安全可靠的访问体验。那么如何通过访问限制提升网站安全性?下面一起来看看网站访问限制的各种实现方式。
一、通过DNS解析厂商
通常情况下,扫描器主要针对域名执行扫描操作。为了构建第一道防线,我们可以在DNS解析阶段采取措施,将海外的请求指向本地回环地址127.0.0.1。一旦配置妥当,大部分海外的扫描尝试便会失效,从而大幅降低潜在的安全风险。
以阿里云为例:
二、通过Nginx
通过域名解析后下一步会进入CDN,WAF网站防火墙,硬件设备或直接通往源站,此时我们可以对请求进行更细的过滤,这里主要讲一下通过网站防火墙配置和Nginx配置。
1、地区访问限制
前面提到的是通过DNS解析来对域名进行禁海外访问,但如果攻击者使用IP来扫描就没办法了,所以我们需要在服务器或应用上进行限制。
2、Nginx实现根据国家/城市进行访问限制
Nginx使用模块ngx_http_geoip_module来实现对国家/城市访问限制。
3、安装方式
(1)安装maxminddb library(geoip2扩展依赖)
Ubuntu debian:
apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
Centos:
yum install libmaxminddb-devel -y
(2)下载ngx_http_geoip2_module模块
进入root目录,然后克隆模块:
cd root && git clone https://github.com/leev/ngx_http_geoip2_module.git
(3)把模块编译到Nginx
手工编译方式:
./configure --add-module=/root/ngx_http_geoip2_module
宝塔面板下nginx的编译方式:
(4)下载Geoip数据库
模块安装成功后,还要在 Nginx 里指定数据库,位于 /usr/share/GeoIP/ 目录下,一个只有 IPv4,一个包含 IPv4 和 IPv6:
数据库地址:
-
cd /usr/local/share/GeoIP
-
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
-
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
(5)添加配置到Nginx主配置文件
geoip2 /usr/local/share/GeoIP/GeoLite2-Country.mmdb {$geoip2_data_country_code country iso_code;}map $geoip2_data_country_code $allowed_country { default yes; CN no; }
(6)修改Nginx虚拟主机的配置文件,在server段内添加后重载nginx
if ($allowed_country = yes) { return 403; }
配置完成。
三、通过堡塔云WAF
堡塔云WAF的安装方式如下:
堡塔云WAF需要占用80、443、33060端口,建议使用单独服务器部署。已经安装了宝塔面板的机器不支持安装云WAF。
安装命令如下:
URL=https://download.bt.cn/cloudwaf/scripts/install_cloudwaf.sh && if [ -f /usr/bin/curl ];then curl -sSO "$URL" ;else wget -O install_cloudwaf.sh "$URL";fi;bash install_cloudwaf.sh
官网地址: https://www.bt.cn/
1、借用堡塔云WAF的以下功能:
拦截效果:
2、禁止IDC机房、服务器IP访问
通常情况下服务器IP并不是我们的客户,在这里推荐大家在没有接口业务的情况下禁止服务器IP访问。
堡塔云WAF的功能为例:
只需要在防护网站设置里开启禁止IDC访问即可达成,它还会自动放行真实爬虫以免影响网站收录。
3、对用户上传目录进行严格限制,禁止访问可执行文件。
这是黑客的主要渗透手段之一,在可上传文件的目录下传入后门文件,我们在禁止后即使他们成功传入也无法进行利用。
堡塔云WAF的功能为例:
拦截效果: