본문 바로가기
공부/IT 감사 및 내부회계 IT

[OS] Cron에 대한 간략한 설명과 IT감사 대응 시 이력관리 및 모니터링

by Goddoeun 2021. 6. 15.
728x90
반응형

Cron이란,
서버 내에서 특정한 시간에 특정 작업을 수행하게 해주는 스케쥴링 역할을 합니다.

Crontab이란, Cron 작업을 설정하는 파일을 지칭합니다.
경로는 각 OS별로 다른 위치에 저장이 되지만 기본적으로 /etc/crontab의 경로에 저장되어있으며,
해당 경로의 파일에 설정된 Cron을 읽어서 작업을 수행하게 됩니다.

[Cron의 구성]
Cron은 기본적으로 [분-시-일-월-요일-사용자-실행명령]의 7개의 필드로 구성되어있습니다.
# m h dom mon dow user command

[Cron과 관련된 파일]
/usr/sbin/cron : 크론의 데몬 파일
/etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly, /etc/cron.hourly : 시스템 크론 설정 디렉토리
/var/log/cron : Cron 실행 내용이 기록되는 로그파일
/etc/cron.allow, /etc/cron.d/at.allow : 크론 접근을 허용할 계정을 설정하는 파일
/etc/cron.deny /etc/cron.d/at.deny : 크론 접근을 차단할 계정을 설정하는 파일
/var/spool/cron : 일반 사용자의 Cron 설정 내역이 저장되는 파일
/etc/crontab : root사용자를 위한 시스템 예약 작업 파일

[Crontab 명령어]
crontab -l : 예약된 작업 리스트
crontab -e : 예약된 작업 수정
crontab -r : 예약된 작업 삭제
crontab - u [사용자명] : root 사용자는 해당 사용자의 crontab 파일을 보거나 삭제, 편집 가능

[Cron의 동작 경로]
Crond 데몬 실행 ->
Crontab 파일 읽음 (Hourly, daily, weekly, monthly) & /var/spool/cron 경로에 있는 파일을 읽음.(각 사용자들의 개별 cron 설정파일) ->
Cron에 의해 수행이 안된 작업 Anacron에 의해 수행 재시도 ->
/var/log/cron 에 기록.

[Cron 설정 예시]
1. 매일 6시에 백업 : 0 6 * * * /bin/sh backup.sh
2. 하루에 두번 script.sh 수행 : 0 5, 17 * * * /scripts/script.sh
3. 매분 수행 : * * * * * /sxripts/script.sh
4. 매 10분마다 monitor 스크립트 실행 : */10 * * * * /scripts/monitor.sh
5. 1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 /etc/check.sh 스크립트 실행 : 10 4 1 1-12/2 * /etc/check.sh
6. 금요일하고 일요일 5시에만 스크립트 수행 : 0 17 * * sun [$(date + %d) -le 07] && /script/scriptnt.sh

참고 : https://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/

 

Crontab in Linux with 20 Useful Examples to Schedule Jobs - TecAdmin

Linux crontab Examples. Linux crontab is similar to windows task schedulers. Crontab is very useful for routine tasks like scheduling daily backups etc. How to schedule cron on every X minutes in Linux.

tecadmin.net


[보안 측면에서 기업이 주의해야 할 점]
Crontab은 작업 스케쥴과 관련되어있어 스니핑(Sniffing)을 통해 정보가 유츌될 수 있는 취약점이 존재합니다.
때문에, 기업은 Crontab의 권한을 확인하여 Others의 권한을 제한하여야 합니다.

설정 해 놓아야 할 사항
cron.allow, at.allow, cron.deny, at.deny, cronlog 등.


<Cron으로 작업 스케쥴을 관리할 경우 단점>
1. 배치 작업의 등록/변경/삭제일자 확인 불가능.
2. 배치 오류 로그가 확인하기 어렵게 기록/관리 됨.

[결론]
> 별도의 작업 스케쥴러 프로그램/툴을 사용할 것을 권고.
> 위처럼 툴의 도입이 어려울 경우, 크론 리스트를 관리하는 별도의 파일을 만들어 하루~주 단위로 수동관리할 것. 이는 예로  1월1일의 해당리스트와 12월 31일의 리스트를 비교했을때 생성된, 삭제된 리스트를 확인할 수 있게해줌. 여기다가 주, 월 등 단위로 모니터링하는 통제를 만들것을 권고. (모집단 측면) IT감사시 배치작업 모니터링 또한 테스트를 하기 때문에 /log/cron 파일의 로그를 일마다 모니터링하고 상위권자의 승인을 득하여 결과(성공/오류, 오류시 조치내역)를 보고하는 통제를 만들것을 권고. (모니터링 측면)

728x90
반응형

댓글