시스템/Linux2013. 3. 12. 14:04

안녕하세요.

 

64 비트 OS 에서 php 설치시 libpng 를 설치했음에도 아래처럼 오류가 발생할 경우가 있습니다.

 

configure: error: Problem with libpng.(a|so) or libz.(a|so). Please check config.log for more information.

 

이럴때는.. libpng 를 재설치를 해주면 됩니다.

libpng 소스 경로로 이동하셔서 make clean

cp scripts⁄makefile.nommx makefile


덮어쓰고 다시 make 하고 make install 한 후에

 

다시 php 설치하시면 문제가 없이 설치가 됩니다.

 

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스는 매우 감사ㅠ_ㅠ

'시스템 > Linux' 카테고리의 다른 글

Linux 스트리밍 - Red5  (0) 2013.05.31
Fedora Core5 Yum 사이트  (0) 2013.05.24
리눅스 SNMP 로그설정  (0) 2013.05.14
리눅스에서 윈도우 공유폴더 Mount 하기  (0) 2013.03.13
SSH 암호없이 접속(SSH-KEYGEN)  (0) 2012.11.13
리눅스 명령어 - ac  (0) 2012.07.11
리눅스 명령어 - ab  (0) 2012.07.05
리눅스 명령어 - a2p  (0) 2012.07.04
Posted by 소울하트
시스템/Windows2013. 2. 25. 14:19

WebKnight MONITORED: IP address (previous alert)

 

오늘은 제목과 같이 WebKnight 의 위 로그 항목에 대해 간단하게 설명을 하고자 합니다.

 

WebKnight(이하 웹나이트) 는 윈도우 공개 웹방화벽으로 SQL Injection 공격등 웹을 통하여

들어오는 다양한 공격들을 차단&모니터를 할 수 있는 유용한 툴입니다.

 

제작사의 홈페이지에서 다운을 받을 수 있습니다.

 

http://www.aqtronix.com/           <- 요기

 

헌데 기본설정으로 커스터마이징 없이 설정을 하게되면 로그파일에 MONITORED: IP address (previous alert)  이러한

항목으로 로깅이 마구마구 쌓이게 될것입니다.

(접속자가 좀 되는 홈페이지의 경우 순식간에 메가단위를 넘어갑니다... ㅜㅜ)

 

우선 해당 로그가 쌓이는 이유는 웹나이트 옵션 중 Incident Response Handling 섹션에서 Response Monitor IP 옵션이

Enable 되어있을때 기록이 됩니다.

 

자세히 설명을 하자면 웹나이트에 의해서 필터링이 한번이라도 된 IP 는 이후의 접근은 모두 모니터링을 합니다. 입니다.

 

내용만 봐도 어마어마합니다... 커스터마이징이 안된상태에서는 정상적인 접속도 Block 이라고 뜨는경우가 다반사 인데..

저 옵션이 켜져있을경우 당연히 엄청난 로깅이 발생하겠군요..

 

해당 옵션은 완벽히 커스터마이징이 된 후에 적용해야 겠습니다.

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스는 매우 감사ㅠ_ㅠ

'시스템 > Windows' 카테고리의 다른 글

IIS MIME Type  (0) 2012.11.05
Windows Server IIS FTP 패시브모드  (0) 2012.03.20
Posted by 소울하트
시스템/Linux2012. 11. 13. 06:40

SSH 암호없이 접속(SSH-KEYGEN)

 

오늘은 DNS 서버 관리를 위한 스크립트를 만들기에 앞서 우선 서버간 인증 암호없이 접속하는 방법을

간단하게 정리하도록 하겠습니다.

 

SSH를 인증없이 접속하는 방법은 SSH-KEYGEN 명령어를 사용하면 됩니다.

 

SSH 암호없이 접속하기 위하여 간단한 작업절차를 설명하겠습니다.

 

 클라이언트 키생성 -> 클라이언트 키 를 서버에 복사 -> sshd.conf 에서 옵션설정 -> sshd 재시작 -> 접속테스트 성공

 

위처럼 아주 간단합니다.

 

아래는 ssh-keygen 의 간단한 안내페이지 입니다. (자세한 내용은 man ssh-keygen 에서 확인할 수 있습니다.)

 

 

우선 차례대로 해보겠습니다.

1. 클라이언트 에서 ssh-keygen 으로 키 파일을 생성합니다.

  - ssh-keygen -t rsa   명령으로 키를 생성합니다.

    (RSA 와 DSA 의 차이에 대해서 간단하게 보실려면 아래의 더보기를 하시면 됩니다..!)

 

  - 엔터 3번을 누르면 생성이 완료됩니다. (처음 엔터는 키생성 위치, 두번째는 키파일의 암호 입력, 세번째는 암호확인)

  - 인증없이 편하게 접속하기 위한 작업이니 암호는 생략하도록 하겠습니다.

  - 파일 2개가 생성됩니다. id_rsa , id_rsa.pub 각각 키파일과 공개키파일입니다.

 

       클라이언트 화면에서 작업한 화면

 

2. 생성된 키파일을 scp 명령어를 통해 서버 로 전송합니다.

 - 파일 2개중 공개 키파일인 id_rsa.pub 을 서버에 복사합니다.

 - scp 전송할파일명 접속할계정@서버주소:복사할경로(또는 파일명)

   (scp 옵션의 사용방법은 대략 이렇습니다.)

 - 아래의 그림과 같이 전송을 완료하였습니다. (보안상 IP 는 지웠습니다.!)

 

       클라이언트에서 작업한 화면

 

3. 서버로 전송한 키파일을 ssh키 폴더에 authorized_keys 의 이름으로 mv 나 rename 명령으로 변경해줍니다.

 - mv id_rsa.pub .ssh/authorized_keys

   (authorized_keys 라는 이름으로 변경해준 이유는  서버의 sshd.conf 에 

    AuthorizedKeysFile 항목에서 사용할 키파일의 파일명을 지정해놨기 때문입니다.)

      

       서버에서 작업한 화면

 

4. 서버에서 sshd.conf 파일을 수정해줍니다.

 - vi /etc/ssh/sshd.conf

 - sshd.conf 파일안에 AuthorizedKeysFile 항목이 주석처리가 되어있으면 주석해제를 해주고 위에서 별도의 이름으로 키파일을

    변경하였다면 임의로 지정한 파일명으로 변경해주면 됩니다.

   (예 - AuthorizedKeysFile      .ssh/test_keys)

 - sshd.conf 수정 후 sshd 서비스를 재시작 합니다.    service sshd restart   또는  /etc/init.d/sshd restart

    

 

5. 이제 마지막으로 클라이언트에서 서버로 암호없이 접속이 되는지 확인합니다.

 - ssh 접속할계정@접속할서버IP(또는 도메인)

 

※ 설정상의 문제가 없다면 오류 없이 접속이 잘 됩니다.

    다만, .ssh 폴더를 ssh-keygen 으로 생성한게 아니라 단순 mkdir 로 생성한경우 .ssh 폴더의 퍼미션을 rwx------ 로

    변경해줘야 합니다. 또한 authorized_keys 파일의 경우 rw-r--r-- 으로 해야됩니다.

    그 외에도 접속이 안될경우 /var/log/secure 나 /var/log/message 를 참고하면 원인을 파악하여 문제해결이 가능합니다.

 

 

 

Posted by 소울하트
시스템/Windows2012. 11. 5. 14:15

안녕하세요.

IIS 에서 특정 확장자 파일을 다운로드 하거나 각 확장자에 맞는 프로그램이 실행되도록 할때에

설정하는 MIME TYPE 입니다.

아래의 내용을 참고하시고 궁금하신 점이 있으면 댓글 주세요.!

File ExtensionMIME Content TypeStorage Format
.htm .html .mdltext/htmlText
.txttext/plainText
.gifimage/gifBinary
.gzapplication/x-gzipBinary
.zapplication/x-compressBinary
.pacapplication/x-ns-proxy-autoconfigBinary
.jf .ls .mochaapplication/x-javascriptBinary
.tclapplication/x-tclBinary
.cshapplication/x-cshBinary
.ai .eps .PSapplication/postscriptBinary
.exe .binapplication/octet-streamBinary
.cpioapplication/x-cpioBinary
.gtarapplication/x-gtarBinary
.tarapplication/x-tarBinary
.sharappliation/x-sharBinary
.zipapplication/x-zip-compressedBinary
.sitapplication/x-stuffitBinary
.hqxapplication/mac-binhex40Binary
.avivideo/x-msvideoBinary
.qt .movvideo/quicktimeBinary
.mpeg .mpg .mpevideo/mpegBinary
.wavaudio/x-wavBinary
.aif .aiff .aifcaudio/x-aiffBinary
.au .sndaudio/basicBinary
.fifapplication/fractalsBinary
.iefimage/iefBinary
.bmpimage/x-MS-bmpBinary
.rgbimage/x-rgbBinary
.ppmimage/x-portable-pixmapBinary
.pbmimage/x-portable-bitmapBinary
.pnmimage/x-portable-anymapBinary
.xwdimage/xwindowdumpBinary
.xpmimage/x-pixmapBinary
.xbmimage/x-bitmapBinary
.rasimage/x-cmu-rasterBinary
.tiff .tifimage/tiffBinary
.texi .texinfoapplication/x-texinfoBinary
.dviapplication/x-dviBinary
.latexapplication/x-latexBinary
.texapplication/x-texBinary
.rtfapplication/rtfBinary

'시스템 > Windows' 카테고리의 다른 글

WebKnight MONITORED: IP address (previous alert)  (0) 2013.02.25
Windows Server IIS FTP 패시브모드  (0) 2012.03.20
Posted by 소울하트
시스템/기타2012. 10. 9. 12:47

451 See http://pobox.com/~djb/docs/smtplf.html.,

 

안녕하세요. 오늘은 SMTP 메일발송시 발생했던 문제에 대해서 정리하고자 합니다.

 

최근에 Windows 서버에 ASP로 구성된 웹페이지가 있습니다.

헌데 웹페이지에서 메일을 발송하는 소스를 실행시 몇몇받는 메일서버에서 거부를 하게 되고

메일 Queue 에 쌓이기만 하고 발송이 안되는 증상이 있었습니다.

 

헌데 로그에 451 See http://pobox.com/~djb/docs/smtplf.html.,  이러한 로그가 남는겁니다.

당장 로그를 확인하려 해당 페이지에 접속을 해보았습니다.

 

대략내용을 분석해보니..

 

웹에서 발송하는 메세지의 컨텐츠 내용이 잘못된 LF LF. 으로 메시지를 종료, 즉 컨텐츠의 내용을 마무리할때에 잘못된 LF LF. 로 하고 있고, 대부분 LF(줄바꿈) 로 메세지를 마무리하고 있는 경우 발송한다고 되어있네요.

