2019-01-16 nginx 使用Geoip禁止非法地区访问 只允许指定地区访问 只允许域名访问...

最近公司内部为了外部访问方便搭建了一台堡垒机,然后发现老是被字典破解,后台登录记录全是弱密码暴力破解


5155564-9572a13faff93567.png
暴力破解记录

虽然我的用户名密码比较安全,但也是虚的一逼啊,抓紧时间禁止它访问.虽然国内也会有肉鸡攻击,但毕竟减少了不少概率.

  1. 先查看下nginx是否编辑有GeoIP模块:
    nginx -V 在输出界面看是否有--with-http_geoip_module
    若没有 yum -y install geoip-devel GeoIP数据库会被安装在 /usr/share/GeoIP/GeoIP.dat
    也可以从 http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 这里下载最新的GeoIP数据库文件。
[root@zk conf.d]# nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --省略一部分-- --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module -m64--省略一部分--'

然后开始配置nginx的配置文件/etc/nginx/nginx.conf, 我配置的只允许中国访问:

    # 访问地理位置限制,这里只允许中国ip访问,降低使用国外代理进行暴力破解的概率--秦飞
    geoip_country /usr/share/GeoIP/GeoIP.dat;

    # geoip_city    /usr/share/GeoIP/GeoLiteCity.dat;
    # 下面一行根据实际情况编写
    map $geoip_country_code $allowed_country {
        default no;
        CN yes;
    }

然后在server块里面进行配置:

server {
    listen 80;  # 代理端口,以后将通过此端口进行访问,不再通过8080端口
    server_name xx.xx.xx;  # 修改成你的域名或者注释掉

    client_max_body_size 100m;  # 录像及文件上传大小限制

    if ($allowed_country = no) {
        return 403;
    }
    ----------------略略略一大堆东西-----------------
}

如果国家访问规则的匹配结果是no,则返回403


5155564-54830083bb610036.png
浏览器访问结果

至此基于国家的访问控制完成.

只允许域名访问基于端口:

server{
        listen 80 default_server;
        server_name _;
        return 403;
}

每一个端口在此配置一个server块, 接收ip请求返回403即可

参考资料:
https://blog.csdn.net/linux_newbie_rookie/article/details/78663721
https://takeshiyako.blogspot.com/2016/10/nginx-ngx-http-geoip-module.html
https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-by-geoip/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值