서버종합점검[리눅스]

by ADMINPLAY posted May 28, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

서버점검사항

1. SUID 점검하기.(root 소유의 SetUID및 SetGID 파일들 점검)


# find / -user root -perm -4000 -ls          (SetUID)
# find / -user root -perm -2000 -print       (SetGID)

 

2. 사용량 점검

# repquota -av -ag
# df -h


3. 백도어 설치여부 점검.(/dev 체크 및 rootkit 점검)

# find /dev -type f -ls
# ./chkrootkit  -> http://www.chkrootkit.org/ 


4. 현재 열려진 포트 및 응답가능한 포트 점검.

# netstat -atp | grep LISTEN
# netstat -an | grep LISTEN

        사용 프로토콜 : TCP인가? 또는 UDP인가?
        사용중인 포트번호
        서버와 연결된 IP 및 도메인명
        생성 PID
        서비스중인 프로세스명
        현재 응답가능상태인가?

# lsof | grep LISTEN

        (현재 서비스 중인 프로세스명(데몬명)
        현재 생성중인 PID번호.
        현재 서비스중인 프로세스의 소유자
        프로토콜 버전 : Ipv4 또는 Ipv6
        TCP 또는 UDP의 여부
        응답가능 상태인가?


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

# pstree
# top -d2
# free -m
# cat /proc/meminfo  
(free 와 top 는 이 파일을 참조하여 보여준다.)


6. 스팸메일 점검.(메일큐 디렉토리 점검)

# /var/spool/mqueue    (동일한 날짜, 동일한 사이즈를 가진 다수 파일구분)


7. Core 점검. : 서버내에 긴급한 이상이 발생하였을 경우나 시스템의 정확한 분석을 위해 서버의 메모리 상태를 순간적으로 dump 받는 경우의 파일

# find / -name core -ls
# find / -name core -exec ls -l {} \;


8. 서버 접속자 점검.최후접속기록 점검.

# vi /var/log/secure
# last -n 10  최근 10번째까지의 접속기록을 확인.
# lastlog

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

       서버에 접속을 했는가를 확인.
       Mail, adm, bin 등의 계정들은 모두 "** Never logged in **" 이라고 되어 있는것이 정상.

# w         (telnet)
# ftpwho        (ftp)


9. root명령어 사용기록 점검.

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


10. 계정별 사용명령어파일 점검.

# find / -name .bash_history -exec ls -l {} \;    (각 계정별 .bash_history 파일의 존재여부)
# find / -name .bash_history -exec cat {} \;     (파일의 내용까지 모두 확인해 볼 수 있음)


11. root소유자 점검(UID와 GID가 0인 사용자 점검)

# cat /etc/passwd | grep 0:0


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

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


13. su 명령어를 이용한 root권한 사용자 점검. : su 명령어의 사용내역을 확인할 수 있음.

# cat /var/log/messages | grep root


14. 최근 n 일전 변경된 파일 점검. (단위는 일)

# find / -ctime -1 -ls | less


15. find 를 이용한 특정파일 점검하기.


.exec 파일찾기
# find / -name '.exec' -exec cat {} \; -print


.forward 파일체크
# find / -name '.forward' -exec cat {} \; -print


write 퍼미션이 있는 파일(디렉토리)찾기
# find / -type f  \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;
# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;


SteUID SetGID 체크하기
# find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \;


/dev 체크
# find /dev -type f -exec ls -l {} \;


소유자없는 파일 및 디렉토리 찾기
# find / -nouser -o -nogroup -ls


원격리모트 접속허용 파일(.rhosts)찾기
# find / -name .rhosts -ls


최근 변경된 파일들 찾기.(파일or디렉토리) 단위는 일
# find / -ctime -20 -type f or d


16 ping 을 이용한 DOS 공격 막는 방법.

# vi  /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1

# sysctl -w
# /etc/rc.d/init.d/network restart
# sysctl -a | grep ignore_broadcasts


17. Nmap를 이용 포트스켄 하여 해킹가능성 체크.

# nmap -sS -p80 211.42.48.110 -O -v www.armian.net
# nmap -sS -O -v 211.42.48.114


18. chmod 400 /etc/shadow 점검 (패스워드파일)

19. umask 값 확인하기.

# umask
root의 umask 값 확인하기.
022 -->파일은 644 디렉토리는 755로 생성됨.
027 -->파일은 640 디렉토리는 750로 생성됨.


20. utmp, wtmp, lastlog 파일

 

utmp파일 : 현재시스템에 접속해 있는 사용자의 정보를 가지고 있음.

# strings utmp | more

정보 이용 명령어 : login(1), who(1), init(8), last(8), lastcomm(8)

 

wtmp파일 : 처음부터 접속했던 모든 사용자의 로그인정보와 로그아웃정보를 가지고 있음.

# strings wtmp | more

정보 이용 명령어 : login(1), who(1), init(8), last(8), lastcomm(8)


lastlog 파일 : 가장 최근에 로그인한 정보를 저장함.

# last


21. 중요 관리자용명령어 점검.

아래의 명령어들을 퍼미션을 100으로 설정한다. 변경 후 퍼미션 변경여부를 확인.

# chmod 100 /usr/bin/top
# chmod 100 /usr/bin/pstree
# chmod 100 /usr/bin/w
# chmod 100 /bin/ps
# chmod 100 /usr/bin/who
# chmod 100 /usr/bin/find
# chmod 100 /bin/df
# chmod 100 /bin/netstat
# chmod 100 /sbin/ifconfig
# chmod 100 /usr/sbin/lsof
# chmod 100 /usr/bin/make
# chmod 100 /usr/bin/gcc
# chmod 100 /usr/bin/g++
# chmod 100 /usr/bin/c++


22. 중요한 파일퍼미션과 소유권 제한 및 점검.

# chmod 644 /etc/service
# chmod 600 /etc/xinetd
# chmod 644 /etc/mail/aliases
# chmod 600 /etc/httpd/conf/httpd.conf
# chmod 644 /var/log/wtmp
# chmod 644 /var/run/utmp
# chmod 644 /etc/motd
# chmod 644 /etc/mtab
# chmod 600 /etc/syslog.conf

/etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin

# chmod 1777 /tmp
# chmod 1777 /var/tmp



23. 일반사용자의 명령어 패스

/usr/local/bin:usr/local/mysql/bin:/home/hosting/bin/
일반사용자가 사용가능한 명령어를 모두 이것에 둠.


24. 관리자의 명령어 패스

:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/usr/kerberos/bin:/root/bin


25. 시스템 기본로그파일.

/var/log/messages
/var/log/secure
/var/log/wtmp
/var/run/utmp
/var/log/lastlog


26. PortSentry를 이용한 실시간 해킹방어 구현.(잘못 사용할시 서버접속 안됨)

tar -xvzf portsentry-1.1.tar.gz
make linux
make install

/usr/local/psionic/portsentry/portsentry -tcp
/usr/local/psionic/portsentry/portsentry -udp
/usr/local/psionic/portsentry/portsentry -stcp
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -stdp

vi /etc/hosts.deny 점검.


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

# /etc/xinetd.d/    (xinetd로 서비스되는 인터넷서비스 파일들이 존재하는 디렉토리)
# /etc/rc.d/           (부팅에 관계된 파일) (파일들을 복사 후 파일용량등을 비교하기) (커널패닉의원인)
# /etc/rc.d/init.d/ (부팅시에 특정 서비스나 데몬들을 시작시키는 스키립트 파일)