最近公司内部为了外部访问方便搭建了一台堡垒机,然后发现老是被字典破解,后台登录记录全是弱密码暴力破解
虽然我的用户名密码比较安全,但也是虚的一逼啊,抓紧时间禁止它访问.虽然国内也会有肉鸡攻击,但毕竟减少了不少概率.
- 先查看下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
至此基于国家的访问控制完成.
只允许域名访问基于端口:
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/