Минусовки на DJ-X.info
Страницы: 1   Вниз

Автор Тема: Переопределение URL-адресов на сервере IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10  (Прочитано 28243 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

DJ-X

  • Музыкант №1
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 153
    • Просмотр профиля
    • Минусовки Бесплатно !

Настройка блокировок в IIS.

Для начала нам нужно установить Microsoft Web Platform Installer 5.0 и в нём выбрать и установить Модуль переопределения URL-адресов 2.0.
Секреты использования URL Rewrite Module 2.0 - для сервера IIS 7.5!
Оказывается с помощью переопределения URL-адресов можно делать не только переопределение URL-адресов!
Там оказывается очень много возможностей и можно легко настроить всё что захочешь!
Справку на русском не найти и вообще мало правил для него в сети - но я постараюсь это исправить.

Здесь собраны мои познания файла .htaccess и web.config,
здесь собраны различные настройки блокировок  для сервера IIS 7.5 в Windows 7
с помощью переопределения URL-адресов подставляя серверные переменные.

Файл с глобальными настройками на сервере IIS 7.5 называется applicationHost.config
и находится он по этому пути.
c:\Windows\system32\inetsrv\config\applicationHost.config

Для каждого сайта есть свой файл с настройками и называется он web.config расположен он в корне сайта C:\inetpub\wwwroot\web.config
Редактировать файлы конфигураций нужно в кодировке UTF-8 в Notepad++.

Как настроить стабильный и быстрый Windows хостинг?
Настройка Windows Server IIS 7-8.

Примеры правил!

1: Запрет доступа по IP в адресной строке браузера.
Браузер будет ругаться на то что - Соединение закрыто удалённым сервером!
Это нам понадобится если мы не хотите что бы разные сканеры IP адресов узнали что у вас находится на порту 80.

В правиле пишем только разрешенные домены и субдомены по которым разрешен доступ на наш сервер.
На пример на нашем сервере есть сайты http://dj-x.info и http://www.dj-x.info и http://spinto.dj-x.info
значит нужно добавить их в наше правило.
* значит любое название.

dj-x.info
*.dj-x.info


Доступ полюбым другим IP адресам будет закрыт на пример эти
http://127.0.0.1 http://[fe80::e565:306a:d691:f01] http://localhost и любые другие.<rule name="Запрет доступа по IP в адресной строке браузера" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" negate="false" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{SERVER_NAME}" pattern="dj-x.org.ua" negate="true" />
                        <add input="{SERVER_NAME}" pattern="*.dj-x.org.ua" negate="true" />
                        <add input="{SERVER_NAME}" pattern="dj-x.info" negate="true" />
                        <add input="{SERVER_NAME}" pattern="*.dj-x.info" negate="true" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>

Для того что бы это правило работало нужно создать сайт без названия.








2: Запрещённые COOKIES.
Иногда может понадобиться запретить доступ по COOKIES.
На пример вы зашли на запрещенную страницу в robots.txt и получили запрещённое COOKIES и стали заблокированы!
Блокировка по COOKIES иногда даже лучше и гуманнее чем блокировка по IP.
Развиваем фантазию и ставим ловушки!

<rule name="Запрещённые COOKIES" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                        <add input="{HTTP_COOKIE}" pattern="*SMFCookieXXL_=*" />
                        <add input="{HTTP_COOKIE}" pattern="*PHPSESSID=1sslc8riftba506dqit9e8l111*" />
                        <add input="{HTTP_COOKIE}" pattern="*PHPSESSID=2sslc8riftba506dqit9e8l222*" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


3: Запрещённый URL без COOKIES.


<rule name="Запрещённый URL без COOKIES" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_COOKIE}" matchType="Pattern" pattern="*PHPSESSID=*" ignoreCase="true" negate="true" />
                        <add input="{QUERY_STRING}" matchType="Pattern" pattern="*=keepalive*" ignoreCase="true" negate="false" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


4: Запрет HEAD на .php.

                <rule name="Запрет HEAD на .php" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_METHOD}" matchType="Pattern" pattern="HEAD" ignoreCase="true" negate="false" />
                        <add input="{SCRIPT_NAME}" matchType="Pattern" pattern="*.php" ignoreCase="true" negate="false" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


5: Перенаправление.

<rule name="Перенаправление Login1" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{URL}" pattern="/login1/" />
                    </conditions>
                    <action type="Redirect" url="/index.php?action=login1" redirectType="Temporary" />
                </rule>
                <rule name="Перенаправление Register1" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{URL}" pattern="/register1/" />
                    </conditions>
                    <action type="Redirect" url="/index.php?action=register1" redirectType="Temporary" />
                </rule>
<rule name="spinto.dj-x.info" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{SERVER_NAME}" pattern="spinto.dj-x.*" />
                    </conditions>
                    <action type="Redirect" url="https://dj-x.info/index.php/topic,94.0.html" redirectType="SeeOther" />
                </rule>


5: Переопределение.

