Чи блокування всіх з'єднань за межами США, крім порту 80, спричинить велике навантаження сервера?


16

Як і більшість серверів (я припускаю), у нас люди намагаються змусити наших служб цілодобово працювати. У мене є чорний список cpHulk з їх IP-адресами, але, здається, було б краще, якби вони не потрапили так далеко в першу чергу. Я та мій хост - це єдині, хто підключається до сервера на портах, відмінних від 80, тому я хотів би заблокувати з'єднання з усіх країн за межами США, крім порту 80. Я зв’язався зі своїм хостом, щоб налаштувати це, але вони не вагалися, оскільки вони сказали, що це створить надзвичайно високе завантаження сервера. Це спеціалізований сервер Xeon 1230 з 32 ГБ оперативної пам’яті під керуванням CentOS 6.6 та iptables.

По-перше, якась причина не робити цього? По-друге, це те, що мій господар сказав мені правильним? По-третє, чи є спосіб досягти цього без високого впливу на продуктивність?


12
Прикро, що ваш контакт з хостингом не згадував "Але існує стандартний галузевий спосіб зробити те саме, що ви хочете, за допомогою набагато меншого обслуговування, кращої безпеки та низької завантаженості сервера під назвою" Явне відхилення всіх ". Отримайте мені список IP-адрес, які вам потрібні у списку і я за 20 хвилин його встановитиму ». - Ось що я б очікував почути від будь-якого сисадміна, який вартує крісла, в якому вони сидять.
corsiKa

просто заблокуйте їх, коли вони зловживають ... технічне обслуговування мінімально таким чином ... з повним столом ви повинні постійно його оновлювати
Скаперен

Відповіді:


33

Налаштування конкретних правил для блокування кожного діапазону IP (шляхом перерахування кожного діапазону) - неправильний підхід.

Встановіть правила iptables за замовчуванням, щоб скинути весь трафік на порти управління. Потім додайте правила, щоб дозволити доступ лише з ваших надійних IP-адрес (ваших та вашого хоста).

Блокування всього за замовчуванням та дозволення лише затвердженого трафіку зазвичай називається "явним запереченням усіх" і вважається найкращою практикою. У цьому випадку також допомагає уникнути впливу на продуктивність, від якого вас хвилює господар.


Чому, якщо ви знаєте, це явне заперечення всіх, коли ви явно заперечуєте всіх, явно дозволяючи лише через декілька IP-адрес через брандмауер?
Бен

Насправді в цьому немає нічого неявного ...
mr-sk

Одне з потенційних проблем щодо створення білого списку - віддалений доступ. Вам знадобиться надійний VPN (окремо від цього сервера) і дозволити також його IP-діапазон.
Foo Bar

9

Для цього вам потрібно буде додати десятки тисяч правил брандмауера, по одному для кожного нетблоку, де країна може мати від однієї до кількох тисяч мережевих блоків, пов'язаних з нею.

Коли запит надходить, його доведеться перевіряти проти кожного правила , яке займає дуже мало часу на кілька десятків, а може, навіть і декількох сотень правил, але з такою кількістю правил, як вам потрібно було б скористатися, (1) кожен запит значно сповільниться і (2) він буде використовувати багато процесора.

Спосіб зробити це без значного впливу на ефективність - це те, що ви вже робите: блокуючи лише ті конкретні адреси, які є проблематичними.


Дякую за відповідь, Майкл. Чи не існує способу дозволити IP-адреси, що базуються в США, таким чином потрібно перевірити лише одне правило?
Великий залізний

2
@BigIron Звичайно, ні. У США також є десятки тисяч мережевих блоків. Ви втрачаєте будь-який спосіб.
Майкл Хемптон

1
@SamuelEdwinWard Ні, це не так. Незважаючи на те, що вони розповсюджуються по всьому світу, зазвичай такі блокові списки не налічують більше кількох сотень записів.
Майкл Хемптон

1
Чи є у вас посилання на те, наскільки значним є уповільнення? Лінійний пошук, хоча всі набори правил звучить жахливо неефективно, принаймні, двійковий пошук означатиме, що пошук таблиці 60000 правил буде брати в таблицю лише 16 зондів, і це може бути швидше, ніж пропускати трафік до веб-сервера, який може повинні виконати введення / виведення диска для обслуговування запиту. Не вдалося знайти жодних показників на великих наборах правил в iptables.
Джонні

1
@Johnny netfilter (iptables) обробляє правила лінійно, на жаль: serverfault.com/questions/334885/…
Ross Ridge,

5

Вам потрібен інструмент під назвою ipsets

Набори IP - це рамка всередині ядра Linux, якою може управляти утиліта ipset. Залежно від типу, в даний час IP-набір може зберігати IP-адреси, номери портів (TCP / UDP) або IP-адреси з MAC-адресами таким чином, що забезпечує швидкість блискавки при співставлення запису з набором.

Тут важливо зазначити, що це блискавично! Це тому, що величезна кількість ip-мереж може бути представлена ​​одним хешем замість сотень чи тисяч рядків правил iptables.

Для блокування країн див. Такий приклад :


1

Не зважаючи на те, чи є це чи не так, це гарна ідея, ви можете робити те, що просили, за допомогою модуля GeoIP для iptables.

Після створення та встановлення модуля (та щомісяця оновлюючи ваші списки IP-адрес) ви можете робити такі речі, щоб заблокувати окремі країни:

iptables -I INPUT -m geoip --src-cc CN -j DROP

Або скористайтеся --src-cc US -j ACCEPTтощо, якщо ви бажаєте вказати ті країни, які ви хочете зберегти.


Хіба це не буде катастрофою щодо ефективності, навіть якщо використання "явного заперечення всіх" та дозволення лише однієї країни?

@ AndréDaniel, я визнаю, що я не переглянув сам код GeoIP, але припускаючи, що вони використовують не наївну реалізацію, яка розумніша за послідовне порівняння набору мережевих блоків (наприклад, трие), цього не повинно бути.
Скотт Дадлі

Якщо ви говорите про IPv4 і у вас є запас 512 Мб за правило, теоретична реалізація за допомогою таблиці пошуку може виконати роботу в O (1).
Скотт Дадлі

1

Якщо ви хочете зберегти можливість з'єднання з будь-якого місця, не підтримуючи чорний список / білий список геолокації, ви можете застосувати переключення портів . Це зупинить більшість автоматизованих спроб, дозволяючи вам все-таки підключитися з будь-якої адреси.

Примітка. Не кладіть порт, щоб стукати поруч із портом, щоб відкрити, інакше послідовне сканування портів активує ваше правило.


0

На той випадок, що у вашому стеці є маршрутизатор з підтримкою 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/

Оскільки цей метод працює над маніпулюванням маршрутами, він обходить будь-які проблеми із завантаженням сервера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.