Есть ли способ с помощью Apache2 или iptables отказывать посетителям, если их IP не имеет обратного DNS или вообще не разрешается?
У меня есть веб-сайт, ориентированный на конкретное население, у которого есть действующий обратный DNS. Некоторые спамеры и хакеры, у которых нет обратного DNS, приходят и пытаются спамить / взломать мой сайт.
Мой блокировщик спама им отказывает / отказывается, но я все еще хочу запретить им доступ к моему сайту.
Я бы не стал этого делать на уровне Apache из-за медленности DNS-запросов.
Вместо этого я бы сделал это за занавеской. Например, поместите некоторый самописный сценарий оболочки / perl для отслеживания журнала доступа Apache, выполните запросы DNS и, если они не удаются, просто добавьте IP-адрес в (временный) список запретов. Возможно, вы могли бы сделать это с помощью fail2ban если вы не хотите писать для себя немного Perl.
В любом случае будь осторожен! Даже у некоторых легальных посетителей может не быть разрешаемого имени DNS.
В вашем заявлении (ах) просто добавьте что-то вроде:
Order Deny,Allow
Deny from all
Allow from .com .gov .org .edu
Вы захотите добавить свою локальную частную сеть, 127.0.0.1 и т. Д.
Некоторые люди указали, что это обычно плохая идея из-за медленного разрешения DNS. Но если вы хотите это сделать, вы можете сделать это с помощью mod_access:
Вы можете легко сделать это на php или на своем любимом языке (для php http://php.net/manual/en/function.gethostbyaddr.php). Возможно, если вы одобряете посещающего клиента, проверяя его обратный статус DNS, вы затем «регистрируете его» аналогично обычному логину / паролю.
Обычно файлы .htaccess или iptables могут быть лучшим решением, но поскольку у вас очень специфический запрос, вам может потребоваться гибкость языка сценариев.