Вернуть 404 для директории

12
Goldsnich
На сайте с 17.07.2011
Offline
52
3823

Есть ли возможность через htaccess/httpd.conf возращать ошибку 404 (Not found), если IP, с которого осуществляется доступ не в белом списке ?

Сервер FreeBSD 9.1, nginx фронтенд для статики+apache2.2 бекенд для php

Пока использую обычный "Forbidden", который возращает 403 ошибку:

<Directory /usr/local/www/apache22/data/*/wp-admin>

Order allow,deny
Allow from 77.110.1.33
</Directory>

Смысл затеи в том, чтобы боты, которые пытаются распознать Wordpress по наличии wp-admin, получали ответ 404, т.е. как бы понимали что это не Wordpress и не пытались дальше искать его уязвимости.

Покупаю сайты с доходом sape и др. (http://goldsnich.com/sell/)
servercraft
На сайте с 03.07.2013
Offline
8
#1

а почему нельзя в nginx прописать location, return 404 и тд?

http://serverсraft.com.ua (http://servercraft.com.ua) настраиваем сервера, удаляем вирусы с сайтов
Goldsnich
На сайте с 17.07.2011
Offline
52
#2

Можно, а как это будет все вместе выглядить, если сайт к примеру находится по адресу

/usr/local/www/apache22/data/domain.com/wp-admin  ? 

т.е. чтобы я имела доступ к wp-admin, а всем остальным 404. И все таки через apache, тоже интересно как это сделать.

servercraft
На сайте с 03.07.2013
Offline
8
#3

в апаче что-то типа

RewriteCond %{REMOTE_ADDR} !77.110.1.33 [NC]

RewriteRule wp-admin - [R=404,L,NC]

---------- Добавлено 26.09.2013 в 11:36 ----------

в nginx что-то типа

location ~ ^/(wp-admin|wp-login\.php$){

if ($remote_addr !~ "77.110.1.33"

{

return 404;

}

}

Goldsnich
На сайте с 17.07.2011
Offline
52
#4

Что-то у меня и так и так не работает, в httpd.conf добавила

<Directory "/usr/local/www/apache22/data>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !77.110.1.33 [NC]
RewriteRule wp-admin - [R=404,L,NC]
</Directory>

Для Nginx правда чуть по другому сделала


location ~ ^/(wp-admin|wp-login\.php$) {
if ( $remote_addr != 77.110.1.33 ) { return 404;}
}

Полный конфиг nginx.conf


user www;
worker_processes 2;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 10000;
}

http {
include mime.types;

access_log off;
log_not_found off;
server_tokens off;
sendfile on;

keepalive_timeout 15;
tcp_nodelay on;

gzip on;

server_names_hash_bucket_size 128;
limit_conn_zone $binary_remote_addr zone=one:10m;
client_max_body_size 200m;



server {
listen 80 default;
server_name localhost;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ~ ^/(wp-admin|wp-login\.php$) {
if ( $remote_addr != 77.110.1.33 ) { return 404;}
}

}


include vhosts/*.conf;

}
iamsens
На сайте с 26.08.2009
Offline
115
#5

для начало нужно проверить сам локейшен

location ~ ^/(wp-admin|wp-login\.php$) {

return 404;

}

и не забыть nginx -s reload

[umka]
На сайте с 25.05.2008
Offline
456
#6
Goldsnich:
Что-то у меня и так и так не работает, в httpd.conf добавила
RewriteRule wp-admin - [R=404,L,NC]

Так и не должно работать.

R — это редирект. Там не может быть кода 4xx

http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_r

На апаче, думается мне, просто так выдать 404 с помощью .htaccess не получится.

Можно сделать как-то так:

RewriteRule %{REMOTE_ADDR} !123\.45\.67\.89

RewriteRule ^wp-admin /error404.php [L]

А уже в error404.php делать

<?php

header("HTTP/1.0 404 Not Found",true,404);

?>

Хотя 403 ни чуть не хуже 404 :)

Лог в помощь!
Goldsnich
На сайте с 17.07.2011
Offline
52
#7
iamsens:
для начало нужно проверить сам локейшен

location ~ ^/(wp-admin|wp-login\.php$) {
return 404;
}

и не забыть nginx -s reload

Вот, так заработало, но в контексте одного сайта только, весь конфиг виртуального хоста nginx:


server {
listen 80;
server_name domain.com www.domain.com;

#access_log /var/log/www/domain.com/access.log;
error_log /var/log/www/domain.com/nerror.log;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_read_timeout 120;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ~ ^/(wp-admin|wp-login\.php$) {
return 404;
}
location ~* \.(jpg|gif|png|js|css|zip|rar|swf|ico)$ {
root /usr/local/www/apache22/data/domain.com;
expires 7d;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


Но есть пару проблем:

1. Это не совсем удобно в каждый виртуал хост вставлять блок

2. Нужно еще добавить разрешенные IP

Сначала я вставила в общий nginx.conf в секцию server, но так не работает, скорей всего из-за путей. Мне нужно вставить там какой-то wildcard для всех сайтов.

---------- Добавлено 28.09.2013 в 17:20 ----------

'[umka:
;12184339']
На апаче, думается мне, просто так выдать 404 с помощью .htaccess не получится.
Можно сделать как-то так:
RewriteRule %{REMOTE_ADDR} !123\.45\.67\.89
RewriteRule ^wp-admin /error404.php [L]

Это не работает если вставить в .htaccess в корне сайта и/или в wp-admin.

iamsens
На сайте с 26.08.2009
Offline
115
#8
Но есть пару проблем:
1. Это не совсем удобно в каждый виртуал хост вставлять блок
2. Нужно еще добавить разрешенные IP

1. можно прописать правила в отдельный файл и его инклудить, тогда будет удобно менять/добавлять разешенные адреса, иначе смотрите в сторону апача

2. тут нужно проверять, правильный ли IP

location ~ ^/(wp-admin|wp-login\.php$) {

if ( $remote_addr != "77.110.1.33" ) { return 404;}

}

AboutSEO
На сайте с 18.01.2007
Offline
154
#9

переименуйте wp-login.php в wp-login1.php

и пусть дальше вычисляют wp-admin :D

а то задолбаетесь IP добавлять...

Goldsnich
На сайте с 17.07.2011
Offline
52
#10

Не знаю насколько это правильно, но у меня это работает в httpd.conf, curl -I отдает 404, ну и в самом браузере 404.

<Directory /usr/local/www/apache22/data/*/wp-admin> 

RewriteCond %{REMOTE_ADDR} !^77\.110\.1\.33$
RewriteRule . google.com/404.php [R=404,L]
</Directory>

iamsens, а что нельзя просто в главный nginx.conf прописать ? Чтобы проинклудить, мне придется это сделать в более чем 100 файлах.

AboutSEO, так не интересно и не совсем изящно. Не хочется лезть в core files вордпресса.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий