Я использую apache 2.2 под centos6, и недавно у меня были какие-то нежелательные обращения, которые я хочу заблокировать.
Например, у меня в error_log есть это:
[Вс, 14 апреля, 01:06:29 2013] [ошибка] [клиент 96.254.171.2] Файл не существует: / var / www / html / var, ссылка: http: ** server5.cyberpods.net/azenv.php
(я заменил http: // на http: **, чтобы люди не нажимали на ссылку, что я не уверен, безопасно ли это)
Думаю, я мог бы просто забанить все, что заканчивается на azenv.php. Какой должен быть подход?
Существует множество способов заблокировать ссылающиеся URL-адреса и / или IP-адреса, поэтому я дам вам несколько простых способов:
1) Вы можете сохранить файл .htaccess в верхнем каталоге вашего веб-сайта, переписав его, например:
## specific referring url blocking
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} .*/azenv\.php [NC,OR]
RewriteRule .* - [F]
или аналогично iptables:
## user ip blocking
<Limit GET POST>
order allow,deny
deny from 96.254.171.2
allow from all
</Limit>
другой пример:
## banning referring urls with specific words, etc.
# set the skridz_ref variable
SetEnvIfNoCase Referer "^azenv.php" skridz_ref=1
# block all referrals that have skridz_ref set
<FilesMatch "(.*)">
Order Allow,Deny
Allow from all
Deny from env=skridz_ref
</FilesMatch>
2) Если у вас есть доступ по ssh на вашем сервере, вы можете заблокировать ip в своих iptables следующим образом:
# iptables -A INPUT -s 96.254.171.2 -j DROP
# service iptables save
чтобы разблокировать (и удалить) ip из iptables:
# iptables -D INPUT -s xx.xxx.xx.xx -j DROP
# iptables -D INPUT -s 96.254.171.2 -j DROP
# service iptables save