
Apache NiFi CVE-2023-34468에 대한 익스플로잇으로, 1.21.0 이하 버전의 취약점을 대상으로 데이터 액세스 및 시스템 손상을 시연합니다.
[][nifi]
Apache NiFi는 데이터를 처리하고 배포하기 위한 사용하기 쉽고, 강력하며, 안정적인 시스템입니다.
Apache NiFi는 데이터플로우를 위해 만들어졌습니다. 데이터 라우팅, 변환 및 시스템 중재 로직의 고도로 구성 가능한 유향 그래프를 지원합니다. 주요 기능 중 일부는 다음과 같습니다:
개발 퀵스타트 가이드를 읽어 보세요. 소스의 로컬 복사본을 확보하는 방법과 이슈 추적에 대한 안내, 그리고 개발 환경에서 흔히 발생하는 문제에 대한 경고를 제공합니다.
개발에 대한 더 포괄적인 가이드와 프로젝트 기여에 대한 정보는 NiFi 개발자 가이드를 읽어 보세요.
mvn clean install을 실행하거나 병렬 빌드를 위해 mvn -T 2.0C clean install을 실행하세요.
병렬 빌드는 최신 하드웨어에서 약 15분 정도 소요됩니다.
laptop:nifi myuser$ mvn -T 2.0C clean install
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 115 modules...
...tens of thousands of lines elided...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:24 min (Wall Clock)
[INFO] Finished at: 2015-04-30T00:30:36-05:00
[INFO] Final Memory: 173M/1359M
[INFO] ------------------------------------------------------------------------
단위 테스트 실행을 건너뛰려면 mvn clean install -DskipTests를 실행하세요.
nifi-assembly 디렉터리로 변경하세요. target 디렉터리에는 바이너리 아카이브가 있습니다.
laptop:nifi myuser$ cd nifi-assembly
laptop:nifi-assembly myuser$ ls -lhd target/nifi*
drwxr-xr-x 3 myuser mygroup 102B Apr 30 00:29 target/nifi-1.0.0-SNAPSHOT-bin
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.zip
nifi-VERSION-bin.tar.gz 또는 nifi-VERSION-bin.zip을 별도의 배포 디렉터리로 복사하세요. 배포판을 압축 해제하면 버전 이름의 새 디렉터리가 생성됩니다.
laptop:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
laptop:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
laptop:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
total 0
drwxr-xr-x 10 myuser mygroup 340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
배포 위치로 디렉터리를 변경하고 다음 명령을 실행하여 NiFi를 시작합니다.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
bin/nifi.sh start를 실행하면 NiFi가 백그라운드에서 시작되고 셸이 종료됩니다. --wait-for-init을 선택적 시간 제한(초)과 함께 사용하면 종료 전에 완전한 시작을 기다립니다.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
기본 구성은 시작 시 임의의 사용자 이름과 비밀번호를 생성합니다. NiFi는 생성된 자격 증명을 NiFi 설치 디렉터리 아래 logs/nifi-app.log에 있는 애플리케이션 로그에 기록합니다.
다음 명령을 사용하면 grep이 설치된 운영 체제에서 생성된 자격 증명을 찾을 수 있습니다:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi는 생성된 자격 증명을 다음과 같이 기록합니다:
Generated Username [USERNAME]
Generated Password [PASSWORD]
USERNAME은 36자로 구성된 임의의 UUID입니다. PASSWORD는 32자로 구성된 임의의 문자열입니다. 생성된 자격 증명은 conf/login-identity-providers.xml에 저장되며 비밀번호는 bcrypt 해싱으로 저장됩니다. NiFi에 접속하려면 이 자격 증명을 안전한 위치에 기록해 두세요.
임의의 사용자 이름과 비밀번호는 다음 명령을 사용하여 사용자 지정 자격 증명으로 교체할 수 있습니다:
./bin/nifi.sh set-single-user-credentials <username> <password>
웹 브라우저에서 다음 링크를 열어 NiFi에 접속하세요: https://localhost:8443/nifi
웹 브라우저는 초기화 중에 NiFi가 생성한 자체 서명 인증서로 인한 잠재적 보안 위험을 알리는 경고 메시지를 표시합니다. 잠재적 보안 위험을 수락하고 인터페이스 로드를 계속하는 것은 초기 개발 설치를 위한 옵션입니다. 프로덕션 배포에서는 신뢰할 수 있는 인증 기관에서 인증서를 프로비저닝하고 NiFi 키스토어 및 트러스트스토어 구성을 업데이트해야 합니다.
자체 서명 인증서를 수락한 후 NiFi에 접속하면 로그인 화면이 표시됩니다.

생성된 자격 증명을 사용하여 User 필드에 생성된 사용자 이름을, Password 필드에 생성된 비밀번호를 입력한 다음 LOG IN을 선택하여 시스템에 접속합니다.

NiFi 사용자 가이드는 데이터 플로우를 구축하는 방법을 설명합니다.
NiFi를 중지하려면 다음 명령을 실행하세요:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi는 Apache NiFi의 하위 프로젝트입니다. 데이터 생성 원천에서 데이터를 수집하는 데 중점을 두고, 데이터플로우 관리에 있어 NiFi의 핵심 원칙을 보완하는 데이터 수집 방식입니다.
MiNiFi의 구체적인 목표는 다음과 같습니다:
MiNiFi의 역할에 대한 관점은 소스 센서, 시스템 또는 서버 바로 옆에서 직접 작동하는 에이전트의 관점에서 바라봐야 합니다.
실행 방법:
'minifi-assembly' 디렉터리로 변경하세요. target 디렉터리에는 minifi 빌드가 있습니다.
$ cd minifi-assembly
$ ls -lhd target/minifi*
drwxr-xr-x 3 user staff 102B Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
진행 중인 개발을 테스트하려면 "minifi-version-bin"이라는 디렉터리에 있는 이미 압축이 풀린 빌드를 사용할 수 있습니다. 여기서 version은 현재 프로젝트 버전입니다. 다른 위치에 배포하려면 tarball 또는 zipfile 중 하나를 사용하여 원하는 곳에 압축을 풀면 됩니다. 배포판은 버전 이름의 공통 상위 디렉터리 안에 있습니다.
$ mkdir ~/example-minifi-deploy
$ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
$ ls -lh ~/example-minifi-deploy/
total 0
drwxr-xr-x 10 user staff 340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
MiNiFi 실행 방법:
MiNiFi를 설치한 위치로 디렉터리를 변경하고 실행하세요.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
logs 폴더에 있는 로그를 확인하세요. $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
첫 번째 데이터 플로우를 구축하고 NiFi 인스턴스로 데이터를 보내는 데 도움이 필요하면 docs 폴더에 있는 시스템 관리 가이드를 참조하거나, NiFi 템플릿을 MiNiFi YAML 구성 파일 형식으로 변환하는 데 도움이 되는 minifi-toolkit을 사용하세요.
진행 중인 개발을 테스트하는 경우 인스턴스를 중지해야 할 것입니다.