
실행 중인 도커 컨테이너 및 도커 네트워크의 취약점과 구성 문제를 분석하는 유일한 오픈소스 도구입니다.
DockerENT는 activE ruNtime 애플리케이션 보안 스캐닝 Tool (RAST 도구)입니다. Python으로 작성된 플러그인 가능한 프레임워크입니다. CLI 애플리케이션과 StreamLit으로 작성된 깔끔한 웹 인터페이스를 제공합니다.
DockerENT는 심각한 결과를 초래할 수 있는 프로덕션 배포의 취약한 보안 구성 오류를 탐지하도록 설계되었습니다. 이 애플리케이션은 시스템에서 실행 중인 컨테이너에 연결하여 취약하고 위험한 런타임 구성 목록을 가져오고 보고서를 생성합니다. 웹 인터페이스를 통해 호출하면 UI 자체에서 스캔 및 감사 보고서를 표시할 수 있습니다.
빨리 테스트해보고 싶으신가요? PyPi에서 최신 안정 REL을 다운로드하고 Web App을 실행하면 나머지는 직관적입니다.
pip install DockerENT
그런 다음 애플리케이션을 다음과 같이 실행하세요:
DockerENT -w
그게 전부입니다.
DockerENT는 단순성과 사용성을 염두에 두고 설계되었습니다. 현재 저장소를 클론하고 종속성을 다운로드하거나 Dockerfile을 빌드하기만 하면 됩니다. 로컬 시스템에 종속성이 설치되면 도구를 실행하고 실행 중인 컨테이너의 런타임 구성을 분석할 수 있습니다.
# 다운로드 및 설정
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate
# 실행
python -m DockerENT --help
usage: Find the vulnerabilities hidden in your running container(s).
[-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
[-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
[-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]
optional arguments:
-h, --help show this help message and exit
-w, --web-app Run DockerENT in WebApp mode. If this parameter is
enabled, other command line flags will be ignored.
-n [PROCESS_COUNT], --process [PROCESS_COUNT]
Run scans in parallel (Process pool count).
-a, --audit Flag to check weather to audit results or not.
-d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
Run scan against the running container.
-p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
Run scan with only specified plugins.
-p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
Run scan with only specified plugins.
-d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
Run scan against running docker-network.
-o [OUTPUT], --output [OUTPUT]
Output plugin to write data to.
# 또는 컨테이너를 통해
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# 그런 다음 브라우저를 http://localhost:8051로 열면 됩니다.
시작하기 위한 빠른 동영상을 확인하세요.
file 및 html 싱크에 쓸 수 있습니다.demo 플러그인을 생성하세요.cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
_plugin_name = 'demo_plugin'
def scan(container, output_queue, audit=False, audit_queue=None):
_log.info('Staring {} Plugin ...'.format(_plugin_name_))
res = {}
result = {
'test_class': {
'TEST_NAME': ['good']
}
}
res[container.short_id] = {
_plugin_name_: result
}
# Do something magical.
_log.info('Completed execution of {} Plugin.'.format(_plugin_name_))
'''Make Sure you put dict of following structure in Q.
{
'contiainer_id': {
'plugin_name': {
'test_name_demo1': {
resultss:[]
},
'test_name_demo2': {
results: []
}
}
}
}
'''
output_queue.put(res)
if audit:
_audit(container, res, audit_queue)
def _audit(container, results, audit_queue):
'''Make Sure to add dict of following structure to Audit Q
res = {
"container_id": [
"_plugin_name_, WARN/INFO/ERROR, details"
]
}
'''
# Magical logic to perform Audit.
audit_queue.put(res)
-n <count>를 전달하여 병렬 프로세서 수를 지정할 수 있습니다.JSON 및 HTML 파일로 출력을 덤프할 수 있습니다.JSON 보고서가 번거롭습니다.| Plugin Name | Plugin File | 기능 | 감사 |
|---|
| CMD_HISTORY | File | 셸 히스토리 식별 | 루트 히스토리 및 사용자 셸 히스토리 |
| FILESYSTEM | File | RW 파일 시스템 식별 | RW 파일 시스템이 있는 경우. |
| NETWORK | File | 네트워크 상태 식별 | 모든 매핑된 포트 식별. |
| PLAINTEST_PASSWORD | File | 다양한 파일에서 비밀번호 식별 | |
| SECURITY_PROFILES | File | 취약한 보안 프로필 식별 | 취약한 보안 프로필 나열. |
| USER_INFO | File | 사용자 정보 식별 | passwd 및 기타 민감한 파일의 권한 나열 |
| SYSTEM_INFO | File | 도커 시스템 정보 식별 | 감사 없음 |
| FILES_INFO | File | 전역 쓰기 가능 디렉터리 및 파일 식별 | 모든 해당 파일 나열. |
| PROC_INFO | File | 도커 시스템의 프로세스 목록 식별 |