<rule name="Переопределение png.png" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{URL}" pattern="*/png.png" />
                    </conditions>
                    <action type="Rewrite" url="/foto/png.php" />
                </rule>
                <rule name="/Report" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{URL}" pattern="/Report*" />
                    </conditions>
                    <action type="Redirect" url="/index.php/topic=345.0.html" />
                </rule>


6: dj-x.info c www.

<rule name="dj-x.info c www" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" negate="false" />
                    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                        <add input="{SERVER_NAME}" pattern="www.*.*" negate="true" />
                    </conditions>
                    <action type="Redirect" url="http://www.dj-x.info{URL}" />
                </rule>


7: www.dj-x.info без www.

       <rule name="www.dj-x.info без www" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{SERVER_NAME}" pattern="www.*.*" />
                    </conditions>
                    <action type="Redirect" url="http://dj-x.info{URL}" />
                </rule>


8: phpMyAdmin только https:// .
Можно и редиректы делать на другой сайт и многое другое - главное что бы была фантазия!

<rule name="phpMyAdmin только https://" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{SERVER_PORT}" pattern="443" negate="true" />
                        <add input="{URL}" pattern="*/phpMyAdmin*" />
                    </conditions>
                    <action type="Redirect" url="https://{SERVER_NAME}{URL}" />
                </rule>


9: Блокировка POST запросов выше 299 байт для пользователей без Cookies: Stop_Control=1.
Наш анти спамерский комплект!

<rule name="POST big Blocked" stopProcessing="true">
  <match url=".*" negate="false" />
  <conditions>
                        <add input="{HTTP_COOKIE}" pattern=".*Stop_Control=1" negate="true" />
                        <add input="{REQUEST_METHOD}" pattern="^POST$" />
                        <add input="{HTTP_CONTENT_LENGTH}" matchType="Pattern" pattern="^[0-9][0-9]$|^[0-2][0-9][0-9]$|^299$" ignoreCase="true" negate="true" />
  </conditions>
  <action type="AbortRequest" />
</rule>


10: Блокировка IP.

                <rule name="Блокировка IP" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REMOTE_ADDR}" pattern="2002:c372:8e2c::*" ignoreCase="false" />
                        <add input="{REMOTE_ADDR}" pattern="195.114.*" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


11: Разрешить только этот IP - 2002:* .

                <rule name="Разрешить только этот IP" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" negate="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REMOTE_ADDR}" matchType="Pattern" pattern="2002:*" ignoreCase="true" negate="true" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


12: Разрешить только этот HTTP_USER_AGENT - My-User-Agent.

                <rule name="HTTP_USER_AGENT" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_USER_AGENT}" pattern="My-User-Agent" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>


13: Секретный файловый сервер!
Можно скачивать файлы только с разрешенными расширениями.
На любые другие запросы сервер использует запрос на прерывание - Подключение к сайту прервано.
У него даже нет главной страницы и страницы ошибок! Но файлы скачивать по прямым ссылкам можно!
Пример секретного файлового сервера!
http://скачать.dj-x.org.ua/DJ-X/Il_Trovatore-Damor_sullali_rosee.m2ts

                <rule name="Разрешенные расширения" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" negate="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="*.m2ts" negate="true" />
                        <add input="{URL}" pattern="*.wav" negate="true" />
                        <add input="{URL}" pattern="*.avi" negate="true" />
                        <add input="{URL}" pattern="*.mp3" negate="true" />
                        <add input="{URL}" pattern="*.mpg" negate="true" />
                    </conditions>
                    <action type="AbortRequest" />
                </rule>

Вот с какими серверными переменными работает URL Rewrite Module!
{ALL_HTTP}{ALL_RAW}{APPL_MD_PATH}{APPL_PHYSICAL_PATH}{CERT_COOKIE}{CERT_FLAGS}{CERT_ISSUER}{CERT_KEYSIZE}{CERT_SECRETKEYSIZE}{CERT_SERIALNUMBER}{CERT_SERVER_ISSUER}{CERT_SERVER_SUBJECT}{CERT_SUBJECT}{CONTENT_LENGTH}{CONTENT_TYPE}{DOCUMENT_ROOT}{GATEWAY_INTERFACE}{HTTP_ACCEPT_ENCODING}{HTTP_ACCEPT_LANGUAGE}{HTTP_ACCEPT}{HTTP_CONNECTION}{HTTP_CONTENT_LENGTH}{HTTP_HOST}{HTTP_IF_MODIFIED_SINCE}{HTTP_IF_NONE_MATCH}{HTTP_REFERER}{HTTP_UA_CPU}{HTTP_USER_AGENT}{HTTPS_KEYSIZE}{HTTPS_SECRETKEYSIZE}{HTTPS_SERVER_ISSUER}{HTTPS_SERVER_SUBJECT}{HTTPS}{INSTANCE_ID}{INSTANCE_META_PATH}{LOCAL_ADDR}{PATH_INFO}{PATH_TRANSLATED}{QUERY_STRING}{REMOTE_ADDR}{REMOTE_HOST}{REMOTE_PORT}{REMOTE_USER}{REQUEST_METHOD}{REQUEST_URI}{SCRIPT_NAME}{SERVER_ADDR}{SERVER_NAME}{SERVER_PORT_SECURE}{SERVER_PORT}{SERVER_PROTOCOL}{SERVER_SOFTWARE}{UNENCODED_URL}{URL}

