前言¶
相信大家也都看到了,如今网络世界“动荡不安”,各国之间的争斗早已在互联网里展开。咱也不是专业的,在我们仅有的安全技术水平上,能不能做些力所能及的安全措施。因为我的系统都是通过nginx代理出去访问的,所以我就想能不通过nginx限制使用区域,比如非大陆的IP无法访问我们的系统。
准备工作¶
- 安装扩展
yum install libmaxminddb-devel -y
- nginx 源码
- ngx_http_geoip2_module 模块
- geoip2最新的IP库
我这里以tengine为例
开始编译¶
- 如果你之前已经使用了nginx/tengine,最好先看看之前的编译参数,做到兼容,进入之前编译的目录(objs)
查询当时的一个编译参数(configure arguments)
1
nginx -V
- 将ngx_http_geoip2_module 模块放到服务器上,并赋予755、777权限
在我们接下来的编译中需要带上上面的参数,在这些参数的基础上再加上:
1 |
|
![image.png](https://smartpublic-10032816.file.myqcloud.com/custom/20220808182707/18438/20220808182707/--4da72423f1d3ae265f7c78c851bd49d8.png)
编译过程没有报错就继续执行
1 |
|
开始配置¶
在安装完成以后,会在系统生成/usr/share/GeoIP/目录:
里面有默认的IP地址库,一个ipv4的,一个ipv6的,但是我们需要最新的,我已经下载好了,在仓库里自行下载
然后在服务器上解压,放在任意目录,我这里放在/data/tengine/GeoIP/目录下
接下来需要配置一下nginx.conf的文件,在http模块里添加获取IP区域的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
配置好了以后就可以在我们自己的配置文件中直接引用了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
如果想放开香港的地址,可以改为
1 2 3 4 5 |
|
其他地区的可以按需放开,会科学上网的可以测试一下,我们的系统已经禁止非大陆的IP访问了
总结¶
我们也不是专业的安全人员,以上操作只能防止国外的人访问我们的系统,并不能做到直接禁掉端口,所以不知道有没有用,只能心里安慰自己有大用。