提升网站安全-访问限制篇

爱坤
1月5日发布
温馨提示:
本文最后更新于2025年01月05日,已超过89天没有更新,若内容或图片失效,请留言反馈。

运维圈里有句话说的好,“国内业务屏蔽海外访问,能解决你99%的问题”,这次我们就试着从这里了解一下网站访问限制的各种实现方式。在运维圈中,确实存在这样的说法,即通过屏蔽海外访问可以解决很多网络问题。这种策略通常用于优化网络性能、提高安全性或遵守法律法规。以下是几种常见的实现网站访问限制的方式:

1.

地理IP限制:

通过识别访问者的IP地址,并根据IP地址的地理位置信息来限制访问。例如,可以设置规则,允许国内IP访问,而阻止海外IP。
2.

DNS解析控制:

通过DNS解析策略,将海外用户的请求重定向到其他服务器或直接拒绝服务。
3.

防火墙规则:

在网络防火墙上设置规则,允许或拒绝特定IP地址或IP地址范围的访问。
4.

内容分发网络(CDN):

使用CDN服务,可以设置访问控制策略,根据访问者的地理位置来提供不同的内容。
5.

访问控制列表(ACL):

在网络设备上配置ACL,允许或拒绝特定IP地址的访问。
6.

反向代理:

使用反向代理服务器,可以控制哪些请求被转发到后端服务器,从而实现访问控制。
7.

API网关:

对于API服务,可以使用API网关来控制哪些客户端可以访问API,以及他们可以访问哪些资源。
8.

用户身份验证:

通过要求用户登录或提供访问令牌,可以控制只有授权用户才能访问网站。
9.

速率限制:

对特定IP地址或用户进行速率限制,以防止滥用或攻击。
10.

SSL/TLS加密:

使用SSL/TLS加密连接,可以确保数据在传输过程中的安全性,并可能限制某些类型的网络攻击。
每种方法都有其优缺点,选择合适的方法取决于网站的具体需求、安全策略和性能要求。在实际操作中,可能需要结合多种方法来实现有效的访问控制。

                                       第一步:通过DNS解析厂商进行

一般情况下扫描器会针对域名进行扫描,我们可以在dns解析处做第一层防御,将海外线路解析为127.0.0.1,配置完成后海外扫描器就几乎都失效了
1 第二步:通过Nginx进行限制

通过域名解析后下一步会进入CDN,WAF网站防火墙,硬件设备或直接通往源站,此时我们可以对请求进行更细的过滤,这里主要讲一下通过网站防火墙配置和Nginx配置。

1.地区访问限制

前面提到的是通过DNS解析来对域名进行禁海外访问,但如果攻击者使用IP来扫描就没办法了,所以我们需要在服务器或应用上进行限制。

Nginx实现根据国家/城市进行访问限制

Nginx使用模块
ngx_http_geoip_module
来实现对国家/城市访问限制

安装方式如下:

1.1 安装maxminddb library(geoip2扩展依赖)

Ubuntu

apt install libmaxminddb0 libmaxminddb-dev mmdb-bin

Centos

yum install libmaxminddb-devel -y

1.2 下载ngx_http_geoip2_module模块
进入root目录,然后克隆模块

cd root && git clone https://github.com/leev/ngx_http_geoip2_module.git

1.3 把模块编译到Nginx

手工编译方式

./configure --add-module=/root/ngx_http_geoip2_module
1.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

1.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; }
1.6 修改Nginx虚拟主机的配置文件,在server段内添加后重载nginx

if ($allowed_country = yes) { return 403; }

至此配置完成

喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消