Как интегрировать Imunify 360 WAF в ispmanager 6

18.02.2026
23:01

Интеграция Imunify 360 WAF с ISPmanager 6 возможна только при использовании веб-сервера LiteSpeed. Процесс включает несколько этапов: подготовку панели, установку компонентов, настройку скриптов и проверку работы.

Подготовка ISPmanager 6

  1. В разделе конфигурации ПО для веб-сервера установите компонент WAF.
  2. Создайте пользователя панели с именем imunifyui.
  3. Для этого пользователя создайте сайт, где будет доступен веб-интерфейс Imunify360, например, imunify360.example.com.
  4. Удалите все файлы из домашней директории сайта и создайте каталог im360.

Установка и настройка Imunify360

  1. Подключитесь к серверу по SSH и убедитесь, что на сервере установлена утилита nc.
  2. Создайте каталог /etc/sysconfig/imunify360/generic/.
  3. Загрузите в каталог /etc/sysconfig/imunify360 скрипт get-panel-info.sh.
  4. Сделайте загруженный скрипт исполняемым: chmod +x /etc/sysconfig/imunify360/get-panel-info.sh.
  5. Если сервер находится за NAT, измените значение переменной local_host на локальный IP-адрес сервера.
  6. Проверьте работу скрипта: bash /etc/sysconfig/imunify360/get-panel-info.sh.
  7. Создание Python-скрипта для интеграции

Создайте файл /etc/sysconfig/imunify360/ispmanager_integration.py со следующим содержимым:

#!/usr/bin/env python3
"""
Imunify integration script for ISPManager.
Collects users and domains with mgrctl and
prints data appropriate to be consumed by imunify on stdout.

integration.conf example:
[integration_scripts]
...
users = /etc/sysconfig/imunify360/ispmanager_integration.py users
domains = /etc/sysconfig/imunify360/ispmanager_integration.py domains
...


Return codes:
0 - ok
1 - runtime error (e.g. mgrctl is missing, or can't parse its output, ...),
   see more in metadata['error'] and metadata['message']
2 - script usage error (e.g. wrong args)
"""
from subprocess import check_output
import argparse
import json
import pwd
import re
import sys


def get_ispmgr_data(section):
   assert section in ('user', 'webdomain')
   ispmgr_output = check_output([
       '/usr/local/mgr5/sbin/mgrctl',
       '-m',
       'ispmgr',
       section,
   ]).decode().split('\n')
   return [
       dict(re.findall(r'(\w+)=(\S*)', line))
       for line in ispmgr_output
       if len(line) > 0
   ]


def get_domains():
   domains = {}
   data = get_ispmgr_data('webdomain')
   for entry in dаta:
       domain = entry['name']
       domain_info = {
           'document_root': entry['docroot'],
           'owner': entry['owner'],
       }
       domains[domain] = domain_info
   return domains


def get_users():
   users = []
   data = get_ispmgr_data('user')
   for entry in dаta:
       username = entry['name']
       users.append({
           'id': pwd.getpwnam(username).pw_uid,
           'username': username,
       })
   return users


def main():
   parser = argparse.ArgumentParser()
   parser.add_argument(
       dest='cmd', choices=(
           'users',
           'domains'
       )
   )
   args = parser.parse_args()
   result = {
       'data': {},
       'metadata': {
           'result': 'ok'
       }
   }
   try:
       retval = 0
       if args.cmd == 'domains':
           cmd_result = get_domains()
       elif args.cmd == 'users':
           cmd_result = get_users()
   except Exception as e:
       result['metadata']['result'] = e.__class__.__name__
       result['metadata']['message'] = str(e)
       retval = 1
   else:
       result['data'] = cmd_result
   finally:
       print(json.dumps(result))
       return retval


if __name__ == "__main__":
   sys.exit(main()) 

Делаем его исполняемым:

chmod +x /etc/sysconfig/imunify360/ispmanager_integration.py

Проверяем работу скрипта:

python3 /etc/sysconfig/imunify360/ispmanager_integration.py users
python3 /etc/sysconfig/imunify360/ispmanager_integration.py domains


Следующим шагом создайте файл integration.conf со следующим содержимым:

#This is integration.conf example that requires adjustments, oterwise IM360 may not work.
#Values are given purely as an example and may not represent your environment.

#The path to the WEB server directory for Imunify360 files
[paths]
ui_path = /var/www/imunifyui/data/www/imunify360.example.com/im360
ui_path_owner = imunifyui:imunifyui

#which PAM service Imunify360 should use
[pam]
service_name = system-auth

#Malware Scanner base directory and patterns
[malware]
basedir = /var/www/
pattern_to_watch = ^/var/www/(vhosts|html)(/.*)?$
#basedir = /home
#pattern_to_watch = ^/home/.+?/(public_html|public_ftp|private_html)(/.*)?$


#WEB server type and commands
[web_server]
#server type apache/nginx/litespeed
server_type = apache
graceful_restart_script = /usr/bin/systemctl restart lsws
config_test_script = /usr/sbin/apachectl -t
#path to ModSecurity audit logs
modsec_audit_log = /var/log/httpd/modsec_audit.log
modsec_audit_logdir = /var/log/modsec_audit

#Limiting users and provide context for IM360 mechanisms
[integration_scripts]
admins = /etc/sysconfig/imunify360/get-admins-script.sh
users = /etc/sysconfig/imunify360/ispmanager_integration.py users
domains = /etc/sysconfig/imunify360/ispmanager_integration.py domains
#Domain-specific ModSecurity configuration (to disable rules using CLI)
#modsec_domain_config_script = /path/to/inject/domain/specific/config/script.sh

Дополнительные настройки

Создайте файл для ModSecurity: touch /etc/sysconfig/imunify360/generic/modsec.conf

В основном файле конфигурации Apache (для RHEL-based систем путь — /etc/httpd/conf/httpd.conf, для Debian-based — /etc/apache2/apache2.conf) укажите путь до этого файла: IncludeOptional /etc/sysconfig/imunify360/generic/modsec.conf

Скачайте скрипт установки и запустите его:

bash
wget https://repo.imunify360.cloudlinux.com/defence360/i360deploy.sh
bash i360deploy.sh --key %КЛЮЧ_ЛИЦЕНЗИИ%

Дополнительные шаги для Debian-based систем

  1. Переименуйте файл modsecurity.conf-recommended: mv /etc/modsecurity/modsecurity.conf{-recommended,}
  2. В файле /etc/modsecurity/modsecurity.conf замените значение параметра SecRuleEngine на On
  3. В файле /etc/apache2/mods-enabled/security2.conf раскомментируйте строку IncludeOptional /etc/modsecurity/*.conf
  4. После внесения изменений перезапустите службу lsws: service lsws restart 

Проверка работы WAF

Проверить корректность работы WAF можно командой:

bash
curl 'http://example.com/?q="><script>alert(123)</script>'
Панель Imunify360 будет доступна по адресу https://imunify360.example.com/im360/ под пользователем root. 

Если возникнут сложности, рекомендуется обратиться в поддержку ISPmanager.

Закажите новый VPS со скидкой 15%
Любая локация на выбор. Стабильный сервер для ваших проектов по выгодной цене.
Выбрать VPS