'보안'에 해당되는 글 4건

netstat만 알아도 보안의 50%는 한 것이다.  -  Windows XP  2010. 10. 24. 15:35

공유하기

자신의 컴퓨터와 연결되었거나 연결될 목록을 프로토콜과 함께 보여주는 명령어
유닉스나 윈도우에는 사용자 컴퓨터의 네트워크의 상태를 알려주는 netstat라는 명령어가 있다. 즉 어떤 포트가 열려 있고 어떻게 사용되고 있는지 모두 알 수가 있고 이 명령어를 잘 활용하면 맨손으로도 해킹을 감지해 낼 수 있다. 


1. netstat로 알아보는 내 컴퓨터의 포트 상태 

c:>netstat 
Proto    Local Address    Foreign Address    State 
TCP     acy7807:1023       211.233.45.89:80     ESTABLISHED 

Proto : 현재 사용한 프로토콜 
Local Address : 현재 열려 있는 사용자 컴퓨터의 IP/호스트 네임과 사용 중인 포트 
Foreign Address : 현재 사용자의 컴퓨터에 접속되어 있는 IP/호스트 네임과 사용 중인 포트 
State : 연결 상태를 나타내는 것 
  - ESTABLISHED : 현재 연결되어 있다는 뜻 
  - LISTENING : 연결을 위하여 접속을 기다리는 상태 
  - TIME_WAIT : 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태 
  - SYN_SENT : 접속하기 위해 패킷을 보냈다는 뜻 

2. netstat 옵션 배우기 

c:>netstat ? 

netstat -a : 연결된 혹은 연결을 기다리고 있는 모든 포트를 보여준다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었거나 연결을 기다리는 목록을 모두 보여준다.

netstat -n : 통상 연결 목록에 컴퓨터 이름이 나오는데, -n 옵션을 주면 컴퓨터 이름 대신 ip 주소가 표시된다.

netstat -an or -na : 컴퓨터와 연결되었던 혹은 연결을 기다리는 목록을 ip 주소로 바꾸어서 보여준다.

netstat -r : 라우팅 테이블 확인 및 연결되어 있는 포트 번호를 확인한다. 컴퓨터 이름 및 도메인 이름으로 화면 출력한다.

netstat -e : 랜카드에서 송수신한 패킷의 용량 및 종류를 확인한다.

netstat -s : IP, ICMP, TCP, UDP 프로토콜의 상태를 확인한다.

이제 netstat 명령을 알았으니 가끔씩 실행시켜주면 된다. netstat 명령으로 검색했을 때 알 수 없는 포트가 있거나, 포트 중에 31337, 12345, 54321과 같이 트로이 목마가 사용하는 포트가 하나 열려 있거나 열려진 포트로 특정 IP가 접속해 있다면 이는 십중팔구 해킹인 것이다.

Share to Facebook Share to Twitter Share to MySpace 다음구독 한rss구독

리눅스보안 - 필수 보안 조치법  -  리눅스  2010. 10. 20. 15:16

공유하기


리눅스보안 - 필수 보안 조치법

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

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

2. 파티션별 디스크사용량 점검
    df -h

3. 파일무결성 점검.

    http://weblog.websea.co.kr/tripwire/tripwire

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

    find /dev -type f -exec ls -l {} ;
    ./chkrootkit
    
