0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過(guò)Nginx實(shí)現(xiàn)禁止國(guó)外IP訪問(wèn)網(wǎng)站

jf_TEuU2tls ? 來(lái)源:頭條號(hào)運(yùn)維小弟 ? 2023-12-01 11:12 ? 次閱讀

前言

大家好,這里是浩道Linux,主要給大家分享Linux、Python、網(wǎng)絡(luò)通信網(wǎng)絡(luò)安全等相關(guān)的IT知識(shí)平臺(tái)。

最近不少小伙伴反饋?zhàn)约壕S護(hù)的項(xiàng)目中,經(jīng)常在后臺(tái)可以看到來(lái)自國(guó)外IP的攻擊,令人頭疼。今天浩道跟大家分享如何通過(guò)Nginx來(lái)實(shí)現(xiàn)禁止國(guó)外IP訪問(wèn)網(wǎng)站,確保你網(wǎng)站免遭國(guó)外IP攻擊了!

如果你對(duì)nginx相關(guān)知識(shí)感興趣,可以看看這篇,可以確保你快速掌握其功能與應(yīng)用場(chǎng)景!

想要實(shí)現(xiàn)這個(gè)功能有很多方法,下面我就來(lái)介紹基于 NGINX 的 ngx_http_geoip2 模塊 來(lái)禁止國(guó)外 IP 訪問(wèn)網(wǎng)站

一、安裝 geoip2 擴(kuò)展依賴

[root@fxkj~]#yuminstalllibmaxminddb-devel-y

二、下載 ngx_http_geoip2_module 模塊

[root@fxkjtmp]#gitclonehttps://github.com/leev/ngx_http_geoip2_module.git
[rotmp]#

三、解壓模塊到指定路徑

我這里解壓到/usr/local 目錄下

[root@fxkjtmp]#mvngx_http_geoip2_module//usr/local/
[root@fxkjlocal]#llngx_http_geoip2_module/
total60
-rw-r--r--1rootroot1199Aug1317:20config
-rw-r--r--1rootroot1311Aug1317:20LICENSE
-rw-r--r--1rootroot23525Aug1317:20ngx_http_geoip2_module.c
-rw-r--r--1rootroot21029Aug1317:20ngx_stream_geoip2_module.c
-rw-r--r--1rootroot3640Aug1317:20README.md

四、安裝 nginx 模塊

首先說(shuō)明下環(huán)境,我的 nginx 版本是 1.16 , 在網(wǎng)上查了下 安裝 ngx_http_geoip2 模塊至少需要 1.18 版本及以上,因此此次安裝我是 升級(jí) nginx1.18,添加 ngx_http_geoip2 模塊。

下載 nginx 1.18 版本

[root@fxkj~]#yuminstalllibmaxminddb-devel-y

解壓 nginx1.18 軟件包并 升級(jí)為 nginx1.18 ,添加 ngx_http_geoip2 模塊

需要注意:

1、升級(jí) nginx, 添加 nginx 模塊 只需要 編譯 然后 make 不需要 make instll 不然線上的 nginx 會(huì)被新版本 nginx 完完整整的替換掉

2、編譯前 需要看下 nginx 當(dāng)前安裝了哪些模塊

[root@fxkjtmp]#/usr/local/nginx/sbin/nginx-V

nginxversion:nginx/1.16.0

builtbygcc4.8.520150623(RedHat4.8.5-39)(GCC)

builtwithOpenSSL1.0.2k-fips26Jan2017

TLSSNIsupportenabled

configurearguments:–with-http_stub_status_module–prefix=/usr/local/nginx–user=nginx–group=nginx–with-http_ssl_module–with-stream

編譯安裝

[root@fxkjtmp]#tar-xfnginx-1.18.0.tar.gz
[root@fxkjtmp]#cdnginx-1.18.0/
[root@fxkjnginx-1.18.0]#./configure--with-http_stub_status_module
--prefix=/usr/local/nginx
--user=nginx--group=nginx--with-http_ssl_module--with-stream
--add-module=/usr/local/ngx_http_geoip2_module
[root@fxkjnginx-1.18.0]#make
[root@fxkjnginx-1.18.0]#cp/usr/loca/nginx/sbin/nginx/usr/loca/nginx/sbin/nginx1.16#備份
[root@fxkjnginx-1.18.0]#cpobjs/nginx/usr/local/nginx/sbin/#用新的去覆蓋舊的
[root@fxkjnginx-1.18.0]#pkillnginx#殺死nginx
[root@fxkjnginx-1.18.0]#/usr/local/nginx/sbin/nginx#再次啟動(dòng)Nginx

