Автоматически запретите дюйм/с, которые запрашивают определенные страницы

Я хочу запретить дюйм/с, которые запрашивают определенные страницы, например. example.com/weird.php и тот, которые отправляют a POST запрос к example.com/weirder.php.

Я искал много и узнал о нескольких iptables, но кажется, что некоторые - инструкции для CentOS. Я также волнуюсь о том, чтобы быть заблокированным. Таким образом, я ищу несколько подробный и безопасный ответ.

Я использую AWS EC2, Ubuntu и nginx.

1
задан 11 November 2016 в 17:34

1 ответ

Сначала попробуйте это на машине, к которой у Вас есть физический доступ.

Таблицы IP

Во-первых, давайте выясним правила Таблиц IP заблокировать IP-адрес. Для подробных инструкций проверьте это руководство. Давайте отбросим все входящие соединения от конкретного IP:

iptables -A INPUT -s A.B.C.D -j DROP

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

Сценарий Bash

Давайте создадим Сценарий Bash для блокирования IP. Это выглядело бы примерно так (предупреждение: Вы, возможно, должны были бы играть с полномочиями пользователя и sudo, чтобы заставить это работать). Создайте новый файл, скажем, blockip.sh.

#! /usr/bin/env bash
iptables -A INPUT -s $1 -d DROP
<other stuff you want to do when you block an IP>
<note: the IP address is in variable $1>

Выполненный chmod +x blockip.sh сделать исполняемый файл сценария. Теперь можно выполнить его как /path/to/file/blockip.sh 1.2.3.4.

Полномочия Sudo

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

nobody ALL = NOPASSWD: /your/script

Сохраните файл и выход. Как предупреждение системы безопасности, удостоверьтесь, что только можно изменить файл сценария или иначе, кто-то может потенциально выполнить вредный код как пользователь root путем изменения сценария.

Код PHP

Выполните этот небольшой драгоценный камень кода каждый раз, когда Вы хотите заблокировать кого-то.

exec("sudo /path/to/file/blockip.sh ".$_SERVER['REMOTE_ADDR']);

Заключение

Во-первых, протестируйте этот код машины, к которой у Вас есть физический доступ. Кроме того, знайте, что многочисленные пользователи позади LAN совместно использовали бы тот же внешний IP, и блокирование одного из них приведет к блокированию всех их. Будьте осторожны. Upvote, если ответ помог Вам.

1
ответ дан 7 December 2019 в 15:46

Другие вопросы по тегам:

Похожие вопросы: