시스템 보안점검 명령어들

by 조쉬 posted Jul 08, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

서버설치후에는 즉시 반드시 tripwire등의 파일무결성 검사툴등을 설치하여 주기적으로 시스템에 변경된 내용들(파일)이 있나 없나를 체크하셔야 한다는 것입니다.

이 작업은 최소한 자기가 변경하지 않은 파일들이 어떤 것들이 있나를 확인하기위한 최소한의 장치가 될 수 있습니다.

 

다음의 명령어는 시스템에 특정한 퍼미션이나 특정한 이름을 가진 파일들을 찾는 find명령어에 관한 것이다.

일반적으로 이런 명령어들은 보안사이트에 그 방법들이 많이 나열되어 있다.

 

1. .exec 파일 찾기

#find / -name '.exec' -exec cat {} \; -print

1.gif


 

 

2. .forward 파일체크

#find / -name '.forward' -exec cat {} \; -print

2.gif


 

이 명령어는 .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 {} \;

3.gif


 

7. 주인없는 파일 및 디렉토리 찾기

주인이 없거나 그룹에 소속되어 있지 않은 파일들은 한번쯤 점검을 해봐야할 것입니다.

4.gif


 

8. 원격리모트 접속허용 파일(.rhosts)

[root@www /root]# find /home -name .rhosts -print

5.gif


 

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]#