Рейтинг:1

IIS остановить поддельный API

флаг in

В IIS он может остановить поддельные вызовы API? Вчера меня завалило чем-то, что пыталось увидеть, есть ли страница на сайте. Они получили 404, но приложение все еще должно было проверить, является ли это хорошей страницей в приложении. Может ли IIS остановить это или веб-приложение должно обработать его и остановить. Есть ли раздел в IIS, где я могу добавить фиктивный путь, чтобы остановить это? это поможет https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/denyurlsequences/ или обратный прокси-сервер с использованием IIS Rewrite Он будет передавать только настроенный трафик?

Поддельные вызовы API

 Контроллер для пути '/bitrix/admin/' не найден
    Контроллер для пути '/cgi-bin/webcm'
    Контроллер для пути «/admin» не найден
    Контроллер для пути '/system/login'
    Контроллер пути '/typo3/phpmyadmin/'

Файл журнала приложения

 2021-08-17 15:05:28,382 [16] ОШИБКА HTI.LogServices.Implementation.Log4NetHelper — [не определено]: необработанное исключение (System.Web.HttpException (0x80004005): контроллер для пути «/admin» не найден или не реализует IController.
       в System.Web.Mvc.DefaultControllerFactory.GetControllerInstance (RequestContext requestContext, Type controllerType)
Lex Li avatar
флаг vn
Открывая ваш веб-сервер для доступа в Интернет, злоумышленники эффективно используют распространенные уязвимости для взлома вашей системы. Эти запросы на путях являются типичными для определения типа сервера (CGI и PHP), а затем идут дальнейшие атаки. IIS не сможет вам сильно помочь, и вам нужен брандмауэр корпоративного уровня (не брандмауэр Windows), чтобы отфильтровать их, или сторонние решения, такие как Cloudflare.
флаг in
как насчет обратного прокси-сервера с использованием IIS Rewrite, который будет передавать только настроенный трафик?
Рейтинг:0
флаг cn

Как вы уже упоминали, фильтрация запросов IIS должна вам помочь.

Вы используете сайт asp.net MVC, поэтому любой запрошенный URL-адрес проверяется на соответствие всем настроенным маршрутам. Это означает, что ваш прикладной уровень используется для ответа 404 на запрос.

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

Есть несколько вариантов:

 <system.webServer>
    <security>
        <requestFiltering>
            <denyUrlSequences>
                <add sequence="/system/login" />
            </denyUrlSequences>
            <hiddenSegments>
                <add segment="system" />
            </hiddenSegments>
            <filteringRules>
                <filteringRule name="systemLogin" scanUrl="true" scanQueryString="false">
                    <denyStrings>
                        <add string="system/login" />
                    </denyStrings>
                </filteringRule>
            </filteringRules>
        </requestFiltering>
    </security>    
</system.webServer>   

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

Если вы включите Failed Request Tracing, вы сможете увидеть, где в конвейере был создан ответ 404. В моем тесте без фильтрации запросов ошибка 404 была создана в позиции 232 в конвейерной обработке, а при использовании фильтрации запросов она была создана в позиции 72 намного раньше и до того, как был вызван уровень вашего приложения.

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

Убедитесь, что ваши пользовательские страницы ошибок настроены правильно и не говорите ничего, кроме 404.

флаг in
Как узнать позицию приложения по сравнению с позицией iis?
флаг cn
Позиции, которые я упомянул, — это позиции в журналах отслеживания невыполненных запросов IIS, в которых перечислены все различные этапы конвейера.

Ответить или комментировать

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