서버설치후에는 즉시 반드시 tripwire등의 파일무결성 검사툴등을 설치하여 주기적으로 시스템에 변경된 내용들(파일)이 있나 없나를 체크하셔야 한다는 것입니다.
이 작업은 최소한 자기가 변경하지 않은 파일들이 어떤 것들이 있나를 확인하기위한 최소한의 장치가 될 수 있습니다.
다음의 명령어는 시스템에 특정한 퍼미션이나 특정한 이름을 가진 파일들을 찾는 find명령어에 관한 것이다.
일반적으로 이런 명령어들은 보안사이트에 그 방법들이 많이 나열되어 있다.
1. .exec 파일 찾기
#find / -name '.exec' -exec cat {} \; -print
2. .forward 파일체크
#find / -name '.forward' -exec cat {} \; -print
이 명령어는 .forward파일을 찾는 것으로 .forward파일은 메일포워딩을 해주는 파일이다. 즉, 특정한 주소에 도착한 메일을 이 파일에 지정된 메일주소로 자동으로 전송(포워딩)해주는 역할을 하는 것이다.
주로 시스템관리자나 몇 개이상의 메일주소를 가진 사람들이 사용하는 것입니다.
시스템관리자의 경우에는 많은 메일주소를 하나의 메일로 받아보기위해 사용하는 경우도 있지만, 시스템에서 생성되는 로그파일이나 cron의 결과등을 자동으로 메일로 받아보기 위해 사용하는 경우도 많습니다.
헌데, 이 파일은 한번 설정해 두고 나면 좀체 점검하는 일이 드문 경우가 많기 때문에 주기적으로 점검을 해보아야합니다 .
또한 해킹을 당했을 경우에는 특정 ID(특히 관리자 ID)의 메일을 다른곳으로 포워딩해 놓는 경우가 많습니다.
이 파일을 위와 같은 방법으로 주기적으로 점검하여 만들지 않았던 .forward파일이 생성되어 있지 않나를 점검해 보셔야합니다.
[root@superuser .log]# find / -name '.forward' -exec cat {} \; -print
king@kingkong.net
/home/six/.forward
king@kingkong.net
/home/sspark/.forward
king@kingkong.net
/home/soho/.forward
king@kingkong.net
/home/abc/.forward
king@kingkong.net
3. /tmp파일의 퍼미션과오너 수정하기
#/bin/chown root /tmp
#/bin/chgrp 0 /tmp
#/bin/chmod 1777 /tmp
/tmp 디렉토리는 임시파일을 저장하는 디렉토리로서 일반사용자들이 자기의 소유로된 파일을 저장하고 자기가 만든 파일은 root와 자기자신만이 삭제할 수 있도록 설정되어야할 디렉토리입니다.
그렇게 하기위해서는 이 디렉토리에 sticky-bit가 설정되어 있어야하며 소유권은 root가 가져야하고 group또한 root로 되어있어야합니다.
위의 명령어는 이들을 설정하는 것입니다.
아래의 예는 /tmp 디렉토리의 설정예입니다.
drwxrwxrwt 6 root root 2048 Oct 27 04:02 tmp/
4. write퍼미션이 있는 파일(디렉토리)찾기
#find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;
사실, 이 명령어를 실행시키면 결과가 너무 많아 실행예는 생략합니다.
#find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;
사실, 이 명령어를 실행시키면 결과가 너무 많아 실행예는 생략합니다.
5. SetUID SetGID 체크하기
[root@www /root]# find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \;
find: /proc/7176/fd/4: No such file or directory
-rwsr-xr-x 1 root root 14628 Oct 8 1999 /bin/su
-rwsr-xr-x 1 root root 53652 Jan 19 2000 /bin/mount
-rwsr-xr-x 1 root root 26732 Jan 19 2000 /bin/umount
-rwsr-xr-x 1 root root 14900 Oct 8 1999 /bin/ping
-rwxr-sr-x 1 root root 3860 Mar 7 16:52 /sbin/netreport
-r-sr-xr-x 1 root root 16088 Jan 19 2000 /sbin/pwdb_chkpwd
-rwsr-xr-x 1 root root 11604 Mar 6 11:40 /sbin/cardctl
-rws--x--x 1 root root 6260 Mar 9 23:17 /usr/X11R6/bin/Xwrapper
-rwsr-xr-x 1 root root 5089 Jan 19 2000 /usr/bin/disable-paste
-rwsr-xr-x 1 root root 21816 Oct 8 1999 /usr/bin/crontab
-rwsr-xr-x 1 root root 35168 Jan 19 2000 /usr/bin/chage
-rwsr-xr-x 1 root root 36756 Jan 19 2000 /usr/bin/gpasswd
-rwsr-x--- 1 root floppy 17428 Aug 23 1999 /usr/bin/fdmount
-rwxr-sr-x 1 root mail 11127 Jul 8 11:14 /usr/bin/mutt_dotlock
-rws--x--x 1 root root 14056 Jan 19 2000 /usr/bin/chfn
-rws--x--x 1 root root 13800 Jan 19 2000 /usr/bin/chsh
-rws--x--x 1 root root 5640 Jan 19 2000 /usr/bin/newgrp
-rwxr-sr-x 1 root tty 8328 Jan 19 2000 /usr/bin/write
-r-sr-sr-x 1 root lp 15816 Jan 19 2000 /usr/bin/lpq
-r-sr-sr-x 1 root lp 15768 Jan 19 2000 /usr/bin/lpr
-r-sr-sr-x 1 root lp 16216 Jan 19 2000 /usr/bin/lprm
-rwxr-sr-x 1 root man 34688 Oct 8 1999 /usr/bin/man
-rwsr-xr-x 1 root root 203432 Feb 14 2000 /usr/bin/ssh
-r-sr-xr-x 1 root root 22376 Jan 19 2000 /usr/bin/passwd
-rws--x--x 2 root root 531612 Oct 8 1999 /usr/bin/suidperl
-rws--x--x 2 root root 531612 Oct 8 1999 /usr/bin/sperl5.00503
-rwsr-xr-x 1 root root 247176 Feb 10 2000 /usr/bin/smbmount
-rwsr-xr-x 1 root root 239656 Feb 10 2000 /usr/bin/smbumount
-rwxr-sr-x 1 root slocate 24616 Jan 19 2000 /usr/bin/slocate
---s--x--x 1 root root 454760 Feb 3 2000 /usr/bin/sudo
-r-xr-sr-x 1 root tty 6788 Oct 8 1999 /usr/bin/wall
-rwsr-xr-x 1 root root 5896 Mar 7 16:52 /usr/sbin/usernetctl
-rwsr-xr-x 1 root root 8608 Jan 19 2000 /usr/sbin/utempter
-rwxr-sr-x 1 root lp 24136 Jan 19 2000 /usr/sbin/lpc
-rwsr-sr-x 1 root root 323108 Mar 9 14:42 /usr/sbin/sendmail
-rwsr-xr-x 1 root bin 16456 Oct 8 1999 /usr/sbin/traceroute
-rwsr-xr-x 1 root root 364444 Feb 18 2000 /usr/kde/bin/kppp
-rwxr-sr-x 1 root root 74276 Jan 31 2000 /usr/kde/bin/kdesud
-r-sr-xr-x 1 root root 59972 Mar 25 15:35 /usr/kde/bin/kpwcfg
-rwsr-xr-x 1 root root 37896 Jan 20 2000 /usr/kde/bin/zzplayer
[root@www /root]#
6. /dev 체크
[root@www /root]# find /dev -type f -exec ls -l {} \;
7. 주인없는 파일 및 디렉토리 찾기
주인이 없거나 그룹에 소속되어 있지 않은 파일들은 한번쯤 점검을 해봐야할 것입니다.
8. 원격리모트 접속허용 파일(.rhosts)
[root@www /root]# find /home -name .rhosts -print
9. 최근에 변경된 파일들 찾아보기
find 명령어의 ctime n옵션을 사용합니다.
여기서 n은 n*24 처럼, 변경된 며칠전(n)에 변경된 파일들을 모두 찾는 것입니다.
[root@kebia_1 sspark]# find / -ctime -20 -type f
/home/sspark/.bashrc
/home/sspark/.bash_history
/home/sspark/BACKUP/etc.tar.gz
........
10. 현재 서버에서 열려진 포트들 확인하기
[root@kebia_1 sspark]# netstat -an | grep LISTEN
tcp 0 0 0.0.0.0:25 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:23 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:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
[root@kebia_1 sspark]#
위와 같이 열려진 포트가 있음을 확인한 후에 다음과 같이 이 포트들과 연결되어 있는 실행데몬(daemon)들을 확인합니다.
11. 포트들과 연결된 실행데몬(daemon)확인하기
[root@kebia_1 sspark]# lsof | grep LISTEN
named 500 root 21u IPv4 92449 TCP kebia_1:domain (LISTEN)
sshd 729 root 3u IPv4 565 TCP *:ssh (LISTEN)
mysqld 2197 root 3u IPv4 50951 TCP *:mysql (LISTEN)
xinetd 9895 root 3u IPv4 39302 TCP *:ftp (LISTEN)
xinetd 9895 root 4u IPv4 39303 TCP *:pop3 (LISTEN)
xinetd 9895 root 5u IPv4 39304 TCP *:telnet (LISTEN)
sendmail 22443 root 4u IPv4 3422222 TCP *:smtp (LISTEN)
httpd 23262 root 16u IPv4 30835 TCP *:www (LISTEN)
[root@kebia_1 sspark]#