5. 현재 열려진 포트 및 응답가능한 포트 점검.

    netstat -atp | grep LISTEN (사용 프로토콜 : TCP인가? 또는 UDP인가?
           사용중인 포트번호
           서버와 연결된 IP 및 도메인명
           생성 PID
           서비스중인 프로세스명
           현재 응답가능상태인가?
    lsof | grep LISTEN(현재 서비스 중인 프로세스명(데몬명)
               현재 생성중인 PID번호.
           현재 서비스중인 프로세스의 소유자
           프로토콜 버전 : Ipv4 또는 Ipv6
           TCP 또는 UDP의 여부
           응답가능 상태인가?

6. 실생중인 프로세스 및 데몬점검.(프로세스의 생성관계)

    pstree

7. 시스템 운용상황 점검.

   top -d2

8. 백업점검.

   /home2/backup/nexfor/
   /home2/backup/websea/

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

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

10. Core 점검.

서버내에 긴급한 이상이 발생하였을 경우나 시스템의 정확한 분석을 위해
서버의 메모리 상태를 순간적으로 dump 받는 경우의 파일
  find / -name core -exec ls -l {} ;
  
11. 파일용량 점검

repquota -av -ag
df -h

12. 최근 서버 접속자 점검.

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

13. 계정별 최후접속기록 점검.

           lastlog는 현재 /etc/passwd에 존재하는 모든 계정을 대상으로 하
여 언제 마지막으로
           서버에 접속을 했는가를 확인.
           Mail, adm, bin 등의 계정들은 모두 "** Never logged in **" 이라
고 되어 있는것이 정상.

  lastlog

14. 현재 서버접속자 보기

   w (telnet)
   ftpwho(ftp)

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

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

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

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

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

           cat /etc/passwd | grep 0:0

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

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

19. .rhosts 파일 점검

           원격에서 패스워드등의 확인과정없이 바로 접속하기 위해서 사용되는 파일
           
           find / -name .rhosts -exec ls -l {} ;
           find / -name .rhosts -exec cat {} ;

20. 메모리사용량 점검.

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

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. su 명령어를 이용한 root권한 사용자 점검.

           su 명령어의 사용내역을 확인할 수 있음.

           cat /var/log/messages | grep root

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

           find / -ctime -1 -print | more

24. http://weblog.websea.co.kr/

25. 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 -print

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

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

           현재 서버에서 열려진 포트 및 접근저보 점검

           netstat -an | grep LISTEN   (포트들과 열결되어 있는 실행데몬들을 확인)
           lsof | grep LISTEN   (좀 더 자세히 확인)

26. 관리자용 명령어 퍼미션 수정하기.

           chmod 100 /usr/bin/top
           chmod 100 /usrbin/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++

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

           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
           
28. umask 값 확인하기.

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

29. /dev 에 device 파일 이외의 것이 존재하고 있는지 확인.

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

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

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

31. 관리자의 명령어 패스

           :/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin

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

32. 특정 그룹만의 su 사용권한 허용하기

           vi /etc/group  (wheel구릅에 su 사용권한을 가질 유저 추가하기)
           wheel:x:10:root,cream

           vi /etc/pam.d/su (두줄 추가하기)

           auth            sufficient            /lib/security/pam_rootok.so
           auth            required                        /lib/security/pam_wheel.so allow group=wheel

           vi /var/log/message 에서 확인

33. chmod 400 /etc/shadow

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

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

35. 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 라는 명령어로 확인할 수 있음.

36.  패스워드 유출대처방안(웹)

           perl을 이용한 방법.


   AllowOverride FileInfo AuthConfig Limit
   Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
   Options Indexes SymLinksIfOwnerMatch IncludesNoExec
   
       Order allow,deny
       Allow from all
   
   
       Order deny,allow
       Deny from all
   


           SSI의 exec 명령어를 이용하는 방법

#    AddType text/html .shtml
#    AddHandler server-parsed .shtml

27. 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 점검.

28. Chkrootkit 로 백도어 점검.

           tar -xvzf chkrootkit.tar.gz
           make sense
           ./chkrootkit     (점검명령어)

29 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

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

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


출처 : [기타] 인터넷 : IT네트워크정보보안교육센터

 

'리눅스' 카테고리의 다른 글

젠드옵티마이저(ZendOptimizer) 설치 안될때  (0) 2010.10.22
리눅스 - openssl 설치하기  (0) 2010.10.21
리눅스 웹서버에서 mod_url.c 설치방법  (0) 2010.10.20
MRTG 설정하기  (0) 2010.10.19
리눅스 명령어  (2) 2010.10.18

Share to Facebook Share to Twitter Share to MySpace 다음구독 한rss구독

특정IP를 차단 iptables  -  리눅스  2010. 10. 10. 15:50

공유하기


# 특정 IP를 차단하려면
iptables -A INPUT -s x.x.x.x -j DROP 을 실행하시면 되고 

# 특정 IP의 차단을 해제하려면 
iptables -D INPUT -s x.x.x.x. -j DROP 을 실행하시면 됩니다.

만약 이전에 iptables 룰이 있었다면 추가시 
-A 대신 Inser의 의미인 -I 를 실행

내용보기
#iptables -L

iptables -A INPUT -s 차단IP주소 -j DROP

저장
service iptables save 

차단 내용확인 
iptables -L 

삭제 
iptables -D INPUT 3 

모두삭제 
iptables -F 



'리눅스' 카테고리의 다른 글

리눅스 명령어 CP  (0) 2010.10.17
SELinux 설정변경  (0) 2010.10.10
mod_evasive의 설치  (0) 2010.10.04
e2label 명령으로 label 변경  (0) 2010.10.04
rkhunter  (0) 2010.10.04

Share to Facebook Share to Twitter Share to MySpace 다음구독 한rss구독

rkhunter  -  리눅스  2010. 10. 4. 07:33

공유하기

다운로드 http://downloads.sourceforge.net/rkhunter/rkhunter-1.3.4.tar.gz

압축 해제 후, 설치
# ./installer.sh --layout /usr/local --install

rkhunter Data 업데이트
# /usr/local/bin/rkhunter --update
# /usr/local/bin/rkhunter --propupd

# 환경 설정
# vi /etc/rkhunter.conf
=> 아래라인 주석 해제 후, 결과 또는 경고 메일 주소 수정
MAIL-ON-WARNING=me@mydomain   root@mydomain

체크 방법
# /usr/local/bin/rkhunter --checkall (또는 -c)

'리눅스' 카테고리의 다른 글

리눅스 명령어 CP  (0) 2010.10.17
SELinux 설정변경  (0) 2010.10.10
특정IP를 차단 iptables  (0) 2010.10.10
mod_evasive의 설치  (0) 2010.10.04
e2label 명령으로 label 변경  (0) 2010.10.04

Share to Facebook Share to Twitter Share to MySpace 다음구독 한rss구독