блокировка IP-адреса из стран с помощью дополнения Geoip в Iptables

Thank you for reading this post, don't forget to subscribe!

Мы узна­ем, как мы можем бло­ки­ро­вать тра­фик исхо­дя­щий от кон­крет­ных IP-адре­сов стран с помо­щью базы дан­ных GeoIP и Linux IPTables. Iptables явля­ет­ся коман­дой на осно­ве ути­ли­ты для настрой­ки ядра бранд­мау­э­ра Линук­са, кото­рый реа­ли­зу­ет­ся в рам­ках про­ек­та Netfilter. В то вре­мя как GeoIP пред­став­ля­ет собой набор IP-адре­сов, соот­вет­ству­ю­щих гео­гра­фи­че­ским местам, где гео­гра­фи­че­ское поло­же­ние сопо­став­ля­ет­ся с IP-адре­са­ми, выде­ля­е­мых на тех кон­крет­ной орга­ни­за­ции, горо­дов, обла­стей и стра­ны. Гео­гра­фи­че­ские коор­ди­на­ты в базе дан­ных GeoIP часто нахо­дят­ся вбли­зи цен­тра насе­ле­ния, поэто­му их не сле­ду­ет исполь­зо­вать для опре­де­ле­ния кон­крет­но­го адре­са или домо­хо­зяй­ства. С помо­щью моду­ля под назва­ни­ем xt_geoip, состо­я­щий из рас­ши­ре­ния Iptables xtables-addon и базы дан­ных GeoIP.

Обновление и установка зависимостей

Преж­де все­го, мы долж­ны модер­ни­зи­ро­вать нашу систе­му Linux, а затем мы будем дви­гать­ся впе­ред для уста­нов­ки зави­си­мо­стей, кото­рые необ­хо­ди­мы для xtables-addons. Для того, что­бы сде­лать это, мы выпол­ним сле­ду­ю­щие коман­ды соот­вет­ству­ю­щих дис­три­бу­ти­вам, рабо­та­ю­щих в нашей машине.

Систе­ма RedHat, осно­ван­ная (CentOS, RHEL, Fedora)

 

Установка xtables-addons

После того, как наша систе­ма будет модер­ни­зи­ро­ва­на и будут уста­нов­ле­ны все зави­си­мо­сти, мы уста­но­вим xtables-addons в нашей машине. Для это­го мы ска­ча­ем послед­ний tar-архив с офи­ци­аль­но­го сай­та про­ек­та xtables-addons с  помо­щью wget. После того, как он будет загру­жен, мы рас­па­ку­ем архив, а затем ском­пи­ли­ру­ем и уста­но­вим его на нашей машине.

Раз­ре­шить SELinux для загруз­ки моду­лей (на осно­ве систе­мы RedHat)

Посколь­ку дис­три­бу­ти­вы на осно­ве RedHat т.е. CentOS, RHEL, Fedora име­ют вклю­чен­ную SELinux по умол­ча­нию, мы долж­ны скор­рек­ти­ро­вать поли­ти­ку SELinux сле­ду­ю­щим обра­зом. В про­тив­ном слу­чае, SELinux будет пре­пят­ство­вать IPTables для моду­ля загруз­ки xt_geoip.

 

Установка базы данных GeoIP

Далее, мы запу­стим модуль под назва­ни­ем xt_geoip , кото­рый постав­ля­ет­ся с рас­ши­ре­ни­ем Xtables-addons, кото­рый загру­жа­ет базу дан­ных GeoIP из MaxMind и пре­об­ра­зу­ет его в дво­ич­ную фор­му, при­знан­ной в xt_geoip. После того, как он будет загру­жен, мы созда­дим его и пере­ме­стим их к нуж­но­му в xt_geoip пути, т.е. /usr/share/xt_geoip/.

Блокировка трафика из страны

Если все про­шло, как и сле­до­ва­ло ожи­дать, мы долж­ны в состо­я­нии исполь­зо­вать на нашем бранд­мау­э­ре ути­ли­ты про­грам­мы IPTables, что­бы исполь­зо­вать модуль GeoIP.

Исполь­зо­ва­ние Iptables

Вот основ­ной син­так­сис для исполь­зо­ва­ния IPTables с моду­лем GeoIP для того, что­бы бло­ки­ро­вать тра­фик, исхо­дя­щий из или пред­на­зна­чен­ных для стра­ны. Здесь мы долж­ны исполь­зо­вать двух-бук­вен­ный код ISO3166 вме­сто стра­ны, напри­мер, RU для Рос­сии, IE для Ирлан­дии, IN для Индии, CN для Китая и так далее.

 

Теперь, если мы хотим бло­ки­ро­вать вхо­дя­щий тра­фик из Индии (IN) и Соеди­нен­ных Шта­тов Аме­ри­ки (US), мы напи­шем сле­ду­ю­щую коман­ду для Iptables.

 
Если мы хотим бло­ки­ро­вать весь вхо­дя­щий тра­фик за пре­де­ла­ми Рос­сии на нашем сер­ве­ре, мы долж­ны выпол­нить сле­ду­ю­щие действия.

 

 
Когда мы пыта­лись пин­го­вать сер­вер из сети за пре­де­ла­ми Рос­сии, мы не полу­чи­ли отве­тов. Так как были при­ме­не­на кон­фи­гу­ра­ция Iptables на вре­мя выпол­не­ния и не были сохра­не­ны, после того мы пере­за­гру­зи­ли сер­вер, мы полу­чи­ли отве­ты пин­га с сервера.
Если мы хотим бло­ки­ро­вать исхо­дя­щий тра­фик, пред­на­зна­чен­ный для Индии (IN), необ­хо­ди­мо выпол­нить сле­ду­ю­щую команду.

 

Исполь­зо­ва­ние firewalld

Если мы зай­дем в систе­му, осно­ван­ную на Systemd и firewalld в каче­стве кон­трол­ле­ра для внеш­не­го интер­фей­са IPTables, мы можем так­же исполь­зо­вать firewalld для выше­ука­зан­ной задачи.

Iptables с моду­лем GeoIP явля­ет­ся очень важ­ным для предот­вра­ще­ния DOSDDOS ата­ки, исхо­дя­щие из неко­то­рых стран. Это так­же очень эффек­тив­но, если вы хоти­те огра­ни­чить доступ к ваше­му веб-сай­ту/­сер­ве­ру из опре­де­лен­ной стра­ны. Таким обра­зом, имея модуль GeoIP уста­нов­лен­ный с Iptables-addons явля­ет­ся обя­за­тель­ным иметь уста­нов­ку для раз­ре­ше­ния или запре­та опре­де­лен­ных стран.