반응형
KISA 기반 Rocky Linux 9 보안취약점 점검 가이드
이 문서는 KISA(checklist) 기준에 따라 Rocky Linux 9 운영체제에서 수행해야 할 점검 항목을 정리한 실무 가이드입니다. 사용자가 보유한 점검 스크립트(예: KISA 기반)를 실행하고 결과를 해석해 조치할 때 참고할 수 있도록 원인 → 분석 → 조치 → 결과 흐름으로 구성했습니다.
요약
목적 : KISA 취약점 점검 항목에 따른 취약 요소 식별 및 우선 대응안 제시
대상 : Rocky Linux 9 (서버/VM) 운영체제
전제 : 점검 스크립트는 이미 보유(스캔만 수행). 이 문서는 결과 해석·우선순위 조치 및 운영 반영 방법을 다룸.
대상 : Rocky Linux 9 (서버/VM) 운영체제
전제 : 점검 스크립트는 이미 보유(스캔만 수행). 이 문서는 결과 해석·우선순위 조치 및 운영 반영 방법을 다룸.
원인 — 왜 점검이 필요한가
- 공격 표면 증가: 불필요한 서비스·열린 포트, 패치 미적용으로 취약점 악용 가능.
- 설정 미흡: SSH 약한 설정, 잘못된 sudoers, 비활성화되지 않은 루트 원격 접속 등.
- 감사 부재: auditd/rsyslog 비활성화 또는 로그 보존 정책 부재로 사고 추적 불가.
- FRA/디스크·권한 문제: 로그·디스크 과부하 시 서비스 장애·데이터 손상 유발.
분석 — KISA 점검 스크립트가 보통 무엇을 확인하는가
아래 항목은 KISA 기준과 일반 하드닝 체크리스트에서 공통으로 요구하는 핵심 점검 항목들입니다. (스캔 결과는 심각도별로 분류되어야 함)
| 카테고리 | 점검 항목 | 설명 / 위험 |
|---|---|---|
| 계정·인증 | 루트 원격 로그인 허용 여부, sudo 설정 | 원격 루트 허용 시 획득 즉시 전체 권한 획득 가능 |
| 패치·패키지 | 보안 업데이트 미적용 패키지 | CVE로 인한 원격실행/권한상승 위험 |
| 네트워크 | 열린 포트(서비스), 방화벽 설정(firewalld) | 불필요 포트는 차단 필요 |
| 원격접속 | SSH 설정(Protocol, PermitRootLogin, PasswordAuthentication) | 약한 인증은 무차별 대입·정보노출 위험 |
| 보안기능 | SELinux 활성화/모드, Secure Boot | 비활성화 시 권한오용 방지 기능 상실 |
| 로그·감사 | auditd, rsyslog 구동·로그 보존 | 사고 발생 시 포렌식 불가 |
| 무결성 | AIDE/Tripwire 등 파일무결성 툴 점검 | 루트킷/무단변조 탐지 필수 |
| 구성관리 | 비밀번호 정책, PAM 설정 | 약한 암호는 계정탈취로 이어짐 |
| 서비스 | 불필요 데몬(ftp, telnet 등) 설치 여부 | 레거시 서비스는 취약점 노출 소스 |
조치 — 발견 시 우선순위별 권고 행동
긴급(Immediate) — 발견 즉시 조치
- 패치 미적용으로 원격 코드 실행 취약점 발견 → 즉시 패치(또는 취약 서비스 차단).
- 루트 원격 로그인 허용 → `/etc/ssh/sshd_config`에서 `PermitRootLogin no` 설정 후 `systemctl restart sshd`.
- 공개 포트에서 고위험 서비스 확인 → 방화벽 차단(`firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="XXX" protocol="tcp" reject'`) 또는 서비스 중지.
우선(High) — 24시간 내 적용 권고
- SELinux 비활성 → `setenforce 1`(임시), `/etc/selinux/config`에서 `SELINUX=enforcing`로 영구 설정 및 정책 점검.
- 로그 비활성·저장기간 미설정 → `rsyslog`/`auditd` 활성화, 원격 로그서버 전송 구성.
- 파일 무결성 툴 부재 → AIDE 설치 및 데이터베이스 초기화 후 주기 검증 스케줄 등록.
중기(Medium) — 운영 정책 개선
- 계정 관리 정책 강화(비밀번호 복잡도, 최대 로그인 실패 횟수, 계정 자동 잠김).
- 사용자별 최소 권한 원칙 적용과 정기적 계정 리뷰.
- 보안 패치 자동화(DNF-automatic) 또는 중앙 패치 관리 도입.
실무 팁 — 점검 스크립트 결과 해석 예
점검 스크립트 실행 후 흔히 볼 수 있는 예시와 해석 방법입니다.
# 예시: sshd 설정 체크 결과 (스크립트 출력)
[WARN] /etc/ssh/sshd_config: PermitRootLogin yes
[OK] PasswordAuthentication no
[WARN] Protocol 2 (ok)
# 해석:
# - PermitRootLogin yes : 즉시 수정 권고 (심각)
# - PasswordAuthentication no : 패스워드 인증 차단되어 있음 (양호)
각 항목에 대해 심각도(Critical / High / Medium / Low)를 매겨 담당자 알림(티켓 발행) 후 조치 추적을 권장합니다.
운영 반영 및 자동화
- 주간/월간 점검 스케줄 등록 (cron/systemd timer)
- 점검 결과를 중앙 로깅으로 집계 — SIEM 또는 ELK 연동
- 심각도 기준 이상 항목은 자동 알림(메일/SMS/슬랙) 발송
- 패치·구성 변경은 IaC(Ansible/Terraform)로 관리하여 재현성 확보
검증 및 재점검
조치 후에는 반드시 다음을 수행하세요:
- 동일 스크립트 재실행으로 문제 해결 여부 확인
- 로그(예: `/var/log/secure`, `/var/log/audit/audit.log`)에서 이상징후(비정상 로그인, 권한 상승 시도) 확인
- 취약점 패치 적용 후 서비스 영향성 테스트(성능/연동) 수행
샘플 보고서(권장 항목)
점검 결과를 아래 항목으로 구조화해 보고하면 실무에서 유용합니다.
- 대상 서버(호스트명 / IP / OS 버전)
- 점검 일시 및 점검 스크립트 버전
- 발견 항목(심각도/설명/명령어·로그 스니펫)
- 권고 조치(담당자, 마감일)
- 조치 완료 여부 및 재검증 결과
{
"host":"srv-db-01",
"os":"Rocky Linux 9.2",
"scan_time":"2025-11-10T09:00:00+09:00",
"results":[
{"id":"SSH-001","severity":"Critical","desc":"PermitRootLogin yes","recommend":"Set PermitRootLogin no and restart sshd"},
{"id":"PATCH-045","severity":"High","desc":"httpd-2.4.x CVS vulnerability - needs update","recommend":"dnf update httpd"}
]
}
긴급 침해의심 시(Incident 대응 간단 흐름)
- 네트워크 격리(의심 호스트 → 호스트 격리 또는 포트 차단)
- 포렌식 이미지 생성(디스크 스냅샷 또는 EBS snapshot)
- 중요 로그 수집(`/var/log/audit/*`, `/var/log/secure`)
- 임시 계정/크리덴셜 무효화 및 비밀번호 변경
- 외부 전문가 / CERT / 법규준수 팀 통보
결론 — 점검은 시작, 운영(재현·자동화)이 핵심
KISA 기반 점검 스크립트는 취약점을 빠르게 드러내는 유용한 도구입니다. 하지만 스캔 결과를 단발성으로 끝내지 말고, 우선순위별 조치 → 재검증 → 자동화→ 문서화의 사이클로 운영하는 것이 중요합니다. 특히 Rocky 9 환경에서는 SELinux, firewalld, auditd 등 기본 보안 구성요소가 정상 동작하는지 주기적으로 확인하세요.
권장 액션: 점검 스크립트 실행 결과를 티켓화(심각도 표기)하여 24시간 내 긴급 항목 처리, 7일 내 High 항목 처리.
[Rocky 9계열 보안 취약점 점검 스크립트]
반응형
LIST
'경험 공유 > Server' 카테고리의 다른 글
| 서버 보안: PAM 모듈로 접근 제어·인증 강화 (0) | 2025.11.11 |
|---|---|
| GDB를 이용한 코어 덤프(core dump) 분석 가이드 (0) | 2025.11.07 |
| Linux 커널 부팅 로그 분석 - ACPI, BIOS, Watchdog, Perf 관련 메시지 정리 (1) | 2025.11.07 |
| Rocky Linux 8.9 - THP(Transparent Huge Pages)로 인한 커널 I/O 교착 및 비정상 재부팅 원인 (1) | 2025.11.03 |
| Critical - webkit2gtk3 (RLSA-2025:18070) (0) | 2025.11.02 |
