OpenVAS: установка, запуск

Автор: | 24/11/2018

OpenVAS – сканер уязвимостей систем. Имеет свою базу данных CVE, используя которую проверяет системы на их наличие.

Как обычно – ссылка на документацию на Arch Wiki. Установка достаточно тривиальна, как и первый запуск проверок с дефолтными настройками.

Пост чисто обзорный, без описания детальных настроек – может потом доберусь до них, когда время будет, и если буду его внедрять на проекте для запуска тестирования по расписанию с уведомлениями куда-то на почту.

Установка OpenVAS

Тут установка выполняется на рабочий ноутбук с Arch Linux. На Debian/Ubuntu установка немного отличается.

Для работы OpenVAS потребуется локальный Redis – устанавливаем.

[simterm]

$ sudo pacman -S redis

[/simterm]

Редактируем /etc/redis.conf, добавляем параметры:

...
unixsocket /var/lib/redis/redis.sock
unixsocketperm 700
port 0
timeout 0
databases 128

Перезапускаем его:

[simterm]

$ systemctl restart redis

[/simterm]

Устанавливаем сам OpenVAS:

[simterm]

$ sudo pacman -S openvas

[/simterm]

Создаём /etc/openvas/openvassd.conf, описываем подключение к Redis:

kb_location = /var/lib/redis/redis.sock

Создаём SSL сертификаты для сервера и клиентов:

[simterm]

$ sudo openvas-manage-certs -a

[/simterm]

Обновляем плагины и базу данных уязвимостей – может занять минут 10-15:

[simterm]

$ sudo greenbone-nvt-sync
$ sudo greenbone-scapdata-sync
$ sudo greenbone-certdata-sync

[/simterm]

В Debian они называются openvas-nvt-sync, openvas-scapdata-sync и openvas-certdata-sync., а сертификаты создаются с помощью openvas-mkcert и openvas-mkcert-client.

greenbone-nvt-sync обновляет скрипты плагинов сканирования в /var/lib/openvas/plugins/, которые представляют собой Nmap Scripting Engine скрипты:

[simterm]

$ cat /var/lib/openvas/plugins/xmpp_detect.nasl | grep -v \#                                                                                                                    

if(description)                                                                                                                                                                                                                               
{                                                                                                                                                                                                                                             
  script_oid("1.3.6.1.4.1.25623.1.0.100489");                                                                                                                                                                                                 
  script_version("$Revision: 10929 $");                                                                                                                                                                                                       
  script_tag(name:"last_modification", value:"$Date: 2018-08-11 13:39:44 +0200 (Sat, 11 Aug 2018) $");                                                                                                                                        
  script_tag(name:"creation_date", value:"2010-02-08 23:29:56 +0100 (Mon, 08 Feb 2010)");                                                                                                                                                     
  script_tag(name:"cvss_base", value:"0.0");                                                                                                                                                                                                  
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:N/I:N/A:N");                                                                                                                                                                    
  script_name("XMPP Detection");                                                                                                                                                                                                              
  script_category(ACT_GATHER_INFO);                                                                                                                                                                                                           
  script_family("Service detection");                                                                                                                                                                                                         
  script_copyright("This script is Copyright (C) 2010 Greenbone Networks GmbH");                                                                                                                                                              
  script_dependencies("find_service.nasl");                                                                                                                                                                                                   
  script_require_ports("Services/xmpp-client", 5222, "Services/xmpp-server", 5269);                                                                                                                                                           

  script_xref(name:"URL", value:"http://en.wikipedia.org/wiki/Jabber");                                                                                                                                                                       

  script_tag(name:"summary", value:"This host is running the Extensible Messaging and Presence Protocol(XMPP)                                                                                                                                 
  (formerly named Jabber). XMPP is an open, XML-based protocol originally aimed at                                                                                                                                                            
  near-real-time, extensible instant messaging (IM) and presence information                                                                                                                                                                  
  (e.g., buddy lists), but now expanded into the broader realm of                                                                                                                                                                             
  message-oriented middleware.");                                                                                                                                                                                                             

  script_tag(name:"qod_type", value:"remote_banner");                                                                                                                                                                                         

  exit(0);                                                                                                                                                                                                                                    
}                                                                                
...

[/simterm]

Запускаем сканер:

[simterm]

$ systemctl start openvas-scanner

[/simterm]

Обновляем базу NVT (Network Vulnerability Test):

[simterm]

$ sudo openvasmd --rebuild --progress

[/simterm]

Создаём admin пользователя:

[simterm]

$ sudo openvasmd --create-user=admin --role=Admin
User created with password 'e50e68b1-0584-431a-8495-9edcc62882e4'.

[/simterm]

Записываем пароль.

Запускаем сервис:

[simterm]

$ sudo openvasmd -p 9390 -a 127.0.0.1

[/simterm]

Логи, в случае проблем с запуском – /var/log/openvas/.

Проверяем статус:

[simterm]

$ systemctl status openvas-scanner
● openvas-scanner.service - Open Vulnerability Assessment System Scanner Daemon
   Loaded: loaded (/usr/lib/systemd/system/openvas-scanner.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-11-22 17:22:21 EET; 4s ago
     Docs: http://www.openvas.org/
 Main PID: 4054 (openvassd)
    Tasks: 3 (limit: 4915)
   Memory: 73.3M
   CGroup: /system.slice/openvas-scanner.service
           ├─4054 /usr/bin/openvassd -f
           ├─4062 openvassd (Loading Handler)
           └─4063 openvassd: Reloaded 9550 of 47937 NVTs (19% / ETA: 00:20)

[/simterm]

Запускаем WebUI:

[simterm]

$ sudo gsad -f --listen=127.0.0.1 --mlisten=127.0.0.1 --mport=9390

[/simterm]

Переходим на https://localhost, подвтерждаем сертификат (т.к. генерировали с дефолтными настройками), попадаем в интерфейс:

Запуск тестов

Логинимся:

Запускаем Wizard, для начала на localhost:

Логи:

==> /var/log/openvas/openvassd.messages <==
[Thu Nov 22 15:23:45 2018][5345] Starts a new scan. Target(s) : 127.0.0.1, with max_hosts = 30 and max_checks = 10
[Thu Nov 22 15:23:45 2018][5345] exclude_hosts: Skipped 0 host(s).
[Thu Nov 22 15:23:45 2018][5598] Testing localhost (127.0.0.1) [5598]
[Thu Nov 22 15:24:11 2018][5598] Finished testing localhost (127.0.0.1). Time : 26.14 secs
[Thu Nov 22 15:24:11 2018][5345] Test complete
[Thu Nov 22 15:24:11 2018][5345] Total time to scan all hosts : 30 seconds

Результаты:

Окей, вроде всё работает.

Устанавливаем nmap для работы сканера:

[simterm]

$ sudo pacman -S nmap

[/simterm]

Запускаем скан на RTFM, дефолтный занял минут 20.

Скан сразу виден на графиках нагрузки на сервер:

И его результаты:

Вот отличный пример – при миграции блога добавляk страничку с phpinfo(), и забыл удалить.

Каждая ссылка в колонке слева ведёт на детальное описание уязвимости:

Ссылки по теме

Setup and Start OpenVAS

OpenVAS Tutorial And Tips

OpenVAS: Checking for Holes Before the Hackers Do It for You