블로그 이미지
예진이와 고고씽!! 괴스트

카테고리

분류 전체보기 (385)
Yejin (247)
Life (44)
Dev (62)
Etc (28)
Total63,965
Today136
Yesterday177

달력

« » 2010.08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

크리에이티브 커먼즈 라이선스
Creative Commons License

777 퍼미션 파일을 찾기
find  /home/daara/ -perm 777 -print | xargs ls -al | more



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
저작자 표시
Posted by 예진이네집 괴스트
크리에이티브 커먼즈 라이선스
Creative Commons License

작업을 하다보면 php의 ftp_connect, ftp_login 을 이용해서 파일을 원격서버에 저장 및 삭제할 경우가 종종있다.

이럴때 서버셋팅에 의해서 느린경우가 발생하는데 이 경우에는 방화벽 등등의 설정때문일수도 있지만,

최우선적으로 체크 해봐야 할것은

/etc/hosts 파일에 상대방의 서버가 등록되어있는지를 확인 해 봐야한다.

#> cat /etc/hosts

127.0.0.1 localhost.localdomain   localhost
222.222.222.1        lux1.domain.com              lux1
222.222.222.2        lux2.domain.com               lux2
222.222.222.3        lux3.domain.com               lux3
222.222.222.4        lux4.domain.com               lux4
222.222.222.5        lux5.domain.com               lux5


위와같이 등록 해 주어야 ftp, ssh 의 접속속도가 빨라진다.


예를들어 1번 서버에서 PHP의 upload.php 소스상에 ftp_connect 를 실행하여  2번 서버에 파일을 올릴때 무지하게 느리다면 위와같이 해 보면 해결할 수 있다.

이는 hosts 파일에서 최우선적으로 접속해야 할 호스트를 찾기 때문이다.

단) ssh2를 이용하여 22번 포트를 사용한다면 다른방법을 찾아봐야한다. 블로그를 검색 해 보면 나온다.



저작자 표시
Posted by 예진이네집 괴스트
크리에이티브 커먼즈 라이선스
Creative Commons License

ns-2 시뮬레이션을 위해 기존에 사용하던 ns-2를 받았는데 부분적으로 하드코딩된 부분이 있어서 실행하는데 좀 애를 먹었다. 이를 해결하기 위해 심볼릭링크를 사용하였는데 매우 유용한것 같아서 이번에 사용법을 적어두려 한다. 'ln' 명령어를 사용하여 심볼릭링크를 만드는데, 'ln'에 많은 기능이 있겠지만 이번에는 이 기능만 사용하고 다음에 따로 공부해서 나머지 숨겨진 기능도 사용해야겠다.

$ln -s [existing file/directory name: OLD] [new file/directory name: NEW]
$ln -s 기존에_있는_파일_또는_디렉토리 새로만들_링크의_이름

-s : make this as a symbolic link


이미 존재하는 OLD라는 파일/디렉토리를 NEW라는 이름을 통해 접근할 수 있도록 하는 것이다.
특히 접근하기 위해 많은 디렉토리를 거쳐 가야 하는 경우 이 기능을 이용하면 매우 간다: 빨리 접근할 수 있다.

저작자 표시
Posted by 예진이네집 괴스트
크리에이티브 커먼즈 라이선스
Creative Commons License

ini_set("allow_url_fopen", 1); -- allow_url_fopen = Off 일때 해결법
[레벨:9]id: ADMINPLAY
http://www.adminplay.com/board/1765
2009.06.01 08:57:30 (*.90.215.4)
188
ini_set("allow_url_fopen", 1);     이거는 4.2 이하에서만 작동이 됩니당.

4.3.10  이전 버전에서는 꼭 필요한 도메인에서만 아래와 같이 설정하거나 set_ini 혹은 get_ini 함수를 소스에 추가해 줘도 된다...
<virtualhost *:80>
.............
php_flag allow_url_fopen On
................
</virtualhost>



4.3.10 이후 버전 은 아래와 같이 설정해 주어야 한다!!
<virtualhost *:80>
.............
php_admin_flag allow_url_fopen On
................
</virtualhost>
저작자 표시
Posted by 예진이네집 괴스트
크리에이티브 커먼즈 라이선스
Creative Commons License

유닉스 콘솔에서 ftp 명령어 mput 사용시 파일 하나 전송할때마나 y/n를 물어 보는것을

없애는 방법은. prompt 키워드로 대화식 모드를 off 로 해야 함.


ftp> prompt

하면됨. 한번 더하면 원래 대로 돌아옴.


ftp> binary

바이너리 모드로 전송됨.

ftp> mput *

모든 파일이 전송됨.  간혹 mput *.* 하면 전송안되는 파일이 있음. ㅋㅋ

확장자가 없는 파일이 있기 때문에....


PS.

-------------------------------------------------------------------------------

*파일 보내기(mput), 가져오기(mget)
mget *  :  디렉토리를 제외한 나머지파일을 모두 가져온다.
mget -R BACKUP  : BACKUP이란 폴더 안에 존재하는 모든내용을 가져온다.
mget -R * : 역시 하위폴더까지 모두 가져온다.

mget *.html : 하위의 모든.html을 가지고 올경우
get -R *.html : 하위 디렉토리 하위의 것까지 가지고 올경우

  - mget(multiple get) , mput(multiple put)
 
 

#> mget   *   -> 여러파일 받을때
#> by   or  bye  or quit  ->나갈때


 


