Как и на большинстве серверов (я полагаю), у нас есть люди, которые пытаются грубо использовать наши сервисы 24/7. У меня cpHulk занесет в черный список их IP-адреса, но, похоже, было бы лучше, если бы они вообще не зашли так далеко. Я и мой хост - единственные, кто подключается к серверу через порты, отличные от 80, поэтому я хотел бы заблокировать подключения из всех стран за пределами США, кроме порта 80. Я связался с моим хостом, чтобы настроить это, но они колебались, потому что говорили, что это создаст исключительно высокую нагрузку на сервер. Это выделенный сервер Xeon 1230 с 32 ГБ оперативной памяти под управлением CentOS 6.6 и iptables.
Во-первых, по какой причине не делать этого? Во-вторых, правильно ли мне сказал мой хозяин? В-третьих, есть ли способ добиться этого без снижения производительности?
Установка определенных правил для блокировки каждого диапазона IP-адресов (путем перечисления каждого диапазона) - неправильный подход.
Задайте в iptables правила по умолчанию, чтобы весь трафик отбрасывался на порты управления. Затем добавьте правила, разрешающие доступ только с ваших доверенных IP-адресов (вашего и вашего хоста).
Блокировка всего по умолчанию и разрешение только одобренного трафика обычно называется «явным запретом всего» и считается наилучшей практикой. В этом случае также помогает избежать влияния на производительность вашего хоста.
Для этого вам нужно будет добавить десятки тысяч правил брандмауэра, по одному для каждого сетевого блока, где страна может иметь от одной до нескольких тысяч связанных с ней сетевых блоков.
Когда приходит запрос, его нужно проверять на соответствие каждое правило, что занимает очень мало времени для нескольких десятков или, может быть, даже нескольких сотен правил, но с таким количеством правил, которое вам нужно, (1) каждый запрос будет значительно замедлен и (2) он будет использовать много ЦПУ.
Способ сделать это без значительного снижения производительности - это сделать то, что вы уже делаете: заблокировать только те конкретные адреса, которые вызывают проблемы.
Вам понадобится инструмент под названием ipsets.
Наборы IP - это структура внутри ядра Linux, которую можно администрировать с помощью утилиты ipset. В зависимости от типа в настоящее время набор IP может хранить IP-адреса, номера портов (TCP / UDP) или IP-адреса с MAC-адресами таким образом, что обеспечивает молниеносную скорость сопоставления записи с набором.
здесь важно отметить, что он молниеносный! Это связано с тем, что огромное количество IP-сетей может быть представлено одним хешем вместо сотен или тысяч строк правил iptables.
Для блокирующих стран см. Это пример:
Не обращая внимания на то, является ли это хорошей идеей, вы можете сделать то, что просили, с помощью Модуль GeoIP для iptables.
После сборка и установка модуля (и ежемесячно обновляя списки IP-адресов), вы можете делать такие вещи, чтобы заблокировать отдельные страны:
iptables -I INPUT -m geoip --src-cc CN -j DROP
Или используйте --src-cc US -j ACCEPT
и так далее, если вы предпочитаете указать те страны, которые хотите сохранить.
Если вы хотите сохранить возможность подключения из любого места, не поддерживая черный / белый список геолокации, вы можете реализовать портить. Это остановит большинство автоматических попыток, но позволит вам подключиться с любого адреса.
Примечание. Не кладите порт для удара рядом с портом, который необходимо открыть, иначе последовательное сканирование портов активирует ваше правило.
Если в вашем стеке есть один или два маршрутизатора с поддержкой BGP, И у вас есть какое-то представление о том, что, черт возьми, вы делаете / работаете с кем-то, кто знает, что, черт возьми, они делают, или Возможно, за провайдером предотвращения DDoS-атак, достаточно крутым, чтобы помочь в реализации этого, есть относительно свежий метод ограничения трафика в географических регионах, называемый выборочным блэкхолингом, который, я думаю, заслуживает внимания.
https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf
http://mailman.nanog.org/pipermail/nanog/2014-Feb February/064381.html
http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/
Поскольку этот метод работает с манипулированием маршрутами, он позволяет обойти любые проблемы с загрузкой сервера.