시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 24/50편 (전체 024/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
패치 점검은 세 단계로 확인해야 정확합니다. 패키지를 설치했다고 끝이 아니라, 실행 중인 프로세스가 새 버전을 쓰고 있어야 실제로 보호됩니다.
① 미적용 보안 업데이트가 있는가? dnf updateinfo / apt list --upgradable
② 설치는 됐는데 재시작이 필요한가? needs-restarting / /var/run/reboot-required
③ 실행 중인 커널·서비스가 최신인가? uname -r vs 설치된 kernel
예를 들어 OpenSSL을 업데이트해도 sshd, httpd를 재시작하지 않으면 메모리에는 옛 라이브러리가 남아 있습니다.
| 목적 | Rocky 9 | Ubuntu 22.04 |
|---|---|---|
| 보안 업데이트 목록 | dnf updateinfo list --security | apt 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-automatic | unattended-upgrades |
# 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
$ 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건이고, 재부팅·재시작이 필요 없는 상태가 정상입니다.
$ 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
nmap(스캐너), gcc(컴파일러), socat(중계 도구) 설치 → 역할과 무관한 도구, 침해 후 도구 확보 패턴패키지 설치는 패키지 관리자 로그와 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 계정이 실제 관리자라도 업무 시간·변경관리 기록과 맞지 않으면 계정 탈취 가능성을 함께 검토합니다.
audit, rsyslog, wazuh-agent)는 하드닝 해제 징후입니다.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 대응 여부를 대시보드에 보여주므로, 패치 상태 점검을 자동화할 수 있습니다.
dnf history info ID 출력을 보존합니다.| 구분 | 핵심 내용 |
|---|---|
| 3단계 점검 | 미적용 업데이트 → 재시작 필요 → 실행 중 버전 |
| Rocky 명령 | dnf updateinfo, needs-restarting -r |
| Ubuntu 명령 | apt list --upgradable, /var/run/reboot-required |
| 탐지 포인트 | 업무 외 시간 도구 설치(nmap, gcc, socat) |
| 면접 포인트 | "설치 ≠ 적용. 재시작 전 프로세스는 옛 라이브러리를 사용" |
다음 편 025. Linux 서버 보안 — 패키지 무결성 검증 — rpm -Va와 debsums 에서는 설치된 패키지 파일이 변조되지 않았는지 rpm -Va와 debsums로 검증합니다.
이전 편: 023. Linux 서버 보안 — 네트워크 sysctl 하드닝 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점