위 페이지에서는 CR LF 형식으로 수정을 해줘야 된다고 말하고 있습니다.

(Your mailer is violating 822bis section 2.3, which specifically prohibits all bare LFs.

  노출된? LFs를 금지하는 822bis 섹션 2.3, 을 위반하였다고 되어있네요.. 맞나..? )

 

그리하여 웹소스를 확인해보니 컨텐츠의 내용이 chr(10) , 즉 LF 로 해당 라인을 마무리 하고 있었습니다..ㅜㅜ

ASP, 윈도우의 경우에는 메모장에서 Linux 나 Unix 계열에서 저장한 문서를 열어보면 줄바꿈이

 

    

 

이런형태(\n)로 저장이 되어집니다. Unix 계열에서는 줄바꿈 으로 정상적으로 출력이 되는데 말이죠..

그래서 윈도우에서 사용하는 ASP 파일에서는 chr(10) 앞에 chr(13)을 추가해줘야합니다.

 

좀 더 자세한 내용을 알기 위해서  찾아서 확인을 해보았습니다.

chr(10)은 캐리지 리턴이라 하며, 출력위치를 줄 맨 앞으로 옮기는거 입니다.

(타자기 로 비유하자면 글을 작성할때 오른쪽에서 왼쪽으로 글이 작성 되는데, 다음줄로 넘어가게 되면

 종이를 오른쪽 끝으로 쭉 민다음에 한줄만큼 줄을 올리게 됩니다. 이게 캐리지 리턴이라 생각하면 됩니다.)

chr(13)은 라인피드 라 하며, 커서가 위치한 곳에서 아래로 한줄 내리는 기능 입니다.

 

C 에서는 각각 \r, \n 을 의미하게 되죠.

그래서 도스나 윈도우에서는 원래 의미대로 해석되기에 텍스트파일에서 다음줄로 내려갈때 "\r\n" 을 사용합니다.

하지만 Unix 계열에서는 \n 이 \r\n 의 의미를 모두 포함하게 됩니다. 

때문에 Unix 계열에서 저장한 파일들을 윈도우 의 메모장에서 열어보게 되면 위 그림처럼 "\r\n" 이 아니기때문에

위 그림과 같은 문자로 표시하게 되고 글이 줄바꿈 없이 한줄로 보여지게 됩니다.

알아본 바로는 매킨토시쪽에서는 \r을 쓴다고 합니다.

따라서 엔터키가 캐리지리턴 인지 라인피드인지는 큰 의미가 없습니다. 프로그램에 따라 다르게 저장이 되니깐요.

(DOS(윈도우) 는 \r\n , Unix 는 \n , 메킨토시 는 \r )

 

정리하자면 ASP 소스상에서 chr(10), 즉!  \n 으로만 작성이 되어있기에 받는메일서버에서 잘못된 LF 로 메세지를

종료하고 있다고 판단하여 메시지를 거부하였던 겁니다.

(받는메일서버의 MTA 에 따라서 차이가 있는듯 합니다. 대부분의 포털사이트들은 송신이 잘 되었습니다.)

 

그리하여 chr(10) 를 chr(13)&chr(10) 로 변경해주고 메일을 발송하니 아주아주 송신이 잘 되는군요.^^

 

어떻게 도움이 좀 되셨나요? ㅎㅎ 위 문제때문에 삽질도 많이 하였는데 한편으로는 뿌듯합니다. ^^

이상입니다.

 

 

 

 

'시스템 > 기타' 카테고리의 다른 글

arp 정적(static) 설정 - linux, windows  (0) 2015.06.02
Posted by 소울하트
시스템/Linux2012. 7. 11. 17:34

[ 리눅스 명령어 - ac ]

 

안녕하세요. 오늘은 리눅스 명령어 ac 에 대해서 작성하고자 합니다.

 

ac 명령어는 해당 유저가 접속한 시간을 확인하는 명령어 입니다.

기타 옵션을 사용하면 추가적인 정보까지 확인할 수 있습니다.

 

우선 사용법 입니다.

 

ac  [옵션] [계정명 또는 옵션에 관련된 텍스트값]

 

옵션 :

 

[ -d | --daily-totals ] [ -y | --print-year ]
[ -p | --individual-totals ] [ people ]
[ -f | --file filename ] [ -a | --all-days ]
[ --complain ] [ --reboots ] [ --supplants ]
[ --timewarps ] [ --compatibility ]
[ --tw-leniency num ] [ --tw-suspicious num ]
[ -z | --print-zeros ] [ --debug ]
[ -V | --version ] [ -h | --help ]

 

이러한 옵션들이 있습니다.

옵션에 대해서 간단히(?) 설명을 해보겠습니다.

 

-d,  --daily-totals

 : 접속한 시간의 총 합계를 일단위로 표시합니다.

   [옵션만 입력시 모든 계정에 대하여 출력, User 입력시 해당 User 에 대해서만 출력합니다.]

-p, --individual-totals

 : 지금까지 접속한 각 사용자의 시간 합계를 표시합니다.

   [옵션만 입력시 모든 계정에 대하여 출력, User 입력시 해당 User 에 대해서만 출력합니다.]

-f , --file filename

 : 옵션 후 파일을 지정하면 해당 파일의 내용을 읽어들여 총 접속시간을 출력합니다.

  [ 예를 들자면 /var/log/wtmp 파일을 읽어 들이면 총 접속 시간이 출력됩니다.

    -f /var/log/wtmp User

  위 명령은 해당 유저의 접속정보가 wtmp 파일에 기록이 되므로 해당 User 의 접속시간이 출력됩니다.

   /var/log/secure 파일과 같이 시간이 기록되는 파일의 경우 총 시간을 ac -f 명령어로 확인할 수 있습니다. ]

--complain

 : wtmp 파일에 문제가 있는 경우 해당 오류를 출력합니다.

--reboots

 :

--supplants

 :

--timewarps

 :

--compatibility

 :

--a, --all-days

 : 옵션 뒤 user 를 입력하면 해당 유저의 총 접속시간을 출력, 옵션만 입력하면 전체 user 의 접속시간 출력

--tw-leniency num

 :

--tw-suspicious num

 : 

-y, --print-year

 :

-z, --print-zeros

 :

--debug

 :

-V, --version

 : ac 명령어의 버전 확인

-h, --help

 : 도움말 표시.

 

우선 확실시 되는 옵션만 테스트 후 작성하였습니다..

(나머지도 테스트를 해봐야 하는데.. 정확하지 않다고 생각되는 내용은 기록하지 않았습니다. 혹시라도 정보가 있으시면

 공유 좀 해주시면 도움이 되겠습니다. ㅜㅜ)

 

이상입니다.

 

 

Posted by 소울하트
시스템/Linux2012. 7. 5. 17:20

[ 리눅스 명령어 - ab ]

 

오늘은 리눅스 명령어 ab 에 대하여 작성하고자 합니다.

 

우선 ab 명령어는 Apache HTTP server benchmarking tool 의 약자로 Apache 서버의 응답속도를 측정하는

벤치마킹 툴 입니다.

 

