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:
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 🙂