Защита wp

Блокировка IP-адресов модулем mod_rewrite

Используя модуль mod_rewrite, список IP-адресов можно существенно сократить. В этом помогут регулярные выражения. Главное удобство модуля mod_rewrite в данной задаче — возможность использования правил исключений.

Блокировка IP-адресов стран Северной Америки модулем mod_rewrite

Задача: необходимо заблокировать IP-адреса ARIN (стран Северной Америки), оставив доступ к сайтам для поисковых роботов Bing, Google, Yahoo. При этом на хостинге размещены несколько сайтов, один из которых предназначен для американской аудитории.

Для этого в корневой директории хостинга размещаем файл .htaccess, в котором прописываем следующее правило:

Данное правило модуля mod_rewrite блокирует IP-адреса стран Северной Америки, если имя хоста не содержит my_english_site.com, и строка User-Agent не содержит имена поисковых роботов Bing, Google, Yahoo. Правило распространяется на все сайты, размещенные на хостинге, за исключением домена my_english_site.com. Если нужно исключить все поддомены этого сайта, пишем:

При использовании правил модуля mod_rewrite в файлах .htaccess, размещенных в директориях, не забудьте добавить наследование указанных правил, иначе они работать не будут:

Обязательно указывайте в RewriteBase путь к директории, в которой размещен файл .htaccess, от корня сайта. Все преобразования ссылок осуществляются относительно той директории, в которой расположен файл .htaccess

При этом унаследованные правила модуля mod_rewrite работают также относительно этой директории, то есть как бы копируются в КОНЕЦ текущего файла (обратите внимание на то, что наследуемые правила будут исполнены после правил .htaccess текущей директории, а не перед ними). Если файл .htaccess расположен в директории /partners/web/access/, как данная статья, то:

Интересную статью о том, как работает mod_rewrite, читайте на habrahabr.ru →

Использование общего файла .htaccess для всех сайтов возможно не на всех хостингах. В противном случае вам придется прописывать данные правила для каждого сайта в отдельности, что неудобно при редактировании (придется вносить изменения в файлы .htaccess каждого сайта).

Блокировка всех IP-адресов, кроме стран СНГ, Bing, Google, Yahoo

Правило, блокирующее все IP-адреса, за исключением стран СНГ (включая Балтию) и поисковых роботов Bing, Google, Yahoo:

В данное правило включены диапазоны IP-адресов по первому октету, в которые входят IP-адреса всех бывших республик СССР (включая Латвию, Литву и Эстонию). Данное правило не блокирует IP-адреса других европейских стран, которые также входят в данный диапазон. Правило удобно применять для сайтов, ориентированных исключительно на аудиторию СНГ. Правда, если в будущем список IP-адресов, закрепленных за странами СНГ, расширится, новые адреса окажутся в числе запрещенных.

Общая конфигурация и поддержка сети сайтов #Общая конфигурация и поддержка сети сайтов

Для работы WordPress на nginx вам потребуется настроить обработчик PHP (backend), это может быть php-fpm, php-cgi или fastcgi. Оптимальным и простым в установке вариантом является использование php-fpm, который поддерживается начиная с PHP 5.3

Основной файл конфигурации

Обычно это /etc/nginx/nginx.conf , но может и располагаться и в другом месте в зависимости от вашего дистрибутива операционной системы и источника пакетов nginx.

Ниже будут перечислены только те директивы, значение которых может непосредственно влиять на работу WordPress. Ваш дистрибутив должен предоставлять файл конфигурации обеспечивающий базовую работу nginx, вам следует только перепроверить его на директивы, перечисленные ниже. Строки в конфигурации начинающиеся с # являются комментариями.