우선 사용법은.. 항상 URL 뒤에는 / 로 끝나야합니다.

 

 ab  [ 옵션 ]   [http://]hostname[:port]/path

 

사용에 관하여 여러가지 옵션들이 있습니다.

 

 -A auth-username:password

   : 웹페이지에서 인증(apache 인증 등)을 걸어놓은경우 유저네임과 패스워드를 입력하는 옵션입니다.(구분은 콜론(:))

-c concurrency

   : 동시에 다중 세션을 요청하는 수 입니다. (아무래도 여러번시도하게 되니 신뢰성이 높습니다.)

 -C cookie-name=value

   : 쿠키와 함께 벤치마킹을 가능하게 하는 옵션입니다.

 -d

   :  

 -e csv-file

  :

 -g gnuplot-file

  :
 -h

  :  사용정보를 표시합니다.

 -H custom-header

  : 일반적으로 유용한 형태의 헤더정보를 추가하여 테스트 합니다. 필드구분은 콜론(:)입니다.

    (예: "Accept-Encoding: zip/zop;8bit" )

 -i

  :  

 -k 

  : Keepalive를 활성화하여 테스트 합니다.

 -n requests

  : 몇번의 요청을 할건지 정하는 옵션입니다.
 -p POST-file

  : POST 할 파일을 지정하여 테스트 합니다.
 -P proxy-auth-username:password

  : 프록시 방식의 인증모드 정보를 입력하여 테스트 합니다. (구분자 콜론(:))

 -q

  : 150 이상의 요청을 수행할 때에 진행사항을 표시합니다. 10% 또는 100 요청 등등으로 표시합니다.

 -s

  : https 로 요청을 처리합니다.

 -S

  :

 -t timelimit

  : 허용되는 최대시간을 초단위로 설정하는 옵션입니다. (최대값 : 5000초)

 -T content-type

  : POST 하는 데이터에 Content-type Header 를 사용합니다.

 -v verbosity

  : 테스트 결과 내에서 헤드 정보를 포함하도록 하는 옵션입니다. 좀 더 자세한 결과를 확인할 수 있습니다.
 -V 

  : ab 의 버전정보를 표시합니다.

 -w 

  : 응답속도를 HTML 포맷으로 출력합니다.

 -x <table>-attributes

  : <table> 속성에 대하여 사용할 문자열입니다. (예: <table 이곳에 들어갈 속성값>

 -X proxy[:port]

  : 프록시 방식으로 요청할 경우 사용되는 옵션입니다.

 -y <tr>-attributes

  : <tr> 속성에 대하여 사용할 문자열입니다. 즉, <tr 이곳에 들어갈 속성값>

 -z <td>-attributes

  : <td> 속성에 대하여 사용할 문자열입니다.  

 

정리해보자면 이렇습니다. 몇가지 빠진 옵션은 내용이 이해가 되질 않아.. 테스트 후 기록해야할듯 합니다 .ㅜ.ㅜ

 

아래는 결과값 입니다.

 

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.mindpower.kr (be patient).....done


Server Software:        Apache                                                          : 웹서버의 종류 입니다.  
Server Hostname:        www.mindpower.kr                                        : 테스트한 도메인 이름입니다.
Server Port:            80                                                                     : 웹서비스를 하는 Port 번호입니다.

Document Path:          /
Document Length:        185526 bytes                                                 : 요청된 웹페이지의 용량입니다.

Concurrency Level:      1                                                                 : 동시에 요청된 Client 수 입니다.
Time taken for tests:   0.523612 seconds                                            : 측정에 걸린 시간입니다.
Complete requests:      1                                                                 : 요청에 대한 성공 수 입니다.
Failed requests:        0                                                                    : 실패한 요청수 입니다.
Write errors:           0
Total transferred:      185908 bytes                                            : 전체 전송용량입니다.(차이가 있을수 있습니다.)
HTML transferred:       185526 bytes                                          : html 전송용량 입니다.
Requests per second:    1.91 [#/sec] (mean)                           : 초당 요청된 수 입니다.
Time per request:       523.612 [ms] (mean)                               : 요청당 걸린 시간 입니다.
Time per request:       523.612 [ms] (mean, across all concurrent requests)
Transfer rate:          345.68 [Kbytes/sec] received                     : 전송 속도 입니다.

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3    3   0.0      3       3
Processing:   520  520   0.0    520     520
Waiting:      487  487   0.0    487     487
Total:        523  523   0.0    523     523

 

이상입니다.  질문 사항이 있으시면 댓글을 달아주세요.^^;

Posted by 소울하트
시스템/Linux2012. 7. 4. 13:28

[리눅스 명령어 - a2p]

 

오늘은 리눅스의 명령어중 a2p 라는 명령어에 대하여 작성하고자 합니다.

 

간단하게 요약하자면 a2p 는 awk 스크립트를 perl 스크립트로 바꾸는 명령어 입니다.

 

사용법은

 

a2p [optiong] [filename]

 

입니다. 간단합니다.

(실전에서 많이 사용되지는 않습니다. -_-)

 

사용할 수 있는 옵션은 아래와 같습니다.

 

-D<number>

-F<character>

-n<fieldlist>

-<number>

-o

 

간단하게 옵션들을 설명을 하자면..

 

-D<number>

  : debugging 을 숫자를 지정, 즉 오류가 있는지 체크할 숫자 지정(?)

 

-F<character>

 : 구분자를 정의합니다. awk의 필드를 나누는 기준이 되는 구분자 변수인 FS 변수를 지정된 문자로 정의합니다.

 

-o

 : 예전 형식의 awk 스크립트를 변환 합니다.

 

-n<fieldlist>

 : 입력되어 있는 배열로 필드를 구분할 수 없는 경우, 필드의 이름을 직접 지정합니다.

   예 ) a2p -7 -nlogin.password.uid.gid.gcos.shell.home          (/etc/passwd 파일처럼 구분함)

 

이상입니다.

 

자주 사용안하던 a2p 명령어에 대해서 작성하다보니 새롭네요.ㅎㅎ

 

 

 

 

 

 

 

Posted by 소울하트
시스템/Linux2012. 5. 22. 17:20

오늘은 매번 미루다 리눅스에서 유용하게 쓰이는 find 명령어 에 대하여 정리하고자 합니다.
단어의 뜻에서 볼 수 있듯이 find 명령어는 무엇을 찾는데 주로 쓰이는 명령어 입니다.


하지만 단순히 찾는 것에서 끝나는 것이 아니라 find 명령어는 | 파이프 를 이용하여 리눅스 쉘 스크립트랑 섞어서 무궁무진한
작업을 편하게 해줄 수 있습니다.!

| 파이프를 이용하여 쉘 스크립트와 섞기 전 기초적인 find 명령어에 대하여 간단하게 정리하고자 합니다.

 

우선 find 명령어 의 --help 정보 입니다.

[root@b ~]# find --help
Usage: find [path...] [expression]

default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:

operators (decreasing precedence; -and is implicit where no others are given):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xdev -ignore_readdir_race -noignore_readdir_race

tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls]
-context CONTEXT


actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <bug-findutils@gnu.org>.


위의 내용만 봐서는 이해도 잘 안되고 어떠한 옵션을 써야할지도 모르겠고 그렇습니다.

설명을 하자면 find 명령어는

find [경로] [옵션]

형식으로 실행합니다. 위 --help 에서 tests 에서 보시는바와 같이 여러 가지 예제가 있으며, 검색을 한뒤 결과값에 대하여Acitons 을 실행할 수가 있습니다.

 

즉, -o (or), -a (and), ! (not) 과 같이 여러가지 연산자와 여러가지 옵션, 여러가지 액션을 섞어서

얼마나 응용하느냐에 따라서 원하는 최적의 결과값을 찾을 수 있습니다. 엄청 매력적인 명령어 이지 않습니까?

 

하나씩 아래에서 find 명령어 위 옵션에 대해 차례차례 설명하겠습니다.

tests (N can be +N or -N or N): tests (N can be +N or -N or N):
-amin N N 분 이전에 access한 파일 찾기
-anewer FILE 지정한 파일보다 access 시간이 최신인 파일 찾기
-atime N N 일 이전에 access한 파일 찾기
-cmin N N 분 이전에 생성된 파일 찾기
-cnewer FILE 지정한 파일보다 생성된 시간이 최신인 파일 찾기
-ctime N N 일 이전에 생성된 파일 찾기
-empty 비어있는파일 찾기
-false 항상 거짓인 경우
-fstype TYPE 특정한 파일시스템의 종류 찾기
-gid N N 값의 GID 를 갖는 파일 찾기
-group NAME 특정 그룹 소유자의 파일 찾기
-ilname PATTERN -lname 과 비슷하지만, 대소문자를 구분하지 않는다.
-iname PATTERN 파일 대소문자 무시하여 찾기
-inum N node번호가 n 인 파일 찾기
-iwholename PATTERN -wholename PATTERN 과 비슷하지만 대소문자를 구분하지 않는다.
-iregex PATTERN -regex 와 비슷하지만, 대소문자를 구분하지 않는다.
-links N 링크된 갯수가 n 이상인 파일 찾기
-lname PATTERN 쉘 패턴에 일치하는 기호연결(심볼릭 링크)인 파일 찾기.
이때 메타문자는 `/' 이나 `.'를 예외 취급하지 않음
-mmin N N 분 이전에 modify 파일 찾기
-mtime N N 일 이전에 modify 파일 찾기
-name PATTERN 지정한 이름의 파일 찾기
-newer FILE 지정한 파일보다 최신의 파일 찾기
-nouser 소유자가 /etc/passwd 에 명시되어 있지 않은 파일 찾기
-nogroup 소유그룹이 /etc/group 에 명시되어 있지 않은 파일 찾기
-path PATTERN 패턴과 일치하는 경로 제외하고 찾기
-perm [+-]MODE 특정 퍼미션 권한의 파일 찾기
-regex PATTERN 이름이 정규표현식 패턴과 일치하는 파일 찾기
-wholename PATTERN 특정 패턴에 일치하는 디렉토리안의 내용에 대해서는 find 명령을 생략
-size N[bcwkMG] N값 이상의 파일 찾기
-true 항상 참인 경우
-type [bcdpflsD] 특정 타입의 파일 찾기
-uid N N 값의 UID 를 갖는 파일 찾기
-used N N 값 일 이전에 변경된 파일 찾기
-user NAME 특정 사용자 소유의 파일 찾기
-xtype [bcdpfls] 해당 파일 타입에 연결된 심볼릭 링크 파일 찾기
-context CONTEXT (SELinux에 한하여)파일의 보안 컨텍스트와 일치하는 패턴

위에 보시는거와 같이 옵션은 참 여러가지가 있습니다. 위 옵션들과 Action 을 이용하여 여러가지 작업들을 간편하게 할 수 있습니다.

예를 들자면 특정 소유자를 검색하여 다른소유자로 바꾼다던가, 서버관리자가 모르는 사이에 생성된 파일이나 변경된 파일들의 목록을 확인할 수 있거나, 원하는 파일들을 검색하여 삭제하거나 뭐.. 말로 다 표현을 할 수가 없습니다.

 

아래는 개인적으로 보통(?) 사용하는 find 명령과 옵션의 조합을 정리하였습니다. 유용하게 사용하시길 바랍니다. 후후

 

- 특정 UID 를 찾아 소유자와 그룹을 바꾸기 (UID 는 ID 명령어를 통해 확인가능, 예- id apache )

 

find . -uid 591 -exec chown apache:apache {} \;

 

우선 위 내용을 간단하게 설명하자면!

 

find : 찾기 명령
.    : 은 현재 디렉 아래로

-uid : UID 패턴검색옵션

591 : UID 값이 591인 파일 찾기

-exec : 실행하라 는 명령어

chown apache:apache : 실행할 명령

{}      : find 로 검색하여 나온 결과값을 exec 로 실행한 명령어의 대상으로

\;     : find 에서 -exec 옵션으로 실행할 명령의 끝을 나타냄

 

- 사용자 이름이 없거나 그룹 이름이 없는 파일 찾기 (명령어 중 -o 옵션은 or 연산자 입니다.)

 

find / ( -nouser -o -nogroup ) -print | more

 

- 파일 크기가 800kb 이상인 파일을 찾아서 삭제

 

find / -size +800k -exec rm -rf {} \;

 

- 첫번째 글짜기a 또는 b 두번쨰가 c또는d로 시작하는 모든 파일 찾기([a,b][c,d] 는 정규표현식 입니다. 맞나..?)

  정규표현식은 다음포스팅에서 다루도록 하겠습니다. 

 

find / -name '[a,b][c,d]* -print

 

- 일반사용자에게 쓰기권한(rwx---rwx)이 있는 파일을 찾아서 실행 권한을 삭제 (단, ! 을 사용하여 링크 파일은 제외함)

 

find / -perm +2 ! -type l -print -exec chmod o-w {};  

 

- txt 파일중에서 해당 문자열이 포함된 파일을 검색하여 출력

 

find . -type f -name *.txt -exec grep "찾을문자열" {} \; -print

 

- 인코딩 한번에 Find 를 사용하여 바꾸기  (링크)

 

http://mindpower.kr/22

 

- 특정 문자열이 포함된 라인을 검색하여 삭제(하위폴더 포함(

 

find . -type f -name "파일명" -exec vi -c "%g/찾을문자열/d" -c "wq" "{}" \;

 

※ 위 명령어를 보면 vi 로 열어서 해당문자열을 삭제한 후에 저장을 하니 검색조건에 맞는 모든 파일들의 Access 날짜가

    수정됩니다. 참고하세요~

 

- 하위폴더 검색하여 조건에 맞는 문자열 치환

find . -type f -name "*.*" -exec vi -c "%s/[찾을문자열]/[바꿀문자열]/g" -c "wq" "{}" \;

※ 문자열 중 / 와 같은 경우 명령어로 읽지 말고 문자로 읽도록 \ 를 붙여줘야 합니다.

예) http://www.mindpower.kr/1212 를 넣을경우 http:\/\/www.mindpower.kr\/1212

 

 

이상 마치도록 하겠습니다. 궁금한점이 있거나 하시면! 댓글이나 메일 다 환영합니다. ^^

 

Posted by 소울하트
시스템/Linux2012. 3. 22. 17:02


















오늘은 리눅스에서 인코딩 변경 작업에 대해 포스팅 하고자 합니다.

인코딩 변경 작업시 보통 iconv 명령어를 이용하여 작업을 많이 합니다.

하지만 다수의 파일을 인코딩 변경을 하려면 쉘 스크립트를 작성해야 합니다.

자 인코딩 변경 작업 예제 입니다. 한번에 해당 폴더에 있는 인코딩을 전부 변경 할 수 있습니다.

예) 현재 폴더에서 확장자가 php 인 파일의 인코딩을 utf-8 에서 euc-kr 로 수정
for PHP in `find ./ -name "*.php"` ; do iconv -c -f utf-8 -t euc-kr $PHP > $PHP.bak && mv $PHP.bak $PHP ;  done

위 내용에 대해 간단히 설명을 드리자면!

for 명령어로 find ./ -name "*.php" 의 값을 PHP 라는 변수로 선언 한뒤 iconv 명령어로 인코딩을 변경한 파일명.bak 파일로 생성합니다.
그다음 mv 명령어 파일명.bak 의 이름의 파일들을 기존 파일명으로 덮어씌어버리는 겁니다.

주의할점은 기본 리눅스 쉘에서는 alias mv='mv -i' 가 지정되어있습니다. 같은 이름의 파일을 덮어씌우기전에 물어보는거지요. 이 항목이 기록되어 있는  ~/.bashrc 파일 열어 alias mv='mv -f' 로 수정 후 source ~/.bashrc 후 작업하면 됩니다.

약간의 오류가 생겨 mv 가 몇몇 파일들에 적용이 안될수도 있습니다. 그럴땐 확인 후 다시 수작업으로 변경해줘야합니다.
이 경우 스크립트는 작성 후 다시 게시 하겟습니다. ㅜㅜ

iconv 인코딩용으로는 상당히 쓸만합니다. recode 라는 명령어도 있지만 iconv 도 스크립트를 적절히 써주면 만족스럽습니다. 

iconv 의 자세한 설명은  http://mindpower.kr/10 여기를 클릭

이상입니다.

'시스템 > Linux' 카테고리의 다른 글

리눅스 명령어 - ac  (0) 2012.07.11
리눅스 명령어 - ab  (0) 2012.07.05
리눅스 명령어 - a2p  (0) 2012.07.04
find 명령어  (1) 2012.05.22
make: *** [ext/mysqli/mysqli_api.lo] Error 1  (0) 2012.03.15
vsftpd 설치와 옵션(Cent OS)  (0) 2012.01.16
Apache conf 파일 분석 ( 2.2.x 이하 apache )  (0) 2012.01.16
Linux 환경에서 IP alias 기능 사용  (0) 2011.12.12
Posted by 소울하트
시스템/Windows2012. 3. 20. 23:14

IIS FTP 패시브모드 포트 범위 설정

FTP 패시브모드 설정에 대해 정리해놓은 내용입니다. FTP 설정 시 기본으로 해주면 편합니다.

</STYLE>IIS기반 FTP 서비스는 패시브모드(Passive-mode)와 액티브모드(Active-mode) 2가지를 지원합니다.

Active-mode 는 클라이언트 기반 접속이여서 웹서버쪽에 20,21 번이 열린 FTP를 접속시 클라이언트에서는 포트가 랜덤포트를 이용하나 서버 포트(예:21)는 변함이 없습니다. 클라이언트는 서버쪽에 port 명령어를 보내게 됩니다.

Passive-mode 는 서버쪽 21번 포트로 접속시, 클라이언트의 랜덤포트가 아니라 서버쪽 랜덤포트를 이용하게 됩니다. 서버는 클라언트에게 pasv 명령어를 보내며, 클라이언트는 승인하게 되고 연결이 이루어 집니다.

문제는, 패시브모드의 경우 서버쪽에 1024 에서 65535 포트 사이를 랜덤하게 할당하며, 네트워크 세션이 있을때마다 신규포트를 이용하게 됩니다.
이때, 서버쪽에 방화벽을 운영하거나 대량접속서비스가 운영중일때는 네트워크 자원이 부족하게 되어 접속장애가 있을수 있습니다. 예를들면 패시브모드시 어떤 랜덤포트를 사용하게 되는지 알수가 없으므로 방화벽에서 차단이 되는 경우가 종종 발생합니다.

패시브모드 에서의 서버쪽 랜덤 포트범위를 조정하므로써, 이를 해결할 수 있습니다.

Windows 2000 Server 및 Windows Server 2003 모두  PassivePortRange 값을 이용하여 조정이 가능합니다.


Windows Server 2003 의 경우

1. 메타베이스를 수정하는 방법입니다.
  (메타베이스를 수정할려면, IIS MMC에서 메타베이스 직접수정 허용 설정이 되어 있어야 합니다.)
   C:\WINDOWS\system32\inetsrv\metabase.xml
  <IISFtpService> 아래에
  PassivePortRange="##### - #####"
  추가 - 저장 후 - IIS 재시작


2. ADSUTIL을 이용하는 방법입니다.
   Adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5700"


Windows 2000 Server 의 경우는 레지스트리 값을 추가해야 합니다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\
에서 REG_SZ 타입의 PassivePortRange 값이름을 추가합니다.

값으로는, 임의의 포트로 범위를 설정한다.
(예 : 30000-31000)


위 2경우 모두 설정후 FTP 서비스를 재시작 해야 적용되며, 위와 같이 범위 또는 특정포트값을 설정해도 된다.

서버에 방화벽을 운영하는 서버인데, 클라이언트가 액티브모드를 지원하지 않는경우에 적용하는 것이 좋은 해결책이 될 수 있다.

 

Web Browser 인 Internet Explore 는 기본의 Paasive Mode이고,

다른 FTP Program은 선택 또는 Active Mode 입니다
 
문의사항이 있으면 언제든지 댓글 환영합니다.!

'시스템 > Windows' 카테고리의 다른 글

WebKnight MONITORED: IP address (previous alert)  (0) 2013.02.25
IIS MIME Type  (0) 2012.11.05
Posted by 소울하트
시스템/Linux2012. 3. 15. 09:56

make: *** [ext/mysqli/mysqli_api.lo] Error 1   해당 오류는 5.2.1 Bug 입니다..

php 5.2.1 make 시 mysqli 오류

/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_bind_param':
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: 'gptr' undeclared (first use in this function)
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: (Each undeclared identifier is reported only once
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: for each function it appears in.)
/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_execute':
/usr/local/php/ext/mysqli/mysqli_api.c:603: error: 'gptr' undeclared (first use in this function)
make: *** [ext/mysqli/mysqli_api.lo] Error 1


위와 같이 오류 발생시

/usr/local/php/ext/mysqli/mysqli_api.c 에서
gptr 을 char* 로 모두 변경 후 make 를 해줘야합니다.

vi 편집기로 해당 파일을 열어서 입력모드에서 $s/gptr/char*/g 로 전체 수정 하면 됩니다.

Posted by 소울하트
시스템/Linux2012. 1. 16. 18:11

1. vsftpd 설치

[root@localhost /]# yum install vsftpd

- 소스파일로 설치하는것보다 yum 으로 간단하게 설치하면 됩니다.
   (소스 컴파일 한다해도 굳이 옵션을 줄것은 크게 없습니다.)

설치가 완료되면 vsftp.conf 설정파일을 /etc/vsftpd/vsftpd.conf에 저장됩니다.

[root@localhost vsftpd-2.0.7]# vi /etc/vsftpd/vsftpd.conf

2. vsftpd 실행

FTP 서비스 시작 : /etc/initd.d/vsftpd start

FTP 서비스 종료 : /etc/initd.d/vsftpd stop

부팅시 자동 시작 : chkconfig vsftpd on

vftp는 기본적으로 익명ftp로 동작하며 유저 ftp를 구동하기 위해서는 conf파일을 수정해야 합니다.


=================================================================================================================================
아래 부터는 vsftpd 설정 옵션입니다.  참고하세요.^^



 

① 기본설정


background=YES (
기본값 = NO)

VsFTP 데몬을 background로 실행할 것인지 설정 합니다.


listen=YES (
기본값 = NO)

VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다.

따라서 독립모드(standalone)로 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다. 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다.일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며, 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다. background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서 데몬이 요청을 받아드릴지에 대해 설정합니다. 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도 함께 활성화 시켜야 됩니다.


listen_ipv6=NO (
기본값 = NO)

listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다.

일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다.


listen_port=21

만약 vsftpd xinetd모드가 아닌 독립데몬 (standalone)으로 서비스하려면 위의 listen 지시자를 YES로 설정하시고 listen_port 에 서비스할 포트번호(기본 21)를 지정하시면 됩니다.


listen_address=none (
기본값 = none)

멀티 FTP 데몬을 사용할 때 요청을 받아드릴 IP를 설정합니다.


listen_address6=none (
기본값 = none)

listen_address와 동일하며 IPv6에서 운영할 때 사용 합니다.


pasv_address=none (
기본값 = none)

NAT를 사용하는 클라이언트의 공용 IP를 설정할 때 사용 합니다.

일반적으로 설정하지 않아도 상관 없습니다.


nopriv_user=ftpsecure (
기본값 = nobody)

VsFTPd가 구동될 서버의 유저를 설정합니다.


max_clients=30 (
기본값 = 0)

FTP 서버에 접속할 수 있는 클라이언트의 최대수를 제한하는 옵션 입니다. 기본값인 0으로 설정하면 제한을 두지 않습니다.


max_per_ip=3

이 설정은 동시 ftp 접속자수를 제한하는 설정입니다. 첫번째 max_client ftp 접속을 최대 30명까지만 허용한다는 설정입니다. 그리고 max_per_ip 는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정입니다. 이 또한 서비스거부공격(DoS)를 방어하기 위한 방법으로 활용될 수 있습니다.


local_max_rate=0 (
기본값 = 0)

계정 사용자의 최대전송률을 지정합니다.

/다운로드의 속도를 제한할 때 사용하며, 단위는 bps 입니다.


trans_chunk_size=0

위의 세가지 설정은 ftp 서비스의 전송속도를 제한 하도록 하는 설정입니다. , 초당 byte 수를 지정할 수 있으며 제한없이 허용하려면 0 으로 설정하시면 됩니다. 이 설정은 vsftpd 가 독립데몬(standalone)모드로 서비스될 때에만 적용되는 것입니다.


use_localtime=YES (
기본값 = NO)

서버의 FTP 데몬시간을 서버의 표준시간으로 고정할지 설정합니다.

만약 이 옵션을 비활성화 하게되면 표준시각(GMT)를 보여주므로, 한국의 경우 9시간의 오차가 발생합니다.


setproctitle_enable=YES (
기본값 = NO)

프로토콜의 현재 상태를 출력해줄 것인지 설정합니다. 이 옵션을 활성화하면 ps 명령어를 사용했을 때 세션의 현재 상태도 보여줍니다. 또한 LTN에서 제공하는 ftpwho 스크립트를 사용할 때에도 이 옵션을 활성화 하셔야 됩니다.


user_config_dir=none (
기본값 = none)

특정 사용자의 개별 설정 파일을 지정합니다.

이 옵션을 사용하면 /etc/vsftpd/vsftpd.conf의 지시문을 무시하고 사용할 수 있습니다.


② 접속설정


local_enable=YES

로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정합니다. YES 로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것입니다. 기본 설정은 YES로 되어있기 때문에 접속을 허용하게 됩니다. 만약 NO로 설정되어 있을 때 로컬 계정으로 접속을 시도하면 “530 This FTP server is anonymous only.”와 같은 에러메시지를 출력하면서 접속을 거부합니다.


pam_service_name=vsftpd

vsftpd에서 PAM설정파일명으로 사용할 파일명을 지정합니다. 이 설정이 적용되면 기본이 vsftpd 이므로 /etc/pam.d/vsftpd 파일이 사용됩니다.


userlist_enable=YES (
기본값 = NO)

명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다.

userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.


userlist_deny=YES (
기본값 = YES)

명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다.

userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.


userlist_file=/etc/vsftpd.user_list (
기본값 = /etc/vsftpd.user_list)

명시된 사용자를 읽어올 파일을 지정합니다.


text_userdb_names=NO (
기본값 = NO)

디렉토리 목록의 사용자와 그룹 필드들에 있는 숫자 ID 들이 보이는 것이 기본값 입니다.

당신은 이 파라미터를 활성화 함으로써 글자 이름을 사용할 수도 있습니다. 그러나 이 항목은 성능상의 이유로 기본적으로 비활성화 되어 있습니다.


tcp_wrappers=YES

tcp_wrappers 적용 여부를 설정하는 것으로 사용할 것인가(YES) 사용하지 않을 것인가(NO)를 설정합니다. YES로 설정하시면 허용할 호스트는 /etc/hosts.allow 허용하지 않을 호스트는 /etc/hosts.deny에 설정합니다.


ssl_tlsv1=YES (
기본값 = YES)

TLS를 사용할 것인지에 대해 설정합니다.

이 옵션은 TLS를 활성화하며, TLS가 가능한 클라이언트가 이용하는데 도움이 됩니다.


ssl_enable=NO (
기본값 = NO)

SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.

만약 OpenSSL에 대해서 컴파일 되어 있고, 이 옵션을 허용할 경우 vsftpd SSL을 통한 보안 접속을 지원합니다. 이 옵션은 제어 연결을 지원(로그인을 포함)하며, 또한 데이터 연결도 지원 합니다. 사용자는 SSL을 지원하는 클라이언트를 필요로 할 것이며, 반드시 필요한 경우에만 허용하는것이 좋습니다. 그러나 vsftpd OpenSSL 라이브러리의 보안과 관련한 게런티를 만들 수 없으며, 이 옵션을 활성화 합니다는것은 OpenSSL 라이브러리의 보안을 믿는다는 것을 전제로 합니다.


ssl_sslv2=NO (
기본값 = NO)

SSL v2 프로토콜 연결을 허용할 것인지에 대해 설정합니다.

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.


ssl_sslv3=NO (
기본값 = NO)

SSL v3 프로토콜 연결을 허용할 것인지에 대해 설정합니다.

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.


dsa_cert_file=none (
기본값 = none)

SSL 인증서의 위치를 지정합니다. SSL의 암호화 접속을 사용하기 위해, DSA 인증서의 위치를 지정합니다.


ssl_ciphers=DES-CBC3-SHA (
기본값 = DES-CBC3-SHA)

이 옵션은 vsftpd가 암호화 된 SSL 연결들에 대해 어떤 SSL 암호화 방식을 선택하는지에 따라 사용됩니다. 더 자세한 사항은 관련 암호 메뉴얼 페이지를 보십시요.

암호화를 알리지 않는 것은 원격에서 선택된 암호화 방식의 취약점을 공격하려고 불법적인 원격 공격을 막기 위한 유용한 보안 지침이 될 수 있습니다.


force_local_data_ssl=YES (
기본값 = YES)

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 데이터 연결 상태에서 데이터를 주고 받기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.


force_local_logins_ssl=YES (
기본값 = YES)

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 비밀번호를 전달하기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.


③ 대기시간 설정

connect_timeout=60 (기본값 = 60/)
 

액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.


accept_timeout=60 (
기본값 = 60/)

패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.


data_connection_timeout=300 (
기본값 = 300/Secs)

데이터 전송시 적용되는 타임아웃값을 설정합니다. 만약 ftp 연결시 큰 파일을 업로드 또는 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리하거나 또는 이 값을 현재 설정값 보다 크게 잡아주시고 재시도 해보십시요.


idle_session_timeout=300 (
기본값 = 300/Secs)

ftp 연결에서 idle 타임에 대한 타임아웃값을 설정합니다. 예를 들어 이 값이 600으로 설정되어 있다면 ftp 접속후에 600(10)동안 아무런 작업도 없이 놀고 있다면 강제 로그아웃(timeout)시켜 버립니다.

④ 메시지 설정


banner_file=/etc/vsftpd/welcome.msg (
기본값 = none)

사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다.


ftpd_banner=Welcome to blah FTP service.


ftp
서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하시면 됩니다. 이 설정이 적용되면 ftp 접속을 하였을 때 "Welcome to blah FTP service"라는 안내문이 출력됩니다. 이 설정에서 한글을 사용할 수도 있습니다. 각 디렉토리별 안내문에 대한 설정은 다음 지시자의 설명을 보시기 바랍니다.


dirmessage_enable=YES
 

ftp
접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 않을 것인가(NO) 를 설정하는 것입니다. 밑에서 설명하고 있는 "message_file" 지시자에서 개별 디렉토리안내 파일로 사용할 파일명을 지정할 수 있습니다.


Message_file=.message
 

ftp
접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한 것입니다. 이 설정은 바로 위에서 설명한 "dirmessage_enable" YES로 설정되어 있을 때 적용됩니다.

⑤ 모드설정


port_enable=YES (
기본값 = YES)
 

데이터 전송을 위해서 Active Mode를 사용할 것인지 설정합니다.


connect_from_port_20=YES


ftp
서비스는 기본적으로 21번 포트와 20번 포트를 사용합니다. ftp 접속과 명령어에 사용되는 포트는 21번이며 실제 데이터전송에 사용되는 기본포트는 20번입니다. 이때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정하는 지시자 입니다.


ftp_data_port=20 (
기본값 = 20)

데이터 전송 포트를 지정합니다.
connect_from_port_20
옵션이 활성화 되었을 때 사용되는 포트를 지정합니다.


pasv_enable=YES (
기본값 = YES)
 
데이터 전송을 위해서 Passive mode를 사용할 것인지 설정합니다.
Active Mode
로 접근할 수 없는 사용자들을 위해 활성화 하는 것 이 좋습니다.


pasv_promiscuous=NO (
기본값 = NO)
 

동일한 IP주소에서 이루어지는 데이터 연결을 보장해주는 보안체크 기능을 사용할 것인지 설정합니다.


pasv_min_port=0

pasv_max_port=0 (
기본값 = 0)

패시브 모드로 연결시 할당될 최대 및 최소 포트를 설정하는 옵션 입니다.
일반적으로 50000~60000 포트를 지정하는 것이 좋으며, 기본값인 0으로 설정하게 되면
well-known port
를 제외한 무작위 포트를 이용하게 됩니다.


ascii_upload_enable=YES

ascii_download_enable=YES

기본적으로 ASCII 모드로 업로드/다운로드하는 것이 제한되어 있습니다. 이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있습니다.


권한설정


local_umask=022


로컬계정 사용자들의 umask 값을 설정하는 지시자입니다. 거의 모든 ftp 서버에서 기본 umask 값은 022 입니다. 하지만 vsftp 에서의 umask 기본값은 077입니다. Umask 값이 077 일 경우에 새로 생성되는 파일의 퍼미션은 600 이 되며 새로 생성되는 디렉토리의 퍼미션은 700 이 됩니다. 당연히 umask 값이 022 일 때보다는 보안이 훨씬 강화됩니다. 여기서 "local_umask=022"의 주석을 제거하여 유효하게 설정하면 대부분의 FTP 서버에서 사용하는 umask 값을 022로 설정하게 됩니다. 만약 022 외에 다른 umask 값을 설정하고자 한다면 그 값을 설정해 주시면 됩니다.


file_open_mode=0644 (
기본값 = 0666)

 
파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션 입니다.
이 옵션은 반드시 umask 옵션보다 아래에 있어야 됩니다
.


dirlist_enable=YES (
기본값 = YES)
 

접속한 디렉토리의 파일리스트를 보여줄 지 설정합니다.


force_dot_files=NO (
기본값 = NO)
 

히든 파일/디렉토리를 보여줄 것인지 설정하는 옵션 입니다.
히든 파일/디렉토리는 dot(.) 으로 시작하는 것을 말합니다
.


tilde_user_enable=NO (
기본값 = NO)
 

이 옵션이 활성화되면, vsftpd ~chris/pics와 같이 사용자 계정 이름에 틸드 표시가 따라오는 경우의 경로명을 접근하도록 시도하고 해석할 것입니다.
vsftpd
는 항상 ~ ~/somthing 을 해석합니다는 것을 주의하시기 바랍니다
.
(
여기서 ~ 는 기본적으로 로그인 했을 때의 디렉토리로 해석됩니다
.)
~user
경로들은 _current_ chroot() 에서 /etc/passwd 파일을 찾을 수 있을 경우에만 해석 될 수 있을 것입니다.


hide_ids=NO (
기본값 = NO)


디렉토리 목록에서 UID를 보여주지 않고, 모두 FTP로 표시할 것인지 설정합니다.
이 옵션을 활성화 하면 모든 파일의 소유권이 FTP로 표시되므로 보안에 도움이 될 수 있습니다.


write_enable=YES (
기본값 = NO)
 

ftp 로 접속이 된 상태에서 사용할 수 있는 ftp 전용명령어에는 여러가지가 있습니다. 이 설정은 ftp 전용명령어 중에 write 명령어를 허용할 것인가를 결정하는 것입니다. 허용하려면 YES, 허용하지 않으려면 NO 를 설정하시면 됩니다.


download_enable=YES (
기본값 = YES)
 

다운로드에 대한 권한을 설정합니다.


chmod_enable=YES (
기본값 = YES)


사용자가 퍼미션을 변경할 수 있도록 설정합니다.


use_sendfile=YES (
기본값 = YES)
 

이 옵션은 당신의 플랫폼에서 sendfile() 시스템 호출을 사용하는 것과 관련된 이익을 테스트 할 때 사용되는 내부 설정입니다.


cmds_allowed=PASV,RETR,QUIT (
기본값 = none)

사용자에게 허가할 명령어를 지정합니다.


deny_file={*.mp3,*.mov} (
기본값 = none)


업로드를 거부할 파일명을 지정합니다.


hide_file={*.mp3,*.mov} (
기본값 = none)


숨길 파일명을 지정합니다.
이 옵션을 사용하면 서버에 실제로 데이터는 존재하지만, FTP 사용자에게는 보이지 않도록

설정하는 기능입니다. 악의적인 사용자에게 간단한 fake를 걸 수 있습니다.


async_abor_enable=YES (
기본값 = NO)

async ABOR
명령어를 사용할 수 있도록 설정합니다.
일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가

생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다
.
그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다.


ls_recurse_enable=YES


ftp
접속에서는 ls 사용시 –R 옵션을 허요하지 않는 것이 기본 설정입니다. –R 옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것입니다. 서버부하등의 이유로 ftp에서 기본적으로는 지원하지 않지만 vsftpd 에서는 이 옵션을 사용하여 허용하도록 설정할 수 있습니다. , 이 지시자의 값이 YES로 되어 있다면 ftp 접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 한번에 볼 수 있는 –R 옵션을 허용하게 됩니다.

보안설정


chroot_list_enable=YES (
기본값 = NO)


명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다.
이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.


chroot_list_file=/etc/vsftpd.chroot_list
 

전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정입니다.
먼저 "chroot_list_enable=YES" 로 설정하시고 /etc/vsftpd.chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록해 두시면 됩니다. , /etc/vsftpd.chroot_list 파일에 등록된 사용자들에 한하여 chroot()기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한됩니다. 이 파일에 등록할 때에는 한행에 한 사용자 계정씩만 등록하셔야 합니다. 만약 전체 사용자를 대상으로 chroot()기능을 적용하고자 한다면 바로 밑에서 설정하고 있는 "chroot_local_user=YES"로 설정하시기 바랍니다.


passwd_chroot_enable=NO (
기본값 = NO)


SSH로 접속했을 때 자신의 홈 상위 디렉토리를 접근할 수 없도록 설정합니다.
chroot_local_user
옵션이 활성화되었고, OpenSSH에 패치를 했을경우, SSH 또한 자신의

홈상위 디렉토리를 접근할 수 없도록 설정할 수 있으며, /etc/passwd 파일의 홈 디렉토리

필드의 /home/사용자/./와 같이 "/./"를 붙여 사용자를 홈디렉토리에 제한하게 합니다.


chroot_local_user=YES


특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토링 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정하십시요. 반드시 앞의 설정과 비교해 보시기 바랍니다.

만약 위 의 두 설정이 모두 설정되었다면
, "chroot_list_enable=YES" "chroot_local_user=YES" 설정이 모두 YES로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들만 chroot()적용을 받지 않게 됩니다. , 이 두 설정이 모두 YES 로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용되어 상위 디렉토리로의 이동이 안된다는 의미입니다.


secure_chroot_dir=/usr/share/empty (
기본값 = /usr/share/empty)


secure chroot()
에 사용될 디렉토리를 지정합니다.
이 옵션에서 지정된 디렉토리는 비어있어야되며, ftp 사용자에 대해 쓰기 권한이 없어야 됩니다.


로그설정


xferlog_enable=YES
 

ftp
접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남가지 않을 것인가(NO)를 설정하는 지시자입니다. 이 지시자의 설정은 디스크의 용량을 고려하여 결정해야 합니다. , 파일 업로드/다운로드 로그는 굉장히 많은 용량을 필요로 하고 또한 시스템 부하율도 함께 고려하여 신중히 결정해야 합니다. 물론 로그를 남기는 것이 로그분석과 개별 사용자의 파일 업로드/다운로드 상황을 알 수 있는 방법이기는 하지만 시스템 상황을 고려해야 하는 의미입니다.


vsftpd_log_file=/var/log/vsftpd.log

(기본값 = /var/log/vsftpd.log)
VsFTP
의 기본 로그 파일을 지정합니다
.
이 옵션은 xferlog_enable 옵션과 xferlog_std_format 옵션이 비활성화일 때 작동하며, dual_log_enable 옵션이나 syslog_enable 옵션이 활성화될때 사용됩니다.


dual_log_enable=NO (
기본값 = NO)
 

2중 로그를 기록할 것인지에 대해 설정합니다.
만약 이 옵션을 활성화하면, /var/log/xferlog /var/log/vsftpd.log에 로그가 기록됩니다
.


syslog_enable=NO (
기본값 = NO)


syslogd
데몬을 이용해서 로그를 기록할 것인지 설정합니다.


xferlog_file=/var/log/vsftpd.log

ftp
로그파일의 위치를 결정하는 지시자입니다.
Vsftp
는 기본적으로 /var/log/vsftpd.log 파일을 기본 로그파일로 사용합니다. 만약 로그파일 위치나 파일명을 변경하시려면 이 지시자에서 설정 변경하시면 됩니다.


xferlog_std_format=YES
 

로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정하는 지시자 입니다. 리눅스에서 ftp 기본 로그파일을 /var/log/xferlog을 사용합니다. 이 지시자는 이 파일의 표준포맷으로 로그를 남기도록 하는 설정입니다. 이 파일의 포맷보다는 vsftpd 로그포맷을 사용하시는 것이 보다 자세한 로그를 남길 수 있습니다. , 디렉토리생성로그나 또는 로그인 로그 같은 상세로그까지 기록해 줍니다.



log_ftp_protocol=YES (
기본값 = NO)

FTP Protocol의 모든 내용을 기록할지 설정합니다.
이 옵션을 활성화하면 FTP 명령어와 반응이 모두 로깅되므로 디버그에 유용하게 쓰입니다
.


no_log_lock=NO (
기본값 = NO)


로그 파일을 잠글것인지에 대해서 설정합니다
.
이 옵션은 vsftpd가 로그 파일을 기록할 때, 파일을 잠그는 것을 막는 옵션 입니다
.
보통은 활성화 하지 않아도 되며, 솔라리스/베리타스 파일 시스템 조합에서 때때로

로그파일을 잠그려는 시도를 하는 운영체제 시스템 버그를 피하기 위해 존재 합니다.


session_support=YES


이 설정은 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp ftp 접속관련 기록을 남기게 됩니다.
Last
라는 명령어는 각 사용자들의 접속기록을 wtmp 파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last 명령어로 ftp 접속기록을 확인 할 수 있게 됩니다.


가상 사용자 설정


guest_enable=NO
 

가상유저 모드로 운영할 것인지에 대해 설정합니다. (기본값 = NO)
이 옵션을 활성화하면 모든 비익명 사용자는 가상 사용자로 접속이 됩니다
.


guest_username=ftp

가상유저들의 실제 계정을 지정합니다. (기본값
= ftp)


virtual_use_local_privs=NO (
기본값 = NO)
 

가상유저들의 권한을 실제 계정의 권한처럼 허용할 것인지를 설정합니다.
이 옵션이 활성화되어있지 않으면 가상유저는 FTP에 접속해서 파일을 생성하지 못합니다
.
또한 가상유저는 기본적으로 anonymous의 권한을 갖고 있습니다
.


user_sub_token=$USER (
기본값 = none)


가상유저들을 지칭할 가상의 변수를 지정합니다.


local_root=/home/virtual/$USER (
기본값 = none)


가상유저들이 로그인 후 이동될 디렉토리를 지정합니다.


익명사용자 기본 설정


anonymous_enable=NO


익명(anonymous) 접속을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 결정하는 지시자입니다. 기본값은 YES로 되어있으며 익명계정 접속을 허용하지 않으려면 NO 로 설정하시기 바랍니다.


anon_max_rate=0 (
기본값 = 0)

익명 사용자의 다운로드 최대전송률을 지정합니다.
다운로드 속도를 제한할때 사용하며, 단위는 bps 입니다.


allow_anon_ssl=NO (
기본값 = NO)

익명사용자의 SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.
이 옵션은 ssl_enable이 활성화 되었을 때만 적용됩니다.


deny_email_enable=YES (
기본값 = NO)


로그인 거부 리스트 사용에 대한 설정을 합니다.
/etc/vsftpd.banned_emails
에 설정된 주소로 로그인을 거부할 수 있습니다
.
만약 anonymous@ 라고 설정해두면, anonymous@를 사용하는 사용자는 접속할 수 없게됩니다.


banned_email_file=/etc/vsftpd.banned_emails


(
기본값 = /etc/vsftpd.banned_emails)
로그인 거부 파일을 지정합니다
.
deny_email_enable
옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.


secure_email_list_enable=NO (
기본값 = NO)


명시된 이메일 주소로만 접속을 허용할 지 설정합니다.


email_password_file=/etc/vsftpd.email_passwords


(
기본값 = /etc/vsftpd.email_passwords)
접속을 허용할 이메일 주소 파일을 지정합니다
.
secure_email_list_enable
옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.


ftp_username=ftp (
기본값 = ftp)


익명 사용자의 접속에 사용될 계정명을 지정합니다.


no_anon_password=NO (
기본값 = NO)


익명 사용자가 접속할 때 패스워드를 묻지않고 접속시킬 것인지 설정합니다.
이 옵션을 활성화하면 접속시 패스워드를 묻지 않습니다
.


one_process_model=NO (
기본값 = NO)


클라이언트 접속마다 하나의 프로세스가 작동되도록 할 것인지 설정합니다.
이 옵션을 활성화하면 접속하는 수만큼 프로세스가 작동되므로 효율이 좋습니다
.


anon_root=/var/ftp/pub (
기본값 = none)

익명 사용자의 기본 디렉토리를 지정합니다.
일반적으로 익명 사용자의 접근을 허용하면 ftp_username에 지정된 사용자의 홈 디렉토리가 기본적으로 설정됩니다. 그렇지만 만약 변경할 필요가 있을 경우에 이 옵션을 사용하면 됩니다.


익명사용자 권한 설정


anon_upload_enable=YES


익명(anonymous) 계정 사용자에게 파일 업로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO) 의 여부를 설정하는 지시자입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명 계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.


