Я хочу запретить дюйм/с, которые запрашивают определенные страницы, например. example.com/weird.php
и тот, которые отправляют a POST
запрос к example.com/weirder.php
.
Я искал много и узнал о нескольких iptables
, но кажется, что некоторые - инструкции для CentOS. Я также волнуюсь о том, чтобы быть заблокированным. Таким образом, я ищу несколько подробный и безопасный ответ.
Я использую AWS EC2, Ubuntu и nginx.
Сначала попробуйте это на машине, к которой у Вас есть физический доступ.
Во-первых, давайте выясним правила Таблиц IP заблокировать IP-адрес. Для подробных инструкций проверьте это руководство. Давайте отбросим все входящие соединения от конкретного IP:
iptables -A INPUT -s A.B.C.D -j DROP
После этого перезапуск iptables как регулярный. Испытайте эту команду, чтобы проверить, хорошо работает ли она для Вас, познакомьтесь с синтаксисом и затем продолжите двигаться далее.
Давайте создадим Сценарий 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
.
Если Ваш сценарий должен иметь полномочия пользователя root, необходимо настроить sudo, чтобы предоставить Вам доступ без пароля. Обращение от этого Вопроса о Переполнении стека, выполненного sudo visudo
и добавьте следующую строку:
nobody ALL = NOPASSWD: /your/script
Сохраните файл и выход. Как предупреждение системы безопасности, удостоверьтесь, что только можно изменить файл сценария или иначе, кто-то может потенциально выполнить вредный код как пользователь root путем изменения сценария.
Выполните этот небольшой драгоценный камень кода каждый раз, когда Вы хотите заблокировать кого-то.
exec("sudo /path/to/file/blockip.sh ".$_SERVER['REMOTE_ADDR']);
Во-первых, протестируйте этот код машины, к которой у Вас есть физический доступ. Кроме того, знайте, что многочисленные пользователи позади LAN совместно использовали бы тот же внешний IP, и блокирование одного из них приведет к блокированию всех их. Будьте осторожны. Upvote, если ответ помог Вам.