CentOS7 Redis 上的 OpenVAS 無法啟動
我正在嘗試按照下面的文章讓 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 的限制。