Разместите файл ServerVariables.aspx у себя на сервере и направляйте на него запросы и увидите значения серверных переменных!
ServerVariables.aspx
<%
For Each var as String in Request.ServerVariables
  Response.Write(var & " " & Request(var) & "<br>")
Next
%>


Ссылки по теме.
URL Rewrite Forum on IIS.NET
О синтаксисе регулярных выражений.
Создание правил перезаписи для URL Rewrite Module - тренировка!
10 советов переопределения URL-адресов и хитростей.
Здесь ещё есть правила переопределения и здесь.

Настройка блокировок в Apache - многое не получается сделать так как на IIS 7.5.

.htaccess

# Показываем текст с ошибкой
ErrorDocument 503 "Attention croaked Hosting! ERROR 503 :(<br />Open site in Internet Explorer"
ErrorDocument 502 "Attention croaked Hosting! ERROR 502 :("
ErrorDocument 403 "Stop Control PRO Enabled! <br />https://dj-x.info/Report"
# Ограничение на размер PUT и POST запроса в байтах.
<Files register.php>
LimitRequestBody 305
</Files>
# Блокируем HEAD запросы на установленные типы файлов!
<filesMatch ".(html|htm)$">
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD)
RewriteRule .* - [F]
</filesMatch>
# Блокируем Cookies
RewriteEngine On
RewriteCond %{HTTP_COOKIE} ^PHPSESSID=5sslc8riftba506dqit9e8l7348
RewriteRule .* - [F]
Записан

DJ-X

  • Музыкант №1
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 153
    • Просмотр профиля
    • Минусовки Бесплатно !
Оптимизация работы PHP на сервере IIS 7.5
« Ответ #1 : 05 Апреля 2012, 12:21:41 »



В настройках форума SMF нужно поставить галочку - Не отображать название хостов пользователей.
Это нужно для повышения производительности!
В Windows 7 процесс сервера W3WP.EXE запускает PHP-CGI.EXE который запускает CMD.EXE и который потом запускает NSLOKUP.EXE который определяет имя хоста.
Один такой запрос может занимать аж до 1 секунды времени.
А теперь представьте себе что к нам зашло одновременно сразу 85 человек с разных IP.
Будет выполнено 85 таких запросов каждый по 1 секунде и у 85-го человека наш сайт откроется аж через 85 секунд!

Запретить отключение Брандмауэра Windows любой программой.
Настройка копии сайта на другом хостинге без изменений в DNS.

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

  • Смотри картинки с настройками!


  • MaxInstances
     Определяет максимальное число процессов FastCGI в пуле процессов приложения для выбранного приложения FastCGI. Это число также представляет максимальное количество параллельных запросов, которые способно обрабатывать приложение FastCGI. Значение по умолчанию - 4.

    Только в операционных системах Windows® 7 и Windows Server® 2008 R2 установка для параметра MaxInstances значения "0" позволяет IIS автоматически выбирать оптимальное число процессов FastCGI для текущей среды выполнения.
    Максимальное число экземпляров желательно поставить 0
    У меня почему то по умолчанию было 1.

    TerminateProcess — этот модуль завершает процесс FastCGI и возвращает стандартное сообщение об ошибке "500".

    Защищаем сервер IIS от детского DOS и паразитной нагрузки от настойчивых IP адресов с помощью Dynamic IP Restrictions - есть поддержка IPv6 адресов.

    PHP Manager for IIS - настраивай php легко.

    Максимальный размер файла на сервере IIS 7.5
    4294967295 байт = 4.294967295 гигабайт
    А если подключить виртуальный каталог тогда можно файлы большего размера скачивать!

    Бесплатная проверка доступности сайта из различных частей мира.
    http://ping-admin.ru/free_test/result/13351162663o2u9fz614v9hmnn9530g.html
    Записан

    DJ-X

    • Музыкант №1
    • Ветеран
    • *****
    • Оффлайн Оффлайн
    • Сообщений: 153
      • Просмотр профиля
      • Минусовки Бесплатно !

    Пример правил URL Rewrite с регулярными выражениями.
    Запрещённый URL без COOKIES Go=1


                    <rule name="Запрещённый URL без COOKIES Go=1" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
                        <match url="\.zip$|\.rar$|\.mp3$|\.mp4$|\.m4a$|phpinfo.php$" negate="false" />
                        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                            <add input="{HTTP_COOKIE}" pattern="Go=1" negate="true" />
                        </conditions>
                        <action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="Forbidden!" statusDescription="Запрещено! Без Cookies Go=1" />
                    </rule>

    Для настройки понадобится расширение EditThisCookie для Chrome.
    Nginx запрет закачки файлов без Cookies и Фильтрация GET запросов.
    Записан
    Страницы: 1   Вверх
     

    Страница сгенерирована за 0.055 секунд. Запросов: 29.