anon_mkdir_write_enable=YES


익명(anonymous) 계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자 입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.


anon_world_readable_only=YES (
기본값 = YES)

익명 사용자들의 다운로드에 대한 설정을 합니다.
익명 사용자들이 읽기 가능한 파일을 다운로드 할 수 있게 설정합니다.


anon_other_write_enable=NO (
기본값 = NO)


익명 사용자의 파일 삭제,변경에 대한 설정을 합니다.
파일 삭제 및 파일명 변경등과 같은 기능을 사용할 수 있게 합니다.


chown_uploads=YES (
기본값 = NO)


익명 사용자의 소유권 변경에 대한 설정을 합니다.
익명으로 업로드된 파일을 chown_username 옵션으로 명시된 사용자의 소유권으로 변경되도록 할 수 있습니다.


anon_umask=022 (
기본값 = 077)
 

익명 사용자의 파일생성 umask 값을 지정 합니다.
umask
에 대한 설명은 local_mask의 설명을 참조하시기 바랍니다.


chown_username=whoever (
기본값 = root)


익명 사용자의 소유권 변경이 가능한 계정명을 설정합니다

 


=================================================================================================================

궁금하신 사항이 있으면 댓글 달아주세요. ^^


Posted by 소울하트
시스템/Linux2012. 1. 16. 17:30

