安全服务工作中,漏洞的跟踪管理,应该是让大多数安全服务人员都头疼的事。业务系统少还好,一个Excel表格就解决了,而面对数十个不同的业务系统,邮件、报告满天飞,Excel大法就行不通了,报告整理、漏洞复测确认常常让人精疲力尽。DefectDojo正是一款解决漏洞管理之痛的开源工具,DefectDojo可将各种漏洞报告(Nessus、Nmap、Burp等)汇总分析,对漏洞的确认、复测进行跟踪,建立计划扫描任务,导出报告等。

关于这款工具的更多介绍,可以看看OWASP AppSec USA 2017会议上Greg Anderson的演讲视频

项目地址

https://github.com/OWASP/django-DefectDojo

项目文档

http://defectdojo.readthedocs.io/en/latest/

DefectDojo安装

本次安装基于Ubuntu Server 16.04 LTS

安装准备

创建一个普通用户,指定home目录为/home/dojo,添加sudo权限,:

useradd -d /home/dojo -m dojo passwd dojo #设置系统密码 vi /etc/sudoers #添加以下一行内容: dojo ALL=(ALL:ALL) ALL 

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

安装PostgreSQL

本次示例使用PostgreSQL数据库,安装PostgreSQL数据库,创建DefectDojo使用的账号:

#安装数据库:

apt-get install postgresql

#添加DefectDojo用户,设置密码:

su - postgres        

createuser --interactive defectdojo psql -U postgres alter user defectdojo with password 'P@ssw0rd'; 

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

安装、激活Virtualenv

以下安装切换到dojo普通权限用户。

su - dojo

cd ~

pip install virtualenv

virtualenv dojo source dojo/bin/activate 

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

安装Dojo

git clone [https://github.com/OWASP/django-DefectDojo.git](https://github.com/OWASP/django-DefectDojo.git)

cd django-DefectDojo

./setup.bash 

执行安装脚本,数据库选择2,使用PostgreSQL,安装过程中需sudo切换到root权限,输入系统帐户dojo的密码。

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

到数据库部分,填写刚才创建的数据库账号信息:

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

填写DefectDojo Web管理员账号:

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

安装Uwsgi

pip install uwsgi 

安装WKHTML

wkhtmltopdf用于生产PDF报告,自动安装脚本出错的话,可以手动下载安装wkhtmltopdf

在/opt/django-DefectDojo目录下执行

./reports.sh 

禁用Debug,添加信任IP

开始使用时为便于排错,可不修改DEBUG选项。

使用VI编辑/opt/django-DefectDojo/dojo/settings.py,修改DEBUG值为:

`DEBUG = False` 

添加本机IP到信任中,我的IP是1.1.2.12:

ALLOWED_HOSTS = [u'1.1.2.12'] 

启动DefectDojo

在django-DefectDojo目录下执行:启动Celery和Beats

celery -A dojo worker -l info --concurrency 3 &
celery beat -A dojo -l info & 

启动Uwsgi

uwsgi --socket 127.0.0.1:8001 --wsgi-file wsgi.py --workers 7 & 

安装配置Nginx

DefectDojo使用uWSGI的方式,启动后并不能直接访问,还需要配置Nginx,也可以在Nginx中添加SSL证书,配置HTTPS访问,增强安全性。这里只是简单演示,未使用HTTPS。

apt-get install nginx 

删除/etc/nginx/site-enabled/etc/nginx/site-available目录下默认文件,

创建新的配置文件:

cd /etc/nginx/sites-enabled

vi defectdojo.conf 

添加以下内容:

upstream django { server 127.0.0.1:8001;
} server { listen 8888; server_name defectdojo; client_max_body_size 500m; location /static/ { alias /home/dojo/django-DefectDojo/static/;
  } location /media/ { alias /home/dojo/django-DefectDojo/media/;
  } location / { uwsgi_pass django; include /home/dojo/django-DefectDojo/wsgi_params;
  }
} 

重启Nginx

service nginx stop && service nginx start 

远程访问,主界面如下:

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

启动脚本

为方便下次启动,在dojo账号home目录下创建一个启动脚本defectdojo-start.sh,

添加以下内容:

#!/bin/bash  cd /home/dojo source dojo/bin/activate cd django-DefectDojo
celery -A dojo worker -l info --concurrency 3 &
celery beat -A dojo -l info &
uwsgi --socket 127.0.0.1:8001 --wsgi-file wsgi.py --workers 7 & 

软件升级

使用以下命令升级:

cd django-DefectDojo
git checkout master
git pull
pip install .
./manage.py makemigrations dojo
./manage.py makemigrations
./manage.py migrate 

Bower的静态文件经常会更新,建议定期重装bower,更新文件:

cd django-DefectDojo cd components
bower install cd ..
./manage.py collectstatic --noinput 

报错处理

安装不完整时,部分文件不能正常访问,打开界面会出现这种情况:

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

查看日志,发现大量文件访问结果为404:

开源漏洞管理工具DefectDojo(一)使用指南:安装配置

解决方法:

查看/home/dojo/django-DefectDojo/static目录下404报错文件是否存在,如不存在,再运行一次./setup。

文件存在仍报错的话,检查Nginx配置。

配置HTTPS、开机自启动

参考django-DefectDojo/sample_deployments/目录下脚本文件

*本文原创作者:Shad0wpf_