DevOpsSegurança

Como Instalar o Imunify360 Stand Alone

Introdução

Se você administra um servidor web, ou mantém um por qualquer motivo que seja , você sabe o quão difícil é mante-lô seguro, os usuários não são experts em segurança e se fossem não contratariam serviços de terceiros né. Plugins desatualizados, brechas de segurança, SQL Injection, é um horror.

Para isso existem ferramentas que podem tornar a sua vida mais fácil, o Imunify 360 é uma delas, é como se fosse um Firewall e Antivirus tudo em um, talvez não seria errado chamar o mesmo de WAF ( Web Application Firewall ) , e aqui vamos ver como instalar o Imunify 360 sem um painel de controle.

Solicitando uma Chave para Instalaçao

Para avaliar o Imunify 360 você vai precisar de uma chave de instalação, por padrão a chave de testes é de 14 dias. É importante contudo mencionar que para solicitar a chave você precisa de um email corporativo ou de domínio próprio, logo emails @gmail, @yahoo, etc não serão aceitos. A Solicitação da chave pode ser feita neste link.

Iniciando a Instalação

Para realizar a instalação do Imunify 360 você vai precisar de um servidor com um dos seguintes sistemas operacionais:

  • CentOS 6/7/8
  • RHEL 6/7
  • CloudLinux OS
  • Ubuntu 16.04/18.04
  • Debian 9/10

Além dos requisitos de SO o Imunify 360 também solicita que sejam utilizado alguns Servidores Web, ou seja, você deve usar um dos seguintes servidores web:

  • Apache >= 2.4.30
  • LiteSpeed
  • Nginx (starting from Imunify360 5.4)

Criando o Arquivo de Configuração

Na versão Stand Alone, o Imunify ainda não tem um instalador muito bom, digo isso ,pois é necessária realizar a criação de alguns arquivos de configuração na mão.

Então para isso como root crie o seguinte arquivo de configuração:

/etc/sysconfig/imunify360/integration.conf

Eu utilizei os seguintes comandos em meu servidor:

mkdir -pv /etc/sysconfig/imunify360/
touch /etc/sysconfig/imunify360/integration.conf

Agoora vamos precisar editar o arquivo: /etc/sysconfig/imunify360/integration.conf de forma que ele contenha o apontamento para onde estão os vhosts do server, Ah sim!, para que o imunify 360 funcione de forma stand alone é necessário que você crie um vhost para instalar ele, no meu caso eu vou criar o vhost como imunify.nishisan.dev e sua home vai ser: /home/imunify/public_html, logo o arquivo ficará como abaixo:

[paths]
ui_path=/home/imunify/public_html

Com essa configuração, quando você iniciar o processo de instalação o Imunify irá automaticamente copiar os arquivos da interface administrativa para este local.

Como configurar a autenticação do Imunify 360

Eu acho que uma das principais vantagens do Imunify é sua integração com o PAM, logo é possível utilizar o mesmo usuário e senha do root para entrar no Imunify.

Para fazer isso complemente o arquivo de configuração com as linhas abaixo:

[pam]
service_name = system-auth

Okay, agora está tudo certo para começarmos. Faça o download do instalador do imunify com o seguinte comando:

 wget https://repo.imunify360.cloudlinux.com/defence360/i360deploy.sh

Em seguida inicie o mesmo com o comando abaixo substituindo o xxxx por sua chave trial.

bash i360deploy.sh --key xxxx 

Se tudo correr bem, você deverá ver as linhas abaixo passando. O processo leva uns minutos e pode demorar um pouco.

