Dagdaは、既知の脆弱性、トロイの木馬、ウイルス、マルウェア、およびその他の悪意のある脅威の静的分析をDocker画像/コンテナで実行し、Docker DaemonとDockerコンテナを監視して異常な活動を検出するためのツールです。
その使命を果たすために、最初にCVE(共通の脆弱性と露出)、入札(Bugtraq IDS)、RHSA(Red Hat Security Adcutisories)、RHBAS(Red Hat Bug Advisiories)としての既知の脆弱性、および攻撃的なセキュリティデータベースからの既知のエクスプロイトは、これらの脆弱性と脆弱性の検索を促進するためにMongodBにインポートされます。
次に、既知の脆弱性の静的分析を実行すると、 Dagdaは、OSパッケージやプログラミング言語の依存関係など、Dockerイメージにインストールされたソフトウェアに関する情報を取得し、以前に保存された情報に対する脆弱性がMongoDBに脆弱である場合、各製品とそのバージョンのバージョンを検証します。また、 Dagdaは、Dockerの画像/コンテナに含まれるトロイの木馬、ウイルス、マルウェア、その他の悪意のある脅威を検出するために、Clamavをウイルス対策エンジンとして使用しています。
Dagdaは複数のLinuxベース画像をサポートしています。
Dagdaは、以下の複数の依存関係を分析するために、OWASP依存関係チェック + Retire.jsにかかっています。
一方、 DagdaはFalcoと統合されており、実行中のDockerコンテナを監視して異常な活動を検出します。また、 DagdaにはDocker Daemonからのリアルタイムイベントの集まりが含まれています。
最後に、すべての静的分析とすべてのランタイムモニタリングを含むDocker画像/コンテナの各分析レポートは、必要に応じて各Docker画像/コンテナの履歴を利用できるように同じMongoDBに保存されます。
Dagdaの使用の前に、次の要件をインストールする必要があります。
要件はPIPでインストールできます。
sudo pip3 install -r requirements.txtDagdaを使用するためにDockerをインストールしている必要があります。 Dockerのインストールの手順が必要な場合は、Dockerページをインストールするハウツーを参照してください。
dockerコマンドを使用するときにsudoを使用する必要を避けるために、 dockerというunixグループを作成し、ユーザーを追加します。 dockerデーモンが起動すると、 dockerグループがUNIXソケットの所有権を読み取り/書き込み可能にします。
MongoDBには、MongoDBには脆弱性/エクスプロイトと分析結果の両方が保存されるため、 Dagdaを使用するためにMongoDB 3.6以降をインストールする必要があります。
MongoDBのインストールの手順が必要な場合は、MongoDB Community Editionのインストールハウツーページを参照してください。
Dockerを使用してMongodbを実行することもできます。
docker pull mongo
docker run -d -p 27017:27017 mongoDagdaは、Dockerコンテナの実行を監視するために異常なアクティビティを検出するためにFalcoと統合されているため、ホストOSにカーネルヘッダーをインストールしている必要があります。
これは通常、debianのような分布で行うことができます: apt-get -y install linux-headers-$(uname -r)
または、rhelのような分布について: yum -y install kernel-devel-$(uname -r)
その後、コマンド/usr/lib/dkms/dkms_autoinstaller startを実行することをお勧めします。
rmmod: ERROR: Module sysdig_probe is not currently loaded
注意:注:一部の分布では、SysDigのインストールが必要であることが検出されているため、SysDigのインストールに指示が必要な場合は、LinuxページのHow-ToインストールSysDigを参照してください。
Dagdaサーバーを起動するために、 python3 dagda.py startを実行する必要があります。詳細については、WikiページのStart Sub-Commandを参照してください。
Dagdaサーバーが開始された後、 Dagda CLIの使用の前に、必要に応じて次の環境変数を設定する必要があります。
export DAGDA_HOST= ' 127.0.0.1 '
export DAGDA_PORT=5000この使用文書では、CLIの使用法のみが表示されていますが、 Dagdaには使用するためのREST APIがあります。詳細については、REST APIドキュメントページを参照してください。
最初の実行のために、実行してデータベースの脆弱性とエクスプロイトを入力する必要があります。
python3 dagda.py vuln --init前のコマンドは、終了するのに数分かかることができるので、我慢してください。
新しい脆弱性とエクスプロイトを使用して更新するためにデータベースを再埋め込む必要がある場合は、前のコマンドを再実行する必要があります。
また、 dagda.py vulnを使用して、個人データベースでクエリを実行できます。使用例は次の例です。
python3 dagda.py vuln --product openldap --product_version 2.2.20前のクエリの予想出力を以下に示します。
[
{
"CVE-2005-4442" : {
"cveid" : " CVE-2005-4442 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.2 ,
"cvss_confidentiality_impact" : " Complete " ,
"cvss_exploit" : 3.9 ,
"cvss_impact" : 10.0 ,
"cvss_integrity_impact" : " Complete " ,
"cvss_vector" : [
" AV:L " ,
" AC:L " ,
" Au:N " ,
" C:C " ,
" I:C " ,
" A:C "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 05-09-2008 " ,
"pub_date" : " 20-12-2005 " ,
"summary" : " Untrusted search path vulnerability in OpenLDAP before 2.2.28-r3 on Gentoo Linux allows local users in the portage group to gain privileges via a malicious shared object in the Portage temporary build directory, which is part of the RUNPATH. "
}
},
{
"CVE-2006-2754" : {
"cveid" : " CVE-2006-2754 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 01-06-2006 " ,
"summary" : " Stack-based buffer overflow in st.c in slurpd for OpenLDAP before 2.3.22 might allow attackers to execute arbitrary code via a long hostname. "
}
},
{
"CVE-2006-5779" : {
"cveid" : " CVE-2006-5779 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 26-08-2011 " ,
"pub_date" : " 07-11-2006 " ,
"summary" : " OpenLDAP before 2.3.29 allows remote attackers to cause a denial of service (daemon crash) via LDAP BIND requests with long authcid names, which triggers an assertion failure. "
}
},
{
"CVE-2006-6493" : {
"cveid" : " CVE-2006-6493 " ,
"cvss_access_complexity" : " High " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.1 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 4.9 ,
"cvss_impact" : 6.4 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:H " ,
" Au:N " ,
" C:P " ,
" I:P " ,
" A:P "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 12-12-2006 " ,
"summary" : " Buffer overflow in the krbv4_ldap_auth function in servers/slapd/kerberos.c in OpenLDAP 2.4.3 and earlier, when OpenLDAP is compiled with the --enable-kbind (Kerberos KBIND) option, allows remote attackers to execute arbitrary code via an LDAP bind request using the LDAP_AUTH_KRBV41 authentication method and long credential data. "
}
},
{
"CVE-2007-5707" : {
"cveid" : " CVE-2007-5707 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 6.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:C "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 30-10-2007 " ,
"summary" : " OpenLDAP before 2.3.39 allows remote attackers to cause a denial of service (slapd crash) via an LDAP request with a malformed objectClasses attribute. NOTE: this has been reported as a double free, but the reports are inconsistent. "
}
},
{
"CVE-2007-5708" : {
"cveid" : " CVE-2007-5708 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 6.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:C "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 30-10-2007 " ,
"summary" : " slapo-pcache (overlays/pcache.c) in slapd in OpenLDAP before 2.3.39, when running as a proxy-caching server, allocates memory using a malloc variant instead of calloc, which prevents an array from being initialized properly and might allow attackers to cause a denial of service (segmentation fault) via unknown vectors that prevent the array from being null terminated. "
}
},
{
"CVE-2011-4079" : {
"cveid" : " CVE-2011-4079 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " Requires single instance " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 4.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:S " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-189 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 27-10-2011 " ,
"summary" : " Off-by-one error in the UTF8StringNormalize function in OpenLDAP 2.4.26 and earlier allows remote attackers to cause a denial of service (slapd crash) via a zero-length string that triggers a heap-based buffer overflow, as demonstrated using an empty postalAddressAttribute value in an LDIF entry. "
}
},
{
"BID-83610" : {
"bugtraq_id" : 83610 ,
"class" : " Failure to Handle Exceptional Conditions " ,
"cve" : [
" CVE-2006-6493 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " OpenLDAP CVE-2006-6493 Remote Security Vulnerability "
}
},
{
"BID-83843" : {
"bugtraq_id" : 83843 ,
"class" : " Failure to Handle Exceptional Conditions " ,
"cve" : [
" CVE-2006-2754 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " OpenLDAP CVE-2006-2754 Remote Security Vulnerability "
}
}
]特定のCVEに関するすべての情報を取得するには、次のコマンドを実行する必要があります。
python3 dagda.py vuln --cve_info CVE-2009-2890前のクエリの予想出力を以下に示します。
[
{
"cveid" : " CVE-2009-2890 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-79 " ,
"mod_date" : " 20-08-2009 " ,
"pub_date" : " 20-08-2009 " ,
"summary" : " Cross-site scripting (XSS) vulnerability in results.php in PHP Scripts Now Riddles allows remote attackers to inject arbitrary web script or HTML via the searchquery parameter. "
}
] dagda.py vulnの詳細を知りたい場合は、 python3 dagda.py vuln --help 。
データベースはvuln_databaseと呼ばれ、10のコレクションがあります。
http://www.securityfocus.com/ ) - ソースbiddb_downloader次のサブセクションでは、既知の脆弱性、トロイの木馬、ウイルス、マルウェア、その他の悪意のある脅威の静的分析を実行し、異常な活動を検出するためのdockerコンテナを実行する監視を詳細に説明します。
主なDagdaターゲットの1つは、Docker画像/コンテナの既知の脆弱性、トロイの木馬、ウイルス、マルウェア、その他の悪意のある脅威の分析を実行することです。
python3 dagda.py check --docker_image jboss/wildfly詳細については、小切手サブコマンドWikiページを参照してください。
前のコマンドの予想される出力は次のコマンドになります。この出力では、分析idを使用したDagda応答。
{
"id" : " 58667994ed253915723c50e7 " ,
"msg" : " Accepted the analysis of <jboss/wildfly> "
}また、リモートの方法で静的分析を実行したい場合は、エージェントサブコマンドを使用できます。
python3 dagda.py agent localhost:5000 -i jboss/wildfly前のコマンドの予想される出力は次のコマンドになります。この出力では、分析idを使用したDagda応答。
{
"id" : " 58667994ed253915723c50e7 " ,
"image_name" : " jboss/wildfly "
}具体的なDocker分析を確認したい場合は、以下を入力する必要があります。
python3 dagda.py history < DOCKER_IMAGE_NAME_HERE > --id < REPORT_ID_HERE > dagda.py historyの詳細については、 python3 dagda.py history --help 。
分析はフィニッシュに数分かかる場合がありますので、我慢してください。前のコマンドを入力した場合、 python3 dagda.py history jboss/wildfly --id 58667994ed253915723c50e7と入力すると、予想される出力は以下に示すように見えます。
{
"id" : " 58667994ed253915723c50e7 " ,
"image_name" : " jboss/wildfly " ,
"status" : " Completed " ,
"timestamp" : " 2016-12-14 13:17:12.802486 " ,
"static_analysis" : {
"malware_binaries" : [
{
"file" : " /tmp/test/removal-tool.exe " ,
"malware" : " Worm.Sober "
},
{
"file" : " /tmp/test/error.hta " ,
"malware" : " VBS.Inor.D "
}
],
"os_packages" : {
"total_os_packages" : 182 ,
"vuln_os_packages" : 41 ,
"ok_os_packages" : 141 ,
"os_packages_details" : [
{
"product" : " sed " ,
"version" : " 4.2.2 " ,
"is_vulnerable" : false ,
"is_false_positive" : false ,
"vulnerabilities" : []
},
{
"product" : " grep " ,
"version" : " 2.20 " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2015-1345" : {
"cveid" : " CVE-2015-1345 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 2.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 3.9 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:L " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-119 " ,
"mod_date" : " 23-12-2016 " ,
"pub_date" : " 12-02-2015 " ,
"summary" : " The bmexec_trans function in kwset.c in grep 2.19 through 2.21 allows local users to cause a denial of service (out-of-bounds heap read and crash) via crafted input when using the -F option. "
}
}
]
},
{
"product" : " lua " ,
"version" : " 5.1.4 " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-5461" : {
"cveid" : " CVE-2014-5461 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-119 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 04-09-2014 " ,
"summary" : " Buffer overflow in the vararg functions in ldo.c in Lua 5.1 through 5.2.x before 5.2.3 allows context-dependent attackers to cause a denial of service (crash) via a small number of arguments to a function with a large number of fixed arguments. "
}
},
{
"BID-34237" : {
"bugtraq_id" : 34237 ,
"class" : " Unknown " ,
"cve" : [],
"local" : " no " ,
"remote" : " yes " ,
"title" : " Lua Unspecified Bytecode Verifier Security Vulnerability "
}
}
]
},
[ ... ]
, {
"product" : " sqlite " ,
"version" : " 3.7.17 " ,
"is_vulnerable" : false ,
"is_false_positive" : false ,
"vulnerabilities" : []
}
]
},
"prog_lang_dependencies" : {
"vuln_dependencies" : 9 ,
"dependencies_details" : {
"java" : [
{
"product" : " xalan-java " ,
"version" : " 2.5.2 " ,
"product_file_path" : " /opt/jboss/java/xalan.2.5.2.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-0107" : {
"cveid" : " CVE-2014-0107 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 7.5 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 6.4 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:P " ,
" I:P " ,
" A:P "
],
"cweid" : " CWE-264 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 15-04-2014 " ,
"summary" : " The TransformerFactory in Apache Xalan-Java before 2.7.2 does not properly restrict access to certain properties when FEATURE_SECURE_PROCESSING is enabled, which allows remote attackers to bypass expected restrictions and load arbitrary classes or access external resources via a crafted (1) xalan:content-header, (2) xalan:entities, (3) xslt:content-header, or (4) xslt:entities property, or a Java property that is bound to the XSLT 1.0 system-property function. "
}
},
{
"BID-66397" : {
"bugtraq_id" : 66397 ,
"class" : " Input Validation Error " ,
"cve" : [
" CVE-2014-0107 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " Apache Xalan-Java Library CVE-2014-0107 Security Bypass Vulnerability "
}
}
]
},
{
"product" : " jboss_wildfly_application_server " ,
"version" : " - " ,
"product_file_path" : " /opt/jboss/java/jboss_wildfly_application_server.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-0018" : {
"cveid" : " CVE-2014-0018 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 1.9 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 3.4 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:L " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-264 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 14-02-2014 " ,
"summary" : " Red Hat JBoss Enterprise Application Platform (JBEAP) 6.2.0 and JBoss WildFly Application Server, when run under a security manager, do not properly restrict access to the Modular Service Container (MSC) service registry, which allows local users to modify the server via a crafted deployment. "
}
}
]
},
[ ... ]
, {
"product" : " jboss_weld " ,
"version" : " 3.0.0 " ,
"product_file_path" : " /opt/jboss/java/jboss_weld.3.0.0.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-8122" : {
"cveid" : " CVE-2014-8122 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:P " ,
" I:N " ,
" A:N "
],
"cweid" : " CWE-362 " ,
"mod_date" : " 13-05-2015 " ,
"pub_date" : " 13-02-2015 " ,
"summary" : " Race condition in JBoss Weld before 2.2.8 and 3.x before 3.0.0 Alpha3 allows remote attackers to obtain information from a previous conversation via vectors related to a stale thread state. "
}
}
]
}
],
"js" : [],
"nodejs" : [],
"php" : [],
"python" : [
{
"product" : " lxml " ,
"version" : " 1.0.1 " ,
"product_file_path" : " /opt/jboss/python/lxml.1.0.1.py " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-3146" : {
"cveid" : " CVE-2014-3146 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 14-04-2015 " ,
"pub_date" : " 14-05-2014 " ,
"summary" : " Incomplete blacklist vulnerability in the lxml.html.clean module in lxml before 3.3.5 allows remote attackers to conduct cross-site scripting (XSS) attacks via control characters in the link scheme to the clean_html function. "
}
}
]
}
],
"ruby" : []
}
}
}
}主なDagdaのもう1つのターゲットは、異常なアクティビティを検出するためにDockerコンテナを実行する監視を実行することです。したがって、実行中のDockerコンテナで監視を実行したい場合は、以下を入力する必要があります。
python3 dagda.py monitor 69dbf26ab368 --start詳細については、モニターサブコマンドWikiページを参照してください。
予想される出力は、以下に示すように見えます。
{
"id" : " 586f7631ed25396a829baaf4 " ,
"image_name" : " jboss/wildfly " ,
"msg" : " Monitoring of docker container with id <69dbf26ab368> started "
}入力した場合は、必要に応じて監視を停止できます。
python3 dagda.py monitor 69dbf26ab368 --stop以下に示すように、実行中のコンテナの監視を停止するときの予想出力は次のとおりです。
{
"id" : " 586f7631ed25396a829baaf4 " ,
"image_name" : " jboss/wildfly " ,
"timestamp" : " 2017-01-06 10:49:21.212508 " ,
"status" : " Completed " ,
"runtime_analysis" : {
"container_id" : " 69dbf26ab368 " ,
"start_timestamp" : " 2017-01-06 10:49:21.212508 " ,
"stop_timestamp" : " 2017-01-06 10:50:16.343847 " ,
"anomalous_activities_detected" : {
"anomalous_counts_by_severity" : {
"Warning" : 2
},
"anomalous_activities_details" : [{
"output" : " 10:49:47.492517329: Warning Unexpected setuid call by non-sudo, non-root program (user=<NA> command=ping 8.8.8.8 uid=<NA>) container=thirsty_spence (id=69dbf26ab368) " ,
"priority" : " Warning " ,
"rule" : " Non sudo setuid " ,
"time" : " 2017-01-06 10:49:47.492516 "
}, {
"output" : " 10:49:53.181654702: Warning Unexpected setuid call by non-sudo, non-root program (user=<NA> command=ping 8.8.4.4 uid=<NA>) container=thirsty_spence (id=69dbf26ab368) " ,
"priority" : " Warning " ,
"rule" : " Non sudo setuid " ,
"time" : " 2017-01-06 10:49:53.181653 "
}]
}
}
}すべてのレポートを確認したい場合は、履歴コマンドを参照してください。
Dagdaには、Docker Daemonからのリアルタイムイベントの集まりが含まれているため、すべてのDockerデーモンイベントを取得したい場合は、次のように入力する必要があります。
python3 dagda.py docker events予想される出力は、以下に示すように見えます。
[
{
"Action" : " attach " ,
"Actor" : {
"Attributes" : {
"build-date" : " 20171128 " ,
"image" : " jboss/wildfly " ,
"license" : " GPLv2 " ,
"name" : " amazing_wilson " ,
"vendor" : " CentOS "
},
"ID" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c "
},
"Type" : " container " ,
"from" : " jboss/wildfly " ,
"id" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c " ,
"scope" : " local " ,
"status" : " attach " ,
"time" : 1517323482 ,
"timeNano" : 1517323482957358115
},
{
"Action" : " create " ,
"Actor" : {
"Attributes" : {
"build-date" : " 20171128 " ,
"image" : " jboss/wildfly " ,
"license" : " GPLv2 " ,
"name" : " amazing_wilson " ,
"vendor" : " CentOS "
},
"ID" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c "
},
"Type" : " container " ,
"from" : " jboss/wildfly " ,
"id" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c " ,
"scope" : " local " ,
"status" : " create " ,
"time" : 1517323482 ,
"timeNano" : 1517323482944595092
}
]このコマンドのすべての許可されたフィルターを確認したい場合は、 Dockerコマンドを参照してください。
このセクションでは、Mongoデータベースやdocker-composeを使用したDagdaのコンテナなど、Dockerコンテナを使用したDagdaの設置について説明します。 DockerソケットはDagdaコンテナと共有されるため、 docker-compose実行されるホストからDocker画像とコンテナを確認することができます。
Dagdaのルートフォルダーで次のコマンドを実行し、その後、 Dagdaサーバーはポート5000でリスニングを開始します。
docker-compose build
docker-compose up -d以下に、 Dagdaの内部ワークフローに関する10,000フィートの図を示します。
通常、 Dagdaは正常に動作しますが、一部のシナリオは問題を引き起こす可能性があります。問題が発生した場合は、トラブルシューティングページを確認してください。
詳細については、変更ログページを参照してください。
バグ、質問、ディスカッションについては、githubの問題を使用するか、Twitter(@3grander)で私をpingしてください。