# This is the main Apache server configuration file.

크게 3 섹션으로 나누어져 있습니다.

1. 아파치 서버 프로세스 전체의 운영에 직접적으로 제어할 수 있는 부분

2. 메인이나 디폴트 서버에 관한 설정을 관리하는 부분

3. 가상 호스트에 대한 설정을 관리하는 부분

### Section 1: Global Environment

전반적인 아파치 운영에 관한 설정을 합니다.

# ServerRoot: 최상의 디렉토리. 서버의 설정, 에러, 로그 파일들이 담겨져있습니다.

ServerRoot "/etc/httpd"

# PidFile: 서버가 시작할 때 프로세스 식별 번호(PID)를 담는 파일.

PidFile run/httpd.pid

# Timeout: 클라이언트와 연결이 되었을 때 송수신을 하지 않아 타임아웃으로 처리하는 시간

Timeout 120

# KeepAlive: 접속한 채로 아무 반응이 없을 경우 지속적인 연결을 허용할지 안할지 설정

KeepAlive Off

# MaxKeepAliveRequests: 지속적인 연결 동안에 서버에게 요청할 수 있는 최대의 수

0이면 무제한. 크면 클수록 최대의 성능을 발휘

MaxKeepAliveRequests 100

# KeepAliveTimeout: 같은 클라이언트의 같은 연결 상태에서 몇 초 동안 다음 요청을 기다릴 것인지 설정

