리눅스 해킹점검 가이드

by ADMIN posted Dec 10, 2008
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

1. 개요

리눅스 시스템 해킹피해 시스템에 대한 전반적인 사항과 주의사항기술


2. 해킹점검


1. vi /var/log 폴더에있는 메세지들을 확인하여 불법적인 접근시도나 에러에대해

체크한다 또한 /dev/shm 을 점검하여 아무것도 존재하지 않다는것을 확인한다

ls -alR /tmp ls -alR /var/tmp/tmp 디렉토리의 숨겨진 폴더를 확인하거나

실행파일에 대해 체크한다.


3. /etc/passwd, /etc/shadow파일 확인 한다

/etc/passwd 파일에서 uid0이거나 불법적인 새로운 계정이 있는지 확인한다.

/etc/shadow 파일에서 암호가 없는 계정이 있는지 확인한다.


4. 열린 포트 확인

ps -efnetstat -an으로 현재 연결되어 있는 상태를 점검한다.


[root@ancigo root]# /bin/netstat ?an | grep LISTEN

tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN


위와같은 명령으로 서버에 열린 포트를 확인하여 의심가는 포트가 있다면 포트를

물고 있는 데몬을 찾아 봅니다.

nmap등의 스캔프로그램으로 열린포트 확인

lsof로 확인(lsofSystem에서 돌아가는 모든 Process에 의해서

Open된 파일들에 대한 정보를 보여주는 프로그램)


5. 실생중인 프로세스 및 데몬점검.(프로세스의 생성관계)


pstree 명령을 이용하여 평상시와 다른 프로세스가 운영중인지 체크한다.


6. 시스템 운용상황 점검.

top 명령을 이용하여 시스템 부하 발생 프로세스를 체크한다.



7. setuidsetgid파일 확인

setuid를 가지는 실행 프로그램은 실행도중에 슈퍼유저(root)의 권한을 가지고

실행되므로 find를 이용하여 setuidsetgid 파일이 있는지 확인한다.

find / -user root -perm -4000 -print>suidlist

find / -user root -perm -2000 -print>sgidlist


8. find /dev -type f -print

(/dev 밑에 일반파일이 있는지 찾음->원래 dev밑에는 일반화일이 있으면 안됨)

* fc3 이후에는 /dev내에 /udev관련 파일이 존재함


9. rpm 변조 여부 체크

rpm -Va | grep ^..5

Sfile size T는 생성시간 Uuser Ggroup c는 이 파일들이 설정파일


10. 최근 서버 접속자 체크한다.

vi /var/log/secure

last -n 10 최근 10번째까지의 접속기록을 확인.


11. 계정별 최후접속기록 점검.


lastlog는 현재 /etc/passwd에 존재하는 모든 계정을 대상으로 하여 언제 마지막으로

서버에 접속을 했는가를 확인.

Mail, adm, bin 등의 계정들은 모두 "** Never logged in **" 이라고 되어 있는것이 정상.


lastlog


12. 현재 서버접속자를 체크한다

w (telnet)

ftpwho(ftp)


13. root명령어 사용기록 점검한다.


vi /root/.bash_history (.set nu)

cat /root/..bash_history | wc -l (1000라인 이상 되어야 정상)


14. 계정별 사용명령어파일 점검한다.


find / -name .bash_history -exec ls -l {} ;

(각 계정별 .bash_history 파일의 존재여부)

find / -name .bash_history -exec cat {} ;

(파일의 내용까지 모두 확인해 볼 수 있음)


15. 서버내에 중요한 디렉토리 점검한다.

/etc/xinetd.d/ (xinetd로 서비스되는 인터넷서비스 파일들이 존재하는 디렉토리)

/etc/rc.d/ (부팅에 관계된 파일) (파일들을 복사 후 파일용량등을 비교하기) (커널패닉의원인)

/etc/rc.d/init.d/ (부팅시에 특정 서비스나 데몬들을 시작시키는 스키립트 파일)


16. .rhosts 파일 점검

원격에서 패스워드등의 확인과정없이 바로 접속하기 위해서 사용되는 파일

find / -name .rhosts -exec ls -l {} ;

find / -name .rhosts -exec cat {} ;


17. 메모리사용량 점검한다.


free -m

cat /proc/meminfo (free top 는 이 파일을 참조하여 보여준다.)

top -d2


19. Chkrootkit 로 백도어 점검.

rootkit 탐지를 위한 도구로 네트워크 인터페이스의 promisc 모드,

lastlog/wtmp 로그파일의 삭제 여부 등을 탐지하며, lrk5의 설치 유무에 대해서 검사한다.

http://www.chkrootkit.org/ 에서 다운 받을 수 있다.

[root@ancigo chkrootkit-0.45]# ./chkrootkit


infected : 루트킷으로 변형되었음


not infected : 어떤 루트킷의 증후를 발견하지 못했다.


Not tested : 점검이 수행되지 못했다.


Not found : 점검한 command가 없을 때


20. rkhunter 설치


rkhunter는 백도어나 루트킷을 탐지하며 일반적으로 루트킷이 사용하는 파일 및

숨김 파일의 존재여부를 판별해준다.

실행시 관리자에게 각 파트별로 체크사항을 보여주는 리포트기능이 뛰어나며

SOLARIS를 제외한 대부분의 UNIX 를 지원한다. 업데이트 또한 빠르다


http://downloads.rootkit.nl/rkhunter-1.2.7.tar.gz

tar zxf rkhunter-1.2.7.tar.gz

cd rkhunter

./installer.sh -- 설치방법

rkhunter --update -- update 방법

rkhunter -c


옵션

-c : --checkall 옵션

-sk : --skip-keypress 결과 리포트중에 확인 키입력을 받지 않는다.

--update : 업데이트

--createlogfile : /var/log/rkhunter.log 에 로그를 남긴다.

--cronjob : 크론탭 모드로 동작한다.

--report-warnings-only : 문제가 되는 사항만 출력한다.



21. rkhunter등에서 무결성등에 문제가 있다면 rpm -Va 로 전체 패키지에 대한

무결성을 점검한다. 무결성에 문제가 있어 실제로 ps 등에서 백도어의 존재를 숨겨지게 됨


22. 거의 대부분의 해킹이 웹상에서 이루어 지는 경우가 많으므로 nobody권한의 프로세스를

눈여겨보고, lsof 로 해당프로세스의 파일오픈여부를 확인하여 정상적인 서비스인지 판별한다


23. 만약 해킹점검중 해커로 의심되는 사용자가 로그인되어 있다면 접속하고 있는지 모르는척

해야한다. 그렇지 않다면 흥미를 잃고 모든 자료를 지우고, 가버릴수 있다

따라서 침착하게 점검하고, 조치가 가능하다면 빠르게 취약점을 확실히 없앤후에

해커의 shell kill 하는것이 좋다