PromleeBlog
sitemap
aboutMe

posting thumbnail
정보보안기사 - 1.4 리눅스 프로세스 관리와 Cron 스케줄링
Linux Process Management and Cron Scheduling - InfoSec Engineer 1.4

📅

들어가기 전에 🔗

지난 1.3편까지는 파일과 디렉토리의 권한을 제어하는 정적인 보안에 대해 알아보았습니다.
하지만 시스템은 멈춰있는 것이 아니라, 수많은 프로그램이 실행되고 메모리에 상주하며 움직입니다.
실행 중인 프로그램을 우리는
프로세스
(Process)라고 부릅니다.

시스템 보안 담당자는 현재 내 서버에서 어떤 프로세스가 실행 중인지, 비정상적으로 자원을 많이 사용하는 프로세스는 없는지 실시간으로 파악할 수 있어야 합니다.
또한, 백업이나 로그 분석 같은 주기적인 작업을 자동화하는 스케줄링 도구의 보안 설정도 필수적입니다.
오늘은 프로세스 관리와 작업 스케줄링의 핵심을 알아보겠습니다.

리눅스 프로세스 상태와 좀비 프로세스 🔗

프로세스는 생성부터 종료까지 다양한 상태를 오갑니다.
보안 분석 시 가장 눈여겨봐야 할 것은 프로세스의
상태 코드
입니다.

1. 주요 상태 코드 (Main Status) 🔗

ps aux 명령어를 입력했을 때 STAT 필드의 첫 번째 글자는 프로세스의 현재 상태를 나타냅니다.

2. 좀비(Zombie) 프로세스 대응 🔗

좀비 프로세스는 시스템 리소스는 쓰지 않지만, 한정된 자원인
PID
(프로세스 ID)를 점유하고 있어 너무 많아지면 새로운 프로세스를 띄울 수 없게 됩니다.

시스템 리소스 모니터링 (top) 🔗

top
명령어는 윈도우의 작업 관리자처럼 시스템 상태를 실시간으로 갱신하며 보여줍니다.
Terminal
top
주요 확인 지표
top 명령어 예시
top 명령어 예시
ctrl + C를 눌러 빠져나올 수 있습니다.

Cron 스케줄링과 보안 설정 🔗

Cron
은 리눅스에서 주기적으로 반복되는 작업을 자동화하는 데몬입니다.
편리하지만 공격자가 백도어를 매일 실행시키기 위해 악용하는 최우선 경로이기도 합니다.

Crontab 문법 🔗

/etc/crontab 파일이나 crontab -e 명령어로 설정합니다.
순서가 매우 중요합니다.
/etc/crontab 예시
 # 분  시  일  월  요일  사용자  명령어
30  03  *   *   *    root    /root/backup.sh
위 예시는
매일 새벽 3시 30분에 root 권한으로 backup.sh를 실행
하라는 의미입니다.
cron 예시
cron 예시

Cron 접근 제어 (보안 핵심) 🔗

일반 사용자가 과도한 작업을 등록하거나 악의적인 스크립트를 예약하지 못하도록 통제해야 합니다.
  1. 화이트리스트 방식 (/etc/cron.allow)
    이 파일이 존재하면, 여기에 적힌 사용자만 crontab을 사용할 수 있습니다.
    보안상 가장 권장되는 방식입니다.
  2. 블랙리스트 방식 (/etc/cron.deny)
    cron.allow가 없고 이 파일만 존재하면, 여기에 적힌 사용자는 차단되고 나머지는 모두 허용됩니다.

일회성 작업 예약 [at] 🔗

Cron
이 반복 작업이라면,
at
한 번만
실행하고 사라지는 작업입니다.
이 또한 /etc/at.allow/etc/at.deny 파일을 통해 접근을 제어해야 합니다.
Terminal
sudo apt install at  # at 패키지 설치 (없을 시)
sudo systemctl start atd  # at 데몬 시작
Terminal
 # 사용 예시: 내일 오전 10시에 스크립트 실행 예약
at 10:00 tomorrow
at> /home/user/script.sh
at> <EOT> 
 # (Ctrl+D로 저장)

[부록] ps 명령어 상세 옵션과 결과 해석 🔗

ps
(Process Status) 명령어는 현재 프로세스의 스냅샷을 보여줍니다.
옵션에 따라 보여주는 정보가 다르므로, 목적에 맞게 골라 써야 합니다.

1. ps -ef (System V 계열) 🔗

프로세스의
상속 관계
(부모-자식)를 파악할 때 가장 유용합니다.
Terminal
ps -ef | head -n 2
출력 결과 예시
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan01 ?        00:00:10 /sbin/init

2. ps aux (BSD 계열) 🔗

프로세스의
리소스 사용량
(메모리 등)과
상태
(STAT)를 상세히 볼 때 사용합니다.
Terminal
ps aux | head -n 2
출력 결과 예시
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  16880  9840 ?        Ss   Jan01   0:10 /sbin/init

3. STAT 필드 상세 해석법 🔗

ps aux 결과의 STAT 필드는 Ss, R+, SLl 처럼 여러 글자가 섞여 나옵니다.
첫 글자는 앞서 배운 기본 상태(R, S, D, Z)이며, 두 번째 글자부터는 부가 정보를 나타냅니다.
[해석 연습]

결론 및 요약 🔗

다음 시간에는 운영체제를 윈도우로 옮겨 1.5 윈도우 인증(LSA)과 파일 시스템(NTFS)에 대해 알아보겠습니다.

참고 🔗