Настройка PHP обработчика может быть произведена так (как в глобальном контексте http {} так и для каждого сайта в контекстах server {} , настройки должны соответствовать тем, что указаны в настройках директивы listen пула (pool) для php-fpm

Во многих дистрибутивах конфигурации для отдельных сайтов (контекст ) вынесены в папку sites-available, на которые создаются символические ссылки в папке sites-enabled. Конфигурации включенных сайтов загружаются в конце nginx.conf директивой

Некоторые полезные директивы для конфигурации сайта

server {
# Это адрес сайта
    server_name example.com;
# Путь к папке с файлами сайта (корню)
    root /var/www/example.com;
# Файл индекса сайта.
    index index.php;
# А вот показ индекса файлов в папках без файла-индекса отключим
    autoindex off;
# Журнал доступа может быть записан в отдельный файл с отложенной записью
access_log  /var/log/jinx/www-example.com.log main buffer=2k flush=30s;
# А для некоторых файлов журнал доступа можно и вовсе отключить
location = /favicon.ico {
    log_not_found off;
    access_log off;
}
location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Закроем доступ к скрытым файлам (начинаются с точки)
location ~ /\. {
    deny all;
}

# Вот так можно закрыть доступ к папке кеша (плагинов)
location ~ ^/wp-content/cache { deny all; }

# Запрет выполнения PHP в папках для загруженных файлов
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}
# А директивы ниже показывают как можно установить заголовки кеширования для статических ресурсов (а также изменить сжатие gzip для некоторых из них)
location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf|webp|srv)$ { expires 3w; gzip off; }
location ~* ^.+\.(css|js)$ { expires 7d; add_header Vary Accept-Encoding; }
location ~* ^.+\.(eot|ttf|woff|woff2)$ { expires 92d; add_header Vary Accept-Encoding; }

# Не забываем добавить обработчик для PHP
location ~ \.php$ {
 include fastcgi.conf;
 fastcgi_intercept_errors on;
 fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
# Должен соответствовать имени, определенному в примере директивы upsteam выше.
 fastcgi_pass php;
        }
# Ну и наконец, правила для "красивых постоянных ссылок"
location / { try_files $uri $uri/ /index.php?$args; }
# поближе к закрытию контекста server
}

Обязательно убедитесь в том, что в php.ini установлено значение константы

это предотвратит исполнение иных (без расширения .php) файлов, возможно содержащих PHP код, возможным злоумышленником.

Много других рецептов и хитростей по конфигурированию nginx можно посмотреть например здесь: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Конфигурация для сети сайтов

С тех пор, как установка сети сайтов стала частью WordPress (а не отдельным пакетом WPMU), дополнительные правила для nginx не требуются, вам следует лишь иметь идентичные блоки server{} для всех сайтов вашей сети, вы можете создать отдельный файл и включать его в конфигурации сайтов директивой e. Переопределяя лишь и если вам нужно — .

Если же ваша сеть сайтов имеет общий домен, то вы можете разместить её на одном виртуальном сервере, с одним блоком конфигурации .

Директива будет работать с любым доменом третьего уровня в домене example.com.

Внимание: вы можете оставить комментарий обратной связи к этой статье. Если данная статья показалась вам неполной или вы нашли неточности, оставьте нам сообщение используя форму ниже. Если данная статья показалась вам неполной или вы нашли неточности, оставьте нам сообщение используя форму ниже

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

Также вы можете поучаствовать в составлении и дополнении документации на русском языке.Подробнее тут.

Блокировка по странам

В случае как с перенаправлением, так же и с блокировкой. Есть возможность заблокировать того или иного посетителя в зависимости от страны. Для этого в .htaccess необходимо добавить следующий код:

GeoIPEnable On — включение модуля GeoIP SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry — создание некоего массива (цепочки) BlockCountry в которую вноситься условие что страна CN — Китай SetEnvIf GEOIP_COUNTRY_CODE FR BlockCountry — тоже самое что и предыдущая строка, только страна в этом случае Франция Deny from env=BlockCountry — блокирование стран которые находятся в цепочке BlockCountry

Источник

Защита htaccess.

Смешно так звучит, правда? Мы столько времени потратили на защиту сайта при помощи различных плагинов и блокировок, а про то, что сам файл htaccess остаётся уязвим, забыли.

Следующий кусок кода, защищает все файлы, начинающиеся с — «hta», от просмотра ненужными людьми:

