如何在linux上按国别阻止网络流量

如何在linux上按国别阻止网络流量,第1张

作为一名维护生产环境Linux服务器的系统管理员,在有些情况下,你需要根据地理位置,有选择性地阻止或允许网络流量。比如说,你遇到了拒绝服务攻击,这些攻击主要源自在某一个国家注册的IP地址。在其他情况下,出于安全方面的原因,你又想要阻止外国来历不明SSH登录请求;或者贵公司对在线视频拥有发行权,因而只可以分发给某些国家;或者由于地域限制方面的公司政策,你需要防止本地主机将文档上传到非美国远程云存储系统。

  所有这些场景都需要能够安装一个防火墙,可以按国别对流量进行过滤。有几种方法可以做到这一点。举例说,你可以使用TCP包装器(TCP wrapper),针对个别应用程序(比如SSH、NFS和httpd)设置有条件的阻止。其缺点是,你想要保护的那个应用程序在开发当初必须支持TCP包装器。此外,TCP包装器并非普遍出现在不同的平台上(比如说,Arch Linux已停止对TCP包装器的支持)。另一种办法就是,利用基于国家的GeoIP信息来设置ipset,然后将它运用于iptables规则。后一种方法更有希望,因为基于iptables的过滤与应用程序无关,而且易于设置。

  我在本教程中将介绍另一种基于iptables的GeoIP过滤机制,这种机制实施了xtables-addons。有些读者对它还不熟悉,所以有必要先介绍一下,xtables-addons是一套面向netfilter/iptables的扩展。xtables-addons内含了一个名为xt_geoip的模块,该模块扩展了netfilter/iptables的功能,可以根据来源/目的地国家,过滤、NAT或管理数据包。如果你想使用xt_geoip,不需要重新编译内核或iptables,只需要构建xtables-addons模块,并使用当前的内核构建环境(/lib/modules/`uname -r`/build)。也不需要重启。一旦你构建并安装好了xtables-addons,xt_geoip立即就可以与iptables结合使用。

  至于xt_geoip和ipset之间的区别,官方来源(http://xtables-addonssourceforgenet/geoipphp)提到,xt_geoip在内存占用空间方面少于ipset。不过在匹配速度方面,基于散列的ipset可能具有优势。

  在本教程其余部分,我会演示如何使用iptables/xt_geoip,根据来源/目的地国家,阻止网络流量。

  将Xtables-addons安装到Linux上

  下面介绍如何编译xtables-addons,并将它安装到不同的Linux平台上。

  想构建xtables-addons,你就需要先安装几个依赖程序包。

  ·将依赖程序包安装到Debian、Ubuntu或Linux Mint上

  $ sudo apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

  ·将依赖程序包安装到CentOS、RHEL或Fedora上

  CentOS/RHEL 6需要先安装EPEL软件库(面向perl-Text-CSV_XS)。

  $ sudo yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

  编译和安装Xtables-addons

  从官方网站(http://xtables-addonssourceforgenet)下载最新的xtables-addons源代码,然后构建/安装它,如下所示。

  $wget http://downloadssourceforgenet/project/xtables-addons/Xtables-addons/xtables-addons

  -210tarxz

  $ tar xf xtables-addons-210tarxz

  $ cd xtables-addons-210

  $ /configure

  $ make

  $ sudo make install

  请注意:如果是默认情况下已启用SELinux的基于红帽的系统(CentOS、RHEL、Fedora),有必要调整SELinux策略,如下所示。要不然,SELinux会阻止iptables装入xt_geoip模块。

  $ sudo chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/ko

  $ sudo chcon -vR --type=lib_t /lib64/xtables/so

  为Xtables-addons安装GeoIP数据库

  下一步是安装GeoIP数据库,xt_geoip将用到该数据库,用于IP与国别映射。很方便的是,xtables-addons源程序包随带两个帮助脚本,可分别用来从MaxMind下载GeoIP数据库,并将它转换成xt_geoip可识别的二进制格式。这些脚本位于源程序包里面的geoip文件夹下面。按照下列说明,即可构建GeoIP数据库,并将它安装到你系统上。

  $ cd geoip

  $ /xt_geoip_dl

  $ /xt_geoip_build GeoIPCountryWhoiscsv

  $ sudo mkdir -p /usr/share/xt_geoip

  $ sudo cp -r {BE,LE} /usr/share/xt_geoip

  据MaxMind声称,其GeoIP数据库的准确性达到998%,数据库更每月都更新。为了确保本地安装的GeoIP数据库内容最新,你就需要设置每月执行的计划任务,以便每月更新一次本地GeoIP数据库。

  阻止来自或发往某个国家的网络流量

  一旦xt_geoip模块和GeoIP数据库都已安装好,你就可以立即使用iptables命令中的geoip匹配选项。

  $ sudo iptables -m geoip --src-cc country[,country] --dst-cc country[,country]

  你想要阻止的国家使用两个字母ISO3166代码来指定,比如说US(美国)、CN(中国)、IN(印度)和FR(法国)。

  比如说,如果你想阻止来自也门(YE)和赞比亚(ZM)的入站流量,下面这个iptables命令就能实现。

  $ sudo iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP

  如果你想阻止发往中国(CN)的出站流量,只要运行下面这个命令。

  $ sudo iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

  匹配条件也可以被“抵消”,只要将“!”放在“--src-cc”或“--dst-cc”的前面。比如说:

  如果你想在服务器上阻止所有非美国的入站流量,可以运行这个命令:

  $ sudo iptables -I INPUT -m geoip ! --src-cc US -j DROP

  针对Firewall-cmd用户

  像CentOS/RHEL 7或Fedora这一些发行版已将iptables换成firewalld,作为默认防火墙服务器。在这类系统上,你同样可以利用xt_geoip,使用firewall-cmd阻止流量。上面三个例子可以用firewall-cmd来改写,如下所示。

  $ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc YE,ZM -j DROP

  $ sudo firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP

  $ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP

  结束语

  我在本教程中介绍了iptables/xt_geoip,这是一种简单方法,可以根据来源/目的地国家,对网络数据包进行过滤。如果需要的话,可以将这件有用的武器部署到你的防火墙系统中。最后提醒一句,我应该提到:基于GeoIP的流量过滤并不是在你服务器上阻止某些国家的万无一失的方法。GeoIP数据库天生就不准确/不完整,如果使用***、Tor或任何受到危及的中继主机,就很容易欺骗来源/目的地国家。基于地域的过滤甚至会阻止本不该被禁止的合法流量。明白这个局限性后,再决定将它部署到你的生产环境中也不迟。

可以,需要花钱。

赞比亚的电话卡,接电话都是不要钱的。如果你用中国的号码到这里,建议你要打电话问问所在地区的10086,问一下开通国际漫游后是多少钱,不同地区都不一样。

确认一下上网的设置是否正确,比如要设置用户名、密码、服务器ip等。虽然在国内这些都不用设。

国际长途电话区号查询

本国际长途电话区号表根据“国际电信联盟”制定的《E164国际电信网编号》收集整理。

国内外长途电话包月任打!

国际长途电话区号表

国家或地区名称 长途区号 国家或地区名称 长途区号

阿富汗

Afghanistan 93 阿尔巴尼亚

Albania 355

阿尔及利亚

Algeria 213 美属萨摩亚

American Samoa 684

安道尔

Andorra 376 安哥拉

Angola 244

安圭拉

Anguilla 1264 南极洲

Antarctica 672

安提瓜和巴布达

Antigua and Barbuda 1268 阿根廷

Argentina 54

亚美尼亚

Armenia 374 阿鲁巴

Aruba 297

澳大利亚

Australia 61 奥地利

Austria 43

阿塞拜疆

Azerbaijan 994 巴林

Bahrain 973

孟加拉国

Bangladesh 880 巴巴多斯

Barbados 1246

白俄罗斯

Belarus 375 比利时

Belgium 32

伯利兹

Belize 501 贝宁

Benin 229

百慕大

Bermuda 1441 不丹

Bhutan 975

玻利维亚

Bolivia 591 波黑

Bosnia and Herzegovina 387

博茨瓦纳

Botswana 267 布维岛

Bouvet Island

巴西

Brazil 55 英属印度洋领地

British Indian Ocean Territory

英属维尔京群岛

British Virgin Islands 1284 文莱

Brunei Darussalam 673

保加利亚

Bulgaria 359 布基纳法索

Burkina Faso 226

缅甸

Burma 95 布隆迪

Burundi 257

柬埔寨

Cambodia 855 喀麦隆

Cameroon 237

加拿大

Canada 1 佛得角

Cape Verde 238

开曼群岛

Cayman Islands 1345 中非

Central African Republic 236

乍得

Chad 235 智利

Chile 56

中国

China 86 圣诞岛

Christmas Island 61

科科斯(基林)群岛

Cocos (Keeling) Islands 61 哥伦比亚

Colombia 57

科摩罗

Comoros 269 刚果(金)

Congo, Democratic Republic of the 243

刚果(布)

Congo, Republic of the 242 库克群岛

Cook Islands 682

哥斯达黎加

Costa Rica 506 科特迪瓦

Cote d'Ivoire 225

克罗地亚

Croatia 385 古巴

Cuba 53

塞浦路斯

Cyprus 357 捷克

Czech Republic 420

丹麦

Denmark 45 吉布提

Djibouti 253

多米尼克

Dominica 1767 多米尼加

Dominican Republic 1809

厄瓜多尔

Ecuador 593 埃及

Egypt 20

萨尔瓦多

El Salvador 503 赤道几内亚

Equatorial Guinea 240

厄立特里亚

Eritrea 291 爱沙尼亚

Estonia 372

埃塞俄比亚

Ethiopia 251 欧盟

European Union

福克兰群岛(马尔维纳斯)

Falkland Islands (Islas Malvinas) 500 法罗群岛

Faroe Islands 298

斐济

Fiji 679 芬兰

Finland 358

法国

France 33 法属圭亚那

French Guiana 594

法属波利尼西亚

French Polynesia 689 法属南部领土

French Southern and Antarctic Lands

加蓬

Gabon 241 格鲁吉亚

Georgia 995

德国

Germany 49 加纳

Ghana 233

直布罗陀

Gibraltar 350 希腊

Greece 30

格陵兰

Greenland 299 格林纳达

Grenada 1473

瓜德罗普

Guadeloupe 590 关岛

Guam 1671

危地马拉

Guatemala 502 根西岛

Guernsey 1481

几内亚

Guinea 224 几内亚比绍

Guinea-Bissau 245

圭亚那

Guyana 592 海地

Haiti 509

赫德岛和麦克唐纳岛

Heard Island and McDonald Islands 梵蒂冈

Holy See (Vatican City) 379

洪都拉斯

Honduras 504 香港

Hong Kong (SAR) 852

匈牙利

Hungary 36 冰岛

Iceland 354

印度

India 91 印度尼西亚

Indonesia 62

伊朗

Iran 98 伊拉克

Iraq 964

爱尔兰

Ireland 353 以色列

Israel 972

意大利

Italy 39 牙买加

Jamaica 1876

日本

Japan 81 泽西岛

Jersey

约旦

Jordan 962 哈萨克斯坦

Kazakhstan 73

肯尼亚

Kenya 254 基里巴斯

Kiribati 686

朝鲜

Korea, North 850 韩国

Korea, South 82

科威特

Kuwait 965 吉尔吉斯斯坦

Kyrgyzstan 996

老挝

Laos 856 拉脱维亚

Latvia 371

黎巴嫩

Lebanon 961 莱索托

Lesotho 266

利比里亚

Liberia 231 利比亚

Libya 218

列支敦士登

Liechtenstein 423 立陶宛

Lithuania 370

卢森堡

Luxembourg 352 澳门

Macao 853

前南马其顿

Macedonia, The Former Yugoslav Republic of 389 马达加斯加

Madagascar 261

马拉维

Malawi 265 马来西亚

Malaysia 60

马尔代夫

Maldives 960 马里

Mali 223

马耳他

Malta 356 马恩岛

Man, Isle of

马绍尔群岛

Marshall Islands 692 马提尼克

Martinique 596

毛里塔尼亚

Mauritania 222 毛里求斯

Mauritius 230

马约特

Mayotte 269 墨西哥

Mexico 52

密克罗尼西亚

Micronesia, Federated States of 691 摩尔多瓦

Moldova 373

摩纳哥

Monaco 377 蒙古

Mongolia 976

蒙特塞拉特

Montserrat 1664 摩洛哥

Morocco 212

莫桑比克

Mozambique 258 纳米尼亚

Namibia 264

瑙鲁

Nauru 674 尼泊尔

Nepal 977

荷兰

Netherlands 31 荷属安的列斯

Netherlands Antilles 599

新喀里多尼亚

New Caledonia 687 新西兰

New Zealand 64

尼加拉瓜

Nicaragua 505 尼日尔

Niger 227

尼日利亚

Nigeria 234 纽埃

Niue 683

诺福克岛

Norfolk Island 6723 北马里亚纳

Northern Mariana Islands 1

挪威

Norway 47 阿曼

Oman 968

巴基斯坦

Pakistan 92 帕劳

Palau 680

巴拿马

Panama 507 巴布亚新几内亚

Papua New Guinea 675

巴拉圭

Paraguay 595 秘鲁

Peru 51

菲律宾

Philippines 63 皮特凯恩

Pitcairn Islands

波兰

Poland 48 葡萄牙

Portugal 351

代理服务器

Proxy Server 波多黎各

Puerto Rico 1809

卡塔尔

Qatar 974 留尼汪

Reunion 262

罗马尼亚

Romania 40 俄罗斯

Russia 7

卢旺达

Rwanda 250 圣赫勒拿

Saint Helena 290

圣基茨和尼维斯

Saint Kitts and Nevis 1869 圣卢西亚

Saint Lucia 1758

圣皮埃尔和密克隆

Saint Pierre and Miquelon 508 圣文森特和格林纳丁斯

Saint Vincent and the Grenadines 1784

萨摩亚

Samoa 685 圣马力诺

San Marino 378

圣多美和普林西比

Sao Tome and Principe 239 沙特阿拉伯

Saudi Arabia 966

塞内加尔

Senegal 221 塞尔维亚和黑山

Serbia and Montenegro 381

塞舌尔

Seychelles 248 塞拉利

Sierra Leone 232

新加坡

Singapore 65 斯洛伐克

Slovakia 421

斯洛文尼亚

Slovenia 386 所罗门群岛

Solomon Islands 677

索马里

Somalia 252 南非

South Africa 27

南乔治亚岛和南桑德韦奇岛

South Georgia and the South Sandwich Islands 西班牙

Spain 34

斯里兰卡

Sri Lanka 94 苏丹

Sudan 249

苏里南

Suriname 597 斯瓦尔巴岛和扬马延岛

Svalbard 47

斯威士兰

Swaziland 268 瑞典

Sweden 46

瑞士

Switzerland 41 叙利亚

Syria 963

台湾

Taiwan 886 塔吉克斯坦

Tajikistan 992

坦桑尼亚

Tanzania 255 泰国

Thailand 66

巴哈马

The Bahamas 1242 冈比亚

The Gambia 220

多哥

Togo 228 托克劳

Tokelau 690

汤加

Tonga 676 特立尼达和多巴哥

Trinidad and Tobago 1868

突尼斯

Tunisia 216 土耳其

Turkey 90

土库曼斯坦

Turkmenistan 993 特克斯和凯科斯群岛

Turks and Caicos Islands 1649

图瓦卢

Tuvalu 688 乌干达

Uganda 256

乌克兰

Ukraine 380 阿拉伯联合酋长国

United Arab Emirates 971

英国

United Kingdom 44 美国

United States 1

乌拉圭

Uruguay 598 乌兹别克斯坦

Uzbekistan 998

瓦努阿图

Vanuatu 678 委内瑞拉

Venezuela 58

越南

Vietnam 84 美属维尔京群岛

Virgin Islands 1340

瓦利斯和富图纳

Wallis and Futuna 681 西撒哈拉

Western Sahara

也门

Yemen 967 南斯拉夫

Yugoslavia

赞比亚

Zambia 260 津巴布韦

Zimbabwe 263

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在linux上按国别阻止网络流量

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情