Как и большинство серверов (я полагаю), у нас есть люди, которые пытаются грубо насиловать наши сервисы 24/7. У меня есть cpHulk в черном списке их IP, но кажется, что было бы лучше, если бы они не зашли так далеко. Я и мой хост - единственные, кто подключается к серверу через порты, отличные от 80, поэтому я хотел бы заблокировать соединения из всех стран за пределами США, за исключением порта 80. Я связался с хостом, чтобы настроить это, но они были нерешительными, потому что они сказали, что это создаст исключительно высокую нагрузку на сервер. Это выделенный сервер Xeon 1230 с 32 ГБ оперативной памяти под управлением CentOS 6.6 и iptables.
Во-первых, есть ли причина не делать этого? Во-вторых, верно ли то, что сказал мне мой хозяин? В-третьих, есть ли способ сделать это без влияния на высокую производительность?
Ответы:
Установка определенных правил для блокировки каждого диапазона IP (путем перечисления каждого диапазона) является неправильным подходом.
Установите правила по умолчанию в iptables, чтобы отбрасывать весь трафик на порты управления. Затем добавьте правила, чтобы разрешить доступ только с ваших доверенных IP-адресов (вашего и вашего хоста).
По умолчанию все блокируется и разрешается только одобренный трафик, который обычно называется «явным запретом всего» и считается лучшей практикой. В этом случае также помогает избежать влияния на производительность вашего хоста.
источник
Для этого вам нужно будет добавить десятки тысяч правил брандмауэра, по одному на каждый сетевой блок, где страна может иметь от одного до нескольких тысяч сетевых блоков, связанных с ним.
Когда приходит запрос, он должен быть проверен на соответствие каждому отдельному правилу , что занимает очень мало времени для нескольких десятков или даже нескольких сотен правил, но с таким количеством правил, которое вам нужно будет использовать (1) каждое запрос будет значительно замедлен и (2) он будет использовать много ресурсов процессора.
Способ сделать это без существенного влияния на производительность - это делать то, что вы уже делаете: блокировать только те конкретные адреса, которые вызывают проблемы.
источник
Что вам нужно, это инструмент под названием Ipsets
важно отметить, что это молниеносно! Это связано с тем, что огромное количество IP-сетей может быть представлено одним хешем вместо сотен или тысяч строк правил iptables.
Для блокирования стран смотрите этот пример :
источник
Не обращая внимания на то, стоит ли делать это таким образом или нет, это хорошая идея, вы можете делать то, что просили, с помощью модуля GeoIP для iptables.
После создания и установки модуля (и ежемесячного обновления списков IP-адресов) вы можете выполнять такие действия, чтобы блокировать отдельные страны:
Или используйте
--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-February/064381.html
http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/
Поскольку этот метод работает с манипуляциями с маршрутами, он обходит любые проблемы с нагрузкой на сервер.
источник