Operating System/Linux2007/05/10 21:15

보안점검명령어들을 설명드리기 전에 먼저 말씀드릴 것이 있습니다.

서버설치후에는 즉시 반드시 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]#

Creative Commons License
Posted by BLUEDAY™