Defender - это IRC-сервис, предназначенный для защиты IRC-сети от вирусов, троянов, спам-ботов и прочей вредоностной нежити. Звучит круто, но на деле не так. Сервис сырой и кривой. В IRC-сети висит, но свои красиво описанные функции не выполняет. Описываю установку и настройку Defender для ознакомления и тестов, возможно кто-то найдет этому сервису применение.

Установка Defender

Работаем через SSH клиент в Linux сервере Debian 7 от обычного пользователя.
  1. Переходим в папку, в которую будем устаналивать Defender:
    cd /home/dim/irc
  2. Скачиваем Defender:
    wget https://raw.githubusercontent.com/dimst/IRC/master/defender-1.5.2.tar.bz2
  3. Распаковывай скачанный архив:
    tar xf defender-1.5.2.tar.bz2
  4. Переходим в распакованную директорию:
    cd defender
  5. Создаём конфигурационный файл defender.conf:
    nano defender.conf

Настройка Defender

  1. Редактируем defender.conf под свой IRC сервер:
    #!/usr/bin/perl defender.pl
    ################################## 
    # Конфигурационный файл defender.conf
    # для Defender 1.5.2
    # Инструкция по установке и настройке
    # https://dim.st/irc/defender
    ##################################
    
    # адрес IRC-сервера, к которому будет линковаться Defender
    server=localhost
    
    # порт для линка
    port=5555
    
    # указать явный IP-адрес, если их несколько на одном сервере
    bind=127.0.0.1
    
    # тип IRCd
    linktype=unreal
    
    # пароль для линка
    password=123456
    
    # название сервера Defender servername=defender.dreamterra.net
    
    # номер сервера (нумерик)
    numeric=200
    
    # описание Defender'а
    serverdesc="Служебный сервер Defender"
    
    # в unrealircd.conf добавь новый link-блок:
    # link defender.dreamterra.net {
    # username *;
    # hostname localhost;
    # bind-ip *;
    # port 5555;
    # hub *;
    # password-connect "123456";
    # password-receive "123456";
    # class servers;
    # };
    
    # SID для InspIRCd 1.2
    sid=0DE
    
    ##################################
    
    # ник бота
    botnick=Defender
    
    # хост бота
    domain=Service
    
    # реальное имя
    fullname=Defender
    
    # QUIT-сообщение при отключении бота
    quitmsg="Defender отключен"
    
    # сервисный канал
    channel=#services
    
    ##################################
    
    # путь до директории с Defender
    # ОБЯЗАТЕЛЬНО ИЗМЕНИ ПУТЬ НА СВОЙ
    datadir=/home/dim/irc/defender
    
    # тип логов и путь до файла логов
    logto=Text
    logpath=/home/dim/irc/defender/defender.log
    
    # email или ссылка, указываемая в kline причине от Defender
    mail=admin@dreamterra.net
    
    # название IRC сети
    networkname=Dreamterra
    
    # степень параноидальности работы сервиса
    paranoia=7
    
    # админский хелп-канал
    supportchannel=#support
    
    # ссылка, указываемая при kline от Defender
    url=http://dreamterra.net/bans
    
    ##################################
    
    # модули Defender
    modules=fyle,cgiirc,regexp_akill,version,conn_average
    
    # тип авторизации
    authtype=basic
    # параметр для модуля conn_average
    # сколько подключений в минуту допустимо, чтобы Defender
    # не вызывал тревогу
    conn_average_max=3
    
    # параметры для модуля flood
    # контроль флуда входами/выходами
    # сколько допустимо за период времени (flood_interval)
    flood_log=1
    flood_globops=2
    flood_lock=3
    flood_interval=5
    
    # параметр для модуля nickflood
    # сколько смен ника будет считаться флудом
    nickflood_limit=3
    
    # параметр для модуля verbose
    ugly=0
    # параметры для модуля version
    # банить тех, у кого версия клиента
    # состоит из одного слова? 1 - да, 0 - нет
    OneWord=0
    
    # логировать версии клиентов на
    # сервисный канал? 1 - да, 0 - нет
    version_verbose=0
    
    # настройки Defender, если он используется
    # не как сервер, а как клиент
    # по-умолчанию отключено (закомментировано) /oper логин пароль
    # логин:
    #opername=ircop
    # пароль:
    #operpass=ircoppass
    
    # пароль на ник - для авторизации на сервисах
    #nickserv=nickpass
    
    ##################################
  2. В конфигурационном файле unrealircd.conf IRC сервера UnrealIRCd создадим link-блок для сервера defender.dreamterra.net:
    link defender.dreamterra.net
    {
      username *;
      hostname localhost;
      bind-ip *;
      port 5555;
      hub *;
      password-connect "123456";
      password-receive "123456";
      class servers;
    };

Запуск Defender

perl defender.pl
Если IRC-сервер сервиса Defender не прилинковался к IRC-сети, то смотри ошибки в лог-файле /home/dim/irc/defender/defender.log.