Bash Skeleton Script 배경

기존에 사용해오던 취약점 진단 스크립트는 업무를 수행하면서 급하게 작업하다 보니 단일 파일로 작성이 되어 수정 및 개선에 어려움이 있었다.

File - Linux 보안 진단 스크립트 v2024.02
이 스크립트는 과거(2024.02.05)에 직접 작성해 두었던 Linux Server 환경에 대한 인프라 진단 스크립트로, 진단항목(체크리스트)은 ”주요정보통신기반시설 기술적 취약점 분석 평가” 항목을 따르고 있으나 세부 동작 기준이 회사정책(내규) 및 OS 환경에 따라 대응하기 위해 부분적으로 다른점이 존재할 수 있다. 슬슬 변화에 맞추어 스크립트도 업데이트가 할

기존 스크립트는 이 게시글을 참조하자.

  • 첫 번째로, 코드 자체가 길어지다 보니 수정 및 개선할 위치를 찾기 어렵고
  • 두 번째로, 가독성이 떨어지는 한편
  • 세 번째로, 앞서 두 가지 항목이 복합적으로 작용하여, 수정하고자 하는 진단 코드 구문 분석에 어려움이 있다.

이러 저러한 사유로 취약점 진단 스크립트를 개선 하려고 생각은 많이 했었는데, 간혹 테스트만 해보던 구조를 이번 참에 좀 더 손 봐 개선 하고자 생각 해두었던 "유지보수 용이", "재사용성 향상", "모듈화된 구조"개선점을 적용하여 골조가 될 스크립트를 만들어 두었다.

혹여 어떠한 필요성에 의해 검색을 통해 이 자료를 접하게 된 동종 업계 종사자들이 있다면 이 자료가 도움이 될 수 도 있지 않을까 싶기에 공개 자료로서 남겨둔다.

개선한 스크립트의 주요 특징

  • 실행은 security_check.bash로 수행
  • 실행 시 Bash 로 실행 되었는지 체크
    • Bash 가 설치되어 있지 않으면 실행 불가 메시지 출력 후 종료
    • shell 로 실행한 경우 Bash 로 재 실행
  • 기능을 파일 단위로 분리
    • 실행 시 출력할 Message(motd), 저자(authors), 변경이력(history) 분리
    • 주요 함수들 파일로 분리
    • 진단 스크립트 항목을 별도 파일로 분리

골조 스크립트 다운로드

골조 스크립트 파일 구조

Bash Skeleton Script.zip
├─ file_structure
├─ func
│  ├─ detect_os_type.bash
│  └─ execute_script.bash
├─ pre
│  ├─ authors
│  ├─ history
│  └─ motd
├─ scripts
│  ├─ part1.bash
│  └─ part2.bash
└─ security_check.bash  # 스크립트 실행은 이 파일로 수행한다.

Preview : Bash 가 아닌 Shell 로 실행 시

$ sh ./security_check.bash 
⚠️ Bash 환경이 필요합니다. Bash로 재시작합니다...

Preview : Root 권한이 아닌 상태로 실행 시

$ ./security_check.bash 
This script must be run with root privileges.
이 스크립트는 root 권한으로 실행되어야 합니다.

Preview : Root 권한으로 실행 시

$ sudo ./security_check.bash 
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

  ---------------------------------------------------------------------------
  :: Infra Vulnerability Assessment Script - Version 2020.00.00.01         ::
  ---------------------------------------------------------------------------
  Make By : 

  ---------------------------------------------------------------------------
    Date       | Writer       | Changed
  -------------|-------------------------------------------------------------
    202X.00.00 |              | 최초 작성
  ---------------------------------------------------------------------------

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

🖥️  감지된 OS: ubuntu
✅ scripts/part1.bash 실행 완료
✅ scripts/part2.bash 실행 완료
🎉 모든 스크립트가 정상적으로 실행되었습니다!

$