024. Linux 서버 보안 — 보안 패치·업데이트 상태 점검

changseop lee·6일 전

시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 24/50편 (전체 024/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

패치 점검은 세 단계로 확인해야 정확합니다. 패키지를 설치했다고 끝이 아니라, 실행 중인 프로세스가 새 버전을 쓰고 있어야 실제로 보호됩니다.

① 미적용 보안 업데이트가 있는가?    dnf updateinfo / apt list --upgradable
② 설치는 됐는데 재시작이 필요한가?  needs-restarting / /var/run/reboot-required
③ 실행 중인 커널·서비스가 최신인가?  uname -r vs 설치된 kernel

예를 들어 OpenSSL을 업데이트해도 sshd, httpd를 재시작하지 않으면 메모리에는 옛 라이브러리가 남아 있습니다.

2. 왜 중요한가

  • 많은 침해는 공개된 지 오래된 취약점(패치가 이미 나온 것)을 통해 일어납니다.
  • SOC 관점에서 패치 상태는 Alert 우선순위 판단 기준입니다. 같은 공격 시도라도 취약 버전 서버에서 발생하면 위험도가 훨씬 높습니다.
  • 반대로 업무 시간 외 비인가 패키지 설치(예: 네트워크 도구, 컴파일러)는 침해 후 도구 설치 징후가 될 수 있습니다.

3. 핵심 명령어 / 설정

목적Rocky 9Ubuntu 22.04
보안 업데이트 목록dnf updateinfo list --securityapt list --upgradable (+ -security 저장소 확인)
요약dnf updateinfo summary/usr/lib/update-notifier/apt-check --human-readable
재시작 필요needs-restarting -r / -s (dnf-utils)/var/run/reboot-required, needrestart
설치 이력dnf history, /var/log/dnf.rpm.log/var/log/apt/history.log, /var/log/dpkg.log
자동 업데이트dnf-automaticunattended-upgrades

4. 실습 (실습 예시)

# Rocky 9
sudo dnf updateinfo summary
sudo dnf updateinfo list --security | head
sudo needs-restarting -r ; echo "exit=$?"     # 1이면 재부팅 필요
sudo needs-restarting -s                      # 재시작이 필요한 서비스
uname -r ; rpm -q kernel | tail -1            # 실행 중 vs 최신 설치 커널

# Ubuntu 22.04
sudo apt update
apt list --upgradable 2>/dev/null | grep -i security
[ -f /var/run/reboot-required ] && cat /var/run/reboot-required.pkgs

# 설치 이력에서 최근 7일 변경 확인
sudo dnf history list | head          # Rocky
grep -E '^(Start-Date|Commandline|Install|Upgrade)' /var/log/apt/history.log | tail   # Ubuntu

5. 정상 상태

$ sudo dnf updateinfo summary
Updates Information Summary: available
    0 Security notice(s)
$ sudo needs-restarting -r ; echo "exit=$?"
No core libraries or services have been updated since boot-up.
Reboot should not be necessary.
exit=0

보안 공지가 0건이고, 재부팅·재시작이 필요 없는 상태가 정상입니다.

6. 이상 상태

$ uname -r
5.14.0-362.8.1.el9_3.x86_64
$ rpm -q kernel | tail -1
kernel-5.14.0-427.13.1.el9_4.x86_64
$ sudo dnf history list | head -3
ID | Command line            | Date and time    | Action(s) | Altered
22 | install nmap gcc socat  | 2026-10-01 02:40 | Install   |   9
  • 새 커널은 설치됐지만 재부팅하지 않아 옛 커널로 운영 중 → 커널 취약점에 여전히 노출
  • 새벽 02:40 웹 서버에 nmap(스캐너), gcc(컴파일러), socat(중계 도구) 설치 → 역할과 무관한 도구, 침해 후 도구 확보 패턴

7. 로그 분석 (분석 방법)

패키지 설치는 패키지 관리자 로그와 sudo 로그에 함께 남습니다(가상의 예시 로그).

[/var/log/secure]
Oct  1 02:40:02 rocky9-web01 sudo[8501]:  admin1 : TTY=pts/1 ; PWD=/tmp ; USER=root ; COMMAND=/usr/bin/dnf install -y nmap gcc socat
[/var/log/dnf.rpm.log]
2026-10-01T02:40:15+0900 SUBDEBUG Installed: nmap-3:7.92-1.el9.x86_64
2026-10-01T02:40:16+0900 SUBDEBUG Installed: socat-1.7.4.1-5.el9.x86_64
[Ubuntu /var/log/apt/history.log]
Start-Date: 2026-10-01  02:41:10
Commandline: apt-get install -y nmap
Requested-By: devops (1001)
Install: nmap:amd64 (7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1)
필드분석
PWD=/tmp임시 디렉터리에서 설치 실행 → 작업 맥락 의심
-y 옵션확인 없이 자동 설치(스크립트 실행 가능성)
Requested-By (Ubuntu)sudo 사용자 식별

admin1 계정이 실제 관리자라도 업무 시간·변경관리 기록과 맞지 않으면 계정 탈취 가능성을 함께 검토합니다.

8. SOC 관제 포인트

  • 미적용 보안 업데이트 수와 재부팅 필요 여부를 자산 정보로 SIEM에 적재해 Alert 우선순위에 반영합니다.
  • 스캐너·컴파일러·터널링 도구 설치는 도구 목록(watchlist) 으로 관리해 탐지합니다.
  • 패키지 삭제(특히 audit, rsyslog, wazuh-agent)는 하드닝 해제 징후입니다.

9. 탐지 규칙

Wazuh 기본 룰셋에는 패키지 설치를 알리는 룰(예: Debian 계열 2902 "New dpkg (Debian Package) installed")이 있습니다. 여기에 도구 목록 조건을 추가합니다.

<rule id="100300" level="10">
  <if_sid>5402</if_sid>
  <regex type="pcre2">COMMAND=\S*(dnf|yum|apt|apt-get) .*install .*(nmap|masscan|socat|netcat|ncat|gcc|tcpdump)</regex>
  <description>보안 점검·중계·컴파일 도구 설치: 역할 확인 필요</description>
</rule>

Wazuh 4.8 이상에서는 Vulnerability Detection 모듈이 에이전트의 패키지 목록을 기반으로 CVE 대응 여부를 대시보드에 보여주므로, 패치 상태 점검을 자동화할 수 있습니다.

10. 대응 방법

  1. 초기 확인 — 미적용 보안 업데이트·실행 중 커널 버전·최근 설치 이력을 확인합니다.
  2. 범위 확인 — 같은 도구가 다른 서버에도 설치됐는지, 설치 계정의 다른 활동을 확인합니다.
  3. 증거 확보 — 패키지 관리자 로그, sudo 로그, dnf history info ID 출력을 보존합니다.
  4. 차단/조치 — 비인가 패키지를 제거하고(증거 확보 후), 보안 업데이트 적용과 재부팅을 일정에 반영합니다.
  5. 재발 방지 — 패치 상태 자산 정보 연동과 도구 설치 watchlist 룰을 운영합니다.

11. 핵심 정리

구분핵심 내용
3단계 점검미적용 업데이트 → 재시작 필요 → 실행 중 버전
Rocky 명령dnf updateinfo, needs-restarting -r
Ubuntu 명령apt list --upgradable, /var/run/reboot-required
탐지 포인트업무 외 시간 도구 설치(nmap, gcc, socat)
면접 포인트"설치 ≠ 적용. 재시작 전 프로세스는 옛 라이브러리를 사용"

12. 다음 편 예고

다음 편 025. Linux 서버 보안 — 패키지 무결성 검증 — rpm -Va와 debsums 에서는 설치된 패키지 파일이 변조되지 않았는지 rpm -Va와 debsums로 검증합니다.


이전 편: 023. Linux 서버 보안 — 네트워크 sysctl 하드닝 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글