KeepAliveTimeout 15

# Listen: 디폴트 이외에 특별한 IP또는 포트에 대해서도 연결 할 수 있도록 허용합니다.

<VirtualHost>부분에서 설정되는 가상호스트를 설정하기 위해서 필요합니다.

#Listen 12.34.56.78:80

Listen 80

# 아래의 디렉토리로부터 설정을 불러옵니다.

Include conf.d/*.conf

# server-status로 서버의 상태를 볼 때 full로 볼 것인지 기본만 볼 것인지 설정합니다.

#ExtendedStatus On

# 만약에 httpd를 특별한 다른 유저나 그룹에서 사용하기를 원한다면 먼저 root로 httpd를 초기화 하고 사용해야합니다.

User apache

Group apache

## Section 2: 'Main' server configuration

메인 서버가 사용하는 값을 설정합니다.

<VirtualHost>에서 설정하지 않은 것은 여기서 지정된 기본값으로 적용됩니다.

또한 여기서 지정한 값을 <VirtualHost>내에서도 지정할 수 있으며 이 경우엔 각 <VirtualHost>내에서 지정한 값이 우선 설정됩니다.

# ServerAdmin: 문제가 생겼을지 보내질 메일 주소를 설정합니다.

ServerAdmin root@localhost

# 클라이언트에게 보여주는 호스트 이름을 지정합니다. DNS name이 유효하지 않아도 호스트에서는 사용하는 것처럼 보이게 합니다. 호스트가 DNS name을 등록하지 않았다면 그 IP주소를 여기에 입력합니다. 어떻게든 이 주소로 접근이 가능할 것입니다.

#ServerName www.example.com:80

# UseCanonicalName: URL과 SERVER_NAME과 SERVER_PORT 변수가 어떻게 아파치가 참조할지 결정합니다. off를 하면 Hostname과 Port를 클라이언트에게 제공합니다. On으로 설정하면 아파치는 ServerName 값을 직접적으로 사용합니다.

UseCanonicalName Off

# DocumentRoot: 제공할 웹문서가 어느 곳에 위치할지 디렉토리를 설정합니다. 그러나 심볼릭 링크와 aliases는 다른 지점을 가리킬 수 있습니다.

DocumentRoot "/var/www/html"

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

# 원하고 싶은 디렉토리로 바꾸면 됩니다.

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

# UserDir: 하나의 웹서버에 여러 사용자의 홈페이지를 관리할 때 필요한 개별 가입자의 홈페이지 디렉토리를 설정합니다.

경로의 마지막에는 웹서버의 userid가 접근할 수 있는 ‘public_html' 디렉토리가 반드시 있어야 합니다. 이는 보통 ~userid의 711 권한과 ~userid/public_html의 755권한을 의미하고 문서는 누구나 읽을 수 있어야 합니다. 반면에 클라이언트는 "403 Forbidden" 메시지를 받습니다.

<IfModule mod_userdir.c>

#

# 기본적으로 UserDIr은 허용하기 전까지 사용불가입니다.

#

UserDir disable

#"UserDir disable" line를 삭제하고 아래의 주석을 제거함으로써 사용이 가능해집니다.

#

#UserDir public_html

</IfModule>

# UserDir 디렉토리에 접근하도록 설정합니다. 아래는 예시입니다. 이 사이트는 읽기전용 제한이 있습니다.

#

#<Directory /home/*/public_html>

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

