요즘IT
위시켓
새로 나온
인기요즘 작가들컬렉션
물어봐
새로 나온
인기
요즘 작가들
컬렉션
물어봐
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘IT
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
[email protected]
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
개발

[여기보기] Cron과 At이 주는 자유를 위해, 실행 권한을 점검하라

넷마블 기술 블로그
5분
2022.12.09.
2.9K

 

국내 유명 IT 기업은 한국을 넘어 세계를 무대로 할 정도로 뛰어난 기술과 아이디어를 자랑합니다. 이들은 기업 블로그를 통해 이러한 정보를 공개하고 있습니다. 요즘IT는 기업들의 특색 있고 유익한 콘텐츠를 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요?

 

이번 글은 ‘전 세계 사람들에게 즐거움을 선사하자’는 비전을 바탕으로 게임을 만들고 있는 ‘넷마블’의 보안개발팀 이야기입니다. 리눅스에서 반복 작업에 사용하는 ‘Cron’과 일회성 예약 작업에 사용하는 ‘At’에 대해 살펴보겠습니다.

 
[여기보기]는 “여기서 보안의 기본을 챙기고 가자”의 약자로, 개발 과정에서 꼭 최소한으로 챙기면 좋은 보안 기초 설정을 앞으로 하나씩 공유할 예정입니다. 기초 내용이 주를 이루겠지만, 혹시라도 빼먹고 계신 것이 없는지 가끔 한 번씩 둘러봐 주세요.

 

안녕하세요, 넷마블 보안실 보안개발팀 윤형근입니다. 

 

렛츠인크립트(Let’s Encrypt) 인증서를 갱신해보신 적이 있으신가요? 렛츠인크립트 인증서는 3개월마다 만료되기에, 만료에 맞춰서 갱신해야 합니다. 단순 계산으로는 1년에 4회만 하면 되지만, 대부분 이조차도 크론탭(Crontab)을 활용해 자동 갱신합니다. 예약 반복 작업으로 걸어두기 딱 좋은 사례입니다. 

 

이처럼 작업 시간을 위해 대기하거나 반복 작업을 하면서 소모하는 시간으로부터 자유를 얻기 위해, 리눅스에서는 반복 작업에는 ‘Cron’, 일회성 예약 작업에는 ‘At’을 사용합니다. 이 두 명령어 기본 사용법은 아래 링크를 참고해주세요.

 

  • 우분투 매뉴얼 –  AT 명령어
  • 우분투 매뉴얼 – CRONTAB 명령어

 

랜섬웨어나 멀웨어는 보통 침투 시점과 실제 동작하는 시점이 분리돼 있습니다. 동작 트리거로 시간 조건을 사용할 때 이 두 명령어를 활용합니다. 서버에 기본으로 설치돼 있는 명령어이므로 간편하게 실행할 수 있기 때문이죠. 만약 서버 안에서 동작할 예약 작업이 없다면, 이 두 기능 모두를 제거하는 것도 하나의 방법일 수 있습니다. 하지만 써야 하는 경우는 필연적으로 생기기 마련이므로, 허가된 사용자만 이를 실행할 수 있도록 점검하는 것이 좋습니다.

 

 

Crontab과 At

‘Crontab’과 ‘At’ 명령어 실행 권한 관리 방법은 동일합니다. ‘/etc’ 디렉터리 안에 있는 ‘.allow’와 ‘.deny’ 파일로 화이트리스트나 블랙리스트 방식으로 권한을 관리합니다. 기본으로 ‘.allow’와 ‘.deny’ 파일 자체가 없는 경우도 있으니, 실행 권한을 부여할 계정과 정책에 맞춰서 새로 추가해도 됩니다.

 

  • .allow: 해당 파일에 등록한 사용자만 명령어를 사용할 수 있음.
  • .deny: 해당 파일에 등록한 사용자는 명령어를 사용할 수 없음.

 

조치 방안

위 내용에 비춰보자면, ‘Crontab’과 ‘At’ 명령어 실행 파일 소유자와 접근 권한, 각 명령어의 ‘.allow’와 ‘.deny’ 파일 소유자와 접근 권한, ‘.allow’와 ‘.deny’ 파일에 입력한 사용자 계정 리스트까지, 최소한 3가지는 꼭 확인해야 합니다.

 

Crontab과 At
at.deny 파일과 cron.allow 파일에 입력한 사용자 계정

 

루트(root) 이외 일반 사용자 또는 허용하지 않은 사용자가 ‘Crontab’과 ‘At’ 명령어를 사용할 수 있다면, 고의나 실수로 안전하지 않은 예약 명령을 실행해 시스템에 피해를 줄 여지가 생깁니다. 악의적인 사용자나 공격자가 실행한다면, 받을 영향이 매우 커질 수밖에 없습니다. 그래서 파일 소유자는 루트여야 하고, 파일 권한은 640보다 작아야 합니다.

 

// .allow와 .deny 파일 소유자 및 권한 확인
$ ls -l /etc/cron.allow /etc/cron.deny /etc/at.allow /etc/at.deny

ls: cannot access '/etc/cron.deny': No such file or directory
ls: cannot access '/etc/at.allow': No such file or directory
-rw-r----- 1 root daemon 144 Feb 20  2018 /etc/at.deny
-rw-r----- 1 root root     5 Aug 17  2021 /etc/cron.allow

 

루트가 아닌 다른 사용자가 파일 소유자로 돼 있거나 권한이 640보다 초과해 있다면, 소유자와 권한을 변경해야 합니다.

 

$ chown root [파일명]
$ chmod 640 [파일명]

 

‘.allow’와 ‘.deny’ 파일에 입력된 사용자 계정은 각자 편한 편집기로 수정하시면 됩니다.

 

내가 허락하지 않은 자동 결제

내가 사용하지 않거나 낯선 서비스가 자동 결제로 내 통장에서 비용을 빠져나간 경험이 있으신 분 계신가요? 카드사와 고객센터에 연락해서 어디에서 내 권한이 빠져나간 건지 확인하던 그 상황을, 우리가 관리하는 리눅스 서버에도 똑같이 대입한다고 생각하시면 어떨까요?

 

‘급여가 스쳐 지나가는 내 통장’은 내 계좌에서 카드사가 카드 사용 비용을 지정한 날짜에 가져가도 된다고 허락(?)을 했기에 생긴 결과입니다. 그나마 내가 허락하지 않은 자동 결제까지 빠져나간 건 아니었음이 다행일 수도 있습니다.

 

결제일에 맞춰 내 통장을 훑고 가는 자동 결제처럼, 허락한 사용자만 ‘Cron’과 ‘At’을 사용하게 돼 있는지 꼭 점검해 보시길 추천합니다.

 

<원문>

[여기보기] Cron과 At이 주는 자유를 위해, 실행 권한을 점검하라

 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중