본문 바로가기

OS

[Linux] 보안점검

출처 : http://blog.daum.net/all_m_f/11260607

1. 보안 점검

1) find /dev -type -f -exec ls -l {}\;

-f 는 일반 파일을 뜻함

/dev 밑에 디렉토리에 일반 파일이 있다면 의심을 해 봐야 함

2) /etc/passwd 에서 uid 가 0 설정된 부분과 기타 낮설은 계정을 체크
/etc/shadow 점검

3) 텔넷과 FTP를 사용하는 사용자가 있는지에 대한 여부를 체크한다.
telnet 사용중일때 명령어 :w
ftp 사용중일때 명령어 : ftpwho

4) 열려있는 수상한 포트 확인
ps -ef 혹은 netstat -na |grep LISTEN 확인
nmap -sS -O -V <IP주소> 명령어로 확인
nmap -sS -p80 <IP주소> -O -v www.hackerscollege.com
lsof | grep LISTEN

5) /root/.bash_history 체크
체크방법 (줄수가 800줄 이상)
cat /root/.bash_history |wc -l

6) 각 계정별로 사용한 명령어 기록 체크
find / -name .bash_history -exec ls -al{}\;
find / -name .bash_history -exec cat{}\;

7) 공격 징후를 체크 한다.
파일 위치 : /var/log/messages
파일 보기 : more /var/log/messages

8) 현재 접속하고 있는 사용자에 대한 정보를 모두 체크 한다
/var/run/utmp
strings utmp | more

9) 접속했던 사용자에 대한 정보를 모두 체크
/var/log/wtmp

10) 가장 최근에 로그인한 사용자에 대한 정보 체크
/var/log/lastlog
파일보기 : last

11) 루트 권한 가진 사용자들을 모두 체크
cat /etc/passwd |grep 0:0

12) su 명령어 사용한 모든 사용자를 체크
cat /var/log/messages |grep root

13) 보안 사용자에 관한 인증을 체크(/var/log/secure)
cat /var/log/secure

14) 웹서버에 접근했거나 에러를 유발한 사용자 체크
var/log/httpd
파일보기 : more /var/log/httpd/access_log
more /var/log/httpd/error_log

15) tmp 디렉토리에 수상한 프로세스가 있는지를 체크한다.
ls -asl /tmp

16) pstree 명령어로 데몬 체크

17) 파일의 무결성 여부를 체크
http://weblog/websea.co.kr/tripwrite/tripwire

18) lsattr 명령어를 사용하여 속성 변경여부 체크
/usr/bin/lsattr /bin
/usr/bin/lsattr /sbin
/usr/bin/lsattr /usr/bin
/usr/bin/lsattr /usr/sbin

----l------- /bin/ls <-- 변조

19) 패키지 변조 여부 체크
rpm -Va apache
rpm -V apache

결과)
S,5....T /bin/ls
5 = MD5 쳇섬
S = 파일 크기
L = 심볼릭
T = 최신 갱신 일시(MTIME)
D = 장치
U = 사용자
G = 그룹
M = 허가모드(허가권과 파일 유형)

20) 실행 파일 변조 여부를 체크 한다
cd /bin/
ls -alct |more
netstat -alct |more
ps -alct |more
strace -e trace=open ps
strace -e trace=open ls

21) setuid setgid 파일 체크
find / -user root -perm -4000 -print > suidlist
find / -user root -perm -2000 -print > sgidlist
find / -user root -perm -4000 -xdev

22) setuid 나 setgid 막기
chmod a-s <?아낸파일명>

23) 숨겨진 파일 체크
find / -name "..*" -print

24) 스팸메일 여부 체크(메일큐)
var/spool/mqueue

25) 비밀번호없이 원격 접속하기 위한 .rhosts 파일 체크
find / -name .rhost -exec ls -al {}\;
find / -name .rhost -exec cat {}\;

26) 소유자가 없는 파일과 디렉토리를 체크 한다.
find / -nouser -o -nogroup -print

26) 최근 10일 동안 변경된 파일이나 디렉토리 체크
find / -ctime -10 -type f or d

27) 코어를 체크 한다
find / -name core -exec ls -al {}\;

28) 커널패닉의 원인이 되는 부팅과 관계되는 디렉토리를 체크 한다.
ls -asl /etc/rc.d/

29) 인터넷 서비스 파일이 있는 xini 디렉토리를 체크
ls -asl /etc/xinetd.d/

30) 파일의 용량을 체크 한다
repquota -av -ag

31) 파티션별로 사용된 디스크 용량 체크
df -h

32) free 와 top 가 참조하는 /proc/meminfo 를 이용하여 메모리 용량 체크
cat /proc/meminfo
top -d2
free -m

33) chmod 700 체크
조사하고 가져오지 못하게!!
화투치게 수퍼 어디리
/usr/bin/find
/usr/bin/top
/usr/bin/cc
/usr/bin/wget
/usr/bin/suidperl
/usr/bin/sperl5.00503
/usr/bin/whereis
/usr/bin/ftoplynx

34) chmod 700 체크
보지 못하게
/usr/bin/finger
/usr/bin/nslookup

35) chmod 700 체크
컴파일 못하게
/usr/bin/make
/usr/bin/gcc
/usr/c++

36) chmod 700 체크
따샤 누가 어떤걸 알려고 하거나 알려면 피터지고 메일 뿌사지고 호되게 살어 알어?
/usr/bin/w
/usr/bin/who
/usr/bin/which
/usr/bin/rlog
/usr/bin/rlogin
/usr/bin/pstree
/usr/bin/mail
/usr/bin/ps
/usr/bin/hosts
/usr/bin/hosts.deny
/usr/bin/hosts.allow

37) 핑과 핑을 이용한 도스 공격 방어하기
차단하기
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
해제하기
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

38) 핑(ping) 과 핑을 이용한 도스 공격을 방어한다.
핑 도스 공격 차단하기
vi /etc/sysctl.conf
net.ipv4.icmp_echo_igonore_broadcasts =1
sysctl -w
/etc/rc.d/init.d/network restart
sysctl -a | grep igonore_broadcasts

39) ssh를 이용하여 root로의 원격 접속을 금지
/etc/ssh/sshd_config
PermitRootLogin no

40) FTP를 이용하여 Root 로의 원격 접속을 금지
/etc/proftpd.conf
RootLogin off

41) 부팅시 실행되는 서비스를 체크
사용파일 chkconfig
파일 위치 :/sbin
리스트 보기
chkconfig --list
도움말 보기
chkconfig --help

42) 부팅시 실행되는 서비스를 체크한다.
atd 서비스 끄기
chkconfig --level 3 atd off
- 위의 예제에서 레벨3을 사용하는 이유는 부팅은 레벨3 모드로 진행되기 때문

chkconfig --list
서비스별 켬과 끔이 나옴
필수적으로 켜놓아야 할 파일들
-keytable, inet, network,random, kudzu,sendmail,syslog,crond,proftpd