Centos

CentOS7 Redis 上的 OpenVAS 無法啟動

  • January 2, 2018

我正在嘗試按照下面的文章讓 OpenVAS 正常工作。

https://www.atlantic.net/community/howto/install-openvas-vulnerability-scanner-centos-7

但是它不起作用,當我執行 openvas-check-setup 時,我在下面收到此錯誤,當我檢查 /var/log/redis/redis.log 時,它顯示“正在打開 Unix 套接字:綁定:權限被拒絕”

openvas-check-setup 2.3.7   Test completeness and readiness of OpenVAS-8   (add '--v6' or '--v7' or '--v9'    if you want to check for another OpenVAS version)

 Please report us any non-detected problems and   help us to improve this check routine:   http://lists.wald.intevation.org/mailman/listinfo/openvas-discuss

 Send us the log-file (/tmp/openvas-check-setup.log) to help analyze the problem.

 Use the parameter --server to skip checks for client tools   like GSD and OpenVAS-CLI.

Step 1: Checking OpenVAS Scanner ...
       OK: OpenVAS Scanner is present in version 5.0.7.
       OK: OpenVAS Scanner CA Certificate is present as /var/lib/openvas/CA/cacert.pem.
       OK: redis-server is present in version v=3.0.7.
       OK: scanner (kb_location setting) is configured properly using the redis-server socket: /tmp/redis.sock
       ERROR: redis-server is not running or not listening on socket: /tmp/redis.sock
       FIX: You should start the redis-server or configure it to listen on socket: /tmp/redis.sock

ERROR: Your OpenVAS-8 installation is not yet complete!

恭喜,您找到了一個糟糕的 Internet 教程。該教程的作者似乎從未親自測試過它是否有效,因為它不能按原樣工作。更糟糕的是,該教程似乎實際上是從官方 OpenVAS 網站連結到的,這會誤導和挫敗很多人。

因此,redis 無法啟動的原因是 SELinux 拒絕 redis-server 寫入/tmp. 您可以在審核日誌中看到這一點:

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)

而不是/tmp,套接字文件應該位於/run/redis,例如:

unixsocket /run/redis/redis.sock

這允許它在 SELinux 強加的約束內執行。

編輯/etc/redis.conf時,請務必檢查文件底部是否有第二個 unixsocket指令添加openvas-setup並刪除它作為多餘的。

當然,通常在啟用 SELinux 的系統上,應將 redis 配置為偵聽 localhost 上的 TCP 埠,而不是使用套接字,因為其他守護程序可能不允許通過套接字與 redis 通信,而只能通過 TCP。這不是一個真正的問題,因為 OpenVAS 不是(還)受 SELinux 限制的,但它也不支持通過 TCP 聯繫 redis。這樣做的結果是,除了 OpenVAS 的本地副本之外,此 redis 安裝無法與任何其他服務共享或重用。


但是本教程的錯誤不止於此!

第二件事是,OpenVAS 沒有任何地方被配置為實際使用 redis。它依賴於預設編譯,正如我們所見,這是錯誤的。要解決此問題,需要在 中設置配置指令/etc/openvas/openvassd.conf,本教程從未提及:

kb_location = /run/redis/redis.sock

第三件事是它使用了一個名為 atomic 的第三方repo,它提供的包與普通 repos 中的包衝突,例如 EPEL - 它已經提供了 redis 和 OpenVAS!不清楚為什麼 atomic 會這樣做,也不清楚為什麼本教程使用 atomic 開始。使用包含衝突包的儲存庫具有潛在危險。如果您繼續使用原子包,您將需要絕對確定這台(虛擬)機器不會出於任何原因用於其他任何用途。

最後,一旦你安裝了它,Web 界面實際上是不可訪問的,因為指定的埠沒有在防火牆中打開。你也必須自己做。

firewall-cmd --add-port=9392/tcp    # though this opens it to the world
firewall-cmd --runtime-to-permanent

一旦你完成了,openvas-check-setup應該說,除其他外……

       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.

具有諷刺意味的是,它還會說:

       ERROR: SELinux is enabled. For a working OpenVAS installation you need to disable it.
       FIX: Please disable SELinux.

這似乎是完全免費和不必要的,因為 OpenVAS 並不受 SELinux 的限制。

引用自:https://serverfault.com/questions/821929