[root@sdev-01-sup ~]# bash i360deploy.sh --key xxxxx
Detecting ostype... centos
Checking for an update to i360deploy.sh
Downloading i360deploy.sh.repo_version (please wait)
i360deploy.sh is already the latest version (2.32) - continuing
/home/imunify/public_html
In a few moments the script will install latest imunify360-firewall package (w/dependencies)... (Ctrl-C to cancel)
[2021-01-26 21:29:47] No repository match: imunify360-alt-php
[2021-01-26 21:29:47] No repository match: imunify360-ea-php-hardened
[2021-01-26 21:29:47] EL-8 - Imunify360                                13 kB/s | 2.7 kB     00:00
[2021-01-26 21:29:48] Dependencies resolved.
[2021-01-26 21:29:48] ==========================================================================================
[2021-01-26 21:29:48]  Package                            Arch    Version                      Repository   Size
[2021-01-26 21:29:48] ==========================================================================================
[2021-01-26 21:29:48] Installing:
[2021-01-26 21:29:48]  imunify360-firewall                x86_64  5.4.7-2                      imunify360  1.2 M
[2021-01-26 21:29:48] Installing dependencies:
[2021-01-26 21:29:48]  GeoIP                              x86_64  1.6.12-7.el8                 imunify360  124 k
[2021-01-26 21:29:48]  GeoIP-GeoLite-data                 noarch  2018.06-4.el8                imunify360  552 k
[2021-01-26 21:29:48]  ai-bolit                           x86_64  1:30.3.1-2.el8               imunify360  6.4 M
[2021-01-26 21:29:48]  alt-curl                           x86_64  7.64.0-2.el8                 imunify360  328 k
[2021-01-26 21:29:48]  alt-libcurl                        x86_64  7.64.0-2.el8                 imunify360  289 k
[2021-01-26 21:29:48]  alt-libxml2                        x86_64  2.9.4-3.2.el8                imunify360  2.0 M
[2021-01-26 21:29:48]  alt-libzip                         x86_64  1.3.2-1.el8                  imunify360   67 k
[2021-01-26 21:29:48]  alt-openssl                        x86_64  1:1.0.2k-2.el8.cloudlinux.10 imunify360  352 k

No final ele termina assim:

