9. 도서관/__사. Network

crontab -옵션

행복 금융 2008. 11. 5.

4.2.5 Cronjob 백도어

  cron은 시스템 관리를 자동화 해주는 매우 유용한 도구인 반면, 백도어를 심는데 있어서도 매우 유용하다. 일반적으로 특정 시간에 트로이잔 백도어를 실행시키도록 cron 테이블에 백도어를 만들 수 있다. 일반적인 cron 테이블의 위치는 /var/spool/cron/crontabs/root 이다. 다음은 trinoo agent 가 설치된 시스템에서 root의 crontab 내용이다.

/var/spool/cron/crontabs/root

* * * * * /dev/isdn/.subsys/tsolnmb > /dev/null 2>&1

  cron을 이용한 백도어는 매우 다양하게 만들어 질 수 있다. 예를 들면 새벽 1시에 패스워드 파일에 새로운 계정을 추가했다가, 새벽 2시에 패스워드 파일을 원상태로 돌려놓도록 cronjob을 만들어 놓는 경우도 있다. 공격자는 새벽 시간 1 - 2시 사이에 시스템에 들어갈 수 있으며, 관리자가 cron 테이블을 검사하지 않는 이상 들키지 않게 된다. cron을 이용한 또 다른 방법은 이미 cron 테이블에 등록되어 있는 정상적인 프로그램을 트로이잔 프로그램으로 바꾸는 것이다. 관리자는 cron 테이블을 검사하더라도 이상한 것을 발견하지 못할 것이다. 또한 lrk에는 특정 cron 엔트리가 보이지 않도록 하는 프로그램이 있어 이를 이용하면 더욱 찾아내기 힘들게 된다.


O atime(마지막 접근(access)) : 마지막으로 파일을 읽거(read)나 실행(execution)시킨 시간
  O mtime(마지막 변경(Modification) 시간) : 파일을 생성(creation)한 시간, 또는 마지막으로 파일내용을 바꾼 시간
  O ctime(마지막 파일속성 변경(status change) 시간) : 마지막으로 파일의 소유자, 그룹, 퍼미션 등이 변경된 시간, dtime이 없는 시스템에서는 ctime을 파일의 삭제시간으로 추정할 수 있다.
O dtime(삭제(deletion) 시간) : 파일 삭제시간

  MAC time 은 공격자가 피해 시스템에서 어떠한 행동을 했는지에 대해 판단할 수 있는 자세한 정보를 제공한다. 예를 들어 공격자가 어떤 프로그램을 생성하고, 컴파일하고, 실행했는지에 대한 정보를 알 수 있으며, 어떠한 프로그램을 변조시켰는지에 대한 정보도 알 수 있다. 또한 ctime과 inode 정보를 추적하게 되면 지워진 파일에 대한 정보와 내용을 복구할 수 있다. 특히, MAC time을 시간순서로 정렬해서 분석하게되면 침입자의 일련의 행동을 추측할 수도 있게 된다.


■ 로그 파일 정책(Log Policy)
- 로그 디렉토리 안에 로그 파일이 최근 30일 로그 기록만 남기도록 한다.

# crontab -e
Mi Ho Da Mo We CMD
0 5 1 * * find /Log_Dir -name "*.log" -type f -mtime +30 -exec rm {} \;

■ CRON


  → 같은 작업을 주기적으로 반복할수 있도록 해준다.

      보통 /etc/rc.d/init.d/crond 데몬에 의해 실행된다.

      설정은 /usr/bin/crontab 명령어를 사용한다.


  ♠ 관련명령어 및 파일

       

      1.crontab

         ▶ cron작업을 설정하는 명령이다. 실행시키면 기본vi편집기가 실행된다.

         ▶ option

            -l   : 현재 crontab 에 의해 설정된 내용을 출력한다.

            -e  : crontab 의 내용을 작성하거나 수정한다.

            -r   : crontab 의 내용을 삭제한다.

            -u  :  root권한자가 해당사용자의 crontab 파일을 다룰때 사용한다.

          ▶ 예제

              [root@linux root]#crontab -l

                 → 작업목록을 보여준다.

              [root@linux root]#crontab -e -u bluetree

                 → bluetree 사용자의 crontab 을 작성하거나 수정한다.

               [root@linux root]#crontab aaa

                 → aaa 란 파일을 crontab 으로 사용한다.

                     aaa 에는 이미 crontab 형식에 맞에 입력되어 있어야한다.

           ▶ crontab 의 작업형식

                 → 5개의 날짜필드와 1개의 명령필드로 구성되어있다.

        

                MM HH DD mm d  command

                    MM : 분을 의미한다 ( 0 ~ 59까지 사용)

                    HH  :  시를 의미한다. ( 0 ~ 23 까지 사용)

                    DD   :  날짜를 의미한다 ( 1 ~ 31까지 사용)

                    mm  : 달을 의미한다.( 1 ~ 12까지 사용)

                    d     : 요일을 의미한다.( 0 ~ 7 까지 사용, 0 과 7은 일요일을 나타낸다)

                    command : 실행할 명령을 입력한다.

                  ※ 참고

                       위 형식에서 시간을 나타내는 각 필드에서 와일드 카드 '*'를 사용할수 있고

                       각각의 요일을 구분할 때 ',' 를 사용하고 연일을 나타낼때는 '-'를 사용한다.

                       즉 월요일과 수요일은 '1,3' 월요일부터 금요일까지는 '1-5' 로 표시할수있다


      2./etc/crontab

           → 시스템이 정기적인 작업이 수행될수 있도록 기본적으로 설정되어있는 파일이다.


      3./var/spool/cron 디렉토리

           → 각각의 사용자가 등록한 crontab은 이 디렉토리아래에 각 사용자이름으로 저장된다.

 

  ♠ crontab 내용 설정예


      0 12 * * 1-5 /home/bluetree/start

      → 월요일부터 금요일까지 /home/bluetree/start 란 스크립트를 실행시킨다.


      0 12 1 1-12/2 * /home/bluetree/babo

      → 1월부터 12월까지 2개월마다 /home/blutree/babo 란 화일을 실행시킨다.


      0 4 * * 1,3,5 cat /root/notice | mail -s "notice" bluetree75@naver.com

      → 월,수,금 오전 4시에 notice 라는 문서의 내용을 메일로 발송한다.


  ♠ cron 사용자 제한    


      ※ /etc/cron.allow (허가목록) 과 /etc/cron.deny(거부목록) 을 참조하게된다.

            1./etc/cron.deny 만 존재하는경우

               → 기본적으로 모든사용자가 사용가능하고 cron.deny 에 등록된 사용자만

                    사용불가능하다.

            2./etc/cron.allow 만 존재하는 경우

                → cron.allow 파일에 등록된 사용자만 사용가능하다.

            3. 두 파일 모두 없을경우

                → 모든 사용자가가능하다

            4. 두 파일 모두 있을경우

                → cron.deny 내용을 무시하고 cron.allow 명기된 사용자만 사용가능하다  

(출처 : 'LINUX 스케쥴링 CRON' - 네이버 지식iN)


댓글

💲 추천 글