RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

         한국전산망침해사고대응지원팀/한국정보보호센터
                         CERTCC-KR/KISA
              Computer Emergency Response Team, Korea
                  Korea Information Security Agency
                 Tel: 02-3488-4119, FAX: 02-3488-4129
                       cert@certcc.or.kr


서    론

이 문서는 당신의 시스템이 침입을 이미 당했을때 유닉스 기계의 보안을 위해
무엇을 할 것인가를 보이고 있다. 이문서는 아직 침입을 당하지 않은 상태라
할지라도 도움이 된다.
※ 이문서는 Compromise FAQ (Version: 2.0 , Christopher William Klaus/
ISS) 을 분석한 내용이다.

1.   침입자의 흔적과 출발지를 다음을 이용하여 분석한다.

===============================================================
 1.  who ;
사용자 및 사용자의 컴퓨터 확인
 2.  w    ;
사용자 및 사용중인 명령의 확인
 3.  last ;
사용자들의 로그인/로그아웃 일시 기록 확인
 4.  lastcomm ;
사용자들의 시스템 명령 및 프로세스 기록 확인
 5.  netstat ;
네트워크 접속 현황 확인
 6.  snmpnetstat ;
네트워크관리 시스템에서의 현황
 7.  라우터 정보 ;
라우터의 라우팅 및 접속 등의 현황 확인
 8.  /var/adm/messages ;
전자우편 송수신 현황 기록 확인(많은 침입자들이 자신의 기계로
전자우편 송신)
 9.  syslog ;
시스템 로그 확인(다른 기계로도 로그를 보낸다)
10.  wrapper 로그 ;
외부 시스템 접속 차단 프로그램의 연결
11.  기계의 모든 사용자에게 finger를 하여 어디서 왔는지 점검
===============================================================

참고 : who, w, last, lastcomm은 /var/pacct, /usr/adm/wtmp 의 기
록에 의해보고하는데, 침입자들은 뒷문(Backdoor Program)을 이용하
여 이 로그들을 수정하여 자신의 흔적을 지울 수 있다. 그리고 침입
자가 아직 이런 뒷문이 없다하더라도 아주 쉽게 이로그들을 수정하거
나 지울 수 있다. 하지만 가끔 침입자들은 모든 로그삭제를 잊어버릴
수도 있으며, 특히 비 표준 유닉스 로그를 설치한 경우에 더욱 그렇
다.

2. xinetd나 tcp_wrapper는 당신이 원한다면 외부에서의 모든 접속에
대해 로그를 남길 수 있으며, 침입자가 로그를 수정하거나 지울 수
없도록 이 로그들을 다른 기계에 옮겨두는 것이 좋다 netlog는 다음
에서 가져올 수 있다. 적절한 대책을 세우기 전에 침입자가 ethernet
sniffer로 다른 기계에 어떻게 침입하는지를 모니터링하는 것이 좋다.

3. 외부로 부터 접속하는 기계들을 막고 특히 침입자의 접근을 막기 위
해 네트워크를 중지시킨다. 만약 침입자가 눈치챈다면 당신의 기계에  
"rm -rf /"을 실행하여들지 모른다.

4. 시스템 실행 파일의 변경 유무룰 점검하는데, 특히 뒷문프로그램으로
잘 이용되는 다음 프로그램들을 중점 점검한다.

     1.  /bin/login
     2.  모든 /usr/etc/in.* files (예: in.telnetd)
     3.  /lib/libc.so.* (on Suns).
     4.  inetd에서 호출되는 모든 것

기타 잘 교체되는 것으로서는  다음과 같은 것이 있다.

     1.  netstat - 정보를 감추게 한다
     2.  ps - 프로세스를 감추게 한다 (예: Crack)
     3.  ls - 디렉토리를 감춘다
     4.  ifconfig - 이더넷에 대한 promiscuity mode 를 감춘다
     5.  sum - sum을 수정하지 않고도 실행파일의 체크썸을 올르게 위장
할 수 있으므로 더 이상 교체하지는 않는다. sum 을 믿어
서는 안된다.

