SECURITY AUTOMATIONCompleted

Ansible 기반 보안 점검 자동화 시스템

KISA 가이드라인 기반 Linux 서버 취약점 자동 진단 시스템. Ansible로 다중 서버를 통합 점검하고, 가용성 모드·자동 조치·롤백까지 구현한 팀 프로젝트.

📅 February 20, 2026
AnsibleBash ScriptLinuxSecurity AuditAutomation

프로젝트 개요

현대오토에버 Mobility SW School에서 팀 Shell We Secure (5인)와 함께 진행한 프로젝트입니다. 인프라 구축, Ansible 자동화 구성, 가용성 기능 구현을 담당했습니다.

KISA 2026 주요정보통신기반시설 취약점 진단 가이드라인을 기반으로, Linux 서버 취약점 진단 전 과정을 자동화했습니다. 단순한 점검 자동화를 넘어, 진단 중 대상 서버의 가용성을 실시간으로 보호하는 기능까지 구현했습니다.

배경 및 동기

보안 점검은 항목이 많고 반복적이지만, 담당자 숙련도에 따라 결과가 달라질 수 있습니다. 더 현실적인 문제는, 점검 스크립트가 실행되는 동안 대상 서버에 부하가 걸려 운영 중인 서비스의 가용성이 침해될 수 있다는 점입니다.

이 두 가지 문제를 해결하는 것을 목표로 개발을 시작했습니다.

  • 수작업 점검을 자동화하여 일관된 기준과 결과 확보
  • 다중 서버를 단일 대시보드에서 통합 관리
  • 진단 중 CPU/메모리 임계치를 실시간 감시하고 초과 시 자동 중단하여 가용성 보장
$

기술 스택

AnsibleAnsible VaultBashFastAPIReactTypeScriptLinuxSlack Webhook

시스템 구조

시스템 아키텍처

점검 항목

KISA 주요정보통신기반시설 취약점 진단 가이드라인(2026)을 기반으로, OS별로 67개 항목을 점검합니다. OS(Rocky 9 / Rocky 10 / Ubuntu)별로 별도의 Bash 스크립트(U-01.sh ~ U-67.sh)를 작성하여 버전 차이를 처리했습니다.

카테고리대표 점검 항목
계정 관리root 원격 접속 제한(U-01), 비밀번호 정책 설정(U-02), 계정 잠금 임계값(U-03), 비밀번호 파일 보호(U-04), root 외 UID 0 금지(U-05), su 기능 제한(U-06)
파일 및 디렉토리 관리/etc/passwd 권한(U-16), /etc/shadow 권한(U-18), /etc/hosts 권한(U-19), syslog 파일 권한(U-21), /etc/profile 설정(U-12)
서비스 관리불필요한 서비스 비활성화, SSH 설정 점검(/etc/ssh/sshd_config)
패치 관리최신 보안 패치 적용 여부
로그 관리syslog 설정 및 로그 파일 권한

점검 결과는 양호 / 취약 / 수동 확인 세 가지 상태로 분류됩니다.

가용성 모드

진단 중 대상 서버가 받는 부하를 실시간으로 모니터링하여, 임계치 초과 시 점검을 자동 중단하는 기능입니다.

# 가용성 모드 임계값 설정 (check.yml)
max_cpu_threshold: 50.0       # CPU 사용률 50% 초과 시 중단
max_memory_threshold: 70.0    # 메모리 사용률 70% 초과 시 중단
max_load_average: 2.0         # Load Average 2.0 초과 시 중단
script_nice_level: 19         # 진단 스크립트를 최저 우선순위로 실행
enable_slack_notification: true

임계치 초과로 진단이 중단되면 Slack Webhook을 통해 즉시 알림을 발송합니다. 알림에는 중단 시점의 CPU/메모리/Load 수치, 완료된 항목 수, 중단된 항목 코드가 포함됩니다.

자동 조치 및 롤백

취약 항목은 대시보드에서 원클릭으로 자동 조치를 실행할 수 있습니다. 조치 전 설정 파일을 백업해두었다가, 문제가 생기면 롤백 실행으로 원래 상태를 복원할 수 있습니다.

롤백 가능한 항목 예시:

  • U-01: /etc/ssh/sshd_config 복원
  • U-03: faillock/PAM 설정 복원
  • U-12: /etc/profile 복원
  • U-13: 암호화 정책 설정 복원
  • U-16/U-18/U-19/U-21: 파일 권한 복원

롤백 후 부분 재점검 기능으로 롤백된 항목만 선택적으로 재진단할 수 있습니다.

구현 포인트

팀 내에서 인프라 셋업과 Ansible 자동화를 담당하면서, 두 가지 기술적 문제를 해결했습니다.

가용성 모드 신뢰성 확보: 진단 스크립트가 CPU 부하를 유발하면서 동시에 그 부하를 측정해야 하는 구조였습니다. nice 레벨 19로 스크립트 우선순위를 최저로 낮추고, 샘플링 간격을 조정하면서 반복 테스트를 통해 안정적인 임계치 기준을 도출했습니다.

OS별 스크립트 분리: Rocky Linux 9/10과 Ubuntu는 명령어, PAM 설정 경로, 패키지 관리 방식이 다릅니다. 각 OS별로 별도의 Bash 스크립트를 작성하여 배포판 간 차이를 처리했고, 이 과정에서 Linux 배포판 간의 실질적인 차이를 깊이 이해하게 되었습니다.

시연 영상

Ansible 보안 점검 자동화 시스템 실제 동작 데모

주요 성과

  • 서버당 67개 항목 자동 진단 (KISA 주요정보통신기반시설 가이드라인 기준)
  • 6대 다중 서버 통합 점검 및 결과 시각화 구현
  • 자동 조치 → 롤백 → 부분 재점검까지 전 사이클 구현
  • XLSX 보고서 자동 생성 및 AI 어시스턴트 기반 진단 결과 질의응답 기능 포함