<Files ~ "^.*\.()">
    order allow,deny
    deny from all
    satisfy all
    </Files>

А какие коды используете Вы? Поделитесь с читателями своими наработками!

На сегодня это всё…

Дополнение к статье.

Также рекомендую установить специальный плагин который помогает дополнительно защитить ваш сайт.

Самый простой вариант это Clearfy Pro.

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

Например:

Также есть дополнительные настройки, которые также могут пригодиться.

Есть один интересный плагин, который мне понравился. All In One WP Security

Он предоставляет мощный функционал по защите своего сайта.

Плагин показывает текущий уровень защиты сайта.

И наиболее значимые изменения.

В целом эти плагины и другие рекомендации из этой статьи могут значительно снизить риск взлома сайта.

Также рекомендую вам регулярно делать бэкапы базы данный и файлов сайта. И нужно хранить бэкапы за длительный период, например если вы делайте бэкап раз в неделю. То у вас должны быть доступны бэкапы за год или пол года.

У меня есть внешний жесткий диск и специальная папка, где у меня хранятся резервные копии за год и более по всем сайтам.

Это очень важно. Некоторые люди забывают и потом не могут восстановить свой сайт в случае форс мажорных обстоятельствах

Запрет по странам htaccess

Господа необходим взгляд со стороны знатока.

Несколько месяцев подряд постоянно пытаются сломать сайт клиента. Были и успешные попытки, последняя — вчера, залили папку фейковой палкой. Гугл и хостер прислали свои «ай-йя-яй» сайтик маленький — 100+ страниц, висит на вордпрессе. Версии ВП регулярно обновляются. Однако атаки продолжаются. Не хочется выглядеть параноиком, но увы, грешу на конкурентов, т.к. с сайта идут продажи и многие из конкурентов были попячены в топах.

В качестве одной из мер отсечения решил запретить доступ ненужных стран в .htaccess, т.к. сайт региональный, а паразиты как правило лезут с «мусорных» айпишек.

Если есть спецы, одобрите или подправьте, плиз сделанную директиву (целью было отсечь всех, кроме стран СНГ и прибалтики):

Было бы точнее отсекать с помощью модуля апатча mod_geo. Но я так понял хостинг стандартный и вы ничего там настроить не можете? тогда может хотя бы впн лучше взять.

А чего ломают? фиксите движок. какие атаки идут? чтобы положить сайт? на нагрузку? дос? так на хостинге уже что-то ставить нужно типа даже того же дос дефлейта. А если ломают движок, то отсекать страны вообще ничего не даст.

может кеширование попробуйте, чтобы уменьшить нагрузку

Для начала смените все пароли (админки, хостинг, фтп, БД. )

Проверьте права на папки

Если ддосят. обычно слабо =) То лучше найти хороший антиддосовый хостинг или взять дешевый сервачек в ДЦ, у нормальных обычно уже стоят фильтрующие Цыски\Длинки

Хостинг обычный шаред, для 1 мелкого сайта не было нужды брать что-то серьёзнее. Взять вдс-ку — нет проблем. Но я в администрировании ламер. Моя задача двигать сайт. Попутные вопросы решаю по мере своих способностей, т.к. клиент является моим хорошим знакомым.

Ломают через вп, на сколько я вдупляю Заливают файлы. Например после последней атаки в корне появились лишние: phpmailer.php и папка .PayPal, обоим я сначала поставил нулевые права, после обнаружения. Папку вообще вчера снёс. Были попытки ковыряния и заливания папок и файлов через скрипты обрабатывающие картинки. Т.е. лезут во все щели, куда только можно.

Ддоса нет. Слишком дорогостоящее занятие для конкурентов клиента.

Например, сегодня вижу по ливу переходы с таких адресов:

N_N_N: Хостинг обычный шаред, для 1 мелкого сайта не было нужды брать что-то серьёзнее. Взять вдс-ку — нет проблем. Но я в администрировании ламер. Моя задача двигать сайт. Попутные вопросы решаю по мере своих способностей, т.к. клиент является моим хорошим знакомым.

