강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급 : 시스템 보안 관련 유틸리티 및 명령어 : cops

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 보안 관련 유틸리티 및 명령어 : cops

 

 

COPS 정의

 

 

COPS(Computer Oracle and Password System)는 리눅스(또는 유닉스) 시스템에 대한 보안 감시 활동을 위한 프로그램 이다.

 

 

 

COPS 패키지는 보안 사항을 점검해주는 프로그램과 설치 방법 작동방법 그리고 결과를 해석하는 방법에 대한 문서들로 구성되어 있다.

 

 

 

COPS는 보안 문제에 대하여 점검 후 알려 주기만 하는 것이며 고쳐 주지는 않는다.

 

 

 

 

 

COPS는 시스템에 침입한 외부 크래커(Cracker)나 악의적인 내부 사용자들이 불법적인 방법으로 시스템 관리자 몰래 시스템을 변경하더라도 COPS 프로그램을 실행하여 초기에 설정한 것과 다르게 변경된 것을 보여준다.

 

 

 

따라서 어느 부분이 변경되어 시스템이 보안에 취약해졌는지를 알 수 있게 된다.

 

 

 

 

 

또한 시스템 관리자의 실수로 잘못 설정된 시스템의 취약해진 부분도 함께 보여줌으로써 시스템의 보안을 한층 높혀 준다.

 

 

 

하지만 COPS는 보안이 취약 해졌다든지 시스템의 어느 부분이 변경되었는지 알려줄 뿐 직접 수정해주지는 않는다.

 

 

 

이 부분은 시스템관리자가 COPS의 경고에 따라 직접 수정해주어야 한다.

 

 

 

 

 

하지만 COPS가 시스템 보안에 중요한 점을 시템관리자에게 실수로 인한 것, 외부 침입에 의한 문제이든지 즉각적으로 발견이 가능하다는 점이다.

 

 

 

 

 

COPS 기능

 

파일, 디렉토리 및 장치에 대한 퍼미션 점검

 

/etc/passwd, /etc/group 내용 점검

 

/etc/hosts.equiv, ~/.rhosts 파일 점검

 

SetUID 파일 점검

 

anonymous ftp 점검

 

/etc/rc.*, /etc/rc*.d/* cron 파일 점검

 

시스템 파일, 디렉토리 소유권과 퍼미션 변화 점검

 

 

 

 

 

 

 

COPS 구하기

 

 

COPS1990년대의 1.04+ 버전 이후에는 개발이 중단된 상태이다.

 

 

 

현재는 이 프로그램을 직접 다운받아 설치 해야한다.

 

 

 

 

 

다운로드

 

: ftp://coast.cs.purdue.edu/pub/hosts/unix/scanner/cops/

 

 

매뉴얼 : http://www.linuxlab.co.kr/docs/00-02-2.htm

 

 

 

COPS의 실행

 

 

명령 옵션

 

 

-a : 실행하고자 하는 특별한 하위 디렉토리를 지정해준다.

 

 

 

이 옵션은 make install을 통하여 디렉토리가 생성되어야 한다.

 

 

 

 

-b : error message를 출력할 곳이다.

 

 

 

 

-d : 전에 출력된 메세지와 다를 경우에만 메세지가 출력된다.

 

 

 

-m 인자와 함께 사용되거나, 메일보내기를 허용했을 경우에만 효과적이다.

 

 

 

 

-m : user cops의 결과가 사용자에게 메일로 보내진다.

 

 

 

 

-f : 특정 user에게 결과를 메일로 보낸다.

 

 

 

 

-s : secure_dir copssecure_dir cops가 설치된 디렉토리로 인식한다.

 

 

 

secure directory를 지정하다(make install시 생성된다.)

 

 

 

-x : version number를 출력 한다.

 

 

 

 

-[vV] : verbose output을 출력한다.

 

 

 

-v는 출력파일에 , -V는 화면에 출력한다.

 

 

 

 

 

실행

 

 

 

 

 

[sulinux@sulinux ~]# ./cops

 

 

 

 

일반적인 cops의 실행 예이다.

 

 

 

 

백그라운드 실행을 원하면 뒤에 “&”를 붙여준다.

 

 

 

 

 

???? ./cops &

보통 실행 시간은 1~2 분 정도 소요되며 시스템마다 다르다.

 

 

 

 

cops를 실행시키면 cops 디렉토리 밑으로 자신의 호스트 이름으로 디렉토리가 하나 생성된다.

 

 

 

그밑으로 실행결과가 “year_month_day” 형식으로 저장된다.

 

 

 

 

 

???? [sulinux@sulinux ~]

 

 

호스트의 이름이 sulinux로 시작되므로 cops디렉토리 내 sulinux이란 이름으로 디렉토리가 생성된다.

 

 

 

 

 

[sulinux@localhost ~]

호스트의 이름이 localhost로 시작되므로 cops디렉토리 내 localhost이란 이름으로 디렉토리가 생성된다.

 

 

 

각 호스트의 이름에 따라 다르게 만들어진다.

 

 

 

 

 

cops 실행결과

 

 

 

 

 

 

[sulinux@sulinux ~]# cd sulinux

[sulinux@sulinux ~]# ls al

-rw-r--r-- 1 root root 143 Jun 15 20:11 2013_Jun_15

 

 

 

 

 

“year_month_day” 형식으로 저장된 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# vi 2013_Jun_15

ATTENTION:

Security Report for Sat 20:11:03 KST 2013

from host www.redhat.com

Warning! Home directory for ftp doesn’t exist!

 

 

 

 

 

cops 실행 결과이다.

 

 

 

앞에서 밝혔듯이 cops는 보안경고만 보여줄뿐 직접고쳐주지는 않는다.

 

 

 

변경된 부분이 발견될 경우에는 사용자가 직접 수정해야만 한다.

 

 

 

 

 

???? [sulinux@sulinux ~]# ./cops d m root

root 에게 메일을 발송한다.

 

 

 

 

 

cops 실제 사용예

 

 

일반사용자가 root 권한을 가지고 있는 것을 보여준다.

 

 

 

 

 

 

 

 

 

ATTENTION:

Security Report for Sat Jun 20:11:03 KST 2013

from host www.redhat.com

Warning! Password file, line 17, user chris has uid = 0 and is not root

chris:x:0:0:nobody:/home:/bin/tcsh

 

 

 

 

 

anonymous ftp 디렉토리가 없다는 것을 보여준다.

 

 

 

 

 

 

 

 

 

ATTENTION:

Security Report for Sat Jun 20:11:03 KST 2013

from host www.redhat.com

Warning! Home directory for ftp doesn’t exist!

 

 

 

 

 

root 디렉토리가 퍼미션이 777로 변경되어 모든 사용자들이 드나들 수 있게 된 경우로 메일로 받도록 한 경우이다.

 

 

 

 

 

 

 

 

 

Date: Tue, 18 jun 2013 12:02:04 +0900

From: root<root@www.redhat.com>

To: root@www.redhat.com

 

 

 

 

 

 

 

 

 

ATTENTION:

Security Report for Mon Jun 12:02:04 KST 2013 from root

www.redhat.com

Warning! User root’s home directory /root is mode 0777!

Warning! User operator’s home directory /root is mode 0777!

 

 

 

 

각자 자신의 시스템의 설정에 따라서 다양한 메세지를 보게 될 것이다.

 

 

 

보통 사용자들에게는 커다란 문제가 없겠지만, 크래커나 악의적인 사용자에 의해 침투된 시스템은 여러 에러 메세지를 보여줄 것이다.

 

 

 

 

 

cops의 실행 파일들

root.chk루트의 .login, .cshrc, .profile과 같은 사용자가 프로그램의 사용을 시작할 때 참조되는 파일에 대한 쓰기가능성을 조사한다.

 

 

 

그리고 루트 디렉토리의 .cshrc, .profile에 있는 umask world writable 한지를 검사하고, /bin, /etc와 같은 디렉토리를 루트가 소유하고 있는지 검사한다.

 

 

 

 

dev.chk/dev/mem, /dev/kmem과 같은 중요한 디바이스 파일에 대한 permission을 조사한다.

 

 

 

그리고 제한되지 않은 NFS에 대해서도 검사한다.

 

 

 

 

group.chk/etc/group 파일에 대하여 중복된 그룹이름, 알파벳으로 되어있지 않은 그룹명에 대하여 검사한다.

 

 

 

 

home.chk사용자들의 홈디렉토리의 world writability를 검사한다.

 

 

 

 

rc.chk/etc/rc.* 파일에 대하여 writability를 검사한다.

 

 

 

 

passwd.chk/etc/passwd 파일에 대하여 중복된 ID, 패스워드가 없는 ID, UID=0이지만 루트가 아닌 사용자등을 검사한다.

 

 

 

 

pass.chkDefault로는 login name과 같은 패스워드를 가진 계정을 찾아낸다.

 

 

 

옵션에 따라 더욱 강화된 패스워드 조사를 할 수 있다.

 

 

 

 

user.chk사용자들의 홈디렉토리에 있는 .profile, .login, .cshrc, .rhosts, .tcshrc 등 중요한 startup 파일들의 world writability를 검사한다.

 

 

 

 

cron.chkcron 디렉토리안에 있는 파일들에 대하여 writability를 검사한다.

 

 

 

 

misc.chk/etc/motdworld writability/etc/inetd.conf에 의해 구동되는 데몬의 world writability를 포함하여 여러 가지를 검사한다.

 

 

 

is_able.chkis_able.lst에 있는 파일등의 world writability를 검사한다.

 

 

 

 

 

crc.chkCRC_list에 있는 파일들의 write/read-ability 등을 검사한다.

 

 

 

CRC_check를 이용하여 크기가 바뀐 파일이 어떤 것인지 알 수 있다.

 

 

 

루트의 권한으로 실행하여야 정확한 결과를 얻을 수 있다(그래서 COPS 쉘 스크립트 안에서 crc.chkcomment out되어 있다. )

 

 

bug.chkCERT advisory등에서 알려진 버그들과 시스템에 있는 파일들을 비교하여 파일 보안에 대한 문제점을 가질 수 있는지 알려준다.

 

 

 

 

suid.chksetuidsetgid 파일들을 찾아 list로 저장한 다음 나중에 cops를 실행시켰을 때 바뀐 파일이 있는지 검사한다.

 

 

 

정확한 검사를 위해서는 루트의 권한이 있어야 한다.

 

 

 

(그래서 cops 쉘 스크립트 안에는 이 부분이 comment in되어있다)

 

 

 

 

 

 

cops가 설치된 디렉토리는 root만이 접근해야한다.

 

 

 

만일 cops가 설치된 디렉토리가 root만이 아닌 다른 사용자들이 접근가능하도록 되어있다면 문제가 발생할 수 있다.

 

 

 

다음과 같이 되어있는지 확인한다.

 

 

 

 

 

drwx------ 10 2993 78 2048 Jun 17 11:11 cops_104/

 

위와 같이 되어있지 않으면 바꾸어 주어야 한다.

 

 

 

 

 

# chmod 700 cops_104/

 

suid.chk를 실행하기전 47번 줄의 메일을 받을 사람의 주소를 변경하여야 한다.

 

 

 

 

 

# vi suid.chk

INFROM=“root@localhost”

 

suid.chk 를 적어도 일주일에 한번씩은 실행하여 준다.

 

 

 

 

 

# ./suid.chk

 

cops 실행후 받은 경고 메세지에 대한 해결책은 설치한 cops디렉토리 내 docs/ 디렉토리내의 warnings 파일에 자세히 설명되어있다.

 

 

 

 

 

# cd /root/install/cops_104/docs

# vi warnings

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  76 명