# <Limit GET POST OPTIONS>

# Order allow,deny

# Allow from all

# </Limit>

# <LimitExcept GET POST OPTIONS>

# Order deny,allow

# Deny from all

# </LimitExcept>

#</Directory>

# DirectoryIndex: 디렉토리만을 지정했을 때 서버가 제공하는 파일을 설정합니다.

# 여러개를 설정할 수 있으나 많으면 많을수록 느려집니다.

DirectoryIndex index.html index.html.var

# AccessFileName: 디렉토리 별로 접근 제어할 정보를 담고 있는 파일을 지정합니다.

디렉토리 별로 인증을 거쳐서 접근할 수 있는 설정을 하기 위한 것입니다.

AccessFileName .htaccess

# 아래는 웹 클라이언트가 .htaccess와 .htpasswd 파일을 볼 수 없도록 막아 놓은 설정입니다.

<Files ~ "^\.ht">

Order allow,deny

Deny from all

</Files>

# mime.types을 설정한 파일을 지정합니다.

TypesConfig /etc/mime.types

# DefaultType는 기본적인 MIME 타입에 정의 되어 있지 않은 파일 형식에 대한 요청을 받았을 때 알 수 없는 문서 타입에 대하여 사용할 기본적인 타입을 설정합니다.

DefaultType text/plain

# mod_mime_magic module은 서버가 파일의 컨텐츠를 각각의 타입을 결정하는데 다양한 힌트를 줍니다. MIMEMagicFile은 모듈이 어디에 힌트 정의가 위치해있는지 알려줍니다.

<IfModule mod_mime_magic.c>

# MIMEMagicFile /usr/share/magic.mime

MIMEMagicFile conf/magic

</IfModule>

# HostnameLookups: 웹서버의 로그를 지정하는 Format에서 “DNS Lookup"으로 지정하였을 때, domain으로 남길 것인가 IP 주소를 남길 것인가를 지정합니다. 디폴트 off는 IP 주소로 남기는 것이며, Domainm로 변경할 필요가 없으므로 on으로 설정한 것보다는 속도가 좀 더 빠르다 on으로 하게 되면 IP주소를 IP domainm로 변환해야 하므로 속도가 조금 느릴 수 있다.

HostnameLookups Off

# EnableMMAP: 파일 전송을 memory-mapping을 사용할 것인지 아닌지를 설정합니다.

# 디폴트는 on. NFS-mounted 파일 시스템을 사용할 경우 off를 하십시오. 몇몇 시스템에서 off를 사용하면 성능 향상이 됩니다.

#

#EnableMMAP off

# EnableSendfile: 커널이 파일 전달에 도움을 줄지 안 줄지 설정합니다.

#

#EnableSendfile off

# ErrorLog: 에러 로그 파일의 위치를 지정합니다.The location of the error log file.

# If you do not specify an ErrorLog directive within a 참고로, <VirtualHost>에서 에러로그를 지정하지 않으면 가상호스트의 로그도 이곳에 저장하게 됩니다..

ErrorLog logs/error_log

# LogLevel: 위에 설정한 로그파일의 얼마나 자세히 적을지 메시지 수를 설정합니다.

# 중요도 순서는: debug, info, notice, warn, error, crit, alert, emerg.입니다.

LogLevel warn

# 로그 메시지 형식을 설정합니다.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

#

# "combinedio" 몇 바이트를 받았는지 보냈는지 현재 카운트가 담겨져있습니다.

#

#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

#

# access logfile의 포맷과 위치를 설정합니다.

# <VirtualHost>의 access logfile을 설정하지 않으면 이곳에 로그들이 저장됩니다.

#

#CustomLog logs/access_log common

#

# agent와 referer의 로그 파일들을 나누기를 원한다면 아래와 같이 설정합니다.

#

#CustomLog logs/referer_log referer

#CustomLog logs/agent_log agent

#

# 하나의 로그파일로 접근하려면 아래와 같이 설정합니다.

#

CustomLog logs/access_log combined

#

# 서버가 생성하는 문서 (internal error documents, FTP directory listings, mod_status and mod_info output etc., but not CGI generated documents or custom error documents)의 trailing footer line 설정을 가능하게 합니다.

#

ServerSignature On

#

# Aliases: 필요한 만큼의 aliases를 추가할 수 있습니다.

# 형식 : Alias fakename realname

#

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

#

# WebDAV module configuration section.

#

<IfModule mod_dav_fs.c>

# Location of the WebDAV lock database.

DAVLockDB /var/lib/dav/lockdb

</IfModule>

#

# ScriptAlias: 서버 스크립트 디렉토리를 설정합니다.

# 기본적으로 ScriptAliases는 Aiases와 같습니다. 예외적인 것이 실제 디렉토리 안에 들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것입니다.

#

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#

# ScriptAliased를 "/var/www/cgi-bin"로 바꾸고 싶다면 아래와 같이 합니다.

#

<Directory "/var/www/cgi-bin">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

#

# IndexOptions: 디렉토리 리스트가 나타나는 옵션을 설정합니다.

#

IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable

# 아래에서 지정하는 AddIcon* 설정은 위에서 설정한 디렉토리 인덱싱 옵션을FancyIndexingm로 한 경우에 해당하며 디렉토리 목록을 표시할 때 각 파일 확장자에 따라서 어떤 아이콘을 선택하여 보여줄 것인지를 지정합니다.

#

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*

