Você poderia usar o logrotate para o seu arquivo.
e defina um limite e uma rotação. Para bloquear alguns ips, você pode tentar algo como o fail2ban.
Eu recebo uma solicitação estranha a cada 2 segundos a partir de 127.6.205.1. Meu arquivo production.log (Ruby on Rails) se parece com isso:
> ... I, [2015-01-16T15:05:23.491062 #79682] INFO -- : Started GET "/" for 127.6.205.1 at 2015-01-16 15:05:23 -0500 I, [2015-01-16T15:05:23.493081 #79682] INFO -- : Processing by HomeController#index as HTML I, [2015-01-16T15:05:23.499908 #79682] INFO -- : Rendered home/index.haml within layouts/application (5.2ms) I, [2015-01-16T15:05:23.500405 #79682] INFO -- : Completed 200 OK in 7ms (Views: 6.2ms | ActiveRecord: 0.0ms) I, [2015-01-16T15:05:25.508127 #79682] INFO -- : Started GET "/" for 127.6.205.1 at 2015-01-16 15:05:25 -0500 I, [2015-01-16T15:05:25.510744 #79682] INFO -- : Processing by HomeController#index as HTML I, [2015-01-16T15:05:25.518685 #79682] INFO -- : Rendered home/index.haml within layouts/application (6.2ms) I, [2015-01-16T15:05:25.519226 #79682] INFO -- : Completed 200 OK in 8ms (Views: 7.2ms | ActiveRecord: 0.0ms) I, [2015-01-16T15:05:27.524949 #79682] INFO -- : Started GET "/" for 127.6.205.1 at 2015-01-16 15:05:27 -0500 I, [2015-01-16T15:05:27.527011 #79682] INFO -- : Processing by HomeController#index as HTML I, [2015-01-16T15:05:27.532497 #79682] INFO -- : Rendered home/index.haml within layouts/application (3.7ms) I, [2015-01-16T15:05:27.532950 #79682] INFO -- : Completed 200 OK in 6ms (Views: 4.8ms | ActiveRecord: 0.0ms) ...
Como resultado, o arquivo ficou muito grande (700MB), ocupou todo o espaço disponível em disco e meu link caiu.
Agora removi o arquivo de registro e meu blog funciona normalmente, mas é uma solução temporária.
Então, o que é isso? Eu posso escrever um script bash para remover o production.log ou de alguma forma bloquear esse IP, mas não acho que seja uma boa solução.