Normalmente, você usa o robots.txt. Ele funcionará em todos os bots bem comportados.
Para bots que não são bem comportados, muitas vezes há pouco que você possa fazer. Você pode limitar as contagens de conexões ou a largura de banda em seu firewall ou servidor da Web, mas os principais bots normalmente usam vários endereços IP. Limitar com base em strings user-agent geralmente não é uma boa idéia, já que são triviais para o bot falsificar, e bots que não se importam com o robots.txt têm uma tendência a falsificar as strings do useragent também. Ele funciona no caso específico em que o bot envia um agente de usuário correto, mas não obedece ao robots.txt.
Editar: Se você realmente deseja bloquear com base no useragent em vez de empurrá-lo de volta para o firewall ou similar, acho que a maneira mais fácil é usar o URLScan. Você escreve uma regra que se parece com isso:
[Options]
RuleList=DenyYandex
[DenyYandex]
DenyDataSection=Agents
ScanHeaders=User-Agent
[Agents]
Yandex