Формирование Ban листа по данным из /var/log/messages с пометкой FLOOD

29.11.2016

Небольшой php скрипт, для формирования списка спам IP адресов. Данные получает из /var/log/messages (FLOOD). Скрипт формирует список из полей SRC и сохраняет в файл /etc/ban.txt

 
<?php
  define('FILE_IN', '/var/log/messages');
  define('FILE_OUT', '/etc/ban.txt');
  
  $aLines = file(FILE_IN);
  
  $aIP = array();
  foreach($aLines as $sLines)
  {
    if(strpos($sLines, 'FLOOD') !== FALSE)
	{
      $sPattern  = '|SRC=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|';
	  preg_match_all($sPattern, $sLines, $aMatches, PREG_SET_ORDER);
	  $aIP[] = $aMatches[0][1];
	}
  }
  
  $aIP = array_unique($aIP);

  file_put_contents(FILE_OUT, file_get_contents(FILE_OUT)."\n".implode("\n",$aIP));  

Категории: PHP, Linux, Script / Tool
Яндекс.Метрика