대상 OS: Debian 12 (bookworm)

서버가 침해되면 공격자가 가장 좋아하는 일 중 하나가 ‘정상 바이너리/설정 파일을 살짝 바꾸기’입니다.
로그인 쉘, sshd 설정, 라이브러리, 크론 스크립트처럼 눈에 잘 띄지 않는 곳에 손을 대면 오래 버틸 수 있기 때문이죠.
그래서 운영 보안의 기본기는 “지금 디스크 위의 파일이 원래 배포판이 설치한 그 파일이 맞는가?”를 자주 확인하는 것입니다.
Debian 12에서는 debsums로 패키지에 포함된 파일들의 체크섬을 비교해 변조/손상 가능성을 빠르게 잡아낼 수 있습니다.

이 글은 debsums를 이용해 패키지 파일 무결성을 점검하고, 정상 변경(오탐)을 관리하며, 정기 점검 자동화까지 운영 관점으로 정리합니다.

---

1) debsums가 해주는 것(그리고 한계)

1) dpkg로 설치된 패키지 파일의 체크섬을 기준으로 변경 여부를 확인한다

2) “어떤 파일이 달라졌는지”를 경로 단위로 빠르게 보여준다

3) 패키지 업데이트/손상/침해 모두에 대한 초기 신호가 될 수 있다

4) 패키지에 포함되지 않은 파일(/usr/local, 애플리케이션 배포 파일)은 기본적으로 범위 밖이다

5) 공격자가 더 깊게 장악한 경우(커널/사용자랜드 조작)에는 결과를 신뢰하기 어렵다

즉, debsums는 ‘결정타’라기보다 “빠른 스크리닝 + 증거 후보” 도구로 쓰는 게 맞습니다.

---

2) 설치 및 기본 점검

1) 설치

sudo apt update
sudo apt -y install debsums

2) 기본 실행(변경된 파일만 출력)

sudo debsums | head -n 80

아무 것도 출력되지 않으면, debsums가 확인 가능한 범위에서는 “변경 없음”일 가능성이 큽니다.

3) 특정 패키지만 점검(예: openssh-server)

sudo debsums openssh-server || true

---

3) 결과 해석: 어떤 종류의 변경이 위험 신호인가

debsums 출력은 보통 “파일 경로”가 나옵니다. 그 경로가 무엇인지가 중요합니다.

1) /usr/bin, /usr/sbin, /bin, /sbin 아래 바이너리 변경

2) /lib, /usr/lib 아래 라이브러리 변경

3) 시스템 서비스 유닛(/lib/systemd/system, /usr/lib/systemd/system) 변경

4) 보안 핵심 설정(/etc/ssh, /etc/sudoers 등) 변경

다만 /etc 아래는 패키지 설치 후 운영자가 정상적으로 수정하는 파일이 많아, “변경 자체”만으로 악성이라고 결론 내리면 안 됩니다.

---

4) ‘정상 변경’(오탐)을 다루는 기본 원칙

오탐을 없애려다가 보안이 무너지는 패턴이 흔합니다.

1) 무작정 예외로 빼지 말고, 먼저 “왜 바뀌었는지”를 확인한다

2) 패키지 업데이트 직후 변경이라면, dpkg 로그/apt 히스토리를 교차 확인한다

grep -E "upgrade |install |remove " /var/log/dpkg.log | tail -n 80

3) 운영자가 수정한 설정이라면, 변경 이력(티켓/커밋)과 일치하는지 확인한다

4) 정당한 변경이 확인된 경우에만 예외 정책을 만든다

---

5) “변조 의심 파일”을 만났을 때의 후속 체크

debsums가 경고를 줬다면, 다음 순서로 증거를 모읍니다.

1) 파일 메타데이터 확인(시간/권한/소유자)

sudo stat /path/to/file
sudo ls -la /path/to/file

2) 패키지 소속 확인

dpkg -S /path/to/file || true

3) 패키지 재설치로 원복 가능한지 검토(운영 영향 주의)

sudo apt -y --reinstall install PACKAGENAME

4) 실행 중인 프로세스/네트워크와 교차 확인

ps aux --sort=-%cpu | head -n 30
sudo ss -tnp | head -n 80
sudo journalctl -u ssh -n 200 --no-pager

운영 팁
- 침해가 의심되면 “원복”보다 “증거 보존”이 먼저일 수 있습니다.
- 상황에 따라 디스크 이미지/메모리 덤프/중앙 로그 확보가 우선입니다.

---

6) 정기 점검 자동화: 매일 ‘변경 목록’을 기록하기

정기 점검의 목적은 “그날그날의 변화”를 보는 것입니다.

1) 리포트 디렉터리 생성

sudo install -d -m 0755 /var/log/debsums
sudo chown root:root /var/log/debsums

2) 일일 점검 스크립트 생성

sudo tee /usr/local/sbin/debsums-daily >/dev/null  "${outdir}/summary.${now}.txt"
EOF
sudo chmod 0755 /usr/local/sbin/debsums-daily

3) cron.daily 등록

sudo tee /etc/cron.daily/debsums-daily >/dev/null