查看 nginx 版本 以及安裝的模塊

[root@fxkjnginx-1.18.0]#/usr/local/nginx/sbin/nginx-V

nginxversion:nginx/1.18.0

builtbygcc4.8.520150623(RedHat4.8.5-39)(GCC)

builtwithOpenSSL1.0.2k-fips26Jan2017

TLSSNIsupportenabled

configurearguments:–with-http_stub_status_module–prefix=/usr/local/nginx–user=nginx–group=nginx–with-http_ssl_module–with-stream–add-module=/usr/local/ngx_http_geoip2_module

五、下載最新的 IP 地址數(shù)據(jù)庫(kù)文件

模塊安裝成功后,還要在 Nginx 里指定數(shù)據(jù)庫(kù),在安裝運(yùn)行庫(kù)時(shí)默認(rèn)安裝了兩個(gè),位于 /usr/share/GeoIP/ 目錄下,一個(gè)只有 IPv4,一個(gè)包含 IPv4 和 IPv6:

登錄 www.maxmind.com 網(wǎng)址,創(chuàng)建賬戶 下載最新的庫(kù)文件(賬戶創(chuàng)建就不演示了)

點(diǎn)擊左側(cè) ,Download Files

0bdd08ee-8fdc-11ee-939d-92fbcf53809c.png

選擇 GeoLite2 Country ,點(diǎn)擊 Download GZIP 下載即可

0beed3ee-8fdc-11ee-939d-92fbcf53809c.png

上傳到 /usr/share/GeoIP/ 下并解壓

[root@fxkjlocal]#cd/usr/share/GeoIP/
[root@fxkjGeoIP]#ll
total69612
lrwxrwxrwx.1rootroot17Mar72019GeoIP.dat->GeoIP-initial.dat
-rw-r--r--.1rootroot1242574Oct302018GeoIP-initial.dat
lrwxrwxrwx.1rootroot19Mar72019GeoIPv6.dat->GeoIPv6-initial.dat
-rw-r--r--.1rootroot2322773Oct302018GeoIPv6-initial.dat
-rw-r--r--1rootroot3981623Aug1202:37GeoLite2-Country.mmdb

六、配置 nginx 配置文件

修改前 先備份配置文件

[root@fxkj ~]#cp/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf-bak
[root@fxkj ~]#vim/usr/local/nginx/conf/nginx.conf

在 http 中添加 幾行,定義數(shù)據(jù)庫(kù)文件位置

geoip2/usr/share/GeoIP/GeoLite2-City.mmdb{
auto_reload5m;
$geoip2_data_country_codecountryiso_code;
}
map$geoip2_data_country_code$allowed_country{
defaultyes;
CNno;
}
0bfcf550-8fdc-11ee-939d-92fbcf53809c.png

在 server 中的 location 下 添加 條件

如果滿足 IP 是國(guó)外 IP 就 執(zhí)行下面的 return 動(dòng)作,我這里定義了 3 種, 注釋了其中兩個(gè)。

當(dāng)訪問(wèn) IP 是國(guó)外 IP ,直接返回 404

if($allowed_country=yes){
#returnhttps://www.baidu.com;
#return/home/japan;
return404;
}

修改完畢后, 檢測(cè)下配置文件,重新加載下 nginx

[root@fxkj~]#/usr/local/nginx/sbin/nginx-t
nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
nginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
[roo@fxkj~]#/usr/local/nginx/sbin/nginx-sreload

7、模擬測(cè)試驗(yàn)證

使用海外節(jié)點(diǎn)的服務(wù)器去訪問(wèn)網(wǎng)站

這里我的 IP 是 來(lái)自于韓國(guó)

0c075bc6-8fdc-11ee-939d-92fbcf53809c.png

可以看到訪問(wèn)網(wǎng)站報(bào)錯(cuò) 404 Not Found

0c27edc8-8fdc-11ee-939d-92fbcf53809c.png

我們?cè)賮?lái)看下 nginx 的訪問(wèn)日志

