Nano Hash - криптовалюты, майнинг, программирование

Iptables: как заблокировать (обработать) адреса X-Forwarded-For?

(На самом деле я работаю в CentOS за AWS ELB. Но я хочу, чтобы этот вопрос касался не только AWS ELB, а общего вопроса.)

Я работаю над ящиком CentOS 6.5, который находится за ящиком Load-balancer, который передает мне только X-Forwarded-For IP-адреса. Как веб-сервер, я знаю входящие плохие IP-адреса, и мне нужно БЛОКИРОВАТЬ их самим сервером. (Предполагая, что впереди нет IPS/IDS/Firewall, на которые можно было бы положиться.)

Пока я не знаю (не могу) заблокировать эти плохие IP-адреса своим iptables, потому что реального IP-адреса нет, а мне переданы только X-Forwarded-For IP-адреса. (Итак, я использую .htaccess для блокировки. И это работает)

Как добиться этого с помощью соответствующего уровня брандмауэра, пожалуйста?


Ответы:


1

Поскольку вы упомянули .htaccess, похоже, вы используете веб-сервер Apache, поэтому я бы рекомендовал добавить эти правила туда, а не в iptables. Основной способ блокировки на основе X-Forwarded-For в Apache таков:

RewriteCond %{HTTP:X-FORWARDED-FOR} ^171.42.6.123$
RewriteRule .* - [F,L]

Поскольку IP-адрес — это просто сравниваемая строка, вы можете указать все виды регулярных выражений в своем условии. См. этот вопрос для примера.

13.01.2016
  • Привет Брюс, спасибо за ответ. Но, как я уже говорил, на самом деле я уже использую .htaccess для блокировки (пока в крайнем случае). Но я хочу (не использовать .htaccess и) вместо этого правильно использовать брандмауэр (iptables). 14.01.2016

  • 2

    Я хотел бы сделать то же самое. У меня есть очень длинный список IP-адресов, которые нужно заблокировать в формате CIDR, и преобразование его в регулярные выражения для использования в файле .htaccess не кажется правильным. И вы знаете, что с точки зрения загрузки процессора регулярные выражения в .htaccess даже не в той же галактике, что и целочисленные битовые возни, которые может делать iptables. Но я не верю, что для этого можно использовать iptables. Iptables работает в ядре и блокирует входящие IP-адреса на низком уровне, прежде чем любой заголовок будет прочитан.

    В моем случае я использую балансировщик нагрузки только как удобный способ обработки запросов https, мне действительно не нужно балансировать большую нагрузку между несколькими экземплярами веб-сервера. Итак, я рассматривал возможность запуска отдельного экземпляра с обратным прокси-сервером nginx для обработки https для моего веб-сервера apache, добавляя заголовки X_FORWARDED точно так же, как это делает балансировщик нагрузки AWS. Таким образом, я могу использовать iptables на экземпляре, на котором работает nginx, и мне не нужно трогать конфигурацию apache или веб-приложения, которые работают за балансировщиком нагрузки.

    Вы теряете избыточность нескольких IP-адресов для самого балансировщика нагрузки, а также интеграцию с AWS Cloud Front для балансировки серверной нагрузки, но получаете возможность использовать iptables и можете разгрузить обработку статического контента от apache, возможно, улучшив время отклика. . Поскольку считается, что nginx намного легче, чем apache, для простой обработки запросов, вам не нужно много усилий в этом экземпляре. Интересно, являются ли балансировщики нагрузки AWS просто экземплярами, работающими под управлением nginx. Если вы посмотрите на цены, почасовая стоимость балансировщика нагрузки примерно такая же, как у экземпляра t2.small linux.

    Я еще не пробовал это сам, так как конфигурация nginx для меня совершенно новая, и это потребует покупки и установки SSL-сертификата вместо использования удивительно простого и удобного менеджера сертификатов.

    Интересно, будет ли AWS рассматривать пользовательские запросы функций, чтобы иметь возможность настраивать балансировщики нагрузки с помощью iptables...

    ОБНОВЛЕНИЕ: я только что опубликовал это на форуме AWS EC2.

    ОБНОВЛЕНИЕ 2. На мой запрос функции к AWS с просьбой о настройке iptables для балансировщика нагрузки был дан ответ с объяснением того, как использовать сетевой ACL для блокировки запросов, исходящих из любого CIDR в списке, от достижения балансировщика нагрузки. По мне, так же хорошее решение. ОП искал решение, не относящееся к AWS, и оно не соответствует этому критерию. Если у вас есть эта проблема с каким-либо сервером, который находится за обратным прокси-сервером, просто невозможно использовать брандмауэр в стиле iptables этого сервера для блокировки входящих запросов на основе исходного IP-адреса — брандмауэр должен решить, блокировать ли запрос задолго до того, как он прочитает заголовки, которые являются единственным местом, где можно найти исходный адрес запроса. Если вы используете AWS, вы можете использовать сетевой ACL. В противном случае вам нужно будет иметь полный контроль над сервером, выполняющим обратный прокси-сервер, и установить правила брандмауэра на этом сервере.

    29.03.2016

    3

    за исключением того, что у вас может быть только 20 правил на ACL.

    27.07.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..