AddIconByType (IMG,/icons/image2.gif) image/*

AddIconByType (SND,/icons/sound2.gif) audio/*

AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe

AddIcon /icons/binhex.gif .hqx

AddIcon /icons/tar.gif .tar

AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv

AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

AddIcon /icons/a.gif .ps .ai .eps

AddIcon /icons/layout.gif .html .shtml .htm .pdf

AddIcon /icons/text.gif .txt

AddIcon /icons/c.gif .c

AddIcon /icons/p.gif .pl .py

AddIcon /icons/f.gif .for

AddIcon /icons/dvi.gif .dvi

AddIcon /icons/uuencoded.gif .uu

AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

AddIcon /icons/tex.gif .tex

AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..

AddIcon /icons/hand.right.gif README

AddIcon /icons/folder.gif ^^DIRECTORY^^

AddIcon /icons/blank.gif ^^BLANKICON^^

#

# DefaultIcon은 위에서 지정한 확장자가 아닌 경우에 여기서 설정한 기본 아이콘을 보여줍니다.

#

DefaultIcon /icons/unknown.gif

#

# AddDescription은 서버가 생성한 인덱스 파일 뒤에 간단한 설명을 나타낼 때 사용합니다. 이 설정은 FancyIndexing 으로 설정 되어있을 때만 표시 되며 설정 형식은 다음과 같습니다.

# 형식: AddDescription "description" filename

#

#AddDescription "GZIP compressed document" .gz

#AddDescription "tar archive" .tar

#AddDescription "GZIP compressed tar archive" .tgz

#

# ReadmeName 디렉토리 목록표시 뒤에 이어서 보여줄 파일의 이름을 지정합니다.

# HeaderName 디렉토리 목록표시 앞에서 보여줄 파일의 이름을 지정합니다.

#

ReadmeName README.html

HeaderName HEADER.html

#

# IndexIgnore은 디렉토리 인덱싱시 무시할 파일이름의 묶음 설정합니다.

Shell-style의 와일드 카드가 허용됩니다.

#

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

# DefaultLanguage와 AddLanguage에 문서의 언어를 특별하게 지정하도록 허락하게 합니다. default language를 지정하는 경우에 모든 데이터가 보이지 않을 수 있고 원하지 않는 결과를 얻을 수 있습니다.

# DefaultLanguage nl

# 게다가 사용이 모호한 점이 있습니다. 3가지. 그렇기 때문에 AddLanguage를 사용합니다.

AddLanguage ca .ca

AddLanguage cs .cz .cs

AddLanguage da .dk

AddLanguage de .de

AddLanguage el .el

AddLanguage en .en

AddLanguage eo .eo

AddLanguage es .es

AddLanguage et .et

AddLanguage fr .fr

AddLanguage he .he

AddLanguage hr .hr

AddLanguage it .it

AddLanguage ja .ja

AddLanguage ko .ko

AddLanguage ltz .ltz

AddLanguage nl .nl

AddLanguage nn .nn

AddLanguage no .no

AddLanguage pl .po

AddLanguage pt .pt

AddLanguage pt-BR .pt-br

AddLanguage ru .ru

AddLanguage sv .sv

AddLanguage zh-CN .zh-cn

AddLanguage zh-TW .zh-tw

#

# 언어의 순위는 컨텐츠의 경우에 따라 설정할 수 있습니다.

# 아래는 단순히 알파벳 순서입니다. 언제든지 원한다면 바꾸실 수 있습니다..

#

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

#

# 기본 charset를 설정합니다.

#

AddDefaultCharset UTF-8

#

# MIME 파일 설정을 특별한 파일 타입으로 추가할 수 있습니다.

#

#AddType application/x-tar .tgz

#

# 브라우져에 특별한 인코딩 방식을 추가합니다. 모든 브라우져가 지원하는 것이 아닙니다. #

#AddEncoding x-compress .Z

#AddEncoding x-gzip .gz .tgz

#

# 위처럼 AddEncoding을 한다면 이들의 확장된 미디어 타입도 정의 할 수 있습니다.

#

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

#

# AddHandler는 파일 확장자를 "handlers"에 매핑시켜주게 됩니다.

#

#AddHandler cgi-script .cgi

#AddHandler send-as-is asis

AddHandler type-map var

#

# .shtml files를 위한server-side includes (SSI)를 사용할 수 있도록 합니다.

#

AddType text/html .shtml

AddOutputFilter INCLUDES .shtml

#

# Action는 매칭되는 파일이 불려질 때마다 스크립트를 실행시킬 수 있도록 미디어 타입을 정의하도록 합니다.

#

# Format: Action media/type /cgi-script/location

# Format: Action handler-name /cgi-script/location

#

# 에러 응답을 정의합니다.

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

# 모든 사용자가 위의 에러를 접하게 되지만

# 아래 라인을 추가함으로써 default HTTP_<error>.html.var files의 변경없이 메세지를 변경할 수 있습니다.

#

# Alias /error/include/ "/your/include/path/"

# 자신이 직접 만든 에러 파일의 집합을 만들 수 있습니다.

#

Alias /error/ "/var/www/error/"

<IfModule mod_negotiation.c>

<IfModule mod_include.c>

<Directory "/var/www/error">

AllowOverride None

Options IncludesNoExec

AddOutputFilter Includes html

AddHandler type-map var

Order allow,deny

Allow from all

LanguagePriority en es de fr

ForceLanguagePriority Prefer Fallback

</Directory>

# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var

# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var

# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var

# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var

# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var

# ErrorDocument 410 /error/HTTP_GONE.html.var

# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var

# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var

# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var

# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var

# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var

# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var

# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var

# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var

# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var

# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

</IfModule>

</IfModule>

#

# 기본적인 HTTP 1.1의 반응도 처리하지 못하며 HTTP 1.0스펙을 제한하고 있는 브라우져에 대해서 HTTP 1.1 반응을 하지 못하게 하는 처리하는 것입니다.

#

BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

BrowserMatch "RealPlayer 4\.0" force-response-1.0

BrowserMatch "Java/1\.0" force-response-1.0

BrowserMatch "JDK/1\.0" force-response-1.0

# 적당한 처리가 없는 서비스에 대한 관리를 합니다.

#

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully

BrowserMatch "MS FrontPage" redirect-carefully

BrowserMatch "^WebDrive" redirect-carefully

BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully

BrowserMatch "^gnome-vfs/1.0" redirect-carefully

BrowserMatch "^XML Spy" redirect-carefully

BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

#

# 서버의 상태를 점검할 수 있는 설정입니다.

# URL http://servername/server-status 이와 같은 방법으로도 서버의 상태를 점검할 수 있습니다.

# Change the ".example.com" to match your domain to enable.

#

#<Location /server-status>

# SetHandler server-status

# Order deny,allow

# Deny from all

# Allow from .example.com

#</Location>

#

# 서버의 설정에 관한 보고를 원격으로 가능하게 하고 http://servername/server-info에 mod_info.c파일이 적재되어 있어야 합니다.

# Change the ".example.com" to match your domain to enable.

#

#<Location /server-info>

# SetHandler server-info

# Order deny,allow

# Deny from all

# Allow from .example.com

#</Location>

#

# 서버를 프록시 서버를 사용할 것인지에 대한 설정을 합니다.

#<IfModule mod_proxy.c>

#ProxyRequests On

#

#<Proxy *>

# Order deny,allow

# Deny from all

# Allow from .example.com

#</Proxy>

# HTTP/1.1 "Via:" headers의 처리를 할지 안할지 설정합니다.

# ("Full" adds the server version; "Block" removes all outgoing Via: headers)

# Set to one of: Off | On | Full | Block

#

#ProxyVia On

#

# 캐시 기능에 관한 설정을 합니다.

#

#<IfModule mod_disk_cache.c>

# CacheEnable disk /

# CacheRoot "/var/cache/mod_proxy"

#</IfModule>

#

#</IfModule>

### Section 3: Virtual Hosts

# 여러 domain이나 hostname을 서버에 사용하고자 하면 가상호스트 부분의 설정을 해야 합니다.

#

# 이름을 기초로한 가상호스팅 사용. NameVirtaulHost는 포트80을 제외하고는 사용 불가.

#

#NameVirtualHost *:80

#

#

# VirtualHost 예e:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for requests without a known

# server name.

#

#<VirtualHost *:80>

# ServerAdmin webmaster@dummy-host.example.com

# DocumentRoot /www/docs/dummy-host.example.com

# ServerName dummy-host.example.com

# ErrorLog logs/dummy-host.example.com-error_log

# CustomLog logs/dummy-host.example.com-access_log common

#</VirtualHost>

Posted by 소울하트
시스템/Linux2011. 12. 12. 15:35

※ Linux 환경에서 IP alias 기능을 사용하는 방법


1. alias file 만들기

/etc/sysconfig/network-script/ifcfg-eth1
파일을
/etc/sysconfig/network-script/ifcfg-eth1:0
이라는 이름으로 복사한다.

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts

[root@localhost network-scripts]# cat ifcfg-eth1
# Broadcom Corporation|NetXtreme BCM5701 Gigabit Ethernet
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:30:6E:F3:62:F4
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.123.101
USERCTL=no
PEERDNS=yes
GATEWAY=192.168.123.254

[root@localhost network-scripts]# cat ifcfg-eth1:0
# Broadcom Corporation|NetXtreme BCM5701 Gigabit Ethernet
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:30:6E:F3:62:F4
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.123.100
USERCTL=no
PEERDNS=yes
GATEWAY=192.168.123.254

2. alias file의 정보를 수정

/etc/sysconfig/network-script/ifcfg-eth1:0

파일을 alias 할 IP 와 기타 정보를 수정하고, DEVICE=eth1:0 으로 수정한다.

[root@localhost network-scripts]# cat ifcfg-eth1:0
# Broadcom Corporation|NetXtreme BCM5701 Gigabit Ethernet
DEVICE=eth1:0
BOOTPROTO=none
HWADDR=00:30:6E:F3:62:F4
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.123.100
USERCTL=no
PEERDNS=yes
GATEWAY=192.168.123.254

3. alias device 실행

/sbin/ifconfig eth1:0 up or ifup eth1:0
명령을 실행한다.

[root@localhost network-scripts]# ifup eth1:0


4. alias device확인
/sbin/ifconfig
명령으로 확인하면 됩니다.

[root@localhost network-scripts]# ifconfig eth1:0
eth1:0 Link encap:Ethernet HWaddr 00:30:6E:F3:62:F4
inet addr:192.168.123.100 Bcast:192.168.123.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:56

[root@krcipf3 network-scripts]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:30:6E:F3:62:F4
inet addr:192.168.123.101 Bcast:192.168.123.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1859897 errors:0 dropped:0 overruns:0 frame:0
TX packets:21599 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:154603558 (147.4 Mb) TX bytes:8418787 (8.0 Mb)
Interrupt:56

Posted by 소울하트