-- DONE --
Waiting for Imunify360 to start...
[2021-01-26 21:32:04] ERROR: imunify360 service is stopped.
[2021-01-26 21:33:06] 5.4.7-2
[2021-01-26 21:33:06] Imunify360 is started
{'BLOCKED_PORTS': {'default_mode': 'allowed'}, 'SEND_ADDITIONAL_DATA': {'enable': True}, 'FIREWALL': {'UDP_OUT_IPv4': ['20', '21', '53', '113', '123'], 'TCP_OUT_IPv4': ['20', '21', '22', '25', '53', '80', '110', '113', '443', '587', '993', '995'], 'UDP_IN_IPv4': ['20', '21', '53', '443'], 'port_blocking_mode': 'ALLOW', 'TCP_IN_IPv4': ['20', '21', '22', '25', '53', '80', '110', '443', '465', '587', '993', '995']}, 'NETWORK_INTERFACE': {'eth_device': None, 'eth_device_skip': [], 'eth6_device': None}, 'MALWARE_SCANNING': {'detect_elf': True, 'notify_on_detect': False, 'enable_scan_pure_ftpd': True, 'max_signature_size_to_scan': 1048576, 'scan_modified_files': None, 'sends_file_for_analysis': True, 'max_cloudscan_size_to_scan': 10485760, 'optimize_realtime_scan': True, 'try_restore_from_backup_first': False, 'cloud_assisted_scan': True, 'enable_scan_modsec': True, 'max_mrs_upload_file': 10485760, 'rapid_scan': True, 'enable_scan_inotify': True, 'default_action': 'cleanup_or_quarantine'}, 'WEB_SERVICES': {'https_ports': [], 'http_ports': []}, 'ADMIN_CONTACTS': {'emails': []}, 'MALWARE_SCAN_SCHEDULE': {'day_of_week': 0, 'day_of_month': 27, 'hour': 3, 'interval': 'month'}, 'MOD_SEC': {'ruleset': 'FULL', 'prev_settings': '', 'cms_account_compromise_prevention': False, 'app_specific_ruleset': True}, 'CSF_INTEGRATION': {'catch_lfd_events': False}, 'INCIDENT_LOGGING': {'limit': 100000, 'min_log_level': 4, 'ui_autorefresh_timeout': 10, 'num_days': 100}, 'AUTO_WHITELIST': {'after_unblock_timeout': 1440, 'timeout': 1440}, 'RESOURCE_MANAGEMENT': {'io_limit': 2, 'cpu_limit': 2, 'ram_limit': 500}, 'BACKUP_RESTORE': {'cl_on_premise_backup_allowed': False, 'max_days_in_backup': 90, 'cl_backup_allowed': True}, 'MALWARE_SCAN_INTENSITY': {'user_scan_cpu': 2, 'cpu': 2, 'user_scan_ram': 1024, 'user_scan_io': 2, 'ram': 2048, 'io': 2}, 'STOP_MANAGING': {'modsec_directives': False}, 'PERMISSIONS': {'user_ignore_list': True, 'advisor': True, 'allow_malware_scan': False, 'support_form': True, 'upgrade_button': True}, 'CAPTCHA': {'cert_refresh_timeout': 3600}, 'OSSEC': {'active_response': False}, 'CAPTCHA_DOS': {'enabled': True, 'max_count': 100, 'timeout': 864000, 'time_frame': 21600}, 'PAM': {'ftp_protection': False, 'enable': False, 'exim_dovecot_protection': False}, 'DOS': {'default_limit': 250, 'enabled': False, 'port_limits': {}, 'interval': 30}, 'LOGGER': {'backup_count': 5, 'max_log_file_size': 62914560}, 'ERROR_REPORTING': {'enable': True}, 'KERNELCARE': {'edf': False}, 'PROACTIVE_DEFENCE': {'mode': 'LOG', 'blamer': True, 'php_immunity': False}, 'MOD_SEC_BLOCK_BY_SEVERITY': {'max_incidents': 2, 'enable': True, 'severity_limit': 2, 'denied_num_limit': 2, 'check_period': 120}, 'WEBSHIELD': {'enable': False, 'captcha_site_key': '', 'known_proxies_support': True, 'captcha_secret_key': '', 'splash_screen': False}, 'MOD_SEC_BLOCK_BY_CUSTOM_RULE': {'33339': {'max_incidents': 10, 'check_period': 120}, '33332': {'max_incidents': 10, 'check_period': 120}}, 'MALWARE_CLEANUP': {'keep_original_files_days': 14, 'trim_file_instead_of_removal': True}, 'SMTP_BLOCKING': {'redirect': False, 'allow_users': [], 'enable': False, 'ports': [25, 587, 465], 'allow_local': False, 'allow_groups': ['mail']}}
WARNING: Integration config is missing server_type field
[2021-01-26 21:33:11] Success
[2021-01-26 21:33:11] You can find complete log in /var/log/i360deploy.log
[root@sdev-01-sup ~]#

Acessando o Imunify 360 pela primeira vez.

Então, agora que você terminou de instalar o imunify, direcione seu navegador para o endereço do vhost que você criou e acesso com o usuário root e sua senha:

Tela de Login do Imunify
Dashboard do Imunify

Logo após a instalação do Imunify eu pude observar que o mesmo já começou a reportar alguns incidentes, como os da imagem abaixo, que mostra uma tentativa de bruteforce via ssh.

Conclusão

O Imunify 360 é uma ferramenta bastante poderosa e pode ajudar ou melhor, tirar você de vários sufocos. Porém sua instalação exige o ajuste de diversos componentes, o qual faz com que instalar ele em um servidor de produção se torne uma tarefa um tanto quanto desafiadora. Por isso se você realmente planeja utilizar ele , eu recomendo que o faça em um novo servidor, transferindo de pouco a pouco seu conteúdo. Futuramente irei postar mais detalhes do mesmo. Mas por hoje é só pessoal 🙂

Botão Voltar ao topo