FTP 명령어

리눅스에서 기본지원되는 FTP 명령에 대한것을 정리해보았습니다.

1.원격서버 열기

=> [chchu@linux]$ftp 210.xxx.xxx.xxx

Connected to 210.xxx.xxx.xxx.

220 web17 FTP server (Version 5.60) ready.

Name (210.xxx.xxx.xxx:chchu):아이디입력

331 Password required for w3invest.

Password:패스워드입력

230 User chchu logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

2.디렉토리이동(원격서버)

=> ftp>cd /html/upload

3.현재 디렉토리 확인

=> ftp>pwd

4.Local 디렉토리이동

=> ftp>lcd /bin

=> Local directory now /bin

5.파일 전송 타입 설정(바이너리,아스키)

=> ftp>ascii

=> 200 Type set to A.

=> ftp>binary

=> 200 Type set to I.

6.파일 Download

=> ftp>binary

=> ftp>ls

=> ftp>get thinkinjava.pdf

=> local: R387.PDF remote: R387.PDF

=> 200 PORT command successful.

=> 150 Opening BINARY mode data connection for R387.PDF (19041 bytes).

=> 226 Transfer complete.

=> 19041 bytes received in 3.99 secs (4.7 Kbytes/sec)

7.파일 다운로드(다중파일)

=> ftp>mget *.PDF

8.파일 전송상태 표시하기(Hash Mark)

=> ftp>hash

=> Hash mark printing on (1024 bytes/hash mark).

=> ftp>get R389.PDF

=> local: R389.PDF remote: R389.PDF

=> 200 PORT command successful.

=> 150 Opening BINARY mode data connection for R389.PDF (44028 bytes).

=> ##########################################

=> 226 Transfer complete.

=> 44028 bytes received in 12.1 secs (3.5 Kbytes/sec)

9.종료 하기

=> ftp>bye

=> ftp>exit

10.도움말

=> ftp>help


원본 위치 <http://kin.naver.com/knowhow/entry.php?eid=p61ggS5YtvnN4BVyiIUmw3peLCTsHceS>




기타 다른 것

1. 유저가 루트로 FTP 로그인할 수 있게 하는 방법

   # 텔넷의 root 로그인 방법이 설정 되고 난 이후
   $ vi /etc/ftpusers
     #root

2. FTP 포트번호 변경하기

   # 디폴트 21번을 6번으로 변경한 예
   $ vi /etc/services
     ftp        6/tcp

3. FTP 사용법
  
   # ftp '접속지 주소' '포트번호'
   $ ftp  192.168.1.39 6
     Name:
     Password:
     ftp> help/?
     ftp> user                        # 로그인 실패시 재 로그인
     ftp> ls/!dir                        # 서버명령/클라이언트명령 수행
     ftp> cd/lcd                        # 서버/클라이언트 디렉토리 이동.
     ftp> delete/rename                # 파일 지우기/이름바꾸기
     ftp> mkdir/rmdir                                # 디렉토리 생성/삭제
     ftp> get/put                        # 파일 전송
     ftp> mget/mput                        # 여러개 파일 가져올 때
     ftp> binary/ascii                                 # 전송파일타입을 이진/아스키 파일로 지정한다.
     ftp> type binary/ascii                 # 전송파일타입을 이진/아스키 파일로 지정한다.
     ftp> hash                        # 받는 파일의 양을 화면에 표시 합니다.
     ftp> prompt                        # mget/mput 할 때 y/n 질문을 하지 않게 한다.
     ftp> bye/quit                        # 끝내기
     ftp> open/close hostname                # 원격 호스트에 접속/단절 한다.
     ftp> status                         # ascii/binary, glob on/off 등 현재 ftp 세션의 접속 파라미터를 출력한다.
     ftp> pwd                        # 현재의 절대 경로
     ftp> verbose on                                # 전송중에 발생하는 정보를 화면에 보여준다.

   주위: 윈도우 DOS 창에서의 FTP 사용 - 포트번호 지정이 않되고, 파일이 잘 전송이 않된다.
         WS-FTP 프로그램 - 포트번호 변경이 안된다.
         권장 FTP 편집기 - 울트라에디트
         권장 FTP 프로그램 - Cute FTP, Leech FTP

4. 활용팁

- mget mput명령시에 파일 하나마다 y를 누르는 불편 없애기.
  ftp> prompt 하고
  ftp> mget 하면 된다.
  또는, 접속시에 ftp -i xxx.xxx.xxx.xxx 하면 된다.


------------FTP 명령어-------

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as)

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi)

bell : 명령어 완료시에 벨소리를 나게한다.(bell)

bye : ftp접속을 종료하고 빠져나간다.(bye)

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명)

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup)

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html)

close : ftp접속을 종료한다. (close)

delete : remote시스템의 파일을 삭제한다.(delete index.old)

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir)

disconnect : ftp접속을 종료한다.(disconnect)

exit : ftp접속을 종료하고 빠져나간다.(exit)

get : 지정된 파일하나를 가져온다.(get index.html)

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash)

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어)

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명)

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l)

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old)

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz)

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html)

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net)

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt)

put : 하나의 파일을 remote시스템에 올린다.(put index.html)

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd)

quit : ftp접속을 종료하고 빠져나간다.(quit)

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus)

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명)

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명)

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html)

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status)

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary)

저작자 표시
Posted by 예진이네집 괴스트