
리눅스 보안 및 모니터링 스크립트
이것은 Linux 설치 환경에서 보안 관련 이벤트를 모니터링하거나 조사에 사용할 수 있는 보안 및 모니터링 스크립트 모음입니다. 각 스크립트는 독립적으로 작동하며 다른 스크립트와 의존성이 없습니다. 스크립트는 결과를 출력하거나, 메일로 보내거나, AlertR을 알림 채널로 사용하도록 설정할 수 있습니다.
스크립트는 scripts/ 디렉터리에 있습니다.
각 스크립트는 파일 헤더에 간단한 설명을 포함하며, 수행해야 할 작업, 명확하지 않은 경우 탐지 결과 해석 방법, 알려진 문제점을 기술합니다. 필요한 의존성이 있으면 함께 나열되며, 이 스크립트의 아이디어가 유래된 참고 자료도 명시합니다(가능한 경우).
각 스크립트는 scripts/config/ 디렉터리에 구성 파일을 두어 설정할 수 있습니다.
실행 중 구성 파일을 찾을 수 없는 경우, 스크립트는 기본 설정으로 폴백(fallback)하여 결과를 출력합니다. 따라서 구성 파일을 제공할 필요는 없습니다.
scripts/lib/ 디렉터리에는 여러 스크립트 간에 공유되는 코드가 포함되어 있습니다.
monitor_ 접두사를 사용하는 스크립트는 상태를 유지하며 모니터링 목적으로만 유용합니다.
이를 조사에 단일 사용하면 Linux 시스템의 현재 상태만 표시되고 시스템 보안에 관련된 변경 사항은 표시되지 않습니다. 이러한 스크립트에 대해 시스템의 현재 상태를 양호(benign)로 설정하려면 --init 인수를 제공할 수 있습니다.
search_ 접두사를 사용하는 스크립트는 침해 지표(indicators of compromise)를 검색합니다. 이는 조사 목적으로 사용할 수 있습니다. 모니터링 목적으로 사용하려면 --monitoring 인수를 제공하여 상태를 유지하고 새로운 발견 사항만 출력할 수 있습니다.
실행하려는 스크립트의 헤더를 살펴보십시오. 이 스크립트가 수행할 작업과 필요한 요구 사항(필요한 경우)에 대한 간단한 설명이 포함되어 있습니다. 요구 사항이 있다면 스크립트를 실행하기 전에 설치하십시오.
공유 구성 파일 scripts/config/config.py에는 모든 스크립트에서 사용하는 설정이 포함되어 있습니다.
또한 각 스크립트는 scripts/config/ 디렉터리의 해당 구성 파일을 사용하여 개별적으로 구성할 수 있습니다. 구성 파일을 찾을 수 없는 경우 기본 설정이 사용되며 결과가 출력됩니다.
마지막으로, 모든 구성된 스크립트는 start_search.py(메인 디렉터리에 위치)를 실행하거나 각 스크립트를 수동으로 실행하여 실행할 수 있습니다. 스크립트를 실행하려면 Python3 인터프리터가 필요합니다.
Linux 시스템을 지속적으로 모니터링하기 위해 스크립트를 사용하려면 다음 단계를 수행해야 합니다.
스크립트에서 지원하는 알림 채널(현재 출력, 메일 또는 AlertR)을 설정합니다.
scripts/config/ 디렉터리의 구성 파일을 사용하여 실행할 스크립트를 구성합니다.
--init 인수와 함께 start_search.py를 실행하여 monitor_ 접두사가 있는 스크립트를 초기화하고 시스템의 상태를 설정합니다. 단, 현재 시스템이 손상되지 않았다고 가정합니다. 확실하지 않은 경우 현재 상태를 확인해야 합니다.
root 사용자로 start_search.py --monitoring을 실행하는 cron 작업을 설정합니다(예: 0 * * * * root /opt/LSMS/start_search.py --monitoring으로 매시간 검색 시작). --monitoring 인수는 스크립트가 새로운 발견 사항만 보고하도록 하여 동일한 문제를 계속 보고하지 않도록 합니다.
| 이름 | 스크립트 |
|---|
| 크론 파일 모니터링 | monitor_cron.py |
| /etc/hosts 파일 모니터링 | monitor_hosts_file.py |
| /etc/ld.so.preload 파일 모니터링 | monitor_ld_preload.py |
| /etc/passwd 파일 모니터링 | monitor_passwd.py |
| 모듈 모니터링 | monitor_modules.py |
| SSH authorized_keys 파일 모니터링 | monitor_ssh_authorized_keys.py |
| systemd 유닛 파일 모니터링 | monitor_systemd_units.py |
| 실행 중인 삭제된 프로그램 검색 | search_deleted_exe.py |
| /dev/shm 내 실행 파일 검색 | search_dev_shm.py |
| 숨겨진 ELF 파일 검색 | search_hidden_exe.py |
| 변경 불가능(immutable) 파일 검색 | search_immutable_files.py |
| utmp 로그에 없는 lastlog 항목 검색 | search_lastlog_in_utmp.py |
| 파일리스(fileless) 프로그램(memfd_create) 검색 | search_memfd_create.py |
| 커널 스레드 사칭 검색 | search_non_kthreads.py |
| 현재 연결이 끊긴 SSH 세션에서 시작된 프로세스 검색 | search_ssh_leftover_processes.py |
| 의심스러운 조합에 대한 커널 모듈 테인트(taint) 플래그 검색 | search_tainted_modules.py |
| utmp 로그 변조 지표 검색 | search_utmp_tampering.py |
| 알림 작동 확인을 위한 테스트 스크립트 | test_alert.py |
| 설치된 .deb 패키지 무결성 확인 | verify_deb_packages.py |