시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 7/50편 (전체 007/450)
학습 단계: 1단계 · 기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
sudo는 기본적으로 실행한 명령 한 줄만 syslog(authpriv)에 남깁니다. 그러나 sudo -i나 sudo bash처럼 root 셸을 연 뒤의 명령은 기록되지 않습니다. 이 공백을 메우는 것이 sudo 로깅 강화입니다.
sudo systemctl restart httpd → secure에 COMMAND=... 1줄 기록 (O)
sudo -i → root 셸 → "COMMAND=/bin/bash" 1줄만 기록
└─ 이후 rm, wget, vi ... → sudo 로그에는 없음 (X)
└─ 보완: log_output/log_input(I/O 기록), auditd execve
| 설정(Defaults) | 의미 |
|---|---|
logfile=/var/log/sudo.log | sudo 전용 로그 파일 추가 |
log_output | 세션 출력(화면) 기록 |
log_input | 키 입력 기록 (민감정보 주의) |
iolog_dir=/var/log/sudo-io | I/O 로그 저장 위치 |
use_pty | 의사 터미널 할당, 백그라운드 프로세스 분리 |
sudoreplay -l / sudoreplay ID | 기록된 세션 목록·재생 |
# 반드시 visudo로 별도 파일 생성
sudo visudo -f /etc/sudoers.d/10-logging
# 아래 내용 입력
Defaults logfile=/var/log/sudo.log
Defaults log_output
Defaults iolog_dir=/var/log/sudo-io
Defaults use_pty
# 확인
sudo visudo -c
sudo -i # 테스트 세션
whoami; ls /root; exit
sudo sudoreplay -l
sudo tail -3 /var/log/sudo.log
실습 예시는 출력만 기록(log_output)하고, 키 입력 기록은 정책 검토 후 적용하는 것을 권장합니다.
$ sudo tail -2 /var/log/sudo.log
Oct 1 10:20:11 : admin1 : TTY=pts/0 ; PWD=/home/admin1 ; USER=root ;
TSID=000001 ; COMMAND=/bin/bash
$ sudo sudoreplay -l
Oct 1 10:20:11 2026 : admin1 : TTY=/dev/pts/0 ; CWD=/home/admin1 ; USER=root ; TSID=000001 ; COMMAND=/bin/bash
TSID가 I/O 로그 세션 ID이며 sudoreplay 000001로 화면을 재생할 수 있습니다.
$ sudo ls -l /var/log/sudo.log
-rw-r--r--. 1 root root 0 Oct 1 04:00 /var/log/sudo.log
$ sudo grep -c . /etc/sudoers.d/10-logging
0
644면 일반 사용자가 관리 이력을 열람할 수 있어 정보 노출입니다.syslog의 sudo 기록과 sudo.log, I/O 로그를 TSID와 시간으로 교차 확인합니다(가상의 예시 로그).
[/var/log/secure]
Oct 1 10:20:11 rocky9-web01 sudo[4011]: admin1 : TTY=pts/0 ; PWD=/home/admin1 ; USER=root ; COMMAND=/bin/bash
[sudoreplay 000001 출력 일부]
# whoami
root
# ls /root
anaconda-ks.cfg baseline
COMMAND=/bin/bash, /bin/su, sudo -i)은 세션 단위로 추적합니다.sudo.log·sudo-io 디렉터리의 삭제·크기 감소는 증거 인멸 징후로 봅니다.<group name="local,sudo,">
<rule id="100140" level="9">
<if_sid>5402</if_sid>
<regex>COMMAND=/bin/bash$|COMMAND=/usr/bin/bash$|COMMAND=/bin/sh$|COMMAND=/usr/bin/su$</regex>
<description>sudo를 통한 root 셸 진입: $(dstuser)</description>
</rule>
</group>
root 셸 진입 자체는 운영 중에도 발생하므로 레벨을 중간으로 두고, 업무 시간 외·비관리자 계정 조건을 결합해 우선순위를 조정합니다.
pkill -t pts/N).| 구분 | 핵심 내용 |
|---|---|
| 기본 한계 | root 셸 이후 명령은 sudo 로그에 남지 않음 |
| 보완 설정 | logfile, log_output, iolog_dir, use_pty |
| 재생 | sudoreplay -l / sudoreplay TSID |
| 주의 | log_input은 민감정보 기록 위험 |
| 면접 포인트 | "sudo -i 이후 행위는 I/O 로그·auditd로 보완" |
다음 편 008. Linux 서버 보안 — root 로그인 제한 — 콘솔·SSH·su 경로 에서는 root로 들어오는 모든 경로(콘솔·SSH·su)를 제한하는 설정을 점검합니다.
이전 편: 006. Linux 서버 보안 — sudoers 설정 점검 — NOPASSWD와 와일드카드
📚 시리즈 전체 보기: 시스템 보안 · 취약점