Parabéns, você encontrou um mau tutorial na Internet. Parece que o autor desse tutorial nunca o testou para ver se funciona, porque não funciona como está. Pior, parece que esse tutorial está realmente ligado ao site oficial do OpenVAS, que vai enganar e frustrar muita gente.
Portanto, o motivo pelo qual o redis está falhando é porque o SELinux impede que o redis-server grave em /tmp
. Você pode ver isso nos seus registros de auditoria:
type=AVC msg=audit(1482284806.464:112): avc: denied { write } for pid=1275 comm="redis-server" name="tmp" dev="dm-0" ino=33574981 scontext=system_u:system_r:redis_t:s0 tcontext=system_u:object_r:tmp_t:s0 tclass=dir
type=SYSCALL msg=audit(1482284806.464:112): arch=c000003e syscall=49 success=no exit=-13 a0=5 a1=7ffe55938670 a2=6e a3=7ffe55938614 items=0 ppid=1 pid=1275 auid=4294967295 uid=997 gid=995 euid=997 suid=997 fsuid=997 egid=995 sgid=995 fsgid=995 tty=(none) ses=4294967295 comm="redis-server" exe="/usr/bin/redis-server" subj=system_u:system_r:redis_t:s0 key=(null)
Em vez de /tmp
, o arquivo de soquete deve estar localizado em /run/redis
, por exemplo:
unixsocket /run/redis/redis.sock
Isso permite que ele opere dentro dos limites que o SELinux impõe.
Ao editar /etc/redis.conf
, verifique a parte inferior do arquivo em busca de uma diretiva second unixsocket
que tenha sido adicionada por openvas-setup
e a remova como redundante.
Naturalmente, geralmente em sistemas habilitados para SELinux, os redis devem ser configurados para escutar uma porta TCP em localhost, em vez de usar um soquete, já que outros daemons podem não se comunicar com redis via soquete, mas somente via TCP . Isso não é realmente um problema aqui, já que o OpenVAS não é (ainda) confinado ao SELinux, mas também não suporta entrar em contato com o redis via TCP. O resultado disso é que essa instalação do redis não pode ser compartilhada ou reutilizada com nenhum outro serviço além da cópia local do OpenVAS.
Mas há mais do que errado com este tutorial!
A segunda coisa é que em nenhum lugar o OpenVAS é configurado para realmente usar redis. Depende do compilado em default, que, como vimos, está errado. Para corrigir isso, é necessário definir uma diretiva de configuração em /etc/openvas/openvassd.conf
, algo que o tutorial nunca menciona:
kb_location = /run/redis/redis.sock
A coisa third é que ele usa um repo de terceiros chamado atomic, que fornece pacotes que entram em conflito com pacotes em repos normais, como o EPEL - que já fornece redis e OpenVAS! Não está claro por que a atomic fez isso, nem por que este tutorial usa o atomic para começar. Usar repositórios com pacotes conflitantes é potencialmente perigoso. Se você continuar a usar pacotes atômicos, você precisará ter certeza absoluta de que essa máquina (virtual) nunca é usada para qualquer outra outra coisa, por qualquer motivo.
Por fim, depois de instalá-lo, a interface da Web não é alcançável porque a porta indicada não está aberta no firewall. Você também tem que fazer isso sozinho.
firewall-cmd --add-port=9392/tcp # though this opens it to the world
firewall-cmd --runtime-to-permanent
Quando terminar, openvas-check-setup
dirá, entre outras coisas ...
OK: scanner (kb_location setting) is configured properly using the redis-server socket: /run/redis/redis.sock
OK: redis-server is running and listening on socket: /run/redis/redis.sock.
OK: redis-server configuration is OK and redis-server is running.
A ironia é que também dirá:
ERROR: SELinux is enabled. For a working OpenVAS installation you need to disable it.
FIX: Please disable SELinux.
O que parece ser completamente gratuito e desnecessário, já que o OpenVAS não é executado confinado pelo SELinux.