Ломают через вп, на сколько я вдупляю Заливают файлы. Например после последней атаки в корне появились лишние: phpmailer.php и папка .PayPal, обоим я сначала поставил нулевые права, после обнаружения. Папку вообще вчера снёс. Были попытки ковыряния и заливания папок и файлов через скрипты обрабатывающие картинки. Т.е. лезут во все щели, куда только можно.

Ддоса нет. Слишком дорогостоящее занятие для конкурентов клиента.

Например, сегодня вижу по ливу переходы с таких адресов:

Как я понял вам заливают скрипты и шлют через ваш хостинг майл спам. А эти переходы похожи на скорее всего просто рефки по которым юзеры переходят со своией яху почты читая этот спам, наверное их провоцируют на какую-то оплату, раз еще заливают скрипты платежных систем.

Но в любом случае так и буду ломать если не пофиксить движок, серверные фишки и настройки htaccess врятли что-то дадут если дыра в движке.

А вы пробовали обновлять этот ворд прес до последней версии?, возможно было бы еще интерестно посмотреть логи того же апатча, можно было бы попробовать увидеть как ломают.

Грош цена такому скрипту, который еще кроме заливки картинок может ломать весь сайт:)

Источник

Вопросы по теме ‘hotlinking’

Apache 2.4 — Как перенаправить изображения в файл php?

Мне нужно перенаправить все изображения в файл php, включая путь и имя файла.

Представьте, что мой домен — example.com. У меня может быть https://example.com/art/logo.png и хотите перенаправить это на…

329 просмотров

schedule
08.10.2021

RewriteMap не работает, чтобы предотвратить хотлинкинг

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

Вот код VirtualHost

<VirtualHost *:80>
DocumentRoot…

124 просмотров

schedule
17.09.2021

Файлы, для которых запрещена горячая ссылка, по-прежнему доступны для просмотра из исходного кода сайта

У меня есть файлы и изображения, которые нельзя просматривать или загружать. Поэтому, когда я просто ввожу и загружаю URL-адрес, скажем » http://www.domain.com/dir/image.png «он дает мне сообщение 403, как и ожидалось.

Но когда я обращаюсь к…

41 просмотров

schedule
26.10.2021

.htaccess — Проверить, соответствует ли реферер хосту без жесткого кодирования?

Я хотел бы сделать типичную вещь, когда вы убедитесь, что заголовок реферера соответствует вашему хосту, используя htaccess. Однако я хотел бы сделать это без жесткого кодирования доменного имени, чтобы код htaccess можно было легко повторно…

3262 просмотров

schedule
02.11.2021

IIS Предотвращение хотлинкинга контента других сайтов на самостоятельных сайтах

Мы хотим, чтобы наши собственные пользователи не использовали горячие ссылки на изображения и медиафайлы за пределами нашего собственного домена. Есть ли способ сделать это через IIS (версия 8 на Windows Server 2012)? У нас установлен модуль…

240 просмотров

schedule
15.08.2022

jQuery: есть ли способ добавить переменную в img, не загружая ее дважды?

Я пытаюсь настроить этот метод предотвращения горячих ссылок. за счет того, что к URL-адресам img добавляется ?i только при посещении браузером с поддержкой JavaScript, в отличие от ботов.