“13.125.1.194––[14/Aug/2020:16:15:51+0800]“GET/favicon.icoHTTP/1.1”404548“https://www.fxkjnj.com/”“Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/84.0.4147.125Safari/537.36”
0c356110-8fdc-11ee-939d-92fbcf53809c.png

至此,我們通過(guò) Nginx 來(lái)實(shí)現(xiàn)禁止國(guó)外 IP 訪問(wèn)網(wǎng)站 就結(jié)束了!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208716
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1610

    瀏覽量

    149243
  • 網(wǎng)站
    +關(guān)注

    關(guān)注

    1

    文章

    257

    瀏覽量

    23128
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    12154

原文標(biāo)題:網(wǎng)站經(jīng)常遭受外國(guó)IP攻擊?可以通過(guò)Nginx來(lái)禁止其訪問(wèn)!

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    網(wǎng)站用戶終于解決訪問(wèn)網(wǎng)站慢的問(wèn)題

    成熟,提供的也不是很多.以個(gè)人的經(jīng)驗(yàn),下面給大家介紹一下雙線主機(jī)吧!雙線主機(jī)服務(wù) 雙線服務(wù)器實(shí)際是一臺(tái)服務(wù)器分別有電信和網(wǎng)通兩條線路接入,通過(guò)對(duì)用戶 IP 地址的智能解析,實(shí)現(xiàn)電信用戶訪問(wèn)
    發(fā)表于 08-03 15:47

    IP屏蔽軟件作用

    、國(guó)外用戶訪問(wèn),當(dāng)然也可以只限制某個(gè)地區(qū)訪問(wèn)!由于許多公司產(chǎn)品相似,一些同行競(jìng)爭(zhēng)對(duì)手缺乏原創(chuàng)精神,總是拷貝別人網(wǎng)站上一些優(yōu)秀圖片及文字發(fā)布到自己的網(wǎng)
    發(fā)表于 11-05 13:58

    如何在電腦上禁止訪問(wèn)QQ空間

    今天教大家如何在電腦上不影響QQ正常使用的前提下,禁止訪問(wèn)QQ空間。IE的那個(gè)設(shè)置不行,因?yàn)橐坏┑卿泀zone.qq.com網(wǎng)站,qq程序會(huì)自動(dòng)引導(dǎo)解除屏蔽,改hosts也不行,所以我們要用其他
    發(fā)表于 04-28 15:02

    如何訪問(wèn)國(guó)外網(wǎng)站,包括github網(wǎng)站????

    `想***,可是網(wǎng)速會(huì)不不給力。同志們,誰(shuí)有好方法去訪問(wèn)米國(guó)的網(wǎng)站呢????`
    發(fā)表于 03-12 10:57

    【NanoPi NEO試用體驗(yàn)】之安裝配置Nginx環(huán)境WEB網(wǎng)站詳解

    WEB網(wǎng)站的經(jīng)典環(huán)境。首先NanoPi NEO原生就是為L(zhǎng)INUX系統(tǒng)而開(kāi)發(fā)的所以系統(tǒng)方面不用擔(dān)心。至于NGINX和PHP在WEB網(wǎng)站用戶訪問(wèn)量不超過(guò)1000次并發(fā)
    發(fā)表于 10-18 12:25

    NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器

    )是為任何規(guī)模的網(wǎng)站,尤其是繁忙的網(wǎng)站有用的一些附加功能的替代PHP 的FastCGI 實(shí)現(xiàn)),安裝如下:#apt-get -y install php7.0-fpm5. 配置nginx
    發(fā)表于 06-20 15:43

    如何通過(guò)Dataworks禁止MaxCompute 子賬號(hào)跨Project訪問(wèn)

    ://ram.console.aliyun.com/2、通過(guò)用戶管理創(chuàng)建RAM子賬號(hào),同時(shí)保存ak信息。3、開(kāi)通RAM子賬號(hào)獨(dú)立登錄訪問(wèn)權(quán)限。4、通過(guò)Dataworks項(xiàng)目管理,實(shí)現(xiàn)
    發(fā)表于 03-15 11:21

    主要學(xué)習(xí)下nginx的安裝配置

    處理。因?yàn)橛辛酥虚g件,使得大型網(wǎng)站在規(guī)劃有了更好的層次性,維護(hù)上更加方便。也可以實(shí)現(xiàn)負(fù)載均衡、安全防護(hù)等。Nginx是一個(gè)開(kāi)源高性能、可靠的HTTP中間件、代理服務(wù),在目前企業(yè)中得到了很大的利用。今天
    發(fā)表于 10-19 14:12

    蘋(píng)果禁止iPhone黑客訪問(wèn)App Store應(yīng)用商店

    蘋(píng)果禁止iPhone黑客訪問(wèn)App Store應(yīng)用商店  據(jù)國(guó)外媒體報(bào)道,蘋(píng)果近日對(duì)曾經(jīng)入侵iPhone手機(jī)操作系統(tǒng)的黑客采取了較為嚴(yán)歷的打擊措
    發(fā)表于 02-22 09:34 ?592次閱讀

    爬蟲(chóng)實(shí)現(xiàn)目標(biāo)網(wǎng)站驗(yàn)證碼登陸

    ,包裝后再POST給服務(wù)器,實(shí)現(xiàn)驗(yàn)證,這里還涉及到了Cookie和代理ip,cookie都是隨機(jī)生成的。這里主要講下代理ip的使用,因?yàn)椴还?b class='flag-5'>網(wǎng)站是以什么方式進(jìn)行驗(yàn)證,
    發(fā)表于 12-11 15:27 ?2389次閱讀

    配置Nginx訪問(wèn)日志

    每當(dāng)處理客戶請(qǐng)求時(shí),Nginx都會(huì)在訪問(wèn)日志中生成一個(gè)新記錄。每個(gè)事件記錄都包含一個(gè)時(shí)間戳,并包含有關(guān)客戶端和所請(qǐng)求資源的各種信息。訪問(wèn)日志可以顯示訪問(wèn)者的位置,
    的頭像 發(fā)表于 05-24 09:59 ?2270次閱讀

    如何通過(guò)Nginx實(shí)現(xiàn)遠(yuǎn)程調(diào)試本機(jī)代碼

    HTTPS 就不需要改代碼了,只需修改 host 將后端測(cè)試環(huán)境域名指向 nginx 服務(wù)的 IP 即可,而且可以適用于其它的 HTTP 服務(wù)開(kāi)發(fā)調(diào)試。
    發(fā)表于 03-03 15:26 ?410次閱讀

    多個(gè)相同IP設(shè)備通過(guò)網(wǎng)段隔離器實(shí)現(xiàn)不同IP訪問(wèn)映射

    )來(lái)解決這一問(wèn)題,它允許多個(gè)設(shè)備在內(nèi)部網(wǎng)絡(luò)上共享單個(gè)公共IP地址,并實(shí)現(xiàn)外網(wǎng)的跨網(wǎng)段訪問(wèn)。 網(wǎng)段隔離器可以通過(guò)WAN和LAN不同防火墻區(qū)域進(jìn)行網(wǎng)段隔離;
    的頭像 發(fā)表于 11-15 17:21 ?712次閱讀
    多個(gè)相同<b class='flag-5'>IP</b>設(shè)備<b class='flag-5'>通過(guò)</b>網(wǎng)段隔離器<b class='flag-5'>實(shí)現(xiàn)</b>不同<b class='flag-5'>IP</b>的<b class='flag-5'>訪問(wèn)</b>映射

    Nginx的配置文件如何設(shè)置頭信息保留真實(shí)IP不丟失

    Nginx 配置中設(shè)置頭信息以保留客戶端的真實(shí) IP 地址通常是在使用反向代理的場(chǎng)景中需要的。當(dāng) Nginx 作為反向代理時(shí),客戶端的真實(shí) IP 地址可能會(huì)在轉(zhuǎn)發(fā)請(qǐng)求時(shí)丟失,因?yàn)榈?/div>
    的頭像 發(fā)表于 11-30 10:54 ?1809次閱讀

    國(guó)外IP代理地址:提升網(wǎng)絡(luò)訪問(wèn)體驗(yàn)

    國(guó)外IP代理地址通過(guò)提供位于國(guó)外的代理服務(wù)器,為用戶訪問(wèn)國(guó)外網(wǎng)站和服務(wù)提供了便利,從而能夠顯著提
    的頭像 發(fā)表于 10-31 07:04 ?130次閱讀