У меня есть несколько статических веб-страниц, размещенных на Amazon S3, которые очень часто обновляются. Я хочу внедрить несколько механизмов предотвращения взлома, таких как запрет IP-адресов, которые делают слишком много запросов или делают запросы, кажущиеся роботизированными и т.д. Я знаю, что ничто не защищает от глупостей, но я просто хочу оказать им некоторое сопротивление и усложнить их работу. Я понял, что есть способ занести в черный список IP-адреса в ведре политики, но есть ли динамический способ реализовать это, как ... ЕСЛИ конкретный IP-адрес делает .... конкретные запросы в минуту в минуту .... тогда, забаньте его на определенное время. Или что-то типа того.
3 ответа
Я никогда не пробовал это, но я думаю, что это выполнимо. Это будет не просто флажок.
Вот что вам нужно сделать:
- Включите "Регистрация доступа к серверу" для вашей корзины S3,
Создайте лямбда-функцию и запланируйте ее запуск каждые х минут (скорость) или на кроне. Эта функция должна:
- Просмотрите эти журналы и посчитайте, сколько раз IP-адрес обращался к определенному ресурсу (файлу или сегменту) за определенный промежуток времени, или IP-адрес, который получает 404 ... и т.д.,
- В зависимости от порога, который вы определяете, решите, будете ли вы блокировать этот IP или нет,
- Измените политику своего сегмента S3 (для этого вы можете воспользоваться Boto3) и добавьте IP-адрес, который вы решили заблокировать ранее (NotIpAddress - ваш друг).
Сервис AWS, который лучше всего подходит для этой работы, - это WAF, брандмауэр веб-приложений.
Из раздела Автоматизация безопасности их документации:
Боты и скребки: операторы общедоступных веб-приложений должны верить, что клиенты, получающие доступ к своему контенту, идентифицируют себя точно и что они будут использовать услуги по назначению. Однако некоторые автоматизированные клиенты, такие как скребки контента или плохие боты, искажают себя, чтобы обойти ограничения. Это решение поможет вам идентифицировать и заблокировать плохих ботов и скребков.
Я не думаю, что вы можете сделать это с S3, но вы можете запретить IP-адреса, которые превышают предварительно установленные ограничения с CloudFront. Просто настройте CloudFront для обслуживания контента S3 и блокирования прямого доступа к S3. Ваши расходы могут немного уменьшиться, они могут немного увеличиться, но это не должно иметь большого значения для ваших расходов.