Используя это в $(document).ready(function() работах:…

269 просмотров

schedule
12.04.2022

Замена изображений с горячими ссылками версиями с низким разрешением

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

мы хотим заменить все изображения с горячими ссылками их версиями с низким…

95 просмотров

schedule
28.07.2022

защита хотлинков

Я сделал этот простой код, чтобы предотвратить горячую ссылку на мои файлы из моего файла загрузки php:

if ((strpos($_SERVER,’www.domain.com’)!==0)) {
$redirect=’index.php’;
header(«Location: $redirect»);
exit;
}…

2478 просмотров

schedule
13.09.2021

URL-адрес плаката IMDB возвращает отказ в переходе

В моем приложении Ruby on Rails я использую гем imdb (https://rubygems.org/gems/imdb) для поиска фильма по названию, захватываю URL-адрес плаката и добавляю его в модель фильма, которая есть в моей базе данных. Затем, на мой взгляд, я помещаю этот…

9744 просмотров

schedule
14.11.2021

Динамически передискретизируйте изображения с горячими ссылками с помощью php

У меня есть каталог изображений, некоторые из которых имеют большое разрешение, поэтому я хотел бы использовать версию с гораздо более низким разрешением, если они получают горячую ссылку, и я также накладываю повторяющееся изображение (например,…

585 просмотров

schedule
16.07.2022

Что я могу сделать, чтобы Mozilla Firefox предварительно загрузил возможный результат изображения?

Я пытаюсь предварительно загрузить изображения с помощью JavaScript. Я объявил массив следующим образом со ссылками на изображения из разных мест:

var imageArray = new Array();
imageArray = new Image();
imageArray = new Image();…

1639 просмотров

schedule
14.05.2022

Разрешить/запретить хотлинкинг изображений с помощью .htaccess

Итак, у меня есть это в файле .htaccess моего сайта, чтобы предотвратить горячее связывание изображений, JS и CSS со всех других доменов.

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com
RewriteRule…

13406 просмотров

schedule
26.09.2022

http-изображение можно просматривать на внутренней странице, но не по прямому URL-адресу

Я не верю, что это возможно, но полагаю, что есть люди намного умнее меня, так почему бы не проверить ..

Я хотел бы иметь изображение HTTP, которое можно просматривать изнутри страницы при использовании с тегом img, но НЕ отображается, если…

633 просмотров

schedule
15.10.2021

MIME типы файлов

Чтобы понять, какие документы надо показывать как html, какие как графику, а к каким надо выдать меню, позволяющее сохранить файл на диск, браузер использует MIME типы.

MIME типы описывается набором символов, отражающим тип используемых данных. Например, файлам с расширением .html соответствует тип text/html. В ответ на пришедший запрос html-файла сервер возвращает заголовок Content-type: text/html. Браузер, получив такой заголовок, знает, что документ с типом данных text/html это обычная веб-страница на языке HTML. 

Пример распространенных MIME типов данных

 Описание данных

Расширение файлов

MIME type

Картинки gif

gif

image/gif

Картинки jpeg

jpeg jpg jpe

image/jpeg

VRML-файлы

wrl vrml

model/vrml

HTML-документ

html htm

text/html

Обычный текст

asc txt

text/plain

Архив ZIP

zip

application/zip

Файл MS Word

doc

application/msword

Файл MS Excel

xls

application/vnd.ms-excel

Файл MS Power Point

ppt

application/vnd.ms-powerpoint

Файл Adobe Acrobat

pdf

application/pdf

Flash-документ

swf

application/x-shockwave-flash

Добавление MIME типов файлов

Периодически появляются новые MIME типы, которые не известны веб серверам, соответственно, в этом случае браузеры не смогут понять как обрабатывать указанный объект. Чтобы исправить эту проблему новые MIME типы надо добавить в настройках сервера или в файле .htaccess. Так же это пригодиться в случае если надо переопределить базовый MIME тип для уже известного расширения. 

Файлы заканчивающиеся на / будут открываться как html:

Блокировка IP адресов директивой Deny

Разрешаем только методы GET, HEAD, POST:

Запрещаем доступ к сайту для всех методов с IP адресов AfriNIC, APNIC, LACNIC:

Данным правилом мы запретили доступ к сайту для IP адресов стран Юго-Восточной Азии, Африки, Южной Америки и Карибского бассейна, а также некоторых корпораций

Обратите внимание, что в этом списке отсутствуют IP адреса из смешанных зон, которые можно найти на сайтах AfriNIC, APNIC, LACNIC и RIPE. Однако данные диапазоны отсекают основной объем паразитного трафика

IP адреса ARIN блокировать не рекомендуется, иначе роботы поисковых систем Bing, Google, Yahoo не смогут заходить на ваш сайт.

Здесь умышленно задан порядок обработки правил Deny,Allow, а не наоборот, чтобы иметь возможность добавить ниже разрешающие правила исключений для некоторых IP-адресов из заблокированных диапазонов. Однако имейте ввиду, что и другие запрещающие правила для этих IP-адресов, касающиеся, например, запрета на использование определенных символов в URL, могут не действовать — будут разрешены любые URL-запросы. Кстати, в случае использования порядка обработки правил Allow,Deny рекомендуется прописать в самом начале разрешающее правило для всех Allow from all, но это не самое удачное решение — лучше его не использовать, если вы собираетесь устанавливать выборочно запрещающие правила.

Примечание: для отображения сообщения об ошибке 403 (доступ запрещен) лучше использовать не собственную страницу, а короткое сообщение, уменьшая тем самым нагрузку на сервер

Например, можно послать хакеров или ботов по известному адресу: ErrorDocument 403 «Fuck you! Обратите внимание на то, что в строке прописана только одна кавычка (для Apache 1.3). Для Apache 2.0 необходимо обязательно ставить закрывающую кавычку

Включение Gzip сжатия

Gzip – это формат сжатия веб-страниц, файлов CSS и JavaScript на стороне сервера перед отправкой их в браузер. Можно проверить сжимается ли уже сайт с помощью нескольких инструменов (https://seolik.ru/gzip-compression-test или https://checkgzipcompression.com). Есть смысл вложиться в данный вариант оптимизации, ибо колоссальная разница заметна сразу.При использовании Apache, можно включить сжатие, добавив следующий фрагмент в файл .htaccess.<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0 no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent</IfModule>Для Nginx, сжатие можно включить, добавив в файл nginx.conf фрагмент:gzip on;gzip_vary on;gzip_comp_level 2;gzip_http_version 1.0;gzip_proxied any;gzip_min_length 1100;gzip_buffers 16 8k;gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;gzip_disable «MSIE .(?!.*SV1)»;Необходимо отметить специфическую особенность, выявленную в практической эксплуатации сайта bmstu-kaluga.ru: когда производительность упирается в скорость сжатия, на двухядерной системе nginx с 2-мя процессами работает практически в 2 раза быстрее, чем с одним процессом.Как оказалось, результирующая производительность весьма ограничена производительностью процессора, и оснований думать что «процессоры нынче быстрые» нет, бездумно ставить сжатие на 9 уровень не выйдет. При сжатии на 9-тку nginx полностью занимает оба ядра процессора, но отдает всего контент на скорости всего 4 Мб/с, т.е. не способен загрузить канал 100 Мбит, не говоря уже о большей пропускной способности.Если сравнивать скорость сжатия и размер полученных файлов, то видно, что после степени 5 сжатие практически не растет, а вот скорость падает почти в 2 раза если сжимать на 9. Рекомендуемое решение заключается в использовании модуля ngx_http_gzip_static_module. Этот модуль позволяет избавиться от сжатия одних и тех же файлов. Мы просто максимально сжимаем их заранее, и помещаем в том же каталоге с расширением .gz, и если есть – то будет отдаваться сжатый файл, причем моментально. Если включить и gzip_static и обычный gzip с уровнем сжатия например 1, то если предварительно сжатый файл будет найден – его и отдадут, а если такого файла нет, или например контент от Apache приходит – то его сожмут на 1, максимально быстро.Для реализации описанной методики необходимо подготовить сжатые файлы:

for i in `find ./* -type f -name '*.js'`; do echo $i; gzip -c -9 $i > $i.gz; done;for i in `find ./* -type f -name '*.css'`; do echo $i; gzip -c -9 $i > $i.gz; done;

А в конфигурацию nginx добавляем строчку gzip_static on:gzip_static on;

Заголовок HTTP Content-Security-Policy (CSP)

Content Security Policy (CSP), что в переводе означает «Политика безопасности контента». Допустим у Вас есть сайт, на котором вы показываете рекламу пользователям и честно зарабатываете деньги. И всё идёт хорошо, пока к вам не начнут ходит пользователи с заражёнными браузерами. Заражённый браузер будет подменять рекламу на вашем сайте на свою и показывать её пользователю.

Злоумышленник может создать определенную ссылку, которая выполняет произвольный JavaScript в браузере жертвы.

Инструкция в файле .htaccess

Header always set Content-Security-Policy "upgrade-insecure-requests"

Указатель upgrade-insecure-requests заставляет браузер волшебным образом переделать все HTTP-запросы в HTTPS-запросы.

Однако CSP касается не только используемого протокола. Он предлагает детальные способы определения того, какие ресурсы и действия разрешены на вашем сайте. Вы можете, например, указать, какие скрипты должны выполняться или откуда загружать изображения. Если что-то не разрешено, браузер блокирует это действие и предотвращает потенциальные атаки на ваш сайт.

Интересным вариантом CSP является режим только для отчетов. Вместо того чтобы использовать заголовок Content-Security-Policy, вы можете сначала проверить влияние CSP на ваш сайт, сказав браузеру просто сообщать об ошибках, не блокируя выполнение скрипта и т. д., Используя заголовок Content-Security-Policy-Report-Only.

.htaccess переадресация

Блокируем хотлинки с других сайтов

Есть нехорошие товарищи, которые могут использовать картинки с вашего ресурса для использования в своих проектах. Они используют ваши изображения на своих сайтах, другими словами, используют вашу пропускную способность в своих целях, по аналогии с перемещением изображений на поддомен. Будем с ними бороться… Заменим любую картинку, на которую ведет хотлинк с другого сайта, на какое-нибудь предупреждающее изображение или на что хватит фантазии. В коде не забывайте менять адреса на ваши URL.

 Перенаправим RSS фиды WordPress на Feedburner

Я не думаю, что кто-то пользуется чем-то другим, отличным от Feedburner. Удобно для пользователя, удобно для владельца блога, статистика, опять же. Если вы еще не используете — крайне рекомендую. Код ниже перенаправит все ваши RSS потоки на ваш аккаунт, не забывайте только вставить нужный адрес.

В этом примере идет перенаправление двух потоков: основного RSS и обновление комментариев, если посетитель подписан на обновления.

Изменим страницы ошибок

С хостингом и сайтом случается всякое, поэтому заранее нужно быть готовым к проблемам и сделать свои страницы ошибок. А пользователи в случае проблем будут перенаправлены на соответствующую страницу. На этих страницах можно дать краткую информацию для пользователя, почему такое случилось. Контакты свои оставить, в крайнем случае.

В этом примере идет перенаправление в случае основных ошибок. 404 я тоже добавил, хотя CMS обычно отрабатывают такие моменты, но бывали случаи.

301 и 302 редирект или перенаправление

301 редирект или, так называемое постоянное перенаправление — говорит о том, что страница поменяла адрес или URL и перенаправляет на новую страницу. Если у вас на сайте была проиндексированная ПС страница, а вы поменяли ее адрес — в обязательном порядке сделайте 301 редирект на новую страницу. При 301 редиректе старая страница не индексируется, а вместо нее «подставляется» новая.

Собственно, похожий пример внимательный читатель увидит выше, в случае перенаправления RSS. Да, технология та же. Бывает так, что сайт переезжает на новый домен, нужно сохранить структуру ссылок, а их могут быть сотни и тысячи, на каждую установить перенаправление нереально. Код ниже поможет разобраться с такой ситуацией:

Есть интересная методика «скрытия» внешних ссылок путем 301 редиректа. Допустим, у вас есть «сквозная» ссылка в сайдбаре, которая ведет на ваш профиль в Google+, она внешняя, то есть ведет на внешний ресурс. Для SEO очень хорошо, когда таких ссылок как можно меньше. Можно спрятать их и сделать внутренними.

Технология производства внутренних ссылок из внешних:

  • ставим ссылку на мнимую страницу,
  • настраиваем 301 редирект в htaccess с этой страницы на реальную страницу вашего профиля
  • посетитель ничего не чувствует, ПС довольны

Подобным образом можно ставить любые другие условно постоянные ссылки. 302 редирект или временное перенаправление говорит ПС, что страница перемещена временно, поэтому индексировать нужно обе страницы, старую и новую.

Код абсолютно такой же, как в случае с постоянным перенаправлением. 302 редирект удобно использовать, когда проводятся какие-либо долгосрочные работы на сайте и не нужно показывать посетителям «поломанные» страницы. В таком случае вам поможет этот код:

 Склеиваем сайты с www и без него

Очень плохо, когда сайт доступен по двум адресам, ПС это очень не любят. Склеить это в один адрес поможет код ниже:

В этом примере — главное зеркало это адрес без www. Если необходимо сделать наоборот — поменяйте www местами, сверху уберите, внизу добавьте.

Перенаправляем на главную

Перенаправление со страниц site.com/index.php и site.com/index.html на страницу site.com/. За код спасибо Василию Красноженову.

Блокировка IP-адресов директивой Deny

Разрешаем только методы GET, HEAD, POST:

Запрещаем доступ к сайту для всех методов с IP-адресов AfriNIC, APNIC, LACNIC:

Данным правилом я запретил доступ к сайту для IP-адресов стран Африки, Юго-Восточной Азии, Южной Америки и Карибского бассейна, а также некоторых корпораций и учрежний типа министерства обороны страны, скорый кирдык которой предрекал герой Сергея Бодрова в фильме «Брат»

Обратите внимание, что в этом списке отсутствуют IP-адреса из смешанных зон, которые можно найти на сайтах AfriNIC, APNIC, LACNIC и RIPE. Однако данные диапазоны отсекают основной объем паразитного трафика

IP-адреса ARIN блокировать не рекомендуется, иначе роботы поисковых систем Bing, Google, Yahoo не смогут заходить на ваш сайт.

Я умышленно задал порядок обработки правил Deny,Allow (при отсутствии директив Allow директиву Order лучше не использовать), а не наоборот, чтобы иметь возможность добавить ниже разрешающие правила исключений для некоторых IP-адресов из заблокированных диапазонов. Однако имейте ввиду, что и другие запрещающие правила для этих IP-адресов, касающиеся, например, запрета на использование определенных символов в URL, могут не действовать — будут разрешены любые URL-запросы. В этом случае запрещающие правила можно продублировать в mod_rewrite, проверяя условия через переменные окружения, установленные в mod_setenvif:

Кстати, в случае использования порядка обработки правил Allow,Deny рекомендуется прописать в самом начале разрешающее правило для всех Allow from all, но это не самое удачное решение — лучше его не использовать, если вы собираетесь устанавливать выборочно запрещающие правила.

Примечание: для отображения сообщения об ошибке 403 (доступ запрещен) лучше использовать не собственную страницу, а короткое сообщение, уменьшая тем самым нагрузку на сервер (какая вам разница, что увидят китаец или румын, пытавшиеся попасть на ваш сайт). Например, послать всех по известному адресу:

Глобальные настройки Apache

Данный раздел рассматривает важные параметры глобальных настроек Apache.

Timeout

По умолчанию этот параметр имеет значение 300. Это значит, что на выполнение каждого запроса у сервера есть максимум 300 секунд. В большинстве случаев это значение очень большое, и его рекомендуют уменьшить до 30-60 секунд.

KeepAlive

Если этот параметр имеет значение On, сервер позволит клиенту запрашивать несколько объектов в рамках одного соединения. Если параметр имеет значение Off, то каждый новый запрос будет создавать индивидуальное соединение. Такое поведение может привести к перенагрузке сайта с большим трафиком.

MaxKeepAliveRequests

Этот параметр позволяет определить максимальное количество запросов для одного соединения. Это позволяет увеличить производительность Apache.

Значение 0 позволит веб-серверу обрабатывать неограниченное количество запросов в рамках одного соединения.

KeepAliveTimeout

Данный параметр устанавливает  промежуток времени между запросами. Если в течение указанного времени клиент не создал следующий запрос. Веб-сервер прервёт соединение. Если в дальнейшем этот клиент отправит запрос, сервер создаст новое соединение.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
АллегроСтандарт
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: