Existem algumas maneiras de fazer isso, mas acho que a maneira mais comum seria usar o módulo Filtragem de Solicitações, que pode ser acessado por meio do gerenciador do IIS. Eu destaquei em vermelho na foto acima. Isso permite bloquear solicitações com determinadas extensões de arquivos, verbos HTTP, URLs, cabeçalhos HTTP ou cadeias de consulta. Você pode configurar isso para permitir somente solicitações com .php (e provavelmente .css, .html, .png, .jpg ... outros tipos comuns de arquivos estáticos) a serem processadas pelo servidor.
Como um aparte, os dois itens que eu destaquei em azul também podem ser interessantes neste cenário. A navegação no diretório (que é desativada por padrão) faz exatamente o que você espera, controla se o servidor da Web retornará ou não uma listagem de diretório para um diretório virtual se nenhum arquivo for especificado na solicitação e nenhum documento padrão estiver configurado .
Os mapeamentos do manipulador controlam quais aplicativos estão configurados para lidar com quais tipos de arquivo. É aqui que você diz ao IIS que quando vê uma solicitação para um arquivo .php, ele precisa executar o php.exe para lidar com ele. Você poderia potencialmente remover todos os mapeamentos de manipuladores desnecessários (incluindo . ) para remover qualquer chance de o seu servidor processar um arquivo com uma extensão incomum.