파일의 실제 수정 시간을 알기 위해서는 "ls -lac"를 사용한다.
/etc/wtmp 를 점검하여 시스템 시간을 체므하고 CD나 테이프의 원
본과 비교하거나 MD5 체크썸이 이전의 체크썸과 다른지 비교하며,
흔히 off-line으로 저장된 미리 만들어진 체크썸과 cmp 명령으로 비
교한다. 또 흔히 사용되는 뒷문으로서 /bin/time과 같은 setuid 프로그
램인데, 이들은 일반 사용자가 root로 실행할 수 있게 해준다.  이런
프로그램을 찾기 위해서는 다음 명령을 이용하면 된다.

        find / -type f -perm -4000 -ls

하다보면 OS  전체를 다시 설치해야될지도 모른다. Tripwire 는 관
리자 몰래 실행파일을 수정하거나 inetd.conf와 같은 시스템파일을 수
정을 방지할 수있다.

5.   사용자들이 자주 자신의 패스워드를 바꿀 수 있도록 해주는 passwd
프로그램으로 교체한다. anlpasswd, npasswd 혹은 passwd+ 등을 설
치하여 적절한 패스워드를 만들 수 있도록 하며, Crack 를 주기적으
로 실행한다. 이것은ftp://ftp.cert.org/pub/tools.crack에서 가져올 수
있으며, 이 Crack 을 이용하여 사용자들이 어려운 패스워드를 만들도
록 한다. 네트워크에서 평문 패스워드가 전달되는 것이 문제이다.
Smart Hub는 LAN에서 sniffer가 모든 LAN을 도청하는 것을 막을
수 있으며, 혹은 일회용 패스워드를 사용한다.

6. 모든 사용자의 .rhosts, .forward 등을 점검한다. 만약 .rhosts가 "+"
를 가지고 있으면 어떤한 시스템에서도 패스워드 체크 없이접근할 수
있다. COPS는 다음 과 같은 체킹 스크립트를 가지고 있다.

        find / -name .rhosts -ls -o -name .forward -ls

의심스러운 모든 파일의 생성 및 수정 시간을 점검하는데 다음을 이
용한다.

        find / -ctime -2 -ctime +1 -ls

이것은 이틀전 에서 하루 이후 에 수정된 파일을 찾아준다.

모든 .login, .logout, .profile, .cshrc 들도 적어도 수정일 및 시간 등을
점검 하며, .rhosts 파일이 잠궈진 것은 없는지, news, sundiag, sync
등의 계정에 대한 쉘이 보다 안전을 위해 "/bin/false"로 되어 있어야
하며 "/bin/sh" 등으로 되어 있어서는 안된다.  또한 ". ", ".. "  등의
디렉토리가 없는지 점검하는데 대부분 /tmp,/var/tmp, /usr/spool/* 나
공개적으로 쓰기 할 수 있는 디렉토리에서 많이 발견된다.

7. NFS가 외부에 널리 공개된것은 아닌지 점검한다.
ftp://harbor.ecn.purdue.edu/pub/davy에서 가져올 수 있는 NFSwatch
는 NFS트랜잭션에 대해 로그를 만들어주며, "showmount -e" 를 하
여 적절하게 개방한대로 구성되어 있는지 점검할 수 있다. 256 바이
트를 넘긴 경우에 nfsd는 버그를 가지고 있으며, 또한 당신이 마운트
하고 있는 시스템에 대한 점검도 중요하다. 가능한 "nosuid"플래그를
사용하기 바라며, 다른 호스트나 침입자가 실행하는 NFS마운트된
suid 프로그램을 실행하는 sysadm에의해 침입되기를 바라지는 않는
것이다.

8. 가장 최근의 sendmail을 설치한다.  이전 버젼의 sendmail은 원격지
명령을 실행하도록 한다.

9. 가장 새로운 패치를 설치하도록 한다.

10. 시스템이 취약점이 있는지 점검하는 리스트가 있다.

(1)  원하지 않은 프로세스가 없는지, "rpcinfo -p"를 이용하여 점검한다.

(2)  hosts.equiv 에 "+" 가 없는지 점검한다.

(3)  tftp를 사용하지 않든가, 사용하기를 원한다면 "-s" 플래그를 사용한다.
    이 경우는 대부분 디스크없는 워크스테이션을 위한 경우인데, 적절하게  
    NFS를 이용할수도 있다. 이것을 root 로 실행하지 않도록 하며,        
    /etc/inetd.conf에서 다음과 같이 바꾼다.

     tftp dgram udp wait nobody /usr/etc/in.tftpd in.tftpd -s /tftpboot

   혹은 원치 않는 곳에서의 접근을 막기 위해 tcp_wrapper에서 tftpd에 대  
   한 부분을 고치고 모든 접속 상황을 로그로 남긴다.

     tftp dgram udp wait nobody /usr/etc/tcpd in.tftpd -s /tftpboot

    혹은 /etc/hosts.allow 에서 정의된 허용한 곳에서만 접근할 수 있도록  
    조정한다.

(4) crontab과 at-vobs 를 점검한다. 침입자가 남긴 모든 것을 정리했다고  
    생각한 후 이것이 어떤 작업을 할 수 있다.

(5)  rc.boot, rc.local(SYSV : /etc/rc?.d/*)나 기타 시스템 시작시 실행 파일
    들을 점검한다. 가장 좋은 방법은 off-line으로 저장했다가 주기적으로  
    점검하는 것이며, sendmail.cf, hosts.allow, at.allow, at.deny, cron.allow,  
    hosts, hosts.lpd 등의 시스템 구성파일들을 점검한다. "aliases"는 메일  
    확장을 위한 것인데,  "uudecode" 등과 같은 것을 가지고 있을 수 있다.
(6) inetd.conf 와 /etc/services 파일에서 침입자가 추가한 불법 프로그램 서  
   비스가 있는 지 점검한다.

(7) 현재 가지고 있는 모든 로그 파일(pacct, wtmp, lastlog, sulog, syslog,  
    authlog 등)들을 다른 안전한 곳으로 옮긴다.  /tmp/* 파일들을 먼저 살  
    펴 본 후 재시동(Reboot) 한다.

(8) /etc/passwd 파일의 여벌파일을 가능한 디스켓 등으로 저장한 후 su 및  
    passwd 프로그램이 뒷문(Backdoor) 가 아님을 확인한 후 root  패스워  
    드를 바꾼다. 만약 침입자가 su 나 passwd 뒷문을 설치하였다면      
    /etc/passwd  파일의 패스워드 부분을 모두 "*"로 바꾼다. 또한 침입자  
    가 패스워드 파일을 가지고 있다면 모든 사용자들의 패스워드를 알아낼  
    가능성이 있으며, 장기간 사용하지 않는 사용자의 패스우드를 바꿀 수  
    도 있다.  NIS서버에서는 단순히 /etc/passwd 뿐 아니라 NIS 맵에 해  
    당하는 것들도 점검해야 한다.

(9) 익명FTP나 다른 네트워크 서비스 시스템들이 적절하게 구성되어 있는  
    지 점검한다.

(10) inetd를 다시 설치한다.

(11) 콘솔 만이 "secure" 단말로 정의하여 다른 단말에서 root 로 로그인할  
    수 없도록 한다.
(12) hosts.equiv, .rhosts, hosts.lpd 에 "#" 이 있는지 점검한다. 만약 침입자  
    가 "#" 을 기계이름으로 정의하였다면 누구나 신뢰하는 호스트로 정의  
    된다.
(13) 침입자에 대한 경각심을 늦추지 않는다.

11.  침입자가 경유한 모든 기관의 시스템에 전자우편을 보내고
cert@certcc.or.kr 로도 메일을 보내 협조를 요청한다.


12. 침임자들의 시도를 방지하는 좋은 방법은 방화벽이라는 전산망 침입
차단시스템을 설치 운영하는 것이다. 하지만 방화벽은 가격이 비싸고
필터링에 따른 네트워크의 속도가 저하될 가능성이 크다. 라우터에서  
NFS(2049/UDP), portmap(111/UDP) 를 막아야 한다. DNS 와 NTP
포트만 제외하고 모든 패킷을 막고, 출발지라우팅(Source Routing),
모든 IP-Forwarding 패킷을 사용하지 않는다.
2006/09/08 15:54